Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / Analysis / BasicAA / gcsetest.ll
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.
4
5 ; RUN: llvm-upgrade < %s | llvm-as | opt -basicaa -load-vn -gcse -instcombine -dce | llvm-dis | not grep load
6
7 %A = global int 7
8 %B = global int 8
9 implementation
10
11 int %test() {
12         %A1 = load int* %A
13
14         store int 123, int* %B  ; Store cannot alias %A
15
16         %A2 = load int* %A
17         %X = sub int %A1, %A2
18         ret int %X
19 }
20
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
27
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
32
33 out:
34         ret int %X
35 }
36
37 declare void %external()
38
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
45 }
46