Add and use DominatorTreeBase::findNearestCommonDominator().
[llvm-complete.git] / test / Analysis / BasicAA / gcsetest.ll
blobcd1286f60b484b06392bf0e19e3f2cdf8f8c2c83
1 ; Test that GCSE uses basicaa to do alias analysis, which is capable of 
2 ; disambiguating some obvious cases.  All loads should be removable in 
3 ; this testcase.
5 ; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine -dce | llvm-dis | not grep load
7 %A = global int 7
8 %B = global int 8
9 implementation
11 int %test() {
12         %A1 = load int* %A
14         store int 123, int* %B  ; Store cannot alias %A
16         %A2 = load int* %A
17         %X = sub int %A1, %A2
18         ret int %X
21 int %test2() {
22         %A1 = load int* %A
23         br label %Loop
24 Loop:
25         %AP = phi int [0, %0], [%X, %Loop]
26         store int %AP, int* %B  ; Store cannot alias %A
28         %A2 = load int* %A
29         %X = sub int %A1, %A2
30         %c = seteq int %X, 0
31         br bool %c, label %out, label %Loop
33 out:
34         ret int %X
37 declare void %external()
39 int %test3() {
40         %X = alloca int
41         store int 7, int* %X
42         call void %external()
43         %V = load int* %X
44         ret int %V