Minor cleanup related to my latest scheduler changes.
[oota-llvm.git] / test / Analysis / TypeBasedAliasAnalysis / argument-promotion.ll
1 ; RUN: opt < %s -tbaa -basicaa -argpromotion -mem2reg -S | not grep alloca
2
3 target datalayout = "E-p:64:64:64"
4
5 define internal i32 @test(i32* %X, i32* %Y, i32* %Q) {
6   store i32 77, i32* %Q, !tbaa !2
7   %A = load i32* %X, !tbaa !1
8   %B = load i32* %Y, !tbaa !1
9   %C = add i32 %A, %B
10   ret i32 %C
11 }
12
13 define internal i32 @caller(i32* %B, i32* %Q) {
14   %A = alloca i32
15   store i32 78, i32* %Q, !tbaa !2
16   store i32 1, i32* %A, !tbaa !1
17   %C = call i32 @test(i32* %A, i32* %B, i32* %Q)
18   ret i32 %C
19 }
20
21 define i32 @callercaller(i32* %Q) {
22   %B = alloca i32
23   store i32 2, i32* %B, !tbaa !1
24   store i32 79, i32* %Q, !tbaa !2
25   %X = call i32 @caller(i32* %B, i32* %Q)
26   ret i32 %X
27 }
28
29 !0 = metadata !{metadata !"test"}
30 !1 = metadata !{metadata !"green", metadata !0}
31 !2 = metadata !{metadata !"blue", metadata !0}