1 ; Test that GCSE uses ds-aa to do alias analysis, which is capable of
2 ; disambiguating some cases.
4 ; RUN: llvm-as < %s | opt -no-aa -ds-aa -load-vn -gcse -instcombine -dce | llvm-dis | not grep ELIM
6 %intpair = type {int*, int*}
9 %intpair *%alloc_pair() {
12 %C = malloc {int*, int*}
13 %C1p = getelementptr {int*, int*}* %C, long 0, ubyte 0
14 store int* %Ap, int** %C1p
15 %C2p = getelementptr {int*, int*}* %C, long 0, ubyte 1
16 store int* %Bp, int** %C2p
20 int* %getp(%intpair* %P) {
21 %pp = getelementptr %intpair* %P, long 0, ubyte 0
26 int* %getq(%intpair* %P) {
27 %pp = getelementptr %intpair* %P, long 0, ubyte 1
33 %C = call %intpair* %alloc_pair()
34 %A = call int* %getp(%intpair* %C)
35 %B = call int* %getp(%intpair* %C)
38 store int 123, int* %B ; Store does alias %A
45 int %test2() { ; Test context sensitivity
46 %C1 = call %intpair* %alloc_pair()
47 %C2 = call %intpair* %alloc_pair()
48 %P1 = call int* %getp(%intpair* %C1)
49 %P2 = call int* %getp(%intpair* %C2)
53 %ELIM_x = sub int %X, %Y
58 %C = call %intpair* %alloc_pair()
59 %P1 = call int* %getp(%intpair* %C)
60 %P2 = call int* %getq(%intpair* %C)
64 %ELIM_x = sub int %X, %Y ; Check field sensitivity