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} 40