aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Analysis/DSGraph/field-sensitive.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/Analysis/DSGraph/field-sensitive.ll b/test/Analysis/DSGraph/field-sensitive.ll
new file mode 100644
index 0000000..dc3fc22
--- /dev/null
+++ b/test/Analysis/DSGraph/field-sensitive.ll
@@ -0,0 +1,21 @@
+; Test that ds-aa can be used for queries that require field sensitive AA.
+; RUN: llvm-as < %s | opt -no-aa -ds-aa -load-vn -gcse | llvm-dis | not grep load
+
+%Pair = type { int, int }
+
+implementation
+
+%Pair* %id(%Pair* %P) { ret %Pair *%P }
+
+int %foo() {
+ %X = alloca %Pair
+ %XP = call %Pair* %id(%Pair* %X)
+
+ %F1 = getelementptr %Pair* %X, int 0, uint 0
+ %F2 = getelementptr %Pair* %XP, int 0, uint 1
+ store int 14, int* %F1
+ store int 0, int* %F2 ; no alias F1
+ %B = load int* %F1 ; Should eliminate load!
+ ret int %B
+}
+