Home | History | Annotate | Download | only in TypeBasedAliasAnalysis
      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