deadexternal.ll 973 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ; RUN: opt -deadargelim -S < %s | FileCheck %s
  2. define void @test(i32) {
  3. ret void
  4. }
  5. define void @foo() {
  6. call void @test(i32 0)
  7. ret void
  8. ; CHECK-LABEL: @foo(
  9. ; CHECK: i32 undef
  10. }
  11. define void @f(i32 %X) {
  12. entry:
  13. tail call void @sideeffect() nounwind
  14. ret void
  15. }
  16. declare void @sideeffect()
  17. define void @g(i32 %n) {
  18. entry:
  19. %add = add nsw i32 %n, 1
  20. ; CHECK: tail call void @f(i32 undef)
  21. tail call void @f(i32 %add)
  22. ret void
  23. }
  24. define void @h() {
  25. entry:
  26. %i = alloca i32, align 4
  27. store volatile i32 10, i32* %i, align 4
  28. ; CHECK: %tmp = load volatile i32, i32* %i, align 4
  29. ; CHECK-NEXT: call void @f(i32 undef)
  30. %tmp = load volatile i32, i32* %i, align 4
  31. call void @f(i32 %tmp)
  32. ret void
  33. }
  34. ; Check that callers are not transformed for weak definitions.
  35. define weak i32 @weak_f(i32 %x) nounwind {
  36. entry:
  37. ret i32 0
  38. }
  39. define void @weak_f_caller() nounwind {
  40. entry:
  41. ; CHECK: call i32 @weak_f(i32 10)
  42. %call = tail call i32 @weak_f(i32 10)
  43. ret void
  44. }