; RUN: opt -loop-simplify -S < %s | FileCheck %s | |
; LoopSimplify shouldn't split loop backedges that use indirectbr. | |
; CHECK: bb1: ; preds = %bb5, %bb | |
; CHECK-NEXT: indirectbr | |
; CHECK: bb5: ; preds = %bb1 | |
; CHECK-NEXT: br label %bb1{{$}} | |
define void @foo(i8* %p) nounwind { | |
bb: | |
br label %bb1 | |
bb1: ; preds = %bb5, %bb1, %bb | |
indirectbr i8* %p, [label %bb6, label %bb7, label %bb1, label %bb2, label %bb3, label %bb5, label %bb4] | |
bb2: ; preds = %bb1 | |
ret void | |
bb3: ; preds = %bb1 | |
ret void | |
bb4: ; preds = %bb1 | |
ret void | |
bb5: ; preds = %bb1 | |
br label %bb1 | |
bb6: ; preds = %bb1 | |
ret void | |
bb7: ; preds = %bb1 | |
ret void | |
} |