1; RUN: opt < %s -tbaa -basicaa -argpromotion -mem2reg -S | FileCheck %s 2 3target datalayout = "E-p:64:64:64" 4 5; CHECK: test 6; CHECK-NOT: alloca 7define internal i32 @test(i32* %X, i32* %Y, i32* %Q) { 8 store i32 77, i32* %Q, !tbaa !2 9 %A = load i32* %X, !tbaa !1 10 %B = load i32* %Y, !tbaa !1 11 %C = add i32 %A, %B 12 ret i32 %C 13} 14 15; CHECK: caller 16; CHECK-NOT: alloca 17define 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 27define 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 = metadata !{metadata !"test"} 36!1 = metadata !{metadata !3, metadata !3, i64 0} 37!2 = metadata !{metadata !4, metadata !4, i64 0} 38!3 = metadata !{metadata !"green", metadata !0} 39!4 = metadata !{metadata !"blue", metadata !0} 40