2012-04-02-IndirectBr.ll 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ; RUN: opt < %s -S -loop-unswitch -verify-loop-info -verify-dom-info | FileCheck %s
  2. ; PR12343: -loop-unswitch crash on indirect branch
  3. ; CHECK: %0 = icmp eq i64 undef, 0
  4. ; CHECK-NEXT: br i1 %0, label %"5", label %"4"
  5. ; CHECK: "5": ; preds = %entry
  6. ; CHECK-NEXT: br label %"16"
  7. ; CHECK: "16": ; preds = %"22", %"5"
  8. ; CHECK-NEXT: indirectbr i8* undef, [label %"22", label %"33"]
  9. ; CHECK: "22": ; preds = %"16"
  10. ; CHECK-NEXT: br i1 %0, label %"16", label %"26"
  11. ; CHECK: "26": ; preds = %"22"
  12. ; CHECK-NEXT: unreachable
  13. define void @foo() {
  14. entry:
  15. %0 = icmp eq i64 undef, 0
  16. br i1 %0, label %"5", label %"4"
  17. "4": ; preds = %entry
  18. unreachable
  19. "5": ; preds = %entry
  20. br label %"16"
  21. "16": ; preds = %"22", %"5"
  22. indirectbr i8* undef, [label %"22", label %"33"]
  23. "22": ; preds = %"16"
  24. br i1 %0, label %"16", label %"26"
  25. "26": ; preds = %"22"
  26. unreachable
  27. "33": ; preds = %"16"
  28. unreachable
  29. }