; RUN: llc < %s -march=x86 -mtriple=i686-darwin | \
; RUN:   grep push | count 3

define void @foo(i8** %buf, i32 %size, i32 %col, i8* %p) nounwind {
entry:
	icmp sgt i32 %size, 0		; <i1>:0 [#uses=1]
	br i1 %0, label %bb.preheader, label %return

bb.preheader:		; preds = %entry
	%tmp5.sum72 = add i32 %col, 7		; <i32> [#uses=1]
	%tmp5.sum71 = add i32 %col, 5		; <i32> [#uses=1]
	%tmp5.sum70 = add i32 %col, 3		; <i32> [#uses=1]
	%tmp5.sum69 = add i32 %col, 2		; <i32> [#uses=1]
	%tmp5.sum68 = add i32 %col, 1		; <i32> [#uses=1]
	%tmp5.sum66 = add i32 %col, 4		; <i32> [#uses=1]
	%tmp5.sum = add i32 %col, 6		; <i32> [#uses=1]
	br label %bb

bb:		; preds = %bb, %bb.preheader
	%i.073.0 = phi i32 [ 0, %bb.preheader ], [ %indvar.next, %bb ]		; <i32> [#uses=3]
	%p_addr.076.0.rec = mul i32 %i.073.0, 9		; <i32> [#uses=9]
	%p_addr.076.0 = getelementptr i8* %p, i32 %p_addr.076.0.rec		; <i8*> [#uses=1]
	%tmp2 = getelementptr i8** %buf, i32 %i.073.0		; <i8**> [#uses=1]
	%tmp3 = load i8** %tmp2		; <i8*> [#uses=8]
	%tmp5 = getelementptr i8* %tmp3, i32 %col		; <i8*> [#uses=1]
	%tmp7 = load i8* %p_addr.076.0		; <i8> [#uses=1]
	store i8 %tmp7, i8* %tmp5
	%p_addr.076.0.sum93 = add i32 %p_addr.076.0.rec, 1		; <i32> [#uses=1]
	%tmp11 = getelementptr i8* %p, i32 %p_addr.076.0.sum93		; <i8*> [#uses=1]
	%tmp13 = load i8* %tmp11		; <i8> [#uses=1]
	%tmp15 = getelementptr i8* %tmp3, i32 %tmp5.sum72		; <i8*> [#uses=1]
	store i8 %tmp13, i8* %tmp15
	%p_addr.076.0.sum92 = add i32 %p_addr.076.0.rec, 2		; <i32> [#uses=1]
	%tmp17 = getelementptr i8* %p, i32 %p_addr.076.0.sum92		; <i8*> [#uses=1]
	%tmp19 = load i8* %tmp17		; <i8> [#uses=1]
	%tmp21 = getelementptr i8* %tmp3, i32 %tmp5.sum71		; <i8*> [#uses=1]
	store i8 %tmp19, i8* %tmp21
	%p_addr.076.0.sum91 = add i32 %p_addr.076.0.rec, 3		; <i32> [#uses=1]
	%tmp23 = getelementptr i8* %p, i32 %p_addr.076.0.sum91		; <i8*> [#uses=1]
	%tmp25 = load i8* %tmp23		; <i8> [#uses=1]
	%tmp27 = getelementptr i8* %tmp3, i32 %tmp5.sum70		; <i8*> [#uses=1]
	store i8 %tmp25, i8* %tmp27
	%p_addr.076.0.sum90 = add i32 %p_addr.076.0.rec, 4		; <i32> [#uses=1]
	%tmp29 = getelementptr i8* %p, i32 %p_addr.076.0.sum90		; <i8*> [#uses=1]
	%tmp31 = load i8* %tmp29		; <i8> [#uses=1]
	%tmp33 = getelementptr i8* %tmp3, i32 %tmp5.sum69		; <i8*> [#uses=2]
	store i8 %tmp31, i8* %tmp33
	%p_addr.076.0.sum89 = add i32 %p_addr.076.0.rec, 5		; <i32> [#uses=1]
	%tmp35 = getelementptr i8* %p, i32 %p_addr.076.0.sum89		; <i8*> [#uses=1]
	%tmp37 = load i8* %tmp35		; <i8> [#uses=1]
	%tmp39 = getelementptr i8* %tmp3, i32 %tmp5.sum68		; <i8*> [#uses=1]
	store i8 %tmp37, i8* %tmp39
	%p_addr.076.0.sum88 = add i32 %p_addr.076.0.rec, 6		; <i32> [#uses=1]
	%tmp41 = getelementptr i8* %p, i32 %p_addr.076.0.sum88		; <i8*> [#uses=1]
	%tmp43 = load i8* %tmp41		; <i8> [#uses=1]
	store i8 %tmp43, i8* %tmp33
	%p_addr.076.0.sum87 = add i32 %p_addr.076.0.rec, 7		; <i32> [#uses=1]
	%tmp47 = getelementptr i8* %p, i32 %p_addr.076.0.sum87		; <i8*> [#uses=1]
	%tmp49 = load i8* %tmp47		; <i8> [#uses=1]
	%tmp51 = getelementptr i8* %tmp3, i32 %tmp5.sum66		; <i8*> [#uses=1]
	store i8 %tmp49, i8* %tmp51
	%p_addr.076.0.sum = add i32 %p_addr.076.0.rec, 8		; <i32> [#uses=1]
	%tmp53 = getelementptr i8* %p, i32 %p_addr.076.0.sum		; <i8*> [#uses=1]
	%tmp55 = load i8* %tmp53		; <i8> [#uses=1]
	%tmp57 = getelementptr i8* %tmp3, i32 %tmp5.sum		; <i8*> [#uses=1]
	store i8 %tmp55, i8* %tmp57
	%indvar.next = add i32 %i.073.0, 1		; <i32> [#uses=2]
	icmp eq i32 %indvar.next, %size		; <i1>:1 [#uses=1]
	br i1 %1, label %return, label %bb

return:		; preds = %bb, %entry
	ret void
}
