; RUN: opt < %s -loop-simplify -lcssa -verify-loop-info -verify-dom-info -S \
; RUN:   | grep -F "indirectbr i8* %x, [label %L0, label %L1]" \
; RUN:   | count 6

; LoopSimplify should not try to transform loops when indirectbr is involved.

define void @entry(i8* %x) {
entry:
  indirectbr i8* %x, [ label %L0, label %L1 ]

L0:
  br label %L0

L1:
  ret void
}

define void @backedge(i8* %x) {
entry:
  br label %L0

L0:
  br label %L1

L1:
  indirectbr i8* %x, [ label %L0, label %L1 ]
}

define i64 @exit(i8* %x) {
entry:
  br label %L2

L2:
  %z = bitcast i64 0 to i64
  indirectbr i8* %x, [ label %L0, label %L1 ]

L0:
  br label %L2

L1:
  ret i64 %z
}

define i64 @criticalexit(i8* %x, i1 %a) {
entry:
  br i1 %a, label %L1, label %L2

L2:
  %z = bitcast i64 0 to i64
  indirectbr i8* %x, [ label %L0, label %L1 ]

L0:
  br label %L2

L1:
  %y = phi i64 [ %z, %L2 ], [ 1, %entry ]
  ret i64 %y
}

define i64 @exit_backedge(i8* %x) {
entry:
  br label %L0

L0:
  %z = bitcast i64 0 to i64
  indirectbr i8* %x, [ label %L0, label %L1 ]

L1:
  ret i64 %z
}

define i64 @criticalexit_backedge(i8* %x, i1 %a) {
entry:
  br i1 %a, label %L0, label %L1

L0:
  %z = bitcast i64 0 to i64
  indirectbr i8* %x, [ label %L0, label %L1 ]

L1:
  %y = phi i64 [ %z, %L0 ], [ 1, %entry ]
  ret i64 %y
}

define void @pr5502() nounwind {
entry:
  br label %while.cond

while.cond:
  br i1 undef, label %while.body, label %while.end

while.body:
  indirectbr i8* undef, [label %end_opcode, label %end_opcode]

end_opcode:
  br i1 false, label %end_opcode, label %while.cond

while.end:
  ret void
}
