basictest.ll 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ; Test CFG simplify removal of branch instructions.
  2. ;
  3. ; RUN: opt < %s -simplifycfg -S | FileCheck %s
  4. ; RUN: opt < %s -passes=simplify-cfg -S | FileCheck %s
  5. define void @test1() {
  6. br label %1
  7. ret void
  8. ; CHECK-LABEL: @test1(
  9. ; CHECK-NEXT: ret void
  10. }
  11. define void @test2() {
  12. ret void
  13. ret void
  14. ; CHECK-LABEL: @test2(
  15. ; CHECK-NEXT: ret void
  16. ; CHECK-NEXT: }
  17. }
  18. define void @test3(i1 %T) {
  19. br i1 %T, label %1, label %1
  20. ret void
  21. ; CHECK-LABEL: @test3(
  22. ; CHECK-NEXT: ret void
  23. }
  24. ; PR5795
  25. define void @test5(i32 %A) {
  26. switch i32 %A, label %return [
  27. i32 2, label %1
  28. i32 10, label %2
  29. ]
  30. ret void
  31. ret void
  32. return: ; preds = %entry
  33. ret void
  34. ; CHECK-LABEL: @test5(
  35. ; CHECK-NEXT: ret void
  36. }
  37. ; PR14893
  38. define i8 @test6f() {
  39. ; CHECK-LABEL: @test6f
  40. ; CHECK: alloca i8, align 1
  41. ; CHECK-NEXT: call i8 @test6g
  42. ; CHECK-NEXT: icmp eq i8 %tmp, 0
  43. ; CHECK-NEXT: load i8, i8* %r, align 1{{$}}
  44. bb0:
  45. %r = alloca i8, align 1
  46. %tmp = call i8 @test6g(i8* %r)
  47. %tmp1 = icmp eq i8 %tmp, 0
  48. br i1 %tmp1, label %bb2, label %bb1
  49. bb1:
  50. %tmp3 = load i8, i8* %r, align 1, !range !2, !tbaa !1
  51. %tmp4 = icmp eq i8 %tmp3, 1
  52. br i1 %tmp4, label %bb2, label %bb3
  53. bb2:
  54. br label %bb3
  55. bb3:
  56. %tmp6 = phi i8 [ 0, %bb2 ], [ 1, %bb1 ]
  57. ret i8 %tmp6
  58. }
  59. declare i8 @test6g(i8*)
  60. !0 = !{!1, !1, i64 0}
  61. !1 = !{!"foo"}
  62. !2 = !{i8 0, i8 2}