dce-cond-after-folding-terminator.ll 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. ; RUN: opt -S <%s -simplifycfg | FileCheck %s
  2. define void @test_br(i32 %x) {
  3. entry:
  4. ; CHECK-LABEL: @test_br(
  5. ; CHECK-NEXT: entry:
  6. ; CHECK-NEXT: ret void
  7. %cmp = icmp eq i32 %x, 10
  8. br i1 %cmp, label %if.then, label %if.then
  9. if.then: ; preds = %entry
  10. br label %if.end
  11. if.end: ; preds = %if.else, %if.then
  12. ret void
  13. }
  14. define void @test_switch(i32 %x) nounwind {
  15. entry:
  16. ; CHECK-LABEL: @test_switch(
  17. ; CHECK-NEXT: entry:
  18. ; CHECK-NEXT: ret void
  19. %rem = srem i32 %x, 3
  20. switch i32 %rem, label %sw.bb [
  21. i32 1, label %sw.bb
  22. i32 10, label %sw.bb
  23. ]
  24. sw.bb: ; preds = %sw.default, %entry, %entry
  25. br label %sw.epilog
  26. sw.epilog: ; preds = %sw.bb
  27. ret void
  28. }
  29. define void @test_indirectbr(i32 %x) {
  30. entry:
  31. ; CHECK-LABEL: @test_indirectbr(
  32. ; CHECK-NEXT: entry:
  33. ; Ideally this should now check:
  34. ; CHK-NEXT: ret void
  35. ; But that doesn't happen yet. Instead:
  36. ; CHECK-NEXT: br label %L1
  37. %label = bitcast i8* blockaddress(@test_indirectbr, %L1) to i8*
  38. indirectbr i8* %label, [label %L1, label %L2]
  39. L1: ; preds = %entry
  40. ret void
  41. L2: ; preds = %entry
  42. ret void
  43. }