argument-promotion.ll 896 B

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