; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim

	type { %struct.GAP }		; type %0
	type { i16, i8, i8 }		; type %1
	type { [2 x i32], [2 x i32] }		; type %2
	type { %struct.rec* }		; type %3
	type { i8, i8, i16, i8, i8, i8, i8 }		; type %4
	%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.FILE_POS = type { i8, i8, i16, i32 }
	%struct.FIRST_UNION = type { %struct.FILE_POS }
	%struct.FOURTH_UNION = type { %struct.STYLE }
	%struct.GAP = type { i8, i8, i16 }
	%struct.LIST = type { %struct.rec*, %struct.rec* }
	%struct.SECOND_UNION = type { %1 }
	%struct.STYLE = type { %0, %0, i16, i16, i32 }
	%struct.THIRD_UNION = type { %2 }
	%struct.__sFILEX = type opaque
	%struct.__sbuf = type { i8*, i32 }
	%struct.head_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, %struct.FOURTH_UNION, %struct.rec*, %3, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, %struct.rec*, i32 }
	%struct.rec = type { %struct.head_type }
@.str24239 = external constant [20 x i8], align 1		; <[20 x i8]*> [#uses=1]
@no_file_pos = external global %4		; <%4*> [#uses=1]
@zz_tmp = external global %struct.rec*		; <%struct.rec**> [#uses=1]
@.str81872 = external constant [10 x i8], align 1		; <[10 x i8]*> [#uses=1]
@out_fp = external global %struct.FILE*		; <%struct.FILE**> [#uses=2]
@cpexists = external global i32		; <i32*> [#uses=2]
@.str212784 = external constant [17 x i8], align 1		; <[17 x i8]*> [#uses=1]
@.str1822946 = external constant [8 x i8], align 1		; <[8 x i8]*> [#uses=1]
@.str1842948 = external constant [11 x i8], align 1		; <[11 x i8]*> [#uses=1]

declare i32 @fprintf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind

declare i32 @"\01_fwrite"(i8*, i32, i32, i8*)

declare %struct.FILE* @OpenIncGraphicFile(i8*, i8 zeroext, %struct.rec** nocapture, %struct.FILE_POS*, i32* nocapture) nounwind

declare void @Error(i32, i32, i8*, i32, %struct.FILE_POS*, ...) nounwind

declare i8* @fgets(i8*, i32, %struct.FILE* nocapture) nounwind

define void @PS_PrintGraphicInclude(%struct.rec* %x, i32 %colmark, i32 %rowmark) nounwind {
entry:
	br label %bb5

bb5:		; preds = %bb5, %entry
	%.pn = phi %struct.rec* [ %y.0, %bb5 ], [ undef, %entry ]		; <%struct.rec*> [#uses=1]
	%y.0.in = getelementptr %struct.rec* %.pn, i32 0, i32 0, i32 0, i32 1, i32 0		; <%struct.rec**> [#uses=1]
	%y.0 = load %struct.rec** %y.0.in		; <%struct.rec*> [#uses=2]
	br i1 undef, label %bb5, label %bb6

bb6:		; preds = %bb5
	%0 = call  %struct.FILE* @OpenIncGraphicFile(i8* undef, i8 zeroext 0, %struct.rec** undef, %struct.FILE_POS* null, i32* undef) nounwind		; <%struct.FILE*> [#uses=1]
	br i1 false, label %bb.i, label %FontHalfXHeight.exit

bb.i:		; preds = %bb6
	br label %FontHalfXHeight.exit

FontHalfXHeight.exit:		; preds = %bb.i, %bb6
	br i1 undef, label %bb.i1, label %FontSize.exit

bb.i1:		; preds = %FontHalfXHeight.exit
	br label %FontSize.exit

FontSize.exit:		; preds = %bb.i1, %FontHalfXHeight.exit
	%1 = load i32* undef, align 4		; <i32> [#uses=1]
	%2 = icmp ult i32 0, undef		; <i1> [#uses=1]
	br i1 %2, label %bb.i5, label %FontName.exit

bb.i5:		; preds = %FontSize.exit
	call  void (i32, i32, i8*, i32, %struct.FILE_POS*, ...)* @Error(i32 1, i32 2, i8* getelementptr ([20 x i8]* @.str24239, i32 0, i32 0), i32 0, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*), i8* getelementptr ([10 x i8]* @.str81872, i32 0, i32 0)) nounwind
	br label %FontName.exit

FontName.exit:		; preds = %bb.i5, %FontSize.exit
	%3 = call  i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* undef, i8* getelementptr ([8 x i8]* @.str1822946, i32 0, i32 0), i32 %1, i8* undef) nounwind		; <i32> [#uses=0]
	%4 = call  i32 @"\01_fwrite"(i8* getelementptr ([11 x i8]* @.str1842948, i32 0, i32 0), i32 1, i32 10, i8* undef) nounwind		; <i32> [#uses=0]
	%5 = sub i32 %colmark, undef		; <i32> [#uses=1]
	%6 = sub i32 %rowmark, undef		; <i32> [#uses=1]
	%7 = load %struct.FILE** @out_fp, align 4		; <%struct.FILE*> [#uses=1]
	%8 = call  i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* %7, i8* getelementptr ([17 x i8]* @.str212784, i32 0, i32 0), i32 %5, i32 %6) nounwind		; <i32> [#uses=0]
	store i32 0, i32* @cpexists, align 4
	%9 = getelementptr %struct.rec* %y.0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 1		; <i32*> [#uses=1]
	%10 = load i32* %9, align 4		; <i32> [#uses=1]
	%11 = sub i32 0, %10		; <i32> [#uses=1]
	%12 = load %struct.FILE** @out_fp, align 4		; <%struct.FILE*> [#uses=1]
	%13 = call  i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* %12, i8* getelementptr ([17 x i8]* @.str212784, i32 0, i32 0), i32 undef, i32 %11) nounwind		; <i32> [#uses=0]
	store i32 0, i32* @cpexists, align 4
	br label %bb100.outer.outer

bb100.outer.outer:		; preds = %bb79.critedge, %bb1.i3, %FontName.exit
	%x_addr.0.ph.ph = phi %struct.rec* [ %x, %FontName.exit ], [ null, %bb79.critedge ], [ null, %bb1.i3 ]		; <%struct.rec*> [#uses=1]
	%14 = getelementptr %struct.rec* %x_addr.0.ph.ph, i32 0, i32 0, i32 1, i32 0		; <%struct.FILE_POS*> [#uses=0]
	br label %bb100.outer

bb.i80:		; preds = %bb3.i85
	br i1 undef, label %bb2.i84, label %bb2.i51

bb2.i84:		; preds = %bb100.outer, %bb.i80
	br i1 undef, label %bb3.i77, label %bb3.i85

bb3.i85:		; preds = %bb2.i84
	br i1 false, label %StringBeginsWith.exit88, label %bb.i80

StringBeginsWith.exit88:		; preds = %bb3.i85
	br i1 undef, label %bb3.i77, label %bb2.i51

bb2.i.i68:		; preds = %bb3.i77
	br label %bb3.i77

bb3.i77:		; preds = %bb2.i.i68, %StringBeginsWith.exit88, %bb2.i84
	br i1 false, label %bb1.i58, label %bb2.i.i68

bb1.i58:		; preds = %bb3.i77
	unreachable

bb.i47:		; preds = %bb3.i52
	br i1 undef, label %bb2.i51, label %bb2.i.i15.critedge

bb2.i51:		; preds = %bb.i47, %StringBeginsWith.exit88, %bb.i80
	%15 = load i8* undef, align 1		; <i8> [#uses=0]
	br i1 false, label %StringBeginsWith.exit55thread-split, label %bb3.i52

bb3.i52:		; preds = %bb2.i51
	br i1 false, label %StringBeginsWith.exit55, label %bb.i47

StringBeginsWith.exit55thread-split:		; preds = %bb2.i51
	br label %StringBeginsWith.exit55

StringBeginsWith.exit55:		; preds = %StringBeginsWith.exit55thread-split, %bb3.i52
	br label %bb2.i41

bb2.i41:		; preds = %bb2.i41, %StringBeginsWith.exit55
	br label %bb2.i41

bb2.i.i15.critedge:		; preds = %bb.i47
	%16 = call  i8* @fgets(i8* undef, i32 512, %struct.FILE* %0) nounwind		; <i8*> [#uses=0]
	%iftmp.560.0 = select i1 undef, i32 2, i32 0		; <i32> [#uses=1]
	br label %bb100.outer

bb2.i8:		; preds = %bb100.outer
	br i1 undef, label %bb1.i3, label %bb79.critedge

bb1.i3:		; preds = %bb2.i8
	br label %bb100.outer.outer

bb79.critedge:		; preds = %bb2.i8
	store %struct.rec* null, %struct.rec** @zz_tmp, align 4
	br label %bb100.outer.outer

bb100.outer:		; preds = %bb2.i.i15.critedge, %bb100.outer.outer
	%state.0.ph = phi i32 [ 0, %bb100.outer.outer ], [ %iftmp.560.0, %bb2.i.i15.critedge ]		; <i32> [#uses=1]
	%cond = icmp eq i32 %state.0.ph, 1		; <i1> [#uses=1]
	br i1 %cond, label %bb2.i8, label %bb2.i84
}
