; RUN: llc < %s -mtriple=i686-apple-darwin -relocation-model=pic --frame-pointer=all

	%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
	%struct.__sFILEX = type opaque
	%struct.__sbuf = type { i8*, i32 }
	%struct.partition_def = type { i32, [1 x %struct.partition_elem] }
	%struct.partition_elem = type { i32, %struct.partition_elem*, i32 }

define void @partition_print(%struct.partition_def* %part) {
entry:
	br i1 false, label %bb.preheader, label %bb99

bb.preheader:		; preds = %entry
	br i1 false, label %cond_true, label %cond_next90

cond_true:		; preds = %bb.preheader
	br i1 false, label %bb32, label %bb87.critedge

bb32:		; preds = %bb32, %cond_true
	%i.2115.0 = phi i32 [ 0, %cond_true ], [ %indvar.next127, %bb32 ]		; <i32> [#uses=1]
	%c.2112.0 = phi i32 [ 0, %cond_true ], [ %tmp49, %bb32 ]		; <i32> [#uses=1]
	%tmp43 = getelementptr %struct.partition_def, %struct.partition_def* %part, i32 0, i32 1, i32 %c.2112.0, i32 1		; <%struct.partition_elem**> [#uses=1]
	%tmp44 = load %struct.partition_elem*, %struct.partition_elem** %tmp43		; <%struct.partition_elem*> [#uses=1]
	%tmp4445 = ptrtoint %struct.partition_elem* %tmp44 to i32		; <i32> [#uses=1]
	%tmp48 = sub i32 %tmp4445, 0		; <i32> [#uses=1]
	%tmp49 = sdiv i32 %tmp48, 12		; <i32> [#uses=1]
	%indvar.next127 = add i32 %i.2115.0, 1		; <i32> [#uses=2]
	%exitcond128 = icmp eq i32 %indvar.next127, 0		; <i1> [#uses=1]
	br i1 %exitcond128, label %bb58, label %bb32

bb58:		; preds = %bb32
	ret void

bb87.critedge:		; preds = %cond_true
	ret void

cond_next90:		; preds = %bb.preheader
	ret void

bb99:		; preds = %entry
	ret void
}
