blob: b7e2565f0b80bd5a5998f294ccd6ac9384d6f190 [file] [log] [blame]
Chris Lattnerac39b4e2002-08-22 17:31:36 +00001; 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
Tanya Lattnerdcd188d2008-02-14 06:56:27 +00005; RUN: llvm-as < %s | opt -basicaa -load-vn -gcse -instcombine -dce \
6; RUN: | llvm-dis | not grep load
Chris Lattnerac39b4e2002-08-22 17:31:36 +00007
Tanya Lattnerdcd188d2008-02-14 06:56:27 +00008@A = global i32 7
9@B = global i32 8
Chris Lattnerac39b4e2002-08-22 17:31:36 +000010
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000011define i32 @test() {
12 %A1 = load i32* @A
Chris Lattnerac39b4e2002-08-22 17:31:36 +000013
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000014 store i32 123, i32* @B ; Store cannot alias @A
Chris Lattnerac39b4e2002-08-22 17:31:36 +000015
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000016 %A2 = load i32* @A
17 %X = sub i32 %A1, %A2
18 ret i32 %X
Chris Lattnerac39b4e2002-08-22 17:31:36 +000019}
20
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000021define i32 @test2() {
22 %A1 = load i32* @A
Chris Lattner8673e442002-08-22 20:22:55 +000023 br label %Loop
24Loop:
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000025 %AP = phi i32 [0, %0], [%X, %Loop]
26 store i32 %AP, i32* @B ; Store cannot alias @A
Chris Lattner8673e442002-08-22 20:22:55 +000027
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000028 %A2 = load i32* @A
29 %X = sub i32 %A1, %A2
30 %c = icmp eq i32 %X, 0
31 br i1 %c, label %out, label %Loop
Chris Lattner8673e442002-08-22 20:22:55 +000032
33out:
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000034 ret i32 %X
Chris Lattner8673e442002-08-22 20:22:55 +000035}
36
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000037declare void @external()
Chris Lattner13060892004-03-12 22:38:31 +000038
Tanya Lattnerdcd188d2008-02-14 06:56:27 +000039define i32 @test3() {
40 %X = alloca i32
41 store i32 7, i32* %X
42 call void @external()
43 %V = load i32* %X
44 ret i32 %V
Chris Lattner13060892004-03-12 22:38:31 +000045}
46