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