1; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -disable-fp-elim -O3 2 3 %0 = type { i16, i8, i8 } ; type %0 4 %1 = type { [2 x i32], [2 x i32] } ; type %1 5 %2 = type { %struct.GAP } ; type %2 6 %3 = type { %struct.rec* } ; type %3 7 %4 = type { i8, i8, i16, i8, i8, i8, i8 } ; type %4 8 %5 = type { i8, i8, i8, i8 } ; type %5 9 %struct.COMPOSITE = type { i8, i16, i16 } 10 %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 } 11 %struct.FILE_POS = type { i8, i8, i16, i32 } 12 %struct.FIRST_UNION = type { %struct.FILE_POS } 13 %struct.FONT_INFO = type { %struct.metrics*, i8*, i16*, %struct.COMPOSITE*, i32, %struct.rec*, %struct.rec*, i16, i16, i16*, i8*, i8*, i16* } 14 %struct.FOURTH_UNION = type { %struct.STYLE } 15 %struct.GAP = type { i8, i8, i16 } 16 %struct.LIST = type { %struct.rec*, %struct.rec* } 17 %struct.SECOND_UNION = type { %0 } 18 %struct.STYLE = type { %2, %2, i16, i16, i32 } 19 %struct.THIRD_UNION = type { %1 } 20 %struct.__sFILEX = type opaque 21 %struct.__sbuf = type { i8*, i32 } 22 %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 } 23 %struct.metrics = type { i16, i16, i16, i16, i16 } 24 %struct.rec = type { %struct.head_type } 25@.str24239 = external constant [20 x i8], align 1 ; <[20 x i8]*> [#uses=1] 26@no_file_pos = external global %4 ; <%4*> [#uses=1] 27@.str19294 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=1] 28@zz_lengths = external global [150 x i8] ; <[150 x i8]*> [#uses=1] 29@next_free.4772 = external global i8** ; <i8***> [#uses=3] 30@top_free.4773 = external global i8** ; <i8***> [#uses=2] 31@.str1575 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=1] 32@zz_free = external global [524 x %struct.rec*] ; <[524 x %struct.rec*]*> [#uses=2] 33@zz_hold = external global %struct.rec* ; <%struct.rec**> [#uses=5] 34@zz_tmp = external global %struct.rec* ; <%struct.rec**> [#uses=2] 35@zz_res = external global %struct.rec* ; <%struct.rec**> [#uses=2] 36@xx_link = external global %struct.rec* ; <%struct.rec**> [#uses=2] 37@font_count = external global i32 ; <i32*> [#uses=1] 38@.str81872 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=1] 39@.str101874 = external constant [30 x i8], align 1 ; <[30 x i8]*> [#uses=1] 40@.str111875 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=1] 41@.str141878 = external constant [27 x i8], align 1 ; <[27 x i8]*> [#uses=1] 42@out_fp = external global %struct.FILE* ; <%struct.FILE**> [#uses=3] 43@.str192782 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=1] 44@cpexists = external global i32 ; <i32*> [#uses=2] 45@.str212784 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=1] 46@currentfont = external global i32 ; <i32*> [#uses=3] 47@wordcount = external global i32 ; <i32*> [#uses=1] 48@needs = external global %struct.rec* ; <%struct.rec**> [#uses=1] 49@.str742838 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=1] 50@.str752839 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=1] 51@.str1802944 = external constant [40 x i8], align 1 ; <[40 x i8]*> [#uses=1] 52@.str1822946 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=1] 53@.str1842948 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=1] 54@.str1852949 = external constant [23 x i8], align 1 ; <[23 x i8]*> [#uses=1] 55@.str1872951 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=1] 56@.str1932957 = external constant [26 x i8], align 1 ; <[26 x i8]*> [#uses=1] 57 58declare i32 @fprintf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind 59 60declare i32 @"\01_fwrite"(i8*, i32, i32, i8*) 61 62declare i32 @remove(i8* nocapture) nounwind 63 64declare %struct.FILE* @OpenIncGraphicFile(i8*, i8 zeroext, %struct.rec** nocapture, %struct.FILE_POS*, i32* nocapture) nounwind 65 66declare %struct.rec* @MakeWord(i32, i8* nocapture, %struct.FILE_POS*) nounwind 67 68declare void @Error(i32, i32, i8*, i32, %struct.FILE_POS*, ...) nounwind 69 70declare i32 @"\01_fputs"(i8*, %struct.FILE*) 71 72declare noalias i8* @calloc(i32, i32) nounwind 73 74declare i8* @fgets(i8*, i32, %struct.FILE* nocapture) nounwind 75 76define void @PS_PrintGraphicInclude(%struct.rec* %x, i32 %colmark, i32 %rowmark) nounwind { 77entry: 78 %buff = alloca [512 x i8], align 4 ; <[512 x i8]*> [#uses=5] 79 %0 = getelementptr %struct.rec* %x, i32 0, i32 0, i32 1, i32 0, i32 0 ; <i8*> [#uses=2] 80 %1 = load i8* %0, align 4 ; <i8> [#uses=1] 81 %2 = add i8 %1, -94 ; <i8> [#uses=1] 82 %3 = icmp ugt i8 %2, 1 ; <i1> [#uses=1] 83 br i1 %3, label %bb, label %bb1 84 85bb: ; preds = %entry 86 br label %bb1 87 88bb1: ; preds = %bb, %entry 89 %4 = getelementptr %struct.rec* %x, i32 0, i32 0, i32 2 ; <%struct.SECOND_UNION*> [#uses=1] 90 %5 = bitcast %struct.SECOND_UNION* %4 to %5* ; <%5*> [#uses=1] 91 %6 = getelementptr %5* %5, i32 0, i32 1 ; <i8*> [#uses=1] 92 %7 = load i8* %6, align 1 ; <i8> [#uses=1] 93 %8 = icmp eq i8 %7, 0 ; <i1> [#uses=1] 94 br i1 %8, label %bb2, label %bb3 95 96bb2: ; preds = %bb1 97 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 ([40 x i8]* @.str1802944, i32 0, i32 0)) nounwind 98 br label %bb3 99 100bb3: ; preds = %bb2, %bb1 101 %9 = load %struct.rec** undef, align 4 ; <%struct.rec*> [#uses=0] 102 br label %bb5 103 104bb5: ; preds = %bb5, %bb3 105 %y.0 = load %struct.rec** null ; <%struct.rec*> [#uses=2] 106 br i1 false, label %bb5, label %bb6 107 108bb6: ; preds = %bb5 109 %10 = load i8* %0, align 4 ; <i8> [#uses=1] 110 %11 = getelementptr %struct.rec* %y.0, i32 0, i32 0, i32 1, i32 0 ; <%struct.FILE_POS*> [#uses=1] 111 %12 = call %struct.FILE* @OpenIncGraphicFile(i8* undef, i8 zeroext %10, %struct.rec** null, %struct.FILE_POS* %11, i32* undef) nounwind ; <%struct.FILE*> [#uses=4] 112 br i1 false, label %bb7, label %bb8 113 114bb7: ; preds = %bb6 115 unreachable 116 117bb8: ; preds = %bb6 118 %13 = and i32 undef, 4095 ; <i32> [#uses=2] 119 %14 = load i32* @currentfont, align 4 ; <i32> [#uses=0] 120 br i1 false, label %bb10, label %bb9 121 122bb9: ; preds = %bb8 123 %15 = icmp ult i32 0, %13 ; <i1> [#uses=1] 124 br i1 %15, label %bb.i, label %FontHalfXHeight.exit 125 126bb.i: ; preds = %bb9 127 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 ([17 x i8]* @.str111875, i32 0, i32 0)) nounwind 128 %.pre186 = load i32* @currentfont, align 4 ; <i32> [#uses=1] 129 br label %FontHalfXHeight.exit 130 131FontHalfXHeight.exit: ; preds = %bb.i, %bb9 132 %16 = phi i32 [ %.pre186, %bb.i ], [ %13, %bb9 ] ; <i32> [#uses=1] 133 br i1 false, label %bb.i1, label %bb1.i 134 135bb.i1: ; preds = %FontHalfXHeight.exit 136 br label %bb1.i 137 138bb1.i: ; preds = %bb.i1, %FontHalfXHeight.exit 139 br i1 undef, label %bb2.i, label %FontSize.exit 140 141bb2.i: ; preds = %bb1.i 142 call void (i32, i32, i8*, i32, %struct.FILE_POS*, ...)* @Error(i32 37, i32 61, i8* getelementptr ([30 x i8]* @.str101874, i32 0, i32 0), i32 1, %struct.FILE_POS* null) nounwind 143 unreachable 144 145FontSize.exit: ; preds = %bb1.i 146 %17 = getelementptr %struct.FONT_INFO* undef, i32 %16, i32 5 ; <%struct.rec**> [#uses=0] 147 %18 = load i32* undef, align 4 ; <i32> [#uses=1] 148 %19 = load i32* @currentfont, align 4 ; <i32> [#uses=2] 149 %20 = load i32* @font_count, align 4 ; <i32> [#uses=1] 150 %21 = icmp ult i32 %20, %19 ; <i1> [#uses=1] 151 br i1 %21, label %bb.i5, label %FontName.exit 152 153bb.i5: ; preds = %FontSize.exit 154 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 155 br label %FontName.exit 156 157FontName.exit: ; preds = %bb.i5, %FontSize.exit 158 %22 = phi %struct.FONT_INFO* [ undef, %bb.i5 ], [ undef, %FontSize.exit ] ; <%struct.FONT_INFO*> [#uses=1] 159 %23 = getelementptr %struct.FONT_INFO* %22, i32 %19, i32 5 ; <%struct.rec**> [#uses=0] 160 %24 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* undef, i8* getelementptr ([8 x i8]* @.str1822946, i32 0, i32 0), i32 %18, i8* null) nounwind ; <i32> [#uses=0] 161 br label %bb10 162 163bb10: ; preds = %FontName.exit, %bb8 164 %25 = call i32 @"\01_fwrite"(i8* getelementptr ([11 x i8]* @.str1842948, i32 0, i32 0), i32 1, i32 10, i8* undef) nounwind ; <i32> [#uses=0] 165 %26 = sub i32 %rowmark, undef ; <i32> [#uses=1] 166 %27 = load %struct.FILE** @out_fp, align 4 ; <%struct.FILE*> [#uses=1] 167 %28 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* %27, i8* getelementptr ([17 x i8]* @.str212784, i32 0, i32 0), i32 undef, i32 %26) nounwind ; <i32> [#uses=0] 168 store i32 0, i32* @cpexists, align 4 169 %29 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* undef, i8* getelementptr ([17 x i8]* @.str192782, i32 0, i32 0), double 2.000000e+01, double 2.000000e+01) nounwind ; <i32> [#uses=0] 170 %30 = getelementptr %struct.rec* %y.0, i32 0, i32 0, i32 3, i32 0, i32 0, i32 0 ; <i32*> [#uses=1] 171 %31 = load i32* %30, align 4 ; <i32> [#uses=1] 172 %32 = sub i32 0, %31 ; <i32> [#uses=1] 173 %33 = load i32* undef, align 4 ; <i32> [#uses=1] 174 %34 = sub i32 0, %33 ; <i32> [#uses=1] 175 %35 = load %struct.FILE** @out_fp, align 4 ; <%struct.FILE*> [#uses=1] 176 %36 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* %35, i8* getelementptr ([17 x i8]* @.str212784, i32 0, i32 0), i32 %32, i32 %34) nounwind ; <i32> [#uses=0] 177 store i32 0, i32* @cpexists, align 4 178 %37 = load %struct.rec** null, align 4 ; <%struct.rec*> [#uses=1] 179 %38 = getelementptr %struct.rec* %37, i32 0, i32 0, i32 4 ; <%struct.FOURTH_UNION*> [#uses=1] 180 %39 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* undef, i8* getelementptr ([23 x i8]* @.str1852949, i32 0, i32 0), %struct.FOURTH_UNION* %38) nounwind ; <i32> [#uses=0] 181 %buff14 = getelementptr [512 x i8]* %buff, i32 0, i32 0 ; <i8*> [#uses=5] 182 %40 = call i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind ; <i8*> [#uses=0] 183 %iftmp.506.0 = select i1 undef, i32 2, i32 0 ; <i32> [#uses=1] 184 %41 = getelementptr [512 x i8]* %buff, i32 0, i32 26 ; <i8*> [#uses=1] 185 br label %bb100.outer.outer 186 187bb100.outer.outer: ; preds = %bb83, %bb10 188 %state.0.ph.ph = phi i32 [ %iftmp.506.0, %bb10 ], [ undef, %bb83 ] ; <i32> [#uses=1] 189 %x_addr.0.ph.ph = phi %struct.rec* [ %x, %bb10 ], [ %71, %bb83 ] ; <%struct.rec*> [#uses=1] 190 %42 = getelementptr %struct.rec* %x_addr.0.ph.ph, i32 0, i32 0, i32 1, i32 0 ; <%struct.FILE_POS*> [#uses=0] 191 br label %bb100.outer 192 193bb.i80: ; preds = %bb3.i85 194 %43 = icmp eq i8 %44, %46 ; <i1> [#uses=1] 195 %indvar.next.i79 = add i32 %indvar.i81, 1 ; <i32> [#uses=1] 196 br i1 %43, label %bb2.i84, label %bb2.i51 197 198bb2.i84: ; preds = %bb100.outer, %bb.i80 199 %indvar.i81 = phi i32 [ %indvar.next.i79, %bb.i80 ], [ 0, %bb100.outer ] ; <i32> [#uses=3] 200 %pp.0.i82 = getelementptr [27 x i8]* @.str141878, i32 0, i32 %indvar.i81 ; <i8*> [#uses=2] 201 %sp.0.i83 = getelementptr [512 x i8]* %buff, i32 0, i32 %indvar.i81 ; <i8*> [#uses=1] 202 %44 = load i8* %sp.0.i83, align 1 ; <i8> [#uses=2] 203 %45 = icmp eq i8 %44, 0 ; <i1> [#uses=1] 204 br i1 %45, label %StringBeginsWith.exit88thread-split, label %bb3.i85 205 206bb3.i85: ; preds = %bb2.i84 207 %46 = load i8* %pp.0.i82, align 1 ; <i8> [#uses=3] 208 %47 = icmp eq i8 %46, 0 ; <i1> [#uses=1] 209 br i1 %47, label %StringBeginsWith.exit88, label %bb.i80 210 211StringBeginsWith.exit88thread-split: ; preds = %bb2.i84 212 %.pr = load i8* %pp.0.i82 ; <i8> [#uses=1] 213 br label %StringBeginsWith.exit88 214 215StringBeginsWith.exit88: ; preds = %StringBeginsWith.exit88thread-split, %bb3.i85 216 %48 = phi i8 [ %.pr, %StringBeginsWith.exit88thread-split ], [ %46, %bb3.i85 ] ; <i8> [#uses=1] 217 %phitmp91 = icmp eq i8 %48, 0 ; <i1> [#uses=1] 218 br i1 %phitmp91, label %bb3.i77, label %bb2.i51 219 220bb2.i.i68: ; preds = %bb3.i77 221 br i1 false, label %bb2.i51, label %bb2.i75 222 223bb2.i75: ; preds = %bb2.i.i68 224 br label %bb3.i77 225 226bb3.i77: ; preds = %bb2.i75, %StringBeginsWith.exit88 227 %sp.0.i76 = getelementptr [512 x i8]* %buff, i32 0, i32 undef ; <i8*> [#uses=1] 228 %49 = load i8* %sp.0.i76, align 1 ; <i8> [#uses=1] 229 %50 = icmp eq i8 %49, 0 ; <i1> [#uses=1] 230 br i1 %50, label %bb24, label %bb2.i.i68 231 232bb24: ; preds = %bb3.i77 233 %51 = call %struct.rec* @MakeWord(i32 11, i8* %41, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind ; <%struct.rec*> [#uses=0] 234 %52 = load i8* getelementptr ([150 x i8]* @zz_lengths, i32 0, i32 0), align 4 ; <i8> [#uses=1] 235 %53 = zext i8 %52 to i32 ; <i32> [#uses=2] 236 %54 = getelementptr [524 x %struct.rec*]* @zz_free, i32 0, i32 %53 ; <%struct.rec**> [#uses=2] 237 %55 = load %struct.rec** %54, align 4 ; <%struct.rec*> [#uses=3] 238 %56 = icmp eq %struct.rec* %55, null ; <i1> [#uses=1] 239 br i1 %56, label %bb27, label %bb28 240 241bb27: ; preds = %bb24 242 br i1 undef, label %bb.i56, label %GetMemory.exit62 243 244bb.i56: ; preds = %bb27 245 br i1 undef, label %bb1.i58, label %bb2.i60 246 247bb1.i58: ; preds = %bb.i56 248 call void (i32, i32, i8*, i32, %struct.FILE_POS*, ...)* @Error(i32 31, i32 1, i8* getelementptr ([32 x i8]* @.str1575, i32 0, i32 0), i32 1, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind 249 br label %bb2.i60 250 251bb2.i60: ; preds = %bb1.i58, %bb.i56 252 %.pre1.i59 = phi i8** [ undef, %bb1.i58 ], [ undef, %bb.i56 ] ; <i8**> [#uses=1] 253 store i8** undef, i8*** @top_free.4773, align 4 254 br label %GetMemory.exit62 255 256GetMemory.exit62: ; preds = %bb2.i60, %bb27 257 %57 = phi i8** [ %.pre1.i59, %bb2.i60 ], [ undef, %bb27 ] ; <i8**> [#uses=1] 258 %58 = getelementptr i8** %57, i32 %53 ; <i8**> [#uses=1] 259 store i8** %58, i8*** @next_free.4772, align 4 260 store %struct.rec* undef, %struct.rec** @zz_hold, align 4 261 br label %bb29 262 263bb28: ; preds = %bb24 264 store %struct.rec* %55, %struct.rec** @zz_hold, align 4 265 %59 = load %struct.rec** null, align 4 ; <%struct.rec*> [#uses=1] 266 store %struct.rec* %59, %struct.rec** %54, align 4 267 br label %bb29 268 269bb29: ; preds = %bb28, %GetMemory.exit62 270 %.pre184 = phi %struct.rec* [ %55, %bb28 ], [ undef, %GetMemory.exit62 ] ; <%struct.rec*> [#uses=3] 271 store i8 0, i8* undef 272 store %struct.rec* %.pre184, %struct.rec** @xx_link, align 4 273 br i1 undef, label %bb35, label %bb31 274 275bb31: ; preds = %bb29 276 store %struct.rec* %.pre184, %struct.rec** undef 277 br label %bb35 278 279bb35: ; preds = %bb31, %bb29 280 br i1 undef, label %bb41, label %bb37 281 282bb37: ; preds = %bb35 283 %60 = load %struct.rec** null, align 4 ; <%struct.rec*> [#uses=1] 284 store %struct.rec* %60, %struct.rec** undef 285 store %struct.rec* undef, %struct.rec** null 286 store %struct.rec* %.pre184, %struct.rec** null, align 4 287 br label %bb41 288 289bb41: ; preds = %bb37, %bb35 290 %61 = call i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind ; <i8*> [#uses=1] 291 %62 = icmp eq i8* %61, null ; <i1> [#uses=1] 292 %iftmp.554.0 = select i1 %62, i32 2, i32 1 ; <i32> [#uses=1] 293 br label %bb100.outer 294 295bb.i47: ; preds = %bb3.i52 296 %63 = icmp eq i8 %64, %65 ; <i1> [#uses=1] 297 br i1 %63, label %bb2.i51, label %bb2.i41 298 299bb2.i51: ; preds = %bb.i47, %bb2.i.i68, %StringBeginsWith.exit88, %bb.i80 300 %pp.0.i49 = getelementptr [17 x i8]* @.str1872951, i32 0, i32 0 ; <i8*> [#uses=1] 301 %64 = load i8* null, align 1 ; <i8> [#uses=1] 302 br i1 false, label %StringBeginsWith.exit55thread-split, label %bb3.i52 303 304bb3.i52: ; preds = %bb2.i51 305 %65 = load i8* %pp.0.i49, align 1 ; <i8> [#uses=1] 306 br i1 false, label %StringBeginsWith.exit55, label %bb.i47 307 308StringBeginsWith.exit55thread-split: ; preds = %bb2.i51 309 br label %StringBeginsWith.exit55 310 311StringBeginsWith.exit55: ; preds = %StringBeginsWith.exit55thread-split, %bb3.i52 312 br i1 false, label %bb49, label %bb2.i41 313 314bb49: ; preds = %StringBeginsWith.exit55 315 br label %bb2.i41 316 317bb2.i41: ; preds = %bb2.i41, %bb49, %StringBeginsWith.exit55, %bb.i47 318 br i1 false, label %bb2.i41, label %bb2.i.i15 319 320bb2.i.i15: ; preds = %bb2.i41 321 %pp.0.i.i13 = getelementptr [6 x i8]* @.str742838, i32 0, i32 0 ; <i8*> [#uses=1] 322 br i1 false, label %StringBeginsWith.exitthread-split.i18, label %bb3.i.i16 323 324bb3.i.i16: ; preds = %bb2.i.i15 325 %66 = load i8* %pp.0.i.i13, align 1 ; <i8> [#uses=1] 326 br label %StringBeginsWith.exit.i20 327 328StringBeginsWith.exitthread-split.i18: ; preds = %bb2.i.i15 329 br label %StringBeginsWith.exit.i20 330 331StringBeginsWith.exit.i20: ; preds = %StringBeginsWith.exitthread-split.i18, %bb3.i.i16 332 %67 = phi i8 [ undef, %StringBeginsWith.exitthread-split.i18 ], [ %66, %bb3.i.i16 ] ; <i8> [#uses=1] 333 %phitmp.i19 = icmp eq i8 %67, 0 ; <i1> [#uses=1] 334 br i1 %phitmp.i19, label %bb58, label %bb2.i6.i26 335 336bb2.i6.i26: ; preds = %bb2.i6.i26, %StringBeginsWith.exit.i20 337 %indvar.i3.i23 = phi i32 [ %indvar.next.i1.i21, %bb2.i6.i26 ], [ 0, %StringBeginsWith.exit.i20 ] ; <i32> [#uses=3] 338 %sp.0.i5.i25 = getelementptr [512 x i8]* %buff, i32 0, i32 %indvar.i3.i23 ; <i8*> [#uses=0] 339 %pp.0.i4.i24 = getelementptr [10 x i8]* @.str752839, i32 0, i32 %indvar.i3.i23 ; <i8*> [#uses=1] 340 %68 = load i8* %pp.0.i4.i24, align 1 ; <i8> [#uses=0] 341 %indvar.next.i1.i21 = add i32 %indvar.i3.i23, 1 ; <i32> [#uses=1] 342 br i1 undef, label %bb2.i6.i26, label %bb55 343 344bb55: ; preds = %bb2.i6.i26 345 %69 = call i32 @"\01_fputs"(i8* %buff14, %struct.FILE* undef) nounwind ; <i32> [#uses=0] 346 unreachable 347 348bb58: ; preds = %StringBeginsWith.exit.i20 349 %70 = call i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind ; <i8*> [#uses=0] 350 %iftmp.560.0 = select i1 undef, i32 2, i32 0 ; <i32> [#uses=1] 351 br label %bb100.outer 352 353bb.i7: ; preds = %bb3.i 354 br i1 false, label %bb2.i8, label %bb2.i.i 355 356bb2.i8: ; preds = %bb100.outer, %bb.i7 357 br i1 undef, label %StringBeginsWith.exitthread-split, label %bb3.i 358 359bb3.i: ; preds = %bb2.i8 360 br i1 undef, label %StringBeginsWith.exit, label %bb.i7 361 362StringBeginsWith.exitthread-split: ; preds = %bb2.i8 363 br label %StringBeginsWith.exit 364 365StringBeginsWith.exit: ; preds = %StringBeginsWith.exitthread-split, %bb3.i 366 %phitmp93 = icmp eq i8 undef, 0 ; <i1> [#uses=1] 367 br i1 %phitmp93, label %bb66, label %bb2.i.i 368 369bb66: ; preds = %StringBeginsWith.exit 370 %71 = call %struct.rec* @MakeWord(i32 11, i8* undef, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind ; <%struct.rec*> [#uses=4] 371 %72 = load i8* getelementptr ([150 x i8]* @zz_lengths, i32 0, i32 0), align 4 ; <i8> [#uses=1] 372 %73 = zext i8 %72 to i32 ; <i32> [#uses=2] 373 %74 = getelementptr [524 x %struct.rec*]* @zz_free, i32 0, i32 %73 ; <%struct.rec**> [#uses=2] 374 %75 = load %struct.rec** %74, align 4 ; <%struct.rec*> [#uses=3] 375 %76 = icmp eq %struct.rec* %75, null ; <i1> [#uses=1] 376 br i1 %76, label %bb69, label %bb70 377 378bb69: ; preds = %bb66 379 br i1 undef, label %bb.i2, label %GetMemory.exit 380 381bb.i2: ; preds = %bb69 382 %77 = call noalias i8* @calloc(i32 1020, i32 4) nounwind ; <i8*> [#uses=1] 383 %78 = bitcast i8* %77 to i8** ; <i8**> [#uses=3] 384 store i8** %78, i8*** @next_free.4772, align 4 385 br i1 undef, label %bb1.i3, label %bb2.i4 386 387bb1.i3: ; preds = %bb.i2 388 call void (i32, i32, i8*, i32, %struct.FILE_POS*, ...)* @Error(i32 31, i32 1, i8* getelementptr ([32 x i8]* @.str1575, i32 0, i32 0), i32 1, %struct.FILE_POS* bitcast (%4* @no_file_pos to %struct.FILE_POS*)) nounwind 389 br label %bb2.i4 390 391bb2.i4: ; preds = %bb1.i3, %bb.i2 392 %.pre1.i = phi i8** [ undef, %bb1.i3 ], [ %78, %bb.i2 ] ; <i8**> [#uses=1] 393 %79 = phi i8** [ undef, %bb1.i3 ], [ %78, %bb.i2 ] ; <i8**> [#uses=1] 394 %80 = getelementptr i8** %79, i32 1020 ; <i8**> [#uses=1] 395 store i8** %80, i8*** @top_free.4773, align 4 396 br label %GetMemory.exit 397 398GetMemory.exit: ; preds = %bb2.i4, %bb69 399 %81 = phi i8** [ %.pre1.i, %bb2.i4 ], [ undef, %bb69 ] ; <i8**> [#uses=2] 400 %82 = bitcast i8** %81 to %struct.rec* ; <%struct.rec*> [#uses=3] 401 %83 = getelementptr i8** %81, i32 %73 ; <i8**> [#uses=1] 402 store i8** %83, i8*** @next_free.4772, align 4 403 store %struct.rec* %82, %struct.rec** @zz_hold, align 4 404 br label %bb71 405 406bb70: ; preds = %bb66 407 %84 = load %struct.rec** null, align 4 ; <%struct.rec*> [#uses=1] 408 store %struct.rec* %84, %struct.rec** %74, align 4 409 br label %bb71 410 411bb71: ; preds = %bb70, %GetMemory.exit 412 %.pre185 = phi %struct.rec* [ %75, %bb70 ], [ %82, %GetMemory.exit ] ; <%struct.rec*> [#uses=8] 413 %85 = phi %struct.rec* [ %75, %bb70 ], [ %82, %GetMemory.exit ] ; <%struct.rec*> [#uses=1] 414 %86 = getelementptr %struct.rec* %85, i32 0, i32 0, i32 1, i32 0, i32 0 ; <i8*> [#uses=0] 415 %87 = getelementptr %struct.rec* %.pre185, i32 0, i32 0, i32 0, i32 1, i32 1 ; <%struct.rec**> [#uses=0] 416 %88 = getelementptr %struct.rec* %.pre185, i32 0, i32 0, i32 0, i32 1, i32 0 ; <%struct.rec**> [#uses=1] 417 store %struct.rec* %.pre185, %struct.rec** @xx_link, align 4 418 store %struct.rec* %.pre185, %struct.rec** @zz_res, align 4 419 %89 = load %struct.rec** @needs, align 4 ; <%struct.rec*> [#uses=2] 420 store %struct.rec* %89, %struct.rec** @zz_hold, align 4 421 br i1 false, label %bb77, label %bb73 422 423bb73: ; preds = %bb71 424 %90 = getelementptr %struct.rec* %89, i32 0, i32 0, i32 0, i32 0, i32 0 ; <%struct.rec**> [#uses=1] 425 store %struct.rec* null, %struct.rec** @zz_tmp, align 4 426 store %struct.rec* %.pre185, %struct.rec** %90 427 store %struct.rec* %.pre185, %struct.rec** undef, align 4 428 br label %bb77 429 430bb77: ; preds = %bb73, %bb71 431 store %struct.rec* %.pre185, %struct.rec** @zz_res, align 4 432 store %struct.rec* %71, %struct.rec** @zz_hold, align 4 433 br i1 undef, label %bb83, label %bb79 434 435bb79: ; preds = %bb77 436 %91 = getelementptr %struct.rec* %71, i32 0, i32 0, i32 0, i32 1, i32 0 ; <%struct.rec**> [#uses=1] 437 store %struct.rec* null, %struct.rec** @zz_tmp, align 4 438 %92 = load %struct.rec** %88, align 4 ; <%struct.rec*> [#uses=1] 439 store %struct.rec* %92, %struct.rec** %91 440 %93 = getelementptr %struct.rec* undef, i32 0, i32 0, i32 0, i32 1, i32 1 ; <%struct.rec**> [#uses=1] 441 store %struct.rec* %71, %struct.rec** %93, align 4 442 store %struct.rec* %.pre185, %struct.rec** undef, align 4 443 br label %bb83 444 445bb83: ; preds = %bb79, %bb77 446 br label %bb100.outer.outer 447 448bb.i.i: ; preds = %bb3.i.i 449 br i1 undef, label %bb2.i.i, label %bb2.i6.i 450 451bb2.i.i: ; preds = %bb.i.i, %StringBeginsWith.exit, %bb.i7 452 br i1 undef, label %StringBeginsWith.exitthread-split.i, label %bb3.i.i 453 454bb3.i.i: ; preds = %bb2.i.i 455 br i1 undef, label %StringBeginsWith.exit.i, label %bb.i.i 456 457StringBeginsWith.exitthread-split.i: ; preds = %bb2.i.i 458 br label %StringBeginsWith.exit.i 459 460StringBeginsWith.exit.i: ; preds = %StringBeginsWith.exitthread-split.i, %bb3.i.i 461 br i1 false, label %bb94, label %bb2.i6.i 462 463bb.i2.i: ; preds = %bb3.i7.i 464 br i1 false, label %bb2.i6.i, label %bb91 465 466bb2.i6.i: ; preds = %bb.i2.i, %StringBeginsWith.exit.i, %bb.i.i 467 br i1 undef, label %strip_out.exitthread-split, label %bb3.i7.i 468 469bb3.i7.i: ; preds = %bb2.i6.i 470 %94 = load i8* undef, align 1 ; <i8> [#uses=1] 471 br i1 undef, label %strip_out.exit, label %bb.i2.i 472 473strip_out.exitthread-split: ; preds = %bb2.i6.i 474 %.pr100 = load i8* undef ; <i8> [#uses=1] 475 br label %strip_out.exit 476 477strip_out.exit: ; preds = %strip_out.exitthread-split, %bb3.i7.i 478 %95 = phi i8 [ %.pr100, %strip_out.exitthread-split ], [ %94, %bb3.i7.i ] ; <i8> [#uses=0] 479 br i1 undef, label %bb94, label %bb91 480 481bb91: ; preds = %strip_out.exit, %bb.i2.i 482 unreachable 483 484bb94: ; preds = %strip_out.exit, %StringBeginsWith.exit.i 485 %96 = call i8* @fgets(i8* %buff14, i32 512, %struct.FILE* %12) nounwind ; <i8*> [#uses=0] 486 unreachable 487 488bb100.outer: ; preds = %bb58, %bb41, %bb100.outer.outer 489 %state.0.ph = phi i32 [ %state.0.ph.ph, %bb100.outer.outer ], [ %iftmp.560.0, %bb58 ], [ %iftmp.554.0, %bb41 ] ; <i32> [#uses=1] 490 switch i32 %state.0.ph, label %bb2.i84 [ 491 i32 2, label %bb101.split 492 i32 1, label %bb2.i8 493 ] 494 495bb101.split: ; preds = %bb100.outer 496 %97 = icmp eq i32 undef, 0 ; <i1> [#uses=1] 497 br i1 %97, label %bb103, label %bb102 498 499bb102: ; preds = %bb101.split 500 %98 = call i32 @remove(i8* getelementptr ([9 x i8]* @.str19294, i32 0, i32 0)) nounwind ; <i32> [#uses=0] 501 unreachable 502 503bb103: ; preds = %bb101.split 504 %99 = load %struct.FILE** @out_fp, align 4 ; <%struct.FILE*> [#uses=1] 505 %100 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* %99, i8* getelementptr ([26 x i8]* @.str1932957, i32 0, i32 0)) nounwind ; <i32> [#uses=0] 506 store i32 0, i32* @wordcount, align 4 507 ret void 508} 509