Merging r259177:
[oota-llvm.git] / test / Analysis / TypeBasedAliasAnalysis / argument-promotion.ll
1 ; RUN: opt < %s -tbaa -basicaa -argpromotion -mem2reg -S | FileCheck %s
2
3 target datalayout = "E-p:64:64:64"
4
5 ; CHECK: test
6 ; CHECK-NOT: alloca
7 define internal i32 @test(i32* %X, i32* %Y, i32* %Q) {
8   store i32 77, i32* %Q, !tbaa !2
9   %A = load i32, i32* %X, !tbaa !1
10   %B = load i32, i32* %Y, !tbaa !1
11   %C = add i32 %A, %B
12   ret i32 %C
13 }
14
15 ; CHECK: caller
16 ; CHECK-NOT: alloca
17 define internal i32 @caller(i32* %B, i32* %Q) {
18   %A = alloca i32
19   store i32 78, i32* %Q, !tbaa !2
20   store i32 1, i32* %A, !tbaa !1
21   %C = call i32 @test(i32* %A, i32* %B, i32* %Q)
22   ret i32 %C
23 }
24
25 ; CHECK: callercaller
26 ; CHECK-NOT: alloca
27 define i32 @callercaller(i32* %Q) {
28   %B = alloca i32
29   store i32 2, i32* %B, !tbaa !1
30   store i32 79, i32* %Q, !tbaa !2
31   %X = call i32 @caller(i32* %B, i32* %Q)
32   ret i32 %X
33 }
34
35 !0 = !{!"test"}
36 !1 = !{!3, !3, i64 0}
37 !2 = !{!4, !4, i64 0}
38 !3 = !{!"green", !0}
39 !4 = !{!"blue", !0}