; Base should not be i*3, it should be i*2.
; RUN: opt < %s -loop-reduce -S | \
; RUN:   not grep "mul.*%i, 3"

; Indvar should not start at zero:
; RUN: opt < %s -loop-reduce -S | \
; RUN:   not grep "phi i32 .* 0"
; END.

; mul uint %i, 3

target datalayout = "e-p:32:32-n32"
target triple = "i686-apple-darwin8"
@flags2 = external global [8193 x i8], align 32		; <[8193 x i8]*> [#uses=1]

define void @foo(i32 %k, i32 %i.s) {
entry:
	%i = bitcast i32 %i.s to i32		; <i32> [#uses=2]
	%k_addr.012 = shl i32 %i.s, 1		; <i32> [#uses=1]
	%tmp14 = icmp sgt i32 %k_addr.012, 8192		; <i1> [#uses=1]
	br i1 %tmp14, label %return, label %bb.preheader
bb.preheader:		; preds = %entry
	%tmp. = shl i32 %i, 1		; <i32> [#uses=1]
	br label %bb
bb:		; preds = %bb, %bb.preheader
	%indvar = phi i32 [ %indvar.next, %bb ], [ 0, %bb.preheader ]		; <i32> [#uses=2]
	%tmp.15 = mul i32 %indvar, %i		; <i32> [#uses=1]
	%tmp.16 = add i32 %tmp.15, %tmp.		; <i32> [#uses=2]
	%k_addr.0.0 = bitcast i32 %tmp.16 to i32		; <i32> [#uses=1]
	%gep.upgrd.1 = zext i32 %tmp.16 to i64		; <i64> [#uses=1]
	%tmp = getelementptr [8193 x i8]* @flags2, i32 0, i64 %gep.upgrd.1		; <i8*> [#uses=1]
	store i8 0, i8* %tmp
	%k_addr.0 = add i32 %k_addr.0.0, %i.s		; <i32> [#uses=1]
	%tmp.upgrd.2 = icmp sgt i32 %k_addr.0, 8192		; <i1> [#uses=1]
	%indvar.next = add i32 %indvar, 1		; <i32> [#uses=1]
	br i1 %tmp.upgrd.2, label %return.loopexit, label %bb
return.loopexit:		; preds = %bb
	br label %return
return:		; preds = %return.loopexit, %entry
	ret void
}
