xref: /llvm-project/llvm/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll (revision b5b663aac17415625340eb29c8010832bfc4c21c)
1; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -relocation-model=pic -frame-pointer=all -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 { 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]
57
58declare i32 @fprintf(ptr nocapture, ptr nocapture, ...) nounwind
59
60declare i32 @"\01_fwrite"(ptr, i32, i32, ptr)
61
62declare i32 @remove(ptr nocapture) nounwind
63
64declare ptr @OpenIncGraphicFile(ptr, i8 zeroext, ptr nocapture, ptr, ptr nocapture) nounwind
65
66declare ptr @MakeWord(i32, ptr nocapture, ptr) nounwind
67
68declare void @Error(i32, i32, ptr, i32, ptr, ...) nounwind
69
70declare i32 @"\01_fputs"(ptr, ptr)
71
72declare noalias ptr @calloc(i32, i32) nounwind
73
74declare ptr @fgets(ptr, i32, ptr nocapture) nounwind
75
76define void @PS_PrintGraphicInclude(ptr %x, i32 %colmark, i32 %rowmark) nounwind {
77entry:
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
84
85bb:		; preds = %entry
86	br label %bb1
87
88bb1:		; 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
94
95bb2:		; 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
98
99bb3:		; preds = %bb2, %bb1
100	%8 = load ptr, ptr undef, align 4		; <ptr> [#uses=0]
101	br label %bb5
102
103bb5:		; preds = %bb5, %bb3
104	%y.0 = load ptr, ptr null		; <ptr> [#uses=2]
105	br i1 false, label %bb5, label %bb6
106
107bb6:		; 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
112
113bb7:		; preds = %bb6
114	unreachable
115
116bb8:		; 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
120
121bb9:		; preds = %bb8
122	%14 = icmp ult i32 0, %12		; <i1> [#uses=1]
123	br i1 %14, label %bb.i, label %FontHalfXHeight.exit
124
125bb.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
129
130FontHalfXHeight.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
133
134bb.i1:		; preds = %FontHalfXHeight.exit
135	br label %bb1.i
136
137bb1.i:		; preds = %bb.i1, %FontHalfXHeight.exit
138	br i1 undef, label %bb2.i, label %FontSize.exit
139
140bb2.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
143
144FontSize.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
151
152bb.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
155
156FontName.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
161
162bb10:		; 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
185
186bb100.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
191
192bb.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
196
197bb2.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
204
205bb3.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
209
210StringBeginsWith.exit88thread-split:		; preds = %bb2.i84
211	%.pr = load i8, ptr %pp.0.i82		; <i8> [#uses=1]
212	br label %StringBeginsWith.exit88
213
214StringBeginsWith.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
218
219bb2.i.i68:		; preds = %bb3.i77
220	br i1 false, label %bb2.i51, label %bb2.i75
221
222bb2.i75:		; preds = %bb2.i.i68
223	br label %bb3.i77
224
225bb3.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
230
231bb24:		; 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
239
240bb27:		; preds = %bb24
241	br i1 undef, label %bb.i56, label %GetMemory.exit62
242
243bb.i56:		; preds = %bb27
244	br i1 undef, label %bb1.i58, label %bb2.i60
245
246bb1.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
249
250bb2.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
254
255GetMemory.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
261
262bb28:		; 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
267
268bb29:		; 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
273
274bb31:		; preds = %bb29
275	store ptr %.pre184, ptr undef
276	br label %bb35
277
278bb35:		; preds = %bb31, %bb29
279	br i1 undef, label %bb41, label %bb37
280
281bb37:		; 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
287
288bb41:		; 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
293
294bb.i47:		; preds = %bb3.i52
295	%62 = icmp eq i8 %63, %64		; <i1> [#uses=1]
296	br i1 %62, label %bb2.i51, label %bb2.i41
297
298bb2.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
302
303bb3.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
306
307StringBeginsWith.exit55thread-split:		; preds = %bb2.i51
308	br label %StringBeginsWith.exit55
309
310StringBeginsWith.exit55:		; preds = %StringBeginsWith.exit55thread-split, %bb3.i52
311	br i1 false, label %bb49, label %bb2.i41
312
313bb49:		; preds = %StringBeginsWith.exit55
314	br label %bb2.i41
315
316bb2.i41:		; preds = %bb2.i41, %bb49, %StringBeginsWith.exit55, %bb.i47
317	br i1 false, label %bb2.i41, label %bb2.i.i15
318
319bb2.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
322
323bb3.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
326
327StringBeginsWith.exitthread-split.i18:		; preds = %bb2.i.i15
328	br label %StringBeginsWith.exit.i20
329
330StringBeginsWith.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
334
335bb2.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
342
343bb55:		; preds = %bb2.i6.i26
344	%68 = call  i32 @"\01_fputs"(ptr %buff14, ptr undef) nounwind		; <i32> [#uses=0]
345	unreachable
346
347bb58:		; 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
351
352bb.i7:		; preds = %bb3.i
353	br i1 false, label %bb2.i8, label %bb2.i.i
354
355bb2.i8:		; preds = %bb100.outer, %bb.i7
356	br i1 undef, label %StringBeginsWith.exitthread-split, label %bb3.i
357
358bb3.i:		; preds = %bb2.i8
359	br i1 undef, label %StringBeginsWith.exit, label %bb.i7
360
361StringBeginsWith.exitthread-split:		; preds = %bb2.i8
362	br label %StringBeginsWith.exit
363
364StringBeginsWith.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
367
368bb66:		; 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
376
377bb69:		; preds = %bb66
378	br i1 undef, label %bb.i2, label %GetMemory.exit
379
380bb.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
384
385bb1.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
388
389bb2.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
395
396GetMemory.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
402
403bb70:		; 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
407
408bb71:		; 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
419
420bb73:		; 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
426
427bb77:		; 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
431
432bb79:		; 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
441
442bb83:		; preds = %bb79, %bb77
443	br label %bb100.outer.outer
444
445bb.i.i:		; preds = %bb3.i.i
446	br i1 undef, label %bb2.i.i, label %bb2.i6.i
447
448bb2.i.i:		; preds = %bb.i.i, %StringBeginsWith.exit, %bb.i7
449	br i1 undef, label %StringBeginsWith.exitthread-split.i, label %bb3.i.i
450
451bb3.i.i:		; preds = %bb2.i.i
452	br i1 undef, label %StringBeginsWith.exit.i, label %bb.i.i
453
454StringBeginsWith.exitthread-split.i:		; preds = %bb2.i.i
455	br label %StringBeginsWith.exit.i
456
457StringBeginsWith.exit.i:		; preds = %StringBeginsWith.exitthread-split.i, %bb3.i.i
458	br i1 false, label %bb94, label %bb2.i6.i
459
460bb.i2.i:		; preds = %bb3.i7.i
461	br i1 false, label %bb2.i6.i, label %bb91
462
463bb2.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
465
466bb3.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
469
470strip_out.exitthread-split:		; preds = %bb2.i6.i
471	%.pr100 = load i8, ptr undef		; <i8> [#uses=1]
472	br label %strip_out.exit
473
474strip_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
477
478bb91:		; preds = %strip_out.exit, %bb.i2.i
479	unreachable
480
481bb94:		; preds = %strip_out.exit, %StringBeginsWith.exit.i
482	%93 = call  ptr @fgets(ptr %buff14, i32 512, ptr %11) nounwind		; <ptr> [#uses=0]
483	unreachable
484
485bb100.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	]
491
492bb101.split:		; preds = %bb100.outer
493	%94 = icmp eq i32 undef, 0		; <i1> [#uses=1]
494	br i1 %94, label %bb103, label %bb102
495
496bb102:		; preds = %bb101.split
497	%95 = call  i32 @remove(ptr @.str19294) nounwind		; <i32> [#uses=0]
498	unreachable
499
500bb103:		; 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
505}
506