; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -loop-unroll -unroll-peel-count=1 < %s | FileCheck %s

declare zeroext i8 @patatino()

define fastcc void @tinky() {
; CHECK-LABEL: @tinky(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[NEXT:%.*]]
; CHECK:       loopexit.loopexit:
; CHECK-NEXT:    br label [[LOOPEXIT:%.*]]
; CHECK:       loopexit:
; CHECK-NEXT:    ret void
; CHECK:       next:
; CHECK-NEXT:    br label [[LOOP_PEEL_BEGIN:%.*]]
; CHECK:       loop.peel.begin:
; CHECK-NEXT:    br label [[LOOP_PEEL:%.*]]
; CHECK:       loop.peel:
; CHECK-NEXT:    [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    br i1 false, label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT]]
; CHECK:       loop.peel.next:
; CHECK-NEXT:    br label [[LOOP_PEEL_NEXT1:%.*]]
; CHECK:       loop.peel.next1:
; CHECK-NEXT:    br label [[NEXT_PEEL_NEWPH:%.*]]
; CHECK:       next.peel.newph:
; CHECK-NEXT:    br label [[LOOP:%.*]]
; CHECK:       loop:
; CHECK-NEXT:    [[CALL593:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    br i1 false, label [[LOOP]], label [[LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
;
entry:
  br label %next

loopexit:
  ret void

next:
  br label %loop

loop:
  %a = phi i8 [ undef, %next ], [ %call593, %loop ]
  %b = phi i32 [ 0, %next ], [ 1, %loop ]
  %call593 = tail call zeroext i8 @patatino()
  br i1 false, label %loop, label %loopexit
}

define void @tinky2() {
; CHECK-LABEL: @tinky2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[NEXT:%.*]]
; CHECK:       loopexit.loopexit:
; CHECK-NEXT:    br label [[LOOPEXIT:%.*]]
; CHECK:       loopexit:
; CHECK-NEXT:    ret void
; CHECK:       next:
; CHECK-NEXT:    br label [[LOOP_PEEL_BEGIN:%.*]]
; CHECK:       loop.peel.begin:
; CHECK-NEXT:    br label [[LOOP_PEEL:%.*]]
; CHECK:       loop.peel:
; CHECK-NEXT:    [[CALL593_PEEL:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT_PEEL:%.*]] = add i32 0, 1
; CHECK-NEXT:    [[COND_PEEL:%.*]] = icmp ne i32 0, 30
; CHECK-NEXT:    br i1 [[COND_PEEL]], label [[LOOP_PEEL_NEXT:%.*]], label [[LOOPEXIT]]
; CHECK:       loop.peel.next:
; CHECK-NEXT:    br label [[LOOP_PEEL_NEXT1:%.*]]
; CHECK:       loop.peel.next1:
; CHECK-NEXT:    br label [[NEXT_PEEL_NEWPH:%.*]]
; CHECK:       next.peel.newph:
; CHECK-NEXT:    br label [[LOOP:%.*]]
; CHECK:       loop:
; CHECK-NEXT:    [[B:%.*]] = phi i32 [ [[B_NEXT_PEEL]], [[NEXT_PEEL_NEWPH]] ], [ [[B_NEXT:%.*]], [[LOOP]] ]
; CHECK-NEXT:    [[CALL593:%.*]] = tail call zeroext i8 @patatino()
; CHECK-NEXT:    [[B_NEXT]] = add nuw nsw i32 [[B]], 1
; CHECK-NEXT:    [[COND:%.*]] = icmp ne i32 [[B]], 30
; CHECK-NEXT:    br i1 [[COND]], label [[LOOP]], label [[LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP3:![0-9]+]]
;
entry:
  br label %next

loopexit:
  ret void

next:
  br label %loop

loop:
  %a = phi i8 [ undef, %next ], [ %call593, %loop ]
  %b = phi i32 [ 0, %next ], [ %b.next, %loop ]
  %call593 = tail call zeroext i8 @patatino()
  %b.next = add i32 %b, 1
  %cond = icmp ne i32 %b, 30
  br i1 %cond, label %loop, label %loopexit
}
