; Make sure that the compare instruction occurs after the increment to avoid
; having overlapping live ranges that result in copies.  We want the setcc 
; instruction immediately before the conditional branch.
;
; RUN: opt -S -loop-reduce %s | FileCheck %s

define void @foo(float* %D, i32 %E) {
entry:
	br label %no_exit
no_exit:		; preds = %no_exit, %entry
	%indvar = phi i32 [ 0, %entry ], [ %indvar.next, %no_exit ]		; <i32> [#uses=1]
	volatile store float 0.000000e+00, float* %D
	%indvar.next = add i32 %indvar, 1		; <i32> [#uses=2]
; CHECK: icmp
; CHECK-NEXT: br i1
	%exitcond = icmp eq i32 %indvar.next, %E		; <i1> [#uses=1]
	br i1 %exitcond, label %loopexit, label %no_exit
loopexit:		; preds = %no_exit
	ret void
}

