New testcase for size tracking brokenness

llvm-svn: 5644
diff --git a/llvm/test/Regression/Transforms/BasicAA/2003-02-26-AccessSizeTest.ll b/llvm/test/Regression/Transforms/BasicAA/2003-02-26-AccessSizeTest.ll
new file mode 100644
index 0000000..f1458ce
--- /dev/null
+++ b/llvm/test/Regression/Transforms/BasicAA/2003-02-26-AccessSizeTest.ll
@@ -0,0 +1,18 @@
+; This testcase makes sure that size is taken to account when alias analysis 
+; is performed.  It is not legal to delete the second load instruction because
+; the value computed by the first load instruction is changed by the store.
+
+; RUN: as < %s | opt -load-vn -gcse -instcombine | dis | grep DONOTREMOVE
+
+int %test() {
+	%A = alloca int
+	store int 0, int* %A
+        %X = load int* %A
+        %B = cast int* %A to sbyte*
+        %C = getelementptr sbyte* %B, long 1
+	store sbyte 1, sbyte* %C    ; Aliases %A
+        %Y.DONOTREMOVE = load int* %A
+	%Z = sub int %X, %Y.DONOTREMOVE
+        ret int %Z
+}
+
diff --git a/llvm/test/Regression/Transforms/BasicAA/featuretest.ll b/llvm/test/Regression/Transforms/BasicAA/featuretest.ll
index cd57ef1..385144d1 100644
--- a/llvm/test/Regression/Transforms/BasicAA/featuretest.ll
+++ b/llvm/test/Regression/Transforms/BasicAA/featuretest.ll
@@ -62,3 +62,11 @@
         %r = sub int %REMOVEu, %REMOVEv
         ret int %r
 }
+
+int %foo(int * %A) {
+	%X = load int* %A
+	%B = cast int* %A to sbyte*
+	%C = getelementptr sbyte* %B, long 4
+	%Y = load sbyte* %C
+	ret int 8
+}