indirectbr-backedge.ll   [plain text]


; 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
}