aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/Analysis/BasicAA/2003-04-22-GEPProblem.ll15
-rw-r--r--test/Transforms/BasicAA/2003-04-22-GEPProblem.ll15
2 files changed, 30 insertions, 0 deletions
diff --git a/test/Analysis/BasicAA/2003-04-22-GEPProblem.ll b/test/Analysis/BasicAA/2003-04-22-GEPProblem.ll
new file mode 100644
index 0000000..27ec9ea
--- /dev/null
+++ b/test/Analysis/BasicAA/2003-04-22-GEPProblem.ll
@@ -0,0 +1,15 @@
+; RUN: as < %s | opt -load-vn -gcse -instcombine | dis | grep sub
+
+; BasicAA was incorrectly concluding that P1 and P2 didn't conflict!
+
+int %test(int *%Ptr, long %V) {
+ %P2 = getelementptr int* %Ptr, long 1
+ %P1 = getelementptr int* %Ptr, long %V
+ %X = load int* %P1
+ store int 5, int* %P2
+
+ %Y = load int* %P1
+
+ %Z = sub int %X, %Y
+ ret int %Z
+}
diff --git a/test/Transforms/BasicAA/2003-04-22-GEPProblem.ll b/test/Transforms/BasicAA/2003-04-22-GEPProblem.ll
new file mode 100644
index 0000000..27ec9ea
--- /dev/null
+++ b/test/Transforms/BasicAA/2003-04-22-GEPProblem.ll
@@ -0,0 +1,15 @@
+; RUN: as < %s | opt -load-vn -gcse -instcombine | dis | grep sub
+
+; BasicAA was incorrectly concluding that P1 and P2 didn't conflict!
+
+int %test(int *%Ptr, long %V) {
+ %P2 = getelementptr int* %Ptr, long 1
+ %P1 = getelementptr int* %Ptr, long %V
+ %X = load int* %P1
+ store int 5, int* %P2
+
+ %Y = load int* %P1
+
+ %Z = sub int %X, %Y
+ ret int %Z
+}