; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=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
}
