llvm.org GIT mirror llvm / 8becaed
Test case that shows some poor results for register allocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4167 91177308-0d34-0410-b5e6-96231b3b80d8 Vikram S. Adve 18 years ago
3 changed file(s) with 2484 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 ;; Register allocation is doing a very poor job on this routine from Burg:
1 ;; -- at least two long-lived values are being allocated to %o? registers
2 ;; -- even worse, those registers are being saved and restored repeatedly
3 ;; at function calls, even though there are no intervening uses.
4 ;; -- outgoing args of some function calls have to be swapped, causing
5 ;; another write/read from stack to do the exchange (use -dregalloc=y).
6 ;;
7 %Arity = type %struct.arity*
8 %Binding = type %struct.binding*
9 %DeltaCost = type [4 x short]
10 %Dimension = type %struct.dimension*
11 %Index_Map = type { int, %Item_Set* }
12 %IntList = type %struct.intlist*
13 %Item = type { %DeltaCost, %Rule }
14 %ItemArray = type %Item*
15 %Item_Set = type %struct.item_set*
16 %List = type %struct.list*
17 %Mapping = type %struct.mapping*
18 %NonTerminal = type %struct.nonterminal*
19 %Operator = type %struct.operator*
20 %Pattern = type %struct.pattern*
21 %PatternAST = type %struct.patternAST*
22 %Plank = type %struct.plank*
23 %PlankMap = type %struct.plankMap*
24 %ReadFn = type int ()*
25 %Rule = type %struct.rule*
26 %RuleAST = type %struct.ruleAST*
27 %StateMap = type %struct.stateMap*
28 %StrTableElement = type %struct.strTableElement*
29 %Symbol = type %struct.symbol*
30 %Table = type %struct.table*
31 %YYSTYPE = type { %IntList }
32 %struct.arity = type { int, %List }
33 %struct.binding = type { sbyte*, int }
34 %struct.dimension = type { short*, %Index_Map, %Mapping, int, %PlankMap }
35 %struct.index_map = type { int, %Item_Set* }
36 %struct.intlist = type { int, %IntList }
37 %struct.item = type { %DeltaCost, %Rule }
38 %struct.item_set = type { int, int, %Operator, [2 x %Item_Set], %Item_Set, short*, %ItemArray, %ItemArray }
39 %struct.list = type { sbyte*, %List }
40 %struct.mapping = type { %List*, int, int, int, %Item_Set* }
41 %struct.nonterminal = type { sbyte*, int, int, int, %PlankMap, %Rule }
42 %struct.operator = type { sbyte*, uint, int, int, int, int, %Table }
43 %struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
44 %struct.patternAST = type { %Symbol, sbyte*, %List }
45 %struct.plank = type { sbyte*, %List, int }
46 %struct.plankMap = type { %List, int, %StateMap }
47 %struct.rule = type { %DeltaCost, int, int, int, %NonTerminal, %Pattern, uint }
48 %struct.ruleAST = type { sbyte*, %PatternAST, int, %IntList, %Rule, %StrTableElement, %StrTableElement }
49 %struct.stateMap = type { sbyte*, %Plank, int, short* }
50 %struct.strTableElement = type { sbyte*, %IntList, sbyte* }
51 %struct.symbol = type { sbyte*, int, { %Operator } }
52 %struct.table = type { %Operator, %List, short*, [2 x %Dimension], %Item_Set* }
53 %yylval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
54 %yylhs = external global [25 x short] ; <[25 x short]*> [#uses=1]
55 %yylen = external global [25 x short] ; <[25 x short]*> [#uses=1]
56 %yydefred = external global [43 x short] ; <[43 x short]*> [#uses=1]
57 %yydgoto = external global [12 x short] ; <[12 x short]*> [#uses=1]
58 %yysindex = external global [43 x short] ; <[43 x short]*> [#uses=2]
59 %yyrindex = external global [43 x short] ; <[43 x short]*> [#uses=1]
60 %yygindex = external global [12 x short] ; <[12 x short]*> [#uses=1]
61 %yytable = external global [263 x short] ; <[263 x short]*> [#uses=4]
62 %yycheck = external global [263 x short] ; <[263 x short]*> [#uses=4]
63 %yynerrs = external global int ; [#uses=3]
64 %yyerrflag = external global int ; [#uses=6]
65 %yychar = external global int ; [#uses=15]
66 %yyssp = external global short* ; [#uses=15]
67 %yyvsp = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=30]
68 %yyval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
69 %yyss = external global short* ; [#uses=3]
70 %yysslim = external global short* ; [#uses=3]
71 %yyvs = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=1]
72 %.LC01 = external global [13 x sbyte] ; <[13 x sbyte]*> [#uses=1]
73 %.LC1 = external global [20 x sbyte] ; <[20 x sbyte]*> [#uses=1]
74
75 implementation ; Functions:
76
77 int %yyparse() {
78 bb0: ; No predecessors!
79 store int 0, int* %yynerrs
80 store int 0, int* %yyerrflag
81 store int -1, int* %yychar
82 %reg113 = load short** %yyss ; [#uses=1]
83 %cond581 = setne short* %reg113, null ; [#uses=1]
84 br bool %cond581, label %bb3, label %bb2
85
86 bb2: ; preds = %bb0
87 %reg584 = call int %yygrowstack( ) ; [#uses=1]
88 %cond584 = setne int %reg584, 0 ; [#uses=1]
89 br bool %cond584, label %bb113, label %bb3
90
91 bb3: ; preds = %bb2, %bb0
92 %reg115 = load short** %yyss ; [#uses=1]
93 store short* %reg115, short** %yyssp
94 %reg116 = load %YYSTYPE** %yyvs ; <%YYSTYPE*> [#uses=1]
95 store %YYSTYPE* %reg116, %YYSTYPE** %yyvsp
96 %reg117 = load short** %yyssp ; [#uses=1]
97 store short 0, short* %reg117
98 br label %bb4
99
100 bb4: ; preds = %bb14, %bb15, %bb31, %bb35, %bb102, %bb112, %bb3
101 %reg458 = phi uint [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ] ; [#uses=2]
102 %reg458-idxcast = cast uint %reg458 to long ; [#uses=3]
103 %reg594 = getelementptr [43 x short]* %yydefred, long 0, long %reg458-idxcast ; [#uses=1]
104 %reg125 = load short* %reg594 ; [#uses=1]
105 %cast599 = cast short %reg125 to int ; [#uses=2]
106 %cond600 = setne int %cast599, 0 ; [#uses=1]
107 br bool %cond600, label %bb36, label %bb5
108
109 bb5: ; preds = %bb4
110 %reg127 = load int* %yychar ; [#uses=1]
111 %cond603 = setge int %reg127, 0 ; [#uses=1]
112 br bool %cond603, label %bb8, label %bb6
113
114 bb6: ; preds = %bb5
115 %reg607 = call int %yylex( ) ; [#uses=1]
116 store int %reg607, int* %yychar
117 %reg129 = load int* %yychar ; [#uses=1]
118 %cond609 = setge int %reg129, 0 ; [#uses=1]
119 br bool %cond609, label %bb8, label %bb7
120
121 bb7: ; preds = %bb6
122 store int 0, int* %yychar
123 br label %bb8
124
125 bb8: ; preds = %bb7, %bb6, %bb5
126 %reg615 = getelementptr [43 x short]* %yysindex, long 0, long %reg458-idxcast ; [#uses=1]
127 %reg137 = load short* %reg615 ; [#uses=1]
128 %cast620 = cast short %reg137 to int ; [#uses=2]
129 %cond621 = seteq int %cast620, 0 ; [#uses=1]
130 br bool %cond621, label %bb16, label %bb9
131
132 bb9: ; preds = %bb8
133 %reg139 = load int* %yychar ; [#uses=2]
134 %reg460 = add int %cast620, %reg139 ; [#uses=3]
135 %cond624 = setlt int %reg460, 0 ; [#uses=1]
136 br bool %cond624, label %bb16, label %bb10
137
138 bb10: ; preds = %bb9
139 %cond627 = setgt int %reg460, 262 ; [#uses=1]
140 br bool %cond627, label %bb16, label %bb11
141
142 bb11: ; preds = %bb10
143 %reg460-idxcast = cast int %reg460 to long ; [#uses=2]
144 %reg632 = getelementptr [263 x short]* %yycheck, long 0, long %reg460-idxcast ; [#uses=1]
145 %reg148 = load short* %reg632 ; [#uses=1]
146 %cast637 = cast short %reg148 to int ; [#uses=1]
147 %cond639 = setne int %cast637, %reg139 ; [#uses=1]
148 br bool %cond639, label %bb16, label %bb12
149
150 bb12: ; preds = %bb11
151 %reg150 = load short** %yyssp ; [#uses=1]
152 %cast640 = cast short* %reg150 to sbyte* ; [#uses=1]
153 %reg151 = load short** %yysslim ; [#uses=1]
154 %cast641 = cast short* %reg151 to sbyte* ; [#uses=1]
155 %cond642 = setlt sbyte* %cast640, %cast641 ; [#uses=1]
156 br bool %cond642, label %bb14, label %bb13
157
158 bb13: ; preds = %bb12
159 %reg644 = call int %yygrowstack( ) ; [#uses=1]
160 %cond644 = setne int %reg644, 0 ; [#uses=1]
161 br bool %cond644, label %bb113, label %bb14
162
163 bb14: ; preds = %bb13, %bb12
164 %reg153 = load short** %yyssp ; [#uses=1]
165 %reg647 = getelementptr short* %reg153, long 1 ; [#uses=2]
166 store short* %reg647, short** %yyssp
167 %reg653 = getelementptr [263 x short]* %yytable, long 0, long %reg460-idxcast ; [#uses=1]
168 %reg162 = load short* %reg653 ; [#uses=2]
169 %cast658 = cast short %reg162 to uint ; [#uses=2]
170 store short %reg162, short* %reg647
171 %reg164 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
172 %reg661 = getelementptr %YYSTYPE* %reg164, long 1 ; <%YYSTYPE*> [#uses=1]
173 store %YYSTYPE* %reg661, %YYSTYPE** %yyvsp
174 %reg167 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
175 %reg661.idx1 = getelementptr %YYSTYPE* %reg164, long 1, ubyte 0 ; <%IntList*> [#uses=1]
176 store %IntList %reg167, %IntList* %reg661.idx1
177 store int -1, int* %yychar
178 %reg169 = load int* %yyerrflag ; [#uses=2]
179 %cond669 = setle int %reg169, 0 ; [#uses=1]
180 br bool %cond669, label %bb4, label %bb15
181
182 bb15: ; preds = %bb14
183 %reg171 = add int %reg169, -1 ; [#uses=1]
184 store int %reg171, int* %yyerrflag
185 br label %bb4
186
187 bb16: ; preds = %bb11, %bb10, %bb9, %bb8
188 %reg677 = getelementptr [43 x short]* %yyrindex, long 0, long %reg458-idxcast ; [#uses=1]
189 %reg178 = load short* %reg677 ; [#uses=1]
190 %cast682 = cast short %reg178 to int ; [#uses=2]
191 %cond683 = seteq int %cast682, 0 ; [#uses=1]
192 br bool %cond683, label %bb21, label %bb17
193
194 bb17: ; preds = %bb16
195 %reg180 = load int* %yychar ; [#uses=2]
196 %reg463 = add int %cast682, %reg180 ; [#uses=3]
197 %cond686 = setlt int %reg463, 0 ; [#uses=1]
198 br bool %cond686, label %bb21, label %bb18
199
200 bb18: ; preds = %bb17
201 %cond689 = setgt int %reg463, 262 ; [#uses=1]
202 br bool %cond689, label %bb21, label %bb19
203
204 bb19: ; preds = %bb18
205 %reg463-idxcast = cast int %reg463 to long ; [#uses=2]
206 %reg694 = getelementptr [263 x short]* %yycheck, long 0, long %reg463-idxcast ; [#uses=1]
207 %reg189 = load short* %reg694 ; [#uses=1]
208 %cast699 = cast short %reg189 to int ; [#uses=1]
209 %cond701 = setne int %cast699, %reg180 ; [#uses=1]
210 br bool %cond701, label %bb21, label %bb20
211
212 bb20: ; preds = %bb19
213 %reg704 = getelementptr [263 x short]* %yytable, long 0, long %reg463-idxcast ; [#uses=1]
214 %reg197 = load short* %reg704 ; [#uses=1]
215 %cast709 = cast short %reg197 to int ; [#uses=1]
216 br label %bb36
217
218 bb21: ; preds = %bb19, %bb18, %bb17, %bb16
219 %reg198 = load int* %yyerrflag ; [#uses=1]
220 %cond711 = setne int %reg198, 0 ; [#uses=1]
221 br bool %cond711, label %bb23, label %bb22
222
223 bb22: ; preds = %bb21
224 call void %yyerror( sbyte* getelementptr ([13 x sbyte]* %.LC01, long 0, long 0) )
225 %reg200 = load int* %yynerrs ; [#uses=1]
226 %reg201 = add int %reg200, 1 ; [#uses=1]
227 store int %reg201, int* %yynerrs
228 br label %bb23
229
230 bb23: ; preds = %bb22, %bb21
231 %reg202 = load int* %yyerrflag ; [#uses=1]
232 %cond719 = setgt int %reg202, 2 ; [#uses=1]
233 br bool %cond719, label %bb34, label %bb24
234
235 bb24: ; preds = %bb23
236 store int 3, int* %yyerrflag
237 %reg241 = load short** %yyss ; [#uses=1]
238 %cast778 = cast short* %reg241 to sbyte* ; [#uses=1]
239 br label %bb25
240
241 bb25: ; preds = %bb33, %bb24
242 %reg204 = load short** %yyssp ; [#uses=4]
243 %reg206 = load short* %reg204 ; [#uses=1]
244 %reg206-idxcast = cast short %reg206 to long ; [#uses=1]
245 %reg727 = getelementptr [43 x short]* %yysindex, long 0, long %reg206-idxcast ; [#uses=1]
246 %reg212 = load short* %reg727 ; [#uses=2]
247 %cast732 = cast short %reg212 to int ; [#uses=2]
248 %cond733 = seteq int %cast732, 0 ; [#uses=1]
249 br bool %cond733, label %bb32, label %bb26
250
251 bb26: ; preds = %bb25
252 %reg466 = add int %cast732, 256 ; [#uses=2]
253 %cond736 = setlt int %reg466, 0 ; [#uses=1]
254 br bool %cond736, label %bb32, label %bb27
255
256 bb27: ; preds = %bb26
257 %cond739 = setgt int %reg466, 262 ; [#uses=1]
258 br bool %cond739, label %bb32, label %bb28
259
260 bb28: ; preds = %bb27
261 %reg212-idxcast = cast short %reg212 to long ; [#uses=1]
262 %reg212-idxcast-offset = add long %reg212-idxcast, 256 ; [#uses=2]
263 %reg744 = getelementptr [263 x short]* %yycheck, long 0, long %reg212-idxcast-offset ; [#uses=1]
264 %reg221 = load short* %reg744 ; [#uses=1]
265 %cond748 = setne short %reg221, 256 ; [#uses=1]
266 br bool %cond748, label %bb32, label %bb29
267
268 bb29: ; preds = %bb28
269 %cast750 = cast short* %reg204 to sbyte* ; [#uses=1]
270 %reg223 = load short** %yysslim ; [#uses=1]
271 %cast751 = cast short* %reg223 to sbyte* ; [#uses=1]
272 %cond752 = setlt sbyte* %cast750, %cast751 ; [#uses=1]
273 br bool %cond752, label %bb31, label %bb30
274
275 bb30: ; preds = %bb29
276 %reg754 = call int %yygrowstack( ) ; [#uses=1]
277 %cond754 = setne int %reg754, 0 ; [#uses=1]
278 br bool %cond754, label %bb113, label %bb31
279
280 bb31: ; preds = %bb30, %bb29
281 %reg225 = load short** %yyssp ; [#uses=1]
282 %reg757 = getelementptr short* %reg225, long 1 ; [#uses=2]
283 store short* %reg757, short** %yyssp
284 %reg763 = getelementptr [263 x short]* %yytable, long 0, long %reg212-idxcast-offset ; [#uses=1]
285 %reg234 = load short* %reg763 ; [#uses=2]
286 %cast768 = cast short %reg234 to uint ; [#uses=1]
287 store short %reg234, short* %reg757
288 %reg236 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
289 %reg771 = getelementptr %YYSTYPE* %reg236, long 1 ; <%YYSTYPE*> [#uses=1]
290 store %YYSTYPE* %reg771, %YYSTYPE** %yyvsp
291 %reg239 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
292 %reg771.idx1 = getelementptr %YYSTYPE* %reg236, long 1, ubyte 0 ; <%IntList*> [#uses=1]
293 store %IntList %reg239, %IntList* %reg771.idx1
294 br label %bb4
295
296 bb32: ; preds = %bb28, %bb27, %bb26, %bb25
297 %cast777 = cast short* %reg204 to sbyte* ; [#uses=1]
298 %cond779 = setle sbyte* %cast777, %cast778 ; [#uses=1]
299 br bool %cond779, label %UnifiedExitNode, label %bb33
300
301 bb33: ; preds = %bb32
302 %reg781 = getelementptr short* %reg204, long -1 ; [#uses=1]
303 store short* %reg781, short** %yyssp
304 %reg244 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
305 %reg786 = getelementptr %YYSTYPE* %reg244, long -1 ; <%YYSTYPE*> [#uses=1]
306 store %YYSTYPE* %reg786, %YYSTYPE** %yyvsp
307 br label %bb25
308
309 bb34: ; preds = %bb23
310 %reg246 = load int* %yychar ; [#uses=1]
311 %cond791 = seteq int %reg246, 0 ; [#uses=1]
312 br bool %cond791, label %UnifiedExitNode, label %bb35
313
314 bb35: ; preds = %bb34
315 store int -1, int* %yychar
316 br label %bb4
317
318 bb36: ; preds = %bb20, %bb4
319 %reg468 = phi int [ %cast709, %bb20 ], [ %cast599, %bb4 ] ; [#uses=31]
320 %reg468-idxcast = cast int %reg468 to long ; [#uses=2]
321 %reg796 = getelementptr [25 x short]* %yylen, long 0, long %reg468-idxcast ; [#uses=1]
322 %reg254 = load short* %reg796 ; [#uses=2]
323 %reg259 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
324 %reg254-idxcast = cast short %reg254 to long ; [#uses=1]
325 %reg254-idxcast-scale = mul long %reg254-idxcast, -1 ; [#uses=1]
326 %reg254-idxcast-scale-offset = add long %reg254-idxcast-scale, 1 ; [#uses=1]
327 %reg261.idx1 = getelementptr %YYSTYPE* %reg259, long %reg254-idxcast-scale-offset, ubyte 0 ; <%IntList*> [#uses=1]
328 %reg261 = load %IntList* %reg261.idx1 ; <%IntList> [#uses=1]
329 store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
330 %cond812 = seteq int %reg468, 13 ; [#uses=1]
331 br bool %cond812, label %bb85, label %bb37
332
333 bb37: ; preds = %bb36
334 %cond814 = setgt int %reg468, 13 ; [#uses=1]
335 br bool %cond814, label %bb56, label %bb38
336
337 bb38: ; preds = %bb37
338 %cond817 = seteq int %reg468, 7 ; [#uses=1]
339 br bool %cond817, label %bb79, label %bb39
340
341 bb39: ; preds = %bb38
342 %cond819 = setgt int %reg468, 7 ; [#uses=1]
343 br bool %cond819, label %bb48, label %bb40
344
345 bb40: ; preds = %bb39
346 %cond822 = seteq int %reg468, 4 ; [#uses=1]
347 br bool %cond822, label %bb76, label %bb41
348
349 bb41: ; preds = %bb40
350 %cond824 = setgt int %reg468, 4 ; [#uses=1]
351 br bool %cond824, label %bb45, label %bb42
352
353 bb42: ; preds = %bb41
354 %cond827 = seteq int %reg468, 2 ; [#uses=1]
355 br bool %cond827, label %bb74, label %bb43
356
357 bb43: ; preds = %bb42
358 %cond829 = seteq int %reg468, 3 ; [#uses=1]
359 br bool %cond829, label %bb75, label %bb97
360
361 bb45: ; preds = %bb41
362 %cond831 = seteq int %reg468, 5 ; [#uses=1]
363 br bool %cond831, label %bb77, label %bb46
364
365 bb46: ; preds = %bb45
366 %cond833 = seteq int %reg468, 6 ; [#uses=1]
367 br bool %cond833, label %bb78, label %bb97
368
369 bb48: ; preds = %bb39
370 %cond835 = seteq int %reg468, 10 ; [#uses=1]
371 br bool %cond835, label %bb82, label %bb49
372
373 bb49: ; preds = %bb48
374 %cond837 = setgt int %reg468, 10 ; [#uses=1]
375 br bool %cond837, label %bb53, label %bb50
376
377 bb50: ; preds = %bb49
378 %cond840 = seteq int %reg468, 8 ; [#uses=1]
379 br bool %cond840, label %bb80, label %bb51
380
381 bb51: ; preds = %bb50
382 %cond842 = seteq int %reg468, 9 ; [#uses=1]
383 br bool %cond842, label %bb81, label %bb97
384
385 bb53: ; preds = %bb49
386 %cond844 = seteq int %reg468, 11 ; [#uses=1]
387 br bool %cond844, label %bb83, label %bb54
388
389 bb54: ; preds = %bb53
390 %cond846 = seteq int %reg468, 12 ; [#uses=1]
391 br bool %cond846, label %bb84, label %bb97
392
393 bb56: ; preds = %bb37
394 %cond848 = seteq int %reg468, 19 ; [#uses=1]
395 br bool %cond848, label %bb91, label %bb57
396
397 bb57: ; preds = %bb56
398 %cond850 = setgt int %reg468, 19 ; [#uses=1]
399 br bool %cond850, label %bb66, label %bb58
400
401 bb58: ; preds = %bb57
402 %cond853 = seteq int %reg468, 16 ; [#uses=1]
403 br bool %cond853, label %bb88, label %bb59
404
405 bb59: ; preds = %bb58
406 %cond855 = setgt int %reg468, 16 ; [#uses=1]
407 br bool %cond855, label %bb63, label %bb60
408
409 bb60: ; preds = %bb59
410 %cond858 = seteq int %reg468, 14 ; [#uses=1]
411 br bool %cond858, label %bb86, label %bb61
412
413 bb61: ; preds = %bb60
414 %cond860 = seteq int %reg468, 15 ; [#uses=1]
415 br bool %cond860, label %bb87, label %bb97
416
417 bb63: ; preds = %bb59
418 %cond862 = seteq int %reg468, 17 ; [#uses=1]
419 br bool %cond862, label %bb89, label %bb64
420
421 bb64: ; preds = %bb63
422 %cond864 = seteq int %reg468, 18 ; [#uses=1]
423 br bool %cond864, label %bb90, label %bb97
424
425 bb66: ; preds = %bb57
426 %cond866 = seteq int %reg468, 22 ; [#uses=1]
427 br bool %cond866, label %bb94, label %bb67
428
429 bb67: ; preds = %bb66
430 %cond868 = setgt int %reg468, 22 ; [#uses=1]
431 br bool %cond868, label %bb71, label %bb68
432
433 bb68: ; preds = %bb67
434 %cond871 = seteq int %reg468, 20 ; [#uses=1]
435 br bool %cond871, label %bb92, label %bb69
436
437 bb69: ; preds = %bb68
438 %cond873 = seteq int %reg468, 21 ; [#uses=1]
439 br bool %cond873, label %bb93, label %bb97
440
441 bb71: ; preds = %bb67
442 %cond875 = seteq int %reg468, 23 ; [#uses=1]
443 br bool %cond875, label %bb95, label %bb72
444
445 bb72: ; preds = %bb71
446 %cond877 = seteq int %reg468, 24 ; [#uses=1]
447 br bool %cond877, label %bb96, label %bb97
448
449 bb74: ; preds = %bb42
450 call void %yyfinished( )
451 br label %bb97
452
453 bb75: ; preds = %bb43
454 %reg262 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
455 %reg264.idx1 = getelementptr %YYSTYPE* %reg262, long -2, ubyte 0 ; <%IntList*> [#uses=1]
456 %reg264 = load %IntList* %reg264.idx1 ; <%IntList> [#uses=1]
457 %reg265.idx = getelementptr %YYSTYPE* %reg262, long 0, ubyte 0 ; <%IntList*> [#uses=1]
458 %reg265 = load %IntList* %reg265.idx ; <%IntList> [#uses=1]
459 %cast889 = cast %IntList %reg265 to %List ; <%List> [#uses=1]
460 %cast890 = cast %IntList %reg264 to %List ; <%List> [#uses=1]
461 call void %doSpec( %List %cast890, %List %cast889 )
462 br label %bb97
463
464 bb76: ; preds = %bb40
465 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
466 br label %bb97
467
468 bb77: ; preds = %bb45
469 %reg269 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
470 %cast894 = getelementptr %YYSTYPE* %reg269, long 0, ubyte 0 ; <%IntList*> [#uses=1]
471 %reg271 = load %IntList* %cast894 ; <%IntList> [#uses=1]
472 %reg271 = cast %IntList %reg271 to sbyte* ; [#uses=1]
473 %reg272.idx1 = getelementptr %YYSTYPE* %reg269, long -1, ubyte 0 ; <%IntList*> [#uses=1]
474 %reg272 = load %IntList* %reg272.idx1 ; <%IntList> [#uses=1]
475 %cast901 = cast %IntList %reg272 to %List ; <%List> [#uses=1]
476 %reg901 = call %List %newList( sbyte* %reg271, %List %cast901 ) ; <%List> [#uses=1]
477 cast %List %reg901 to %IntList ; <%IntList>:0 [#uses=1]
478 store %IntList %0, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
479 br label %bb97
480
481 bb78: ; preds = %bb46
482 %reg275 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
483 %reg277.idx = getelementptr %YYSTYPE* %reg275, long 0, ubyte 0 ; <%IntList*> [#uses=1]
484 %reg277 = load %IntList* %reg277.idx ; <%IntList> [#uses=1]
485 %cast907 = cast %IntList %reg277 to %List ; <%List> [#uses=1]
486 %reg907 = call %Arity %newArity( int -1, %List %cast907 ) ; <%Arity> [#uses=1]
487 cast %Arity %reg907 to %IntList ; <%IntList>:1 [#uses=1]
488 store %IntList %1, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
489 br label %bb97
490
491 bb79: ; preds = %bb38
492 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
493 %reg281 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
494 %cast912 = getelementptr %YYSTYPE* %reg281, long 0, ubyte 0 ; <%IntList*> [#uses=1]
495 %reg282 = load %IntList* %cast912 ; <%IntList> [#uses=1]
496 %reg282 = cast %IntList %reg282 to %List ; <%List> [#uses=1]
497 call void %doGram( %List %reg282 )
498 br label %bb97
499
500 bb80: ; preds = %bb50
501 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
502 %reg285 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
503 %cast917 = getelementptr %YYSTYPE* %reg285, long 0, ubyte 0 ; <%IntList*> [#uses=1]
504 %reg286 = load %IntList* %cast917 ; <%IntList> [#uses=1]
505 %reg286 = cast %IntList %reg286 to sbyte* ; [#uses=1]
506 call void %doStart( sbyte* %reg286 )
507 br label %bb97
508
509 bb81: ; preds = %bb51
510 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
511 br label %bb97
512
513 bb82: ; preds = %bb48
514 %reg290 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
515 %cast923 = getelementptr %YYSTYPE* %reg290, long 0, ubyte 0 ; <%IntList*> [#uses=1]
516 %reg292 = load %IntList* %cast923 ; <%IntList> [#uses=1]
517 %reg292 = cast %IntList %reg292 to sbyte* ; [#uses=1]
518 %reg293.idx1 = getelementptr %YYSTYPE* %reg290, long -1, ubyte 0 ; <%IntList*> [#uses=1]
519 %reg293 = load %IntList* %reg293.idx1 ; <%IntList> [#uses=1]
520 %cast930 = cast %IntList %reg293 to %List ; <%List> [#uses=1]
521 %reg930 = call %List %newList( sbyte* %reg292, %List %cast930 ) ; <%List> [#uses=1]
522 cast %List %reg930 to %IntList ; <%IntList>:2 [#uses=1]
523 store %IntList %2, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
524 br label %bb97
525
526 bb83: ; preds = %bb53
527 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
528 br label %bb97
529
530 bb84: ; preds = %bb54
531 %reg298 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
532 %cast936 = getelementptr %YYSTYPE* %reg298, long 0, ubyte 0 ; <%IntList*> [#uses=1]
533 %reg300 = load %IntList* %cast936 ; <%IntList> [#uses=1]
534 %reg300 = cast %IntList %reg300 to sbyte* ; [#uses=1]
535 %reg301.idx1 = getelementptr %YYSTYPE* %reg298, long -1, ubyte 0 ; <%IntList*> [#uses=1]
536 %reg301 = load %IntList* %reg301.idx1 ; <%IntList> [#uses=1]
537 %cast943 = cast %IntList %reg301 to %List ; <%List> [#uses=1]
538 %reg943 = call %List %newList( sbyte* %reg300, %List %cast943 ) ; <%List> [#uses=1]
539 cast %List %reg943 to %IntList ; <%IntList>:3 [#uses=1]
540 store %IntList %3, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
541 br label %bb97
542
543 bb85: ; preds = %bb36
544 %reg304 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
545 %cast9521 = getelementptr %YYSTYPE* %reg304, long -2, ubyte 0 ; <%IntList*> [#uses=1]
546 %reg306 = load %IntList* %cast9521 ; <%IntList> [#uses=1]
547 %reg306 = cast %IntList %reg306 to sbyte* ; [#uses=1]
548 %cast953 = cast %YYSTYPE* %reg304 to int* ; [#uses=1]
549 %reg307 = load int* %cast953 ; [#uses=1]
550 %reg955 = call %Binding %newBinding( sbyte* %reg306, int %reg307 ) ; <%Binding> [#uses=1]
551 cast %Binding %reg955 to %IntList ; <%IntList>:4 [#uses=1]
552 store %IntList %4, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
553 br label %bb97
554
555 bb86: ; preds = %bb60
556 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
557 br label %bb97
558
559 bb87: ; preds = %bb61
560 %reg312 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
561 %cast961 = getelementptr %YYSTYPE* %reg312, long 0, ubyte 0 ; <%IntList*> [#uses=1]
562 %reg314 = load %IntList* %cast961 ; <%IntList> [#uses=1]
563 %reg314 = cast %IntList %reg314 to sbyte* ; [#uses=1]
564 %reg315.idx1 = getelementptr %YYSTYPE* %reg312, long -1, ubyte 0 ; <%IntList*> [#uses=1]
565 %reg315 = load %IntList* %reg315.idx1 ; <%IntList> [#uses=1]
566 %cast968 = cast %IntList %reg315 to %List ; <%List> [#uses=1]
567 %reg968 = call %List %newList( sbyte* %reg314, %List %cast968 ) ; <%List> [#uses=1]
568 cast %List %reg968 to %IntList ; <%IntList>:5 [#uses=1]
569 store %IntList %5, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
570 br label %bb97
571
572 bb88: ; preds = %bb58
573 %reg318 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=4]
574 %cast9791 = getelementptr %YYSTYPE* %reg318, long -6, ubyte 0 ; <%IntList*> [#uses=1]
575 %reg322 = load %IntList* %cast9791 ; <%IntList> [#uses=1]
576 %reg322 = cast %IntList %reg322 to sbyte* ; [#uses=1]
577 %reg323.idx1 = getelementptr %YYSTYPE* %reg318, long -4, ubyte 0 ; <%IntList*> [#uses=1]
578 %reg323 = load %IntList* %reg323.idx1 ; <%IntList> [#uses=1]
579 %reg987 = getelementptr %YYSTYPE* %reg318, long -2 ; <%YYSTYPE*> [#uses=1]
580 %cast989 = cast %YYSTYPE* %reg987 to int* ; [#uses=1]
581 %reg324 = load int* %cast989 ; [#uses=1]
582 %reg325.idx1 = getelementptr %YYSTYPE* %reg318, long -1, ubyte 0 ; <%IntList*> [#uses=1]
583 %reg325 = load %IntList* %reg325.idx1 ; <%IntList> [#uses=1]
584 %cast998 = cast %IntList %reg323 to %PatternAST ; <%PatternAST> [#uses=1]
585 %reg996 = call %RuleAST %newRuleAST( sbyte* %reg322, %PatternAST %cast998, int %reg324, %IntList %reg325 ) ; <%RuleAST> [#uses=1]
586 cast %RuleAST %reg996 to %IntList ; <%IntList>:6 [#uses=1]
587 store %IntList %6, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
588 br label %bb97
589
590 bb89: ; preds = %bb63
591 %reg328 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
592 %cast1002 = getelementptr %YYSTYPE* %reg328, long 0, ubyte 0 ; <%IntList*> [#uses=1]
593 %reg329 = load %IntList* %cast1002 ; <%IntList> [#uses=1]
594 %reg329 = cast %IntList %reg329 to sbyte* ; [#uses=1]
595 %reg1004 = call %PatternAST %newPatternAST( sbyte* %reg329, %List null ) ; <%PatternAST> [#uses=1]
596 cast %PatternAST %reg1004 to %IntList ; <%IntList>:7 [#uses=1]
597 store %IntList %7, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
598 br label %bb97
599
600 bb90: ; preds = %bb64
601 %reg333 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
602 %cast10131 = getelementptr %YYSTYPE* %reg333, long -1, ubyte 0 ; <%IntList*> [#uses=1]
603 %reg335 = load %IntList* %cast10131 ; <%IntList> [#uses=1]
604 %reg335 = cast %IntList %reg335 to sbyte* ; [#uses=1]
605 %reg1015 = call %List %newList( sbyte* %reg335, %List null ) ; <%List> [#uses=1]
606 %cast10211 = getelementptr %YYSTYPE* %reg333, long -3, ubyte 0 ; <%IntList*> [#uses=1]
607 %reg338 = load %IntList* %cast10211 ; <%IntList> [#uses=1]
608 %reg338 = cast %IntList %reg338 to sbyte* ; [#uses=1]
609 %reg1023 = call %PatternAST %newPatternAST( sbyte* %reg338, %List %reg1015 ) ; <%PatternAST> [#uses=1]
610 cast %PatternAST %reg1023 to %IntList ; <%IntList>:8 [#uses=1]
611 store %IntList %8, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
612 br label %bb97
613
614 bb91: ; preds = %bb56
615 %reg341 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=3]
616 %cast10331 = getelementptr %YYSTYPE* %reg341, long -1, ubyte 0 ; <%IntList*> [#uses=1]
617 %reg344 = load %IntList* %cast10331 ; <%IntList> [#uses=1]
618 %reg344 = cast %IntList %reg344 to sbyte* ; [#uses=1]
619 %reg1035 = call %List %newList( sbyte* %reg344, %List null ) ; <%List> [#uses=1]
620 %cast10411 = getelementptr %YYSTYPE* %reg341, long -3, ubyte 0 ; <%IntList*> [#uses=1]
621 %reg347 = load %IntList* %cast10411 ; <%IntList> [#uses=1]
622 %reg347 = cast %IntList %reg347 to sbyte* ; [#uses=1]
623 %reg1043 = call %List %newList( sbyte* %reg347, %List %reg1035 ) ; <%List> [#uses=1]
624 %cast10491 = getelementptr %YYSTYPE* %reg341, long -5, ubyte 0 ; <%IntList*> [#uses=1]
625 %reg349 = load %IntList* %cast10491 ; <%IntList> [#uses=1]
626 %reg349 = cast %IntList %reg349 to sbyte* ; [#uses=1]
627 %reg1051 = call %PatternAST %newPatternAST( sbyte* %reg349, %List %reg1043 ) ; <%PatternAST> [#uses=1]
628 cast %PatternAST %reg1051 to %IntList ; <%IntList>:9 [#uses=1]
629 store %IntList %9, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
630 br label %bb97
631
632 bb92: ; preds = %bb68
633 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
634 br label %bb97
635
636 bb93: ; preds = %bb69
637 %reg354 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
638 %reg1059 = getelementptr %YYSTYPE* %reg354, long -2 ; <%YYSTYPE*> [#uses=1]
639 %cast1061 = cast %YYSTYPE* %reg1059 to int* ; [#uses=1]
640 %reg356 = load int* %cast1061 ; [#uses=1]
641 %reg357.idx1 = getelementptr %YYSTYPE* %reg354, long -1, ubyte 0 ; <%IntList*> [#uses=1]
642 %reg357 = load %IntList* %reg357.idx1 ; <%IntList> [#uses=1]
643 %reg1068 = call %IntList %newIntList( int %reg356, %IntList %reg357 ) ; <%IntList> [#uses=1]
644 store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
645 br label %bb97
646
647 bb94: ; preds = %bb66
648 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
649 br label %bb97
650
651 bb95: ; preds = %bb71
652 %reg362 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
653 %reg1076 = getelementptr %YYSTYPE* %reg362, long -1 ; <%YYSTYPE*> [#uses=1]
654 %cast1078 = cast %YYSTYPE* %reg1076 to int* ; [#uses=1]
655 %reg364 = load int* %cast1078 ; [#uses=1]
656 %reg365.idx = getelementptr %YYSTYPE* %reg362, long 0, ubyte 0 ; <%IntList*> [#uses=1]
657 %reg365 = load %IntList* %reg365.idx ; <%IntList> [#uses=1]
658 %reg1081 = call %IntList %newIntList( int %reg364, %IntList %reg365 ) ; <%IntList> [#uses=1]
659 store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
660 br label %bb97
661
662 bb96: ; preds = %bb72
663 %reg368 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
664 %reg1088 = getelementptr %YYSTYPE* %reg368, long -1 ; <%YYSTYPE*> [#uses=1]
665 %cast1090 = cast %YYSTYPE* %reg1088 to int* ; [#uses=1]
666 %reg370 = load int* %cast1090 ; [#uses=1]
667 %reg371.idx = getelementptr %YYSTYPE* %reg368, long 0, ubyte 0 ; <%IntList*> [#uses=1]
668 %reg371 = load %IntList* %reg371.idx ; <%IntList> [#uses=1]
669 %reg1093 = call %IntList %newIntList( int %reg370, %IntList %reg371 ) ; <%IntList> [#uses=1]
670 store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
671 br label %bb97
672
673 bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb72, %bb69, %bb64, %bb61, %bb54, %bb51, %bb46, %bb43
674 %cast1097 = cast short %reg254 to ulong ; [#uses=3]
675 %reg375 = add ulong %cast1097, %cast1097 ; [#uses=1]
676 %reg377 = load short** %yyssp ; [#uses=1]
677 %cast379 = cast short* %reg377 to ulong ; [#uses=1]
678 %reg381 = sub ulong %cast379, %reg375 ; [#uses=1]
679 %cast1099 = cast ulong %reg381 to short* ; [#uses=1]
680 store short* %cast1099, short** %yyssp
681 %reg382 = load short** %yyssp ; [#uses=3]
682 %reg383 = load short* %reg382 ; [#uses=1]
683 %cast1103 = cast short %reg383 to int ; [#uses=3]
684 %reg385 = mul ulong %cast1097, 8 ; [#uses=1]
685 %reg387 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
686 %cast389 = cast %YYSTYPE* %reg387 to ulong ; [#uses=1]
687 %reg391 = sub ulong %cast389, %reg385 ; [#uses=1]
688 %cast1108 = cast ulong %reg391 to %YYSTYPE* ; <%YYSTYPE*> [#uses=1]
689 store %YYSTYPE* %cast1108, %YYSTYPE** %yyvsp
690 %reg1111 = getelementptr [25 x short]* %yylhs, long 0, long %reg468-idxcast ; [#uses=1]
691 %reg398 = load short* %reg1111 ; [#uses=2]
692 %cast1116 = cast short %reg398 to int ; [#uses=1]
693 %cond1117 = setne int %cast1103, 0 ; [#uses=1]
694 br bool %cond1117, label %bb104, label %bb98
695
696 bb98: ; preds = %bb97
697 %cond1119 = setne int %cast1116, 0 ; [#uses=1]
698 br bool %cond1119, label %bb104, label %bb99
699
700 bb99: ; preds = %bb98
701 %reg1122 = getelementptr short* %reg382, long 1 ; [#uses=2]
702 store short* %reg1122, short** %yyssp
703 store short 1, short* %reg1122
704 %reg403 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
705 %reg1128 = getelementptr %YYSTYPE* %reg403, long 1 ; <%YYSTYPE*> [#uses=1]
706 store %YYSTYPE* %reg1128, %YYSTYPE** %yyvsp
707 %reg406 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
708 %reg1128.idx1 = getelementptr %YYSTYPE* %reg403, long 1, ubyte 0 ; <%IntList*> [#uses=1]
709 store %IntList %reg406, %IntList* %reg1128.idx1
710 %reg407 = load int* %yychar ; [#uses=1]
711 %cond1135 = setge int %reg407, 0 ; [#uses=1]
712 br bool %cond1135, label %bb102, label %bb100
713
714 bb100: ; preds = %bb99
715 %reg1139 = call int %yylex( ) ; [#uses=1]
716 store int %reg1139, int* %yychar
717 %reg409 = load int* %yychar ; [#uses=1]
718 %cond1141 = setge int %reg409, 0 ; [#uses=1]
719 br bool %cond1141, label %bb102, label %bb101
720
721 bb101: ; preds = %bb100
722 store int 0, int* %yychar
723 br label %bb102
724
725 bb102: ; preds = %bb101, %bb100, %bb99
726 %reg411 = load int* %yychar ; [#uses=1]
727 %cond1146 = setne int %reg411, 0 ; [#uses=1]
728 br bool %cond1146, label %bb4, label %UnifiedExitNode
729
730 bb104: ; preds = %bb98, %bb97
731 %reg398-idxcast = cast short %reg398 to long ; [#uses=2]
732 %reg1150 = getelementptr [12 x short]* %yygindex, long 0, long %reg398-idxcast ; [#uses=1]
733 %reg418 = load short* %reg1150 ; [#uses=1]
734 %cast1155 = cast short %reg418 to int ; [#uses=2]
735 %cond1156 = seteq int %cast1155, 0 ; [#uses=1]
736 br bool %cond1156, label %bb109, label %bb105
737
738 bb105: ; preds = %bb104
739 %reg473 = add int %cast1155, %cast1103 ; [#uses=3]
740 %cond1158 = setlt int %reg473, 0 ; [#uses=1]
741 br bool %cond1158, label %bb109, label %bb106
742
743 bb106: ; preds = %bb105
744 %cond1161 = setgt int %reg473, 262 ; [#uses=1]
745 br bool %cond1161, label %bb109, label %bb107
746
747 bb107: ; preds = %bb106
748 %reg473-idxcast = cast int %reg473 to long ; [#uses=2]
749 %reg1166 = getelementptr [263 x short]* %yycheck, long 0, long %reg473-idxcast ; [#uses=1]
750 %reg428 = load short* %reg1166 ; [#uses=1]
751 %cast1171 = cast short %reg428 to int ; [#uses=1]
752 %cond1172 = setne int %cast1171, %cast1103 ; [#uses=1]
753 br bool %cond1172, label %bb109, label %bb108
754
755 bb108: ; preds = %bb107
756 %reg1175 = getelementptr [263 x short]* %yytable, long 0, long %reg473-idxcast ; [#uses=1]
757 %reg435 = load short* %reg1175 ; [#uses=1]
758 %cast1180 = cast short %reg435 to uint ; [#uses=1]
759 br label %bb110
760
761 bb109: ; preds = %bb107, %bb106, %bb105, %bb104
762 %reg1183 = getelementptr [12 x short]* %yydgoto, long 0, long %reg398-idxcast ; [#uses=1]
763 %reg442 = load short* %reg1183 ; [#uses=1]
764 %cast1188 = cast short %reg442 to uint ; [#uses=1]
765 br label %bb110
766
767 bb110: ; preds = %bb109, %bb108
768 %reg476 = phi uint [ %cast1188, %bb109 ], [ %cast1180, %bb108 ] ; [#uses=2]
769 %cast1189 = cast short* %reg382 to sbyte* ; [#uses=1]
770 %reg444 = load short** %yysslim ; [#uses=1]
771 %cast1190 = cast short* %reg444 to sbyte* ; [#uses=1]
772 %cond1191 = setlt sbyte* %cast1189, %cast1190 ; [#uses=1]
773 br bool %cond1191, label %bb112, label %bb111
774
775 bb111: ; preds = %bb110
776 %reg1193 = call int %yygrowstack( ) ; [#uses=1]
777 %cond1193 = setne int %reg1193, 0 ; [#uses=1]
778 br bool %cond1193, label %bb113, label %bb112
779
780 bb112: ; preds = %bb111, %bb110
781 %reg446 = load short** %yyssp ; [#uses=1]
782 %reg1196 = getelementptr short* %reg446, long 1 ; [#uses=2]
783 store short* %reg1196, short** %yyssp
784 %cast1357 = cast uint %reg476 to short ; [#uses=1]
785 store short %cast1357, short* %reg1196
786 %reg449 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
787 %reg1202 = getelementptr %YYSTYPE* %reg449, long 1 ; <%YYSTYPE*> [#uses=1]
788 store %YYSTYPE* %reg1202, %YYSTYPE** %yyvsp
789 %reg452 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
790 %reg1202.idx1 = getelementptr %YYSTYPE* %reg449, long 1, ubyte 0 ; <%IntList*> [#uses=1]
791 store %IntList %reg452, %IntList* %reg1202.idx1
792 br label %bb4
793
794 bb113: ; preds = %bb111, %bb30, %bb13, %bb2
795 call void %yyerror( sbyte* getelementptr ([20 x sbyte]* %.LC1, long 0, long 0) )
796 br label %UnifiedExitNode
797
798 UnifiedExitNode: ; preds = %bb113, %bb102, %bb34, %bb32
799 %UnifiedRetVal = phi int [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ] ; [#uses=1]
800 ret int %UnifiedRetVal
801 }
802
803 declare %List %newList(sbyte*, %List)
804
805 declare %IntList %newIntList(int, %IntList)
806
807 declare void %doStart(sbyte*)
808
809 declare void %yyerror(sbyte*)
810
811 declare void %doSpec(%List, %List)
812
813 declare %Arity %newArity(int, %List)
814
815 declare %Binding %newBinding(sbyte*, int)
816
817 declare %PatternAST %newPatternAST(sbyte*, %List)
818
819 declare %RuleAST %newRuleAST(sbyte*, %PatternAST, int, %IntList)
820
821 declare void %yyfinished()
822
823 declare int %yylex()
824
825 declare void %doGram(%List)
826
827 declare int %yygrowstack()
0 ;; Register allocation is doing a very poor job on this routine from Burg:
1 ;; -- at least two long-lived values are being allocated to %o? registers
2 ;; -- even worse, those registers are being saved and restored repeatedly
3 ;; at function calls, even though there are no intervening uses.
4 ;; -- outgoing args of some function calls have to be swapped, causing
5 ;; another write/read from stack to do the exchange (use -dregalloc=y).
6 ;;
7 %Arity = type %struct.arity*
8 %Binding = type %struct.binding*
9 %DeltaCost = type [4 x short]
10 %Dimension = type %struct.dimension*
11 %Index_Map = type { int, %Item_Set* }
12 %IntList = type %struct.intlist*
13 %Item = type { %DeltaCost, %Rule }
14 %ItemArray = type %Item*
15 %Item_Set = type %struct.item_set*
16 %List = type %struct.list*
17 %Mapping = type %struct.mapping*
18 %NonTerminal = type %struct.nonterminal*
19 %Operator = type %struct.operator*
20 %Pattern = type %struct.pattern*
21 %PatternAST = type %struct.patternAST*
22 %Plank = type %struct.plank*
23 %PlankMap = type %struct.plankMap*
24 %ReadFn = type int ()*
25 %Rule = type %struct.rule*
26 %RuleAST = type %struct.ruleAST*
27 %StateMap = type %struct.stateMap*
28 %StrTableElement = type %struct.strTableElement*
29 %Symbol = type %struct.symbol*
30 %Table = type %struct.table*
31 %YYSTYPE = type { %IntList }
32 %struct.arity = type { int, %List }
33 %struct.binding = type { sbyte*, int }
34 %struct.dimension = type { short*, %Index_Map, %Mapping, int, %PlankMap }
35 %struct.index_map = type { int, %Item_Set* }
36 %struct.intlist = type { int, %IntList }
37 %struct.item = type { %DeltaCost, %Rule }
38 %struct.item_set = type { int, int, %Operator, [2 x %Item_Set], %Item_Set, short*, %ItemArray, %ItemArray }
39 %struct.list = type { sbyte*, %List }
40 %struct.mapping = type { %List*, int, int, int, %Item_Set* }
41 %struct.nonterminal = type { sbyte*, int, int, int, %PlankMap, %Rule }
42 %struct.operator = type { sbyte*, uint, int, int, int, int, %Table }
43 %struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
44 %struct.patternAST = type { %Symbol, sbyte*, %List }
45 %struct.plank = type { sbyte*, %List, int }
46 %struct.plankMap = type { %List, int, %StateMap }
47 %struct.rule = type { %DeltaCost, int, int, int, %NonTerminal, %Pattern, uint }
48 %struct.ruleAST = type { sbyte*, %PatternAST, int, %IntList, %Rule, %StrTableElement, %StrTableElement }
49 %struct.stateMap = type { sbyte*, %Plank, int, short* }
50 %struct.strTableElement = type { sbyte*, %IntList, sbyte* }
51 %struct.symbol = type { sbyte*, int, { %Operator } }
52 %struct.table = type { %Operator, %List, short*, [2 x %Dimension], %Item_Set* }
53 %yylval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
54 %yylhs = external global [25 x short] ; <[25 x short]*> [#uses=1]
55 %yylen = external global [25 x short] ; <[25 x short]*> [#uses=1]
56 %yydefred = external global [43 x short] ; <[43 x short]*> [#uses=1]
57 %yydgoto = external global [12 x short] ; <[12 x short]*> [#uses=1]
58 %yysindex = external global [43 x short] ; <[43 x short]*> [#uses=2]
59 %yyrindex = external global [43 x short] ; <[43 x short]*> [#uses=1]
60 %yygindex = external global [12 x short] ; <[12 x short]*> [#uses=1]
61 %yytable = external global [263 x short] ; <[263 x short]*> [#uses=4]
62 %yycheck = external global [263 x short] ; <[263 x short]*> [#uses=4]
63 %yynerrs = external global int ; [#uses=3]
64 %yyerrflag = external global int ; [#uses=6]
65 %yychar = external global int ; [#uses=15]
66 %yyssp = external global short* ; [#uses=15]
67 %yyvsp = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=30]
68 %yyval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
69 %yyss = external global short* ; [#uses=3]
70 %yysslim = external global short* ; [#uses=3]
71 %yyvs = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=1]
72 %.LC01 = external global [13 x sbyte] ; <[13 x sbyte]*> [#uses=1]
73 %.LC1 = external global [20 x sbyte] ; <[20 x sbyte]*> [#uses=1]
74
75 implementation ; Functions:
76
77 int %yyparse() {
78 bb0: ; No predecessors!
79 store int 0, int* %yynerrs
80 store int 0, int* %yyerrflag
81 store int -1, int* %yychar
82 %reg113 = load short** %yyss ; [#uses=1]
83 %cond581 = setne short* %reg113, null ; [#uses=1]
84 br bool %cond581, label %bb3, label %bb2
85
86 bb2: ; preds = %bb0
87 %reg584 = call int %yygrowstack( ) ; [#uses=1]
88 %cond584 = setne int %reg584, 0 ; [#uses=1]
89 br bool %cond584, label %bb113, label %bb3
90
91 bb3: ; preds = %bb2, %bb0
92 %reg115 = load short** %yyss ; [#uses=1]
93 store short* %reg115, short** %yyssp
94 %reg116 = load %YYSTYPE** %yyvs ; <%YYSTYPE*> [#uses=1]
95 store %YYSTYPE* %reg116, %YYSTYPE** %yyvsp
96 %reg117 = load short** %yyssp ; [#uses=1]
97 store short 0, short* %reg117
98 br label %bb4
99
100 bb4: ; preds = %bb14, %bb15, %bb31, %bb35, %bb102, %bb112, %bb3
101 %reg458 = phi uint [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ] ; [#uses=2]
102 %reg458-idxcast = cast uint %reg458 to long ; [#uses=3]
103 %reg594 = getelementptr [43 x short]* %yydefred, long 0, long %reg458-idxcast ; [#uses=1]
104 %reg125 = load short* %reg594 ; [#uses=1]
105 %cast599 = cast short %reg125 to int ; [#uses=2]
106 %cond600 = setne int %cast599, 0 ; [#uses=1]
107 br bool %cond600, label %bb36, label %bb5
108
109 bb5: ; preds = %bb4
110 %reg127 = load int* %yychar ; [#uses=1]
111 %cond603 = setge int %reg127, 0 ; [#uses=1]
112 br bool %cond603, label %bb8, label %bb6
113
114 bb6: ; preds = %bb5
115 %reg607 = call int %yylex( ) ; [#uses=1]
116 store int %reg607, int* %yychar
117 %reg129 = load int* %yychar ; [#uses=1]
118 %cond609 = setge int %reg129, 0 ; [#uses=1]
119 br bool %cond609, label %bb8, label %bb7
120
121 bb7: ; preds = %bb6
122 store int 0, int* %yychar
123 br label %bb8
124
125 bb8: ; preds = %bb7, %bb6, %bb5
126 %reg615 = getelementptr [43 x short]* %yysindex, long 0, long %reg458-idxcast ; [#uses=1]
127 %reg137 = load short* %reg615 ; [#uses=1]
128 %cast620 = cast short %reg137 to int ; [#uses=2]
129 %cond621 = seteq int %cast620, 0 ; [#uses=1]
130 br bool %cond621, label %bb16, label %bb9
131
132 bb9: ; preds = %bb8
133 %reg139 = load int* %yychar ; [#uses=2]
134 %reg460 = add int %cast620, %reg139 ; [#uses=3]
135 %cond624 = setlt int %reg460, 0 ; [#uses=1]
136 br bool %cond624, label %bb16, label %bb10
137
138 bb10: ; preds = %bb9
139 %cond627 = setgt int %reg460, 262 ; [#uses=1]
140 br bool %cond627, label %bb16, label %bb11
141
142 bb11: ; preds = %bb10
143 %reg460-idxcast = cast int %reg460 to long ; [#uses=2]
144 %reg632 = getelementptr [263 x short]* %yycheck, long 0, long %reg460-idxcast ; [#uses=1]
145 %reg148 = load short* %reg632 ; [#uses=1]
146 %cast637 = cast short %reg148 to int ; [#uses=1]
147 %cond639 = setne int %cast637, %reg139 ; [#uses=1]
148 br bool %cond639, label %bb16, label %bb12
149
150 bb12: ; preds = %bb11
151 %reg150 = load short** %yyssp ; [#uses=1]
152 %cast640 = cast short* %reg150 to sbyte* ; [#uses=1]
153 %reg151 = load short** %yysslim ; [#uses=1]
154 %cast641 = cast short* %reg151 to sbyte* ; [#uses=1]
155 %cond642 = setlt sbyte* %cast640, %cast641 ; [#uses=1]
156 br bool %cond642, label %bb14, label %bb13
157
158 bb13: ; preds = %bb12
159 %reg644 = call int %yygrowstack( ) ; [#uses=1]
160 %cond644 = setne int %reg644, 0 ; [#uses=1]
161 br bool %cond644, label %bb113, label %bb14
162
163 bb14: ; preds = %bb13, %bb12
164 %reg153 = load short** %yyssp ; [#uses=1]
165 %reg647 = getelementptr short* %reg153, long 1 ; [#uses=2]
166 store short* %reg647, short** %yyssp
167 %reg653 = getelementptr [263 x short]* %yytable, long 0, long %reg460-idxcast ; [#uses=1]
168 %reg162 = load short* %reg653 ; [#uses=2]
169 %cast658 = cast short %reg162 to uint ; [#uses=2]
170 store short %reg162, short* %reg647
171 %reg164 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
172 %reg661 = getelementptr %YYSTYPE* %reg164, long 1 ; <%YYSTYPE*> [#uses=1]
173 store %YYSTYPE* %reg661, %YYSTYPE** %yyvsp
174 %reg167 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
175 %reg661.idx1 = getelementptr %YYSTYPE* %reg164, long 1, ubyte 0 ; <%IntList*> [#uses=1]
176 store %IntList %reg167, %IntList* %reg661.idx1
177 store int -1, int* %yychar
178 %reg169 = load int* %yyerrflag ; [#uses=2]
179 %cond669 = setle int %reg169, 0 ; [#uses=1]
180 br bool %cond669, label %bb4, label %bb15
181
182 bb15: ; preds = %bb14
183 %reg171 = add int %reg169, -1 ; [#uses=1]
184 store int %reg171, int* %yyerrflag
185 br label %bb4
186
187 bb16: ; preds = %bb11, %bb10, %bb9, %bb8
188 %reg677 = getelementptr [43 x short]* %yyrindex, long 0, long %reg458-idxcast ; [#uses=1]
189 %reg178 = load short* %reg677 ; [#uses=1]
190 %cast682 = cast short %reg178 to int ; [#uses=2]
191 %cond683 = seteq int %cast682, 0 ; [#uses=1]
192 br bool %cond683, label %bb21, label %bb17
193
194 bb17: ; preds = %bb16
195 %reg180 = load int* %yychar ; [#uses=2]
196 %reg463 = add int %cast682, %reg180 ; [#uses=3]
197 %cond686 = setlt int %reg463, 0 ; [#uses=1]
198 br bool %cond686, label %bb21, label %bb18
199
200 bb18: ; preds = %bb17
201 %cond689 = setgt int %reg463, 262 ; [#uses=1]
202 br bool %cond689, label %bb21, label %bb19
203
204 bb19: ; preds = %bb18
205 %reg463-idxcast = cast int %reg463 to long ; [#uses=2]
206 %reg694 = getelementptr [263 x short]* %yycheck, long 0, long %reg463-idxcast ; [#uses=1]
207 %reg189 = load short* %reg694 ; [#uses=1]
208 %cast699 = cast short %reg189 to int ; [#uses=1]
209 %cond701 = setne int %cast699, %reg180 ; [#uses=1]
210 br bool %cond701, label %bb21, label %bb20
211
212 bb20: ; preds = %bb19
213 %reg704 = getelementptr [263 x short]* %yytable, long 0, long %reg463-idxcast ; [#uses=1]
214 %reg197 = load short* %reg704 ; [#uses=1]
215 %cast709 = cast short %reg197 to int ; [#uses=1]
216 br label %bb36
217
218 bb21: ; preds = %bb19, %bb18, %bb17, %bb16
219 %reg198 = load int* %yyerrflag ; [#uses=1]
220 %cond711 = setne int %reg198, 0 ; [#uses=1]
221 br bool %cond711, label %bb23, label %bb22
222
223 bb22: ; preds = %bb21
224 call void %yyerror( sbyte* getelementptr ([13 x sbyte]* %.LC01, long 0, long 0) )
225 %reg200 = load int* %yynerrs ; [#uses=1]
226 %reg201 = add int %reg200, 1 ; [#uses=1]
227 store int %reg201, int* %yynerrs
228 br label %bb23
229
230 bb23: ; preds = %bb22, %bb21
231 %reg202 = load int* %yyerrflag ; [#uses=1]
232 %cond719 = setgt int %reg202, 2 ; [#uses=1]
233 br bool %cond719, label %bb34, label %bb24
234
235 bb24: ; preds = %bb23
236 store int 3, int* %yyerrflag
237 %reg241 = load short** %yyss ; [#uses=1]
238 %cast778 = cast short* %reg241 to sbyte* ; [#uses=1]
239 br label %bb25
240
241 bb25: ; preds = %bb33, %bb24
242 %reg204 = load short** %yyssp ; [#uses=4]
243 %reg206 = load short* %reg204 ; [#uses=1]
244 %reg206-idxcast = cast short %reg206 to long ; [#uses=1]
245 %reg727 = getelementptr [43 x short]* %yysindex, long 0, long %reg206-idxcast ; [#uses=1]
246 %reg212 = load short* %reg727 ; [#uses=2]
247 %cast732 = cast short %reg212 to int ; [#uses=2]
248 %cond733 = seteq int %cast732, 0 ; [#uses=1]
249 br bool %cond733, label %bb32, label %bb26
250
251 bb26: ; preds = %bb25
252 %reg466 = add int %cast732, 256 ; [#uses=2]
253 %cond736 = setlt int %reg466, 0 ; [#uses=1]
254 br bool %cond736, label %bb32, label %bb27
255
256 bb27: ; preds = %bb26
257 %cond739 = setgt int %reg466, 262 ; [#uses=1]
258 br bool %cond739, label %bb32, label %bb28
259
260 bb28: ; preds = %bb27
261 %reg212-idxcast = cast short %reg212 to long ; [#uses=1]
262 %reg212-idxcast-offset = add long %reg212-idxcast, 256 ; [#uses=2]
263 %reg744 = getelementptr [263 x short]* %yycheck, long 0, long %reg212-idxcast-offset ; [#uses=1]
264 %reg221 = load short* %reg744 ; [#uses=1]
265 %cond748 = setne short %reg221, 256 ; [#uses=1]
266 br bool %cond748, label %bb32, label %bb29
267
268 bb29: ; preds = %bb28
269 %cast750 = cast short* %reg204 to sbyte* ; [#uses=1]
270 %reg223 = load short** %yysslim ; [#uses=1]
271 %cast751 = cast short* %reg223 to sbyte* ; [#uses=1]
272 %cond752 = setlt sbyte* %cast750, %cast751 ; [#uses=1]
273 br bool %cond752, label %bb31, label %bb30
274
275 bb30: ; preds = %bb29
276 %reg754 = call int %yygrowstack( ) ; [#uses=1]
277 %cond754 = setne int %reg754, 0 ; [#uses=1]
278 br bool %cond754, label %bb113, label %bb31
279
280 bb31: ; preds = %bb30, %bb29
281 %reg225 = load short** %yyssp ; [#uses=1]
282 %reg757 = getelementptr short* %reg225, long 1 ; [#uses=2]
283 store short* %reg757, short** %yyssp
284 %reg763 = getelementptr [263 x short]* %yytable, long 0, long %reg212-idxcast-offset ; [#uses=1]
285 %reg234 = load short* %reg763 ; [#uses=2]
286 %cast768 = cast short %reg234 to uint ; [#uses=1]
287 store short %reg234, short* %reg757
288 %reg236 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
289 %reg771 = getelementptr %YYSTYPE* %reg236, long 1 ; <%YYSTYPE*> [#uses=1]
290 store %YYSTYPE* %reg771, %YYSTYPE** %yyvsp
291 %reg239 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
292 %reg771.idx1 = getelementptr %YYSTYPE* %reg236, long 1, ubyte 0 ; <%IntList*> [#uses=1]
293 store %IntList %reg239, %IntList* %reg771.idx1
294 br label %bb4
295
296 bb32: ; preds = %bb28, %bb27, %bb26, %bb25
297 %cast777 = cast short* %reg204 to sbyte* ; [#uses=1]
298 %cond779 = setle sbyte* %cast777, %cast778 ; [#uses=1]
299 br bool %cond779, label %UnifiedExitNode, label %bb33
300
301 bb33: ; preds = %bb32
302 %reg781 = getelementptr short* %reg204, long -1 ; [#uses=1]
303 store short* %reg781, short** %yyssp
304 %reg244 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
305 %reg786 = getelementptr %YYSTYPE* %reg244, long -1 ; <%YYSTYPE*> [#uses=1]
306 store %YYSTYPE* %reg786, %YYSTYPE** %yyvsp
307 br label %bb25
308
309 bb34: ; preds = %bb23
310 %reg246 = load int* %yychar ; [#uses=1]
311 %cond791 = seteq int %reg246, 0 ; [#uses=1]
312 br bool %cond791, label %UnifiedExitNode, label %bb35
313
314 bb35: ; preds = %bb34
315 store int -1, int* %yychar
316 br label %bb4
317
318 bb36: ; preds = %bb20, %bb4
319 %reg468 = phi int [ %cast709, %bb20 ], [ %cast599, %bb4 ] ; [#uses=31]
320 %reg468-idxcast = cast int %reg468 to long ; [#uses=2]
321 %reg796 = getelementptr [25 x short]* %yylen, long 0, long %reg468-idxcast ; [#uses=1]
322 %reg254 = load short* %reg796 ; [#uses=2]
323 %reg259 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
324 %reg254-idxcast = cast short %reg254 to long ; [#uses=1]
325 %reg254-idxcast-scale = mul long %reg254-idxcast, -1 ; [#uses=1]
326 %reg254-idxcast-scale-offset = add long %reg254-idxcast-scale, 1 ; [#uses=1]
327 %reg261.idx1 = getelementptr %YYSTYPE* %reg259, long %reg254-idxcast-scale-offset, ubyte 0 ; <%IntList*> [#uses=1]
328 %reg261 = load %IntList* %reg261.idx1 ; <%IntList> [#uses=1]
329 store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
330 %cond812 = seteq int %reg468, 13 ; [#uses=1]
331 br bool %cond812, label %bb85, label %bb37
332
333 bb37: ; preds = %bb36
334 %cond814 = setgt int %reg468, 13 ; [#uses=1]
335 br bool %cond814, label %bb56, label %bb38
336
337 bb38: ; preds = %bb37
338 %cond817 = seteq int %reg468, 7 ; [#uses=1]
339 br bool %cond817, label %bb79, label %bb39
340
341 bb39: ; preds = %bb38
342 %cond819 = setgt int %reg468, 7 ; [#uses=1]
343 br bool %cond819, label %bb48, label %bb40
344
345 bb40: ; preds = %bb39
346 %cond822 = seteq int %reg468, 4 ; [#uses=1]
347 br bool %cond822, label %bb76, label %bb41
348
349 bb41: ; preds = %bb40
350 %cond824 = setgt int %reg468, 4 ; [#uses=1]
351 br bool %cond824, label %bb45, label %bb42
352
353 bb42: ; preds = %bb41
354 %cond827 = seteq int %reg468, 2 ; [#uses=1]
355 br bool %cond827, label %bb74, label %bb43
356
357 bb43: ; preds = %bb42
358 %cond829 = seteq int %reg468, 3 ; [#uses=1]
359 br bool %cond829, label %bb75, label %bb97
360
361 bb45: ; preds = %bb41
362 %cond831 = seteq int %reg468, 5 ; [#uses=1]
363 br bool %cond831, label %bb77, label %bb46
364
365 bb46: ; preds = %bb45
366 %cond833 = seteq int %reg468, 6 ; [#uses=1]
367 br bool %cond833, label %bb78, label %bb97
368
369 bb48: ; preds = %bb39
370 %cond835 = seteq int %reg468, 10 ; [#uses=1]
371 br bool %cond835, label %bb82, label %bb49
372
373 bb49: ; preds = %bb48
374 %cond837 = setgt int %reg468, 10 ; [#uses=1]
375 br bool %cond837, label %bb53, label %bb50
376
377 bb50: ; preds = %bb49
378 %cond840 = seteq int %reg468, 8 ; [#uses=1]
379 br bool %cond840, label %bb80, label %bb51
380
381 bb51: ; preds = %bb50
382 %cond842 = seteq int %reg468, 9 ; [#uses=1]
383 br bool %cond842, label %bb81, label %bb97
384
385 bb53: ; preds = %bb49
386 %cond844 = seteq int %reg468, 11 ; [#uses=1]
387 br bool %cond844, label %bb83, label %bb54
388
389 bb54: ; preds = %bb53
390 %cond846 = seteq int %reg468, 12 ; [#uses=1]
391 br bool %cond846, label %bb84, label %bb97
392
393 bb56: ; preds = %bb37
394 %cond848 = seteq int %reg468, 19 ; [#uses=1]
395 br bool %cond848, label %bb91, label %bb57
396
397 bb57: ; preds = %bb56
398 %cond850 = setgt int %reg468, 19 ; [#uses=1]
399 br bool %cond850, label %bb66, label %bb58
400
401 bb58: ; preds = %bb57
402 %cond853 = seteq int %reg468, 16 ; [#uses=1]
403 br bool %cond853, label %bb88, label %bb59
404
405 bb59: ; preds = %bb58
406 %cond855 = setgt int %reg468, 16 ; [#uses=1]
407 br bool %cond855, label %bb63, label %bb60
408
409 bb60: ; preds = %bb59
410 %cond858 = seteq int %reg468, 14 ; [#uses=1]
411 br bool %cond858, label %bb86, label %bb61
412
413 bb61: ; preds = %bb60
414 %cond860 = seteq int %reg468, 15 ; [#uses=1]
415 br bool %cond860, label %bb87, label %bb97
416
417 bb63: ; preds = %bb59
418 %cond862 = seteq int %reg468, 17 ; [#uses=1]
419 br bool %cond862, label %bb89, label %bb64
420
421 bb64: ; preds = %bb63
422 %cond864 = seteq int %reg468, 18 ; [#uses=1]
423 br bool %cond864, label %bb90, label %bb97
424
425 bb66: ; preds = %bb57
426 %cond866 = seteq int %reg468, 22 ; [#uses=1]
427 br bool %cond866, label %bb94, label %bb67
428
429 bb67: ; preds = %bb66
430 %cond868 = setgt int %reg468, 22 ; [#uses=1]
431 br bool %cond868, label %bb71, label %bb68
432
433 bb68: ; preds = %bb67
434 %cond871 = seteq int %reg468, 20 ; [#uses=1]
435 br bool %cond871, label %bb92, label %bb69
436
437 bb69: ; preds = %bb68
438 %cond873 = seteq int %reg468, 21 ; [#uses=1]
439 br bool %cond873, label %bb93, label %bb97
440
441 bb71: ; preds = %bb67
442 %cond875 = seteq int %reg468, 23 ; [#uses=1]
443 br bool %cond875, label %bb95, label %bb72
444
445 bb72: ; preds = %bb71
446 %cond877 = seteq int %reg468, 24 ; [#uses=1]
447 br bool %cond877, label %bb96, label %bb97
448
449 bb74: ; preds = %bb42
450 call void %yyfinished( )
451 br label %bb97
452
453 bb75: ; preds = %bb43
454 %reg262 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
455 %reg264.idx1 = getelementptr %YYSTYPE* %reg262, long -2, ubyte 0 ; <%IntList*> [#uses=1]
456 %reg264 = load %IntList* %reg264.idx1 ; <%IntList> [#uses=1]
457 %reg265.idx = getelementptr %YYSTYPE* %reg262, long 0, ubyte 0 ; <%IntList*> [#uses=1]
458 %reg265 = load %IntList* %reg265.idx ; <%IntList> [#uses=1]
459 %cast889 = cast %IntList %reg265 to %List ; <%List> [#uses=1]
460 %cast890 = cast %IntList %reg264 to %List ; <%List> [#uses=1]
461 call void %doSpec( %List %cast890, %List %cast889 )
462 br label %bb97
463
464 bb76: ; preds = %bb40
465 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
466 br label %bb97
467
468 bb77: ; preds = %bb45
469 %reg269 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
470 %cast894 = getelementptr %YYSTYPE* %reg269, long 0, ubyte 0 ; <%IntList*> [#uses=1]
471 %reg271 = load %IntList* %cast894 ; <%IntList> [#uses=1]
472 %reg271 = cast %IntList %reg271 to sbyte* ; [#uses=1]
473 %reg272.idx1 = getelementptr %YYSTYPE* %reg269, long -1, ubyte 0 ; <%IntList*> [#uses=1]
474 %reg272 = load %IntList* %reg272.idx1 ; <%IntList> [#uses=1]
475 %cast901 = cast %IntList %reg272 to %List ; <%List> [#uses=1]
476 %reg901 = call %List %newList( sbyte* %reg271, %List %cast901 ) ; <%List> [#uses=1]
477 cast %List %reg901 to %IntList ; <%IntList>:0 [#uses=1]
478 store %IntList %0, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
479 br label %bb97
480
481 bb78: ; preds = %bb46
482 %reg275 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
483 %reg277.idx = getelementptr %YYSTYPE* %reg275, long 0, ubyte 0 ; <%IntList*> [#uses=1]
484 %reg277 = load %IntList* %reg277.idx ; <%IntList> [#uses=1]
485 %cast907 = cast %IntList %reg277 to %List ; <%List> [#uses=1]
486 %reg907 = call %Arity %newArity( int -1, %List %cast907 ) ; <%Arity> [#uses=1]
487 cast %Arity %reg907 to %IntList ; <%IntList>:1 [#uses=1]
488 store %IntList %1, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
489 br label %bb97
490
491 bb79: ; preds = %bb38
492 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
493 %reg281 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
494 %cast912 = getelementptr %YYSTYPE* %reg281, long 0, ubyte 0 ; <%IntList*> [#uses=1]
495 %reg282 = load %IntList* %cast912 ; <%IntList> [#uses=1]
496 %reg282 = cast %IntList %reg282 to %List ; <%List> [#uses=1]
497 call void %doGram( %List %reg282 )
498 br label %bb97
499
500 bb80: ; preds = %bb50
501 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
502 %reg285 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
503 %cast917 = getelementptr %YYSTYPE* %reg285, long 0, ubyte 0 ; <%IntList*> [#uses=1]
504 %reg286 = load %IntList* %cast917 ; <%IntList> [#uses=1]
505 %reg286 = cast %IntList %reg286 to sbyte* ; [#uses=1]
506 call void %doStart( sbyte* %reg286 )
507 br label %bb97
508
509 bb81: ; preds = %bb51
510 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
511 br label %bb97
512
513 bb82: ; preds = %bb48
514 %reg290 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
515 %cast923 = getelementptr %YYSTYPE* %reg290, long 0, ubyte 0 ; <%IntList*> [#uses=1]
516 %reg292 = load %IntList* %cast923 ; <%IntList> [#uses=1]
517 %reg292 = cast %IntList %reg292 to sbyte* ; [#uses=1]
518 %reg293.idx1 = getelementptr %YYSTYPE* %reg290, long -1, ubyte 0 ; <%IntList*> [#uses=1]
519 %reg293 = load %IntList* %reg293.idx1 ; <%IntList> [#uses=1]
520 %cast930 = cast %IntList %reg293 to %List ; <%List> [#uses=1]
521 %reg930 = call %List %newList( sbyte* %reg292, %List %cast930 ) ; <%List> [#uses=1]
522 cast %List %reg930 to %IntList ; <%IntList>:2 [#uses=1]
523 store %IntList %2, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
524 br label %bb97
525
526 bb83: ; preds = %bb53
527 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
528 br label %bb97
529
530 bb84: ; preds = %bb54
531 %reg298 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
532 %cast936 = getelementptr %YYSTYPE* %reg298, long 0, ubyte 0 ; <%IntList*> [#uses=1]
533 %reg300 = load %IntList* %cast936 ; <%IntList> [#uses=1]
534 %reg300 = cast %IntList %reg300 to sbyte* ; [#uses=1]
535 %reg301.idx1 = getelementptr %YYSTYPE* %reg298, long -1, ubyte 0 ; <%IntList*> [#uses=1]
536 %reg301 = load %IntList* %reg301.idx1 ; <%IntList> [#uses=1]
537 %cast943 = cast %IntList %reg301 to %List ; <%List> [#uses=1]
538 %reg943 = call %List %newList( sbyte* %reg300, %List %cast943 ) ; <%List> [#uses=1]
539 cast %List %reg943 to %IntList ; <%IntList>:3 [#uses=1]
540 store %IntList %3, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
541 br label %bb97
542
543 bb85: ; preds = %bb36
544 %reg304 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
545 %cast9521 = getelementptr %YYSTYPE* %reg304, long -2, ubyte 0 ; <%IntList*> [#uses=1]
546 %reg306 = load %IntList* %cast9521 ; <%IntList> [#uses=1]
547 %reg306 = cast %IntList %reg306 to sbyte* ; [#uses=1]
548 %cast953 = cast %YYSTYPE* %reg304 to int* ; [#uses=1]
549 %reg307 = load int* %cast953 ; [#uses=1]
550 %reg955 = call %Binding %newBinding( sbyte* %reg306, int %reg307 ) ; <%Binding> [#uses=1]
551 cast %Binding %reg955 to %IntList ; <%IntList>:4 [#uses=1]
552 store %IntList %4, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
553 br label %bb97
554
555 bb86: ; preds = %bb60
556 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
557 br label %bb97
558
559 bb87: ; preds = %bb61
560 %reg312 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
561 %cast961 = getelementptr %YYSTYPE* %reg312, long 0, ubyte 0 ; <%IntList*> [#uses=1]
562 %reg314 = load %IntList* %cast961 ; <%IntList> [#uses=1]
563 %reg314 = cast %IntList %reg314 to sbyte* ; [#uses=1]
564 %reg315.idx1 = getelementptr %YYSTYPE* %reg312, long -1, ubyte 0 ; <%IntList*> [#uses=1]
565 %reg315 = load %IntList* %reg315.idx1 ; <%IntList> [#uses=1]
566 %cast968 = cast %IntList %reg315 to %List ; <%List> [#uses=1]
567 %reg968 = call %List %newList( sbyte* %reg314, %List %cast968 ) ; <%List> [#uses=1]
568 cast %List %reg968 to %IntList ; <%IntList>:5 [#uses=1]
569 store %IntList %5, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
570 br label %bb97
571
572 bb88: ; preds = %bb58
573 %reg318 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=4]
574 %cast9791 = getelementptr %YYSTYPE* %reg318, long -6, ubyte 0 ; <%IntList*> [#uses=1]
575 %reg322 = load %IntList* %cast9791 ; <%IntList> [#uses=1]
576 %reg322 = cast %IntList %reg322 to sbyte* ; [#uses=1]
577 %reg323.idx1 = getelementptr %YYSTYPE* %reg318, long -4, ubyte 0 ; <%IntList*> [#uses=1]
578 %reg323 = load %IntList* %reg323.idx1 ; <%IntList> [#uses=1]
579 %reg987 = getelementptr %YYSTYPE* %reg318, long -2 ; <%YYSTYPE*> [#uses=1]
580 %cast989 = cast %YYSTYPE* %reg987 to int* ; [#uses=1]
581 %reg324 = load int* %cast989 ; [#uses=1]
582 %reg325.idx1 = getelementptr %YYSTYPE* %reg318, long -1, ubyte 0 ; <%IntList*> [#uses=1]
583 %reg325 = load %IntList* %reg325.idx1 ; <%IntList> [#uses=1]
584 %cast998 = cast %IntList %reg323 to %PatternAST ; <%PatternAST> [#uses=1]
585 %reg996 = call %RuleAST %newRuleAST( sbyte* %reg322, %PatternAST %cast998, int %reg324, %IntList %reg325 ) ; <%RuleAST> [#uses=1]
586 cast %RuleAST %reg996 to %IntList ; <%IntList>:6 [#uses=1]
587 store %IntList %6, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
588 br label %bb97
589
590 bb89: ; preds = %bb63
591 %reg328 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
592 %cast1002 = getelementptr %YYSTYPE* %reg328, long 0, ubyte 0 ; <%IntList*> [#uses=1]
593 %reg329 = load %IntList* %cast1002 ; <%IntList> [#uses=1]
594 %reg329 = cast %IntList %reg329 to sbyte* ; [#uses=1]
595 %reg1004 = call %PatternAST %newPatternAST( sbyte* %reg329, %List null ) ; <%PatternAST> [#uses=1]
596 cast %PatternAST %reg1004 to %IntList ; <%IntList>:7 [#uses=1]
597 store %IntList %7, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
598 br label %bb97
599
600 bb90: ; preds = %bb64
601 %reg333 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
602 %cast10131 = getelementptr %YYSTYPE* %reg333, long -1, ubyte 0 ; <%IntList*> [#uses=1]
603 %reg335 = load %IntList* %cast10131 ; <%IntList> [#uses=1]
604 %reg335 = cast %IntList %reg335 to sbyte* ; [#uses=1]
605 %reg1015 = call %List %newList( sbyte* %reg335, %List null ) ; <%List> [#uses=1]
606 %cast10211 = getelementptr %YYSTYPE* %reg333, long -3, ubyte 0 ; <%IntList*> [#uses=1]
607 %reg338 = load %IntList* %cast10211 ; <%IntList> [#uses=1]
608 %reg338 = cast %IntList %reg338 to sbyte* ; [#uses=1]
609 %reg1023 = call %PatternAST %newPatternAST( sbyte* %reg338, %List %reg1015 ) ; <%PatternAST> [#uses=1]
610 cast %PatternAST %reg1023 to %IntList ; <%IntList>:8 [#uses=1]
611 store %IntList %8, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
612 br label %bb97
613
614 bb91: ; preds = %bb56
615 %reg341 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=3]
616 %cast10331 = getelementptr %YYSTYPE* %reg341, long -1, ubyte 0 ; <%IntList*> [#uses=1]
617 %reg344 = load %IntList* %cast10331 ; <%IntList> [#uses=1]
618 %reg344 = cast %IntList %reg344 to sbyte* ; [#uses=1]
619 %reg1035 = call %List %newList( sbyte* %reg344, %List null ) ; <%List> [#uses=1]
620 %cast10411 = getelementptr %YYSTYPE* %reg341, long -3, ubyte 0 ; <%IntList*> [#uses=1]
621 %reg347 = load %IntList* %cast10411 ; <%IntList> [#uses=1]
622 %reg347 = cast %IntList %reg347 to sbyte* ; [#uses=1]
623 %reg1043 = call %List %newList( sbyte* %reg347, %List %reg1035 ) ; <%List> [#uses=1]
624 %cast10491 = getelementptr %YYSTYPE* %reg341, long -5, ubyte 0 ; <%IntList*> [#uses=1]
625 %reg349 = load %IntList* %cast10491 ; <%IntList> [#uses=1]
626 %reg349 = cast %IntList %reg349 to sbyte* ; [#uses=1]
627 %reg1051 = call %PatternAST %newPatternAST( sbyte* %reg349, %List %reg1043 ) ; <%PatternAST> [#uses=1]
628 cast %PatternAST %reg1051 to %IntList ; <%IntList>:9 [#uses=1]
629 store %IntList %9, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
630 br label %bb97
631
632 bb92: ; preds = %bb68
633 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
634 br label %bb97
635
636 bb93: ; preds = %bb69
637 %reg354 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
638 %reg1059 = getelementptr %YYSTYPE* %reg354, long -2 ; <%YYSTYPE*> [#uses=1]
639 %cast1061 = cast %YYSTYPE* %reg1059 to int* ; [#uses=1]
640 %reg356 = load int* %cast1061 ; [#uses=1]
641 %reg357.idx1 = getelementptr %YYSTYPE* %reg354, long -1, ubyte 0 ; <%IntList*> [#uses=1]
642 %reg357 = load %IntList* %reg357.idx1 ; <%IntList> [#uses=1]
643 %reg1068 = call %IntList %newIntList( int %reg356, %IntList %reg357 ) ; <%IntList> [#uses=1]
644 store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
645 br label %bb97
646
647 bb94: ; preds = %bb66
648 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
649 br label %bb97
650
651 bb95: ; preds = %bb71
652 %reg362 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
653 %reg1076 = getelementptr %YYSTYPE* %reg362, long -1 ; <%YYSTYPE*> [#uses=1]
654 %cast1078 = cast %YYSTYPE* %reg1076 to int* ; [#uses=1]
655 %reg364 = load int* %cast1078 ; [#uses=1]
656 %reg365.idx = getelementptr %YYSTYPE* %reg362, long 0, ubyte 0 ; <%IntList*> [#uses=1]
657 %reg365 = load %IntList* %reg365.idx ; <%IntList> [#uses=1]
658 %reg1081 = call %IntList %newIntList( int %reg364, %IntList %reg365 ) ; <%IntList> [#uses=1]
659 store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
660 br label %bb97
661
662 bb96: ; preds = %bb72
663 %reg368 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
664 %reg1088 = getelementptr %YYSTYPE* %reg368, long -1 ; <%YYSTYPE*> [#uses=1]
665 %cast1090 = cast %YYSTYPE* %reg1088 to int* ; [#uses=1]
666 %reg370 = load int* %cast1090 ; [#uses=1]
667 %reg371.idx = getelementptr %YYSTYPE* %reg368, long 0, ubyte 0 ; <%IntList*> [#uses=1]
668 %reg371 = load %IntList* %reg371.idx ; <%IntList> [#uses=1]
669 %reg1093 = call %IntList %newIntList( int %reg370, %IntList %reg371 ) ; <%IntList> [#uses=1]
670 store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
671 br label %bb97
672
673 bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb72, %bb69, %bb64, %bb61, %bb54, %bb51, %bb46, %bb43
674 %cast1097 = cast short %reg254 to ulong ; [#uses=3]
675 %reg375 = add ulong %cast1097, %cast1097 ; [#uses=1]
676 %reg377 = load short** %yyssp ; [#uses=1]
677 %cast379 = cast short* %reg377 to ulong ; [#uses=1]
678 %reg381 = sub ulong %cast379, %reg375 ; [#uses=1]
679 %cast1099 = cast ulong %reg381 to short* ; [#uses=1]
680 store short* %cast1099, short** %yyssp
681 %reg382 = load short** %yyssp ; [#uses=3]
682 %reg383 = load short* %reg382 ; [#uses=1]
683 %cast1103 = cast short %reg383 to int ; [#uses=3]
684 %reg385 = mul ulong %cast1097, 8 ; [#uses=1]
685 %reg387 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
686 %cast389 = cast %YYSTYPE* %reg387 to ulong ; [#uses=1]
687 %reg391 = sub ulong %cast389, %reg385 ; [#uses=1]
688 %cast1108 = cast ulong %reg391 to %YYSTYPE* ; <%YYSTYPE*> [#uses=1]
689 store %YYSTYPE* %cast1108, %YYSTYPE** %yyvsp
690 %reg1111 = getelementptr [25 x short]* %yylhs, long 0, long %reg468-idxcast ; [#uses=1]
691 %reg398 = load short* %reg1111 ; [#uses=2]
692 %cast1116 = cast short %reg398 to int ; [#uses=1]
693 %cond1117 = setne int %cast1103, 0 ; [#uses=1]
694 br bool %cond1117, label %bb104, label %bb98
695
696 bb98: ; preds = %bb97
697 %cond1119 = setne int %cast1116, 0 ; [#uses=1]
698 br bool %cond1119, label %bb104, label %bb99
699
700 bb99: ; preds = %bb98
701 %reg1122 = getelementptr short* %reg382, long 1 ; [#uses=2]
702 store short* %reg1122, short** %yyssp
703 store short 1, short* %reg1122
704 %reg403 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
705 %reg1128 = getelementptr %YYSTYPE* %reg403, long 1 ; <%YYSTYPE*> [#uses=1]
706 store %YYSTYPE* %reg1128, %YYSTYPE** %yyvsp
707 %reg406 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
708 %reg1128.idx1 = getelementptr %YYSTYPE* %reg403, long 1, ubyte 0 ; <%IntList*> [#uses=1]
709 store %IntList %reg406, %IntList* %reg1128.idx1
710 %reg407 = load int* %yychar ; [#uses=1]
711 %cond1135 = setge int %reg407, 0 ; [#uses=1]
712 br bool %cond1135, label %bb102, label %bb100
713
714 bb100: ; preds = %bb99
715 %reg1139 = call int %yylex( ) ; [#uses=1]
716 store int %reg1139, int* %yychar
717 %reg409 = load int* %yychar ; [#uses=1]
718 %cond1141 = setge int %reg409, 0 ; [#uses=1]
719 br bool %cond1141, label %bb102, label %bb101
720
721 bb101: ; preds = %bb100
722 store int 0, int* %yychar
723 br label %bb102
724
725 bb102: ; preds = %bb101, %bb100, %bb99
726 %reg411 = load int* %yychar ; [#uses=1]
727 %cond1146 = setne int %reg411, 0 ; [#uses=1]
728 br bool %cond1146, label %bb4, label %UnifiedExitNode
729
730 bb104: ; preds = %bb98, %bb97
731 %reg398-idxcast = cast short %reg398 to long ; [#uses=2]
732 %reg1150 = getelementptr [12 x short]* %yygindex, long 0, long %reg398-idxcast ; [#uses=1]
733 %reg418 = load short* %reg1150 ; [#uses=1]
734 %cast1155 = cast short %reg418 to int ; [#uses=2]
735 %cond1156 = seteq int %cast1155, 0 ; [#uses=1]
736 br bool %cond1156, label %bb109, label %bb105
737
738 bb105: ; preds = %bb104
739 %reg473 = add int %cast1155, %cast1103 ; [#uses=3]
740 %cond1158 = setlt int %reg473, 0 ; [#uses=1]
741 br bool %cond1158, label %bb109, label %bb106
742
743 bb106: ; preds = %bb105
744 %cond1161 = setgt int %reg473, 262 ; [#uses=1]
745 br bool %cond1161, label %bb109, label %bb107
746
747 bb107: ; preds = %bb106
748 %reg473-idxcast = cast int %reg473 to long ; [#uses=2]
749 %reg1166 = getelementptr [263 x short]* %yycheck, long 0, long %reg473-idxcast ; [#uses=1]
750 %reg428 = load short* %reg1166 ; [#uses=1]
751 %cast1171 = cast short %reg428 to int ; [#uses=1]
752 %cond1172 = setne int %cast1171, %cast1103 ; [#uses=1]
753 br bool %cond1172, label %bb109, label %bb108
754
755 bb108: ; preds = %bb107
756 %reg1175 = getelementptr [263 x short]* %yytable, long 0, long %reg473-idxcast ; [#uses=1]
757 %reg435 = load short* %reg1175 ; [#uses=1]
758 %cast1180 = cast short %reg435 to uint ; [#uses=1]
759 br label %bb110
760
761 bb109: ; preds = %bb107, %bb106, %bb105, %bb104
762 %reg1183 = getelementptr [12 x short]* %yydgoto, long 0, long %reg398-idxcast ; [#uses=1]
763 %reg442 = load short* %reg1183 ; [#uses=1]
764 %cast1188 = cast short %reg442 to uint ; [#uses=1]
765 br label %bb110
766
767 bb110: ; preds = %bb109, %bb108
768 %reg476 = phi uint [ %cast1188, %bb109 ], [ %cast1180, %bb108 ] ; [#uses=2]
769 %cast1189 = cast short* %reg382 to sbyte* ; [#uses=1]
770 %reg444 = load short** %yysslim ; [#uses=1]
771 %cast1190 = cast short* %reg444 to sbyte* ; [#uses=1]
772 %cond1191 = setlt sbyte* %cast1189, %cast1190 ; [#uses=1]
773 br bool %cond1191, label %bb112, label %bb111
774
775 bb111: ; preds = %bb110
776 %reg1193 = call int %yygrowstack( ) ; [#uses=1]
777 %cond1193 = setne int %reg1193, 0 ; [#uses=1]
778 br bool %cond1193, label %bb113, label %bb112
779
780 bb112: ; preds = %bb111, %bb110
781 %reg446 = load short** %yyssp ; [#uses=1]
782 %reg1196 = getelementptr short* %reg446, long 1 ; [#uses=2]
783 store short* %reg1196, short** %yyssp
784 %cast1357 = cast uint %reg476 to short ; [#uses=1]
785 store short %cast1357, short* %reg1196
786 %reg449 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
787 %reg1202 = getelementptr %YYSTYPE* %reg449, long 1 ; <%YYSTYPE*> [#uses=1]
788 store %YYSTYPE* %reg1202, %YYSTYPE** %yyvsp
789 %reg452 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
790 %reg1202.idx1 = getelementptr %YYSTYPE* %reg449, long 1, ubyte 0 ; <%IntList*> [#uses=1]
791 store %IntList %reg452, %IntList* %reg1202.idx1
792 br label %bb4
793
794 bb113: ; preds = %bb111, %bb30, %bb13, %bb2
795 call void %yyerror( sbyte* getelementptr ([20 x sbyte]* %.LC1, long 0, long 0) )
796 br label %UnifiedExitNode
797
798 UnifiedExitNode: ; preds = %bb113, %bb102, %bb34, %bb32
799 %UnifiedRetVal = phi int [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ] ; [#uses=1]
800 ret int %UnifiedRetVal
801 }
802
803 declare %List %newList(sbyte*, %List)
804
805 declare %IntList %newIntList(int, %IntList)
806
807 declare void %doStart(sbyte*)
808
809 declare void %yyerror(sbyte*)
810
811 declare void %doSpec(%List, %List)
812
813 declare %Arity %newArity(int, %List)
814
815 declare %Binding %newBinding(sbyte*, int)
816
817 declare %PatternAST %newPatternAST(sbyte*, %List)
818
819 declare %RuleAST %newRuleAST(sbyte*, %PatternAST, int, %IntList)
820
821 declare void %yyfinished()
822
823 declare int %yylex()
824
825 declare void %doGram(%List)
826
827 declare int %yygrowstack()
0 ;; Register allocation is doing a very poor job on this routine from Burg:
1 ;; -- at least two long-lived values are being allocated to %o? registers
2 ;; -- even worse, those registers are being saved and restored repeatedly
3 ;; at function calls, even though there are no intervening uses.
4 ;; -- outgoing args of some function calls have to be swapped, causing
5 ;; another write/read from stack to do the exchange (use -dregalloc=y).
6 ;;
7 %Arity = type %struct.arity*
8 %Binding = type %struct.binding*
9 %DeltaCost = type [4 x short]
10 %Dimension = type %struct.dimension*
11 %Index_Map = type { int, %Item_Set* }
12 %IntList = type %struct.intlist*
13 %Item = type { %DeltaCost, %Rule }
14 %ItemArray = type %Item*
15 %Item_Set = type %struct.item_set*
16 %List = type %struct.list*
17 %Mapping = type %struct.mapping*
18 %NonTerminal = type %struct.nonterminal*
19 %Operator = type %struct.operator*
20 %Pattern = type %struct.pattern*
21 %PatternAST = type %struct.patternAST*
22 %Plank = type %struct.plank*
23 %PlankMap = type %struct.plankMap*
24 %ReadFn = type int ()*
25 %Rule = type %struct.rule*
26 %RuleAST = type %struct.ruleAST*
27 %StateMap = type %struct.stateMap*
28 %StrTableElement = type %struct.strTableElement*
29 %Symbol = type %struct.symbol*
30 %Table = type %struct.table*
31 %YYSTYPE = type { %IntList }
32 %struct.arity = type { int, %List }
33 %struct.binding = type { sbyte*, int }
34 %struct.dimension = type { short*, %Index_Map, %Mapping, int, %PlankMap }
35 %struct.index_map = type { int, %Item_Set* }
36 %struct.intlist = type { int, %IntList }
37 %struct.item = type { %DeltaCost, %Rule }
38 %struct.item_set = type { int, int, %Operator, [2 x %Item_Set], %Item_Set, short*, %ItemArray, %ItemArray }
39 %struct.list = type { sbyte*, %List }
40 %struct.mapping = type { %List*, int, int, int, %Item_Set* }
41 %struct.nonterminal = type { sbyte*, int, int, int, %PlankMap, %Rule }
42 %struct.operator = type { sbyte*, uint, int, int, int, int, %Table }
43 %struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
44 %struct.patternAST = type { %Symbol, sbyte*, %List }
45 %struct.plank = type { sbyte*, %List, int }
46 %struct.plankMap = type { %List, int, %StateMap }
47 %struct.rule = type { %DeltaCost, int, int, int, %NonTerminal, %Pattern, uint }
48 %struct.ruleAST = type { sbyte*, %PatternAST, int, %IntList, %Rule, %StrTableElement, %StrTableElement }
49 %struct.stateMap = type { sbyte*, %Plank, int, short* }
50 %struct.strTableElement = type { sbyte*, %IntList, sbyte* }
51 %struct.symbol = type { sbyte*, int, { %Operator } }
52 %struct.table = type { %Operator, %List, short*, [2 x %Dimension], %Item_Set* }
53 %yylval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
54 %yylhs = external global [25 x short] ; <[25 x short]*> [#uses=1]
55 %yylen = external global [25 x short] ; <[25 x short]*> [#uses=1]
56 %yydefred = external global [43 x short] ; <[43 x short]*> [#uses=1]
57 %yydgoto = external global [12 x short] ; <[12 x short]*> [#uses=1]
58 %yysindex = external global [43 x short] ; <[43 x short]*> [#uses=2]
59 %yyrindex = external global [43 x short] ; <[43 x short]*> [#uses=1]
60 %yygindex = external global [12 x short] ; <[12 x short]*> [#uses=1]
61 %yytable = external global [263 x short] ; <[263 x short]*> [#uses=4]
62 %yycheck = external global [263 x short] ; <[263 x short]*> [#uses=4]
63 %yynerrs = external global int ; [#uses=3]
64 %yyerrflag = external global int ; [#uses=6]
65 %yychar = external global int ; [#uses=15]
66 %yyssp = external global short* ; [#uses=15]
67 %yyvsp = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=30]
68 %yyval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
69 %yyss = external global short* ; [#uses=3]
70 %yysslim = external global short* ; [#uses=3]
71 %yyvs = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=1]
72 %.LC01 = external global [13 x sbyte] ; <[13 x sbyte]*> [#uses=1]
73 %.LC1 = external global [20 x sbyte] ; <[20 x sbyte]*> [#uses=1]
74
75 implementation ; Functions:
76
77 int %yyparse() {
78 bb0: ; No predecessors!
79 store int 0, int* %yynerrs
80 store int 0, int* %yyerrflag
81 store int -1, int* %yychar
82 %reg113 = load short** %yyss ; [#uses=1]
83 %cond581 = setne short* %reg113, null ; [#uses=1]
84 br bool %cond581, label %bb3, label %bb2
85
86 bb2: ; preds = %bb0
87 %reg584 = call int %yygrowstack( ) ; [#uses=1]
88 %cond584 = setne int %reg584, 0 ; [#uses=1]
89 br bool %cond584, label %bb113, label %bb3
90
91 bb3: ; preds = %bb2, %bb0
92 %reg115 = load short** %yyss ; [#uses=1]
93 store short* %reg115, short** %yyssp
94 %reg116 = load %YYSTYPE** %yyvs ; <%YYSTYPE*> [#uses=1]
95 store %YYSTYPE* %reg116, %YYSTYPE** %yyvsp
96 %reg117 = load short** %yyssp ; [#uses=1]
97 store short 0, short* %reg117
98 br label %bb4
99
100 bb4: ; preds = %bb14, %bb15, %bb31, %bb35, %bb102, %bb112, %bb3
101 %reg458 = phi uint [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ] ; [#uses=2]
102 %reg458-idxcast = cast uint %reg458 to long ; [#uses=3]
103 %reg594 = getelementptr [43 x short]* %yydefred, long 0, long %reg458-idxcast ; [#uses=1]
104 %reg125 = load short* %reg594 ; [#uses=1]
105 %cast599 = cast short %reg125 to int ; [#uses=2]
106 %cond600 = setne int %cast599, 0 ; [#uses=1]
107 br bool %cond600, label %bb36, label %bb5
108
109 bb5: ; preds = %bb4
110 %reg127 = load int* %yychar ; [#uses=1]
111 %cond603 = setge int %reg127, 0 ; [#uses=1]
112 br bool %cond603, label %bb8, label %bb6
113
114 bb6: ; preds = %bb5
115 %reg607 = call int %yylex( ) ; [#uses=1]
116 store int %reg607, int* %yychar
117 %reg129 = load int* %yychar ; [#uses=1]
118 %cond609 = setge int %reg129, 0 ; [#uses=1]
119 br bool %cond609, label %bb8, label %bb7
120
121 bb7: ; preds = %bb6
122 store int 0, int* %yychar
123 br label %bb8
124
125 bb8: ; preds = %bb7, %bb6, %bb5
126 %reg615 = getelementptr [43 x short]* %yysindex, long 0, long %reg458-idxcast ; [#uses=1]
127 %reg137 = load short* %reg615 ; [#uses=1]
128 %cast620 = cast short %reg137 to int ; [#uses=2]
129 %cond621 = seteq int %cast620, 0 ; [#uses=1]
130 br bool %cond621, label %bb16, label %bb9
131
132 bb9: ; preds = %bb8
133 %reg139 = load int* %yychar ; [#uses=2]
134 %reg460 = add int %cast620, %reg139 ; [#uses=3]
135 %cond624 = setlt int %reg460, 0 ; [#uses=1]
136 br bool %cond624, label %bb16, label %bb10
137
138 bb10: ; preds = %bb9
139 %cond627 = setgt int %reg460, 262 ; [#uses=1]
140 br bool %cond627, label %bb16, label %bb11
141
142 bb11: ; preds = %bb10
143 %reg460-idxcast = cast int %reg460 to long ; [#uses=2]
144 %reg632 = getelementptr [263 x short]* %yycheck, long 0, long %reg460-idxcast ; [#uses=1]
145 %reg148 = load short* %reg632 ; [#uses=1]
146 %cast637 = cast short %reg148 to int ; [#uses=1]
147 %cond639 = setne int %cast637, %reg139 ; [#uses=1]
148 br bool %cond639, label %bb16, label %bb12
149
150 bb12: ; preds = %bb11
151 %reg150 = load short** %yyssp ; [#uses=1]
152 %cast640 = cast short* %reg150 to sbyte* ; [#uses=1]
153 %reg151 = load short** %yysslim ; [#uses=1]
154 %cast641 = cast short* %reg151 to sbyte* ; [#uses=1]
155 %cond642 = setlt sbyte* %cast640, %cast641 ; [#uses=1]
156 br bool %cond642, label %bb14, label %bb13
157
158 bb13: ; preds = %bb12
159 %reg644 = call int %yygrowstack( ) ; [#uses=1]
160 %cond644 = setne int %reg644, 0 ; [#uses=1]
161 br bool %cond644, label %bb113, label %bb14
162
163 bb14: ; preds = %bb13, %bb12
164 %reg153 = load short** %yyssp ; [#uses=1]
165 %reg647 = getelementptr short* %reg153, long 1 ; [#uses=2]
166 store short* %reg647, short** %yyssp
167 %reg653 = getelementptr [263 x short]* %yytable, long 0, long %reg460-idxcast ; [#uses=1]
168 %reg162 = load short* %reg653 ; [#uses=2]
169 %cast658 = cast short %reg162 to uint ; [#uses=2]
170 store short %reg162, short* %reg647
171 %reg164 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
172 %reg661 = getelementptr %YYSTYPE* %reg164, long 1 ; <%YYSTYPE*> [#uses=1]
173 store %YYSTYPE* %reg661, %YYSTYPE** %yyvsp
174 %reg167 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
175 %reg661.idx1 = getelementptr %YYSTYPE* %reg164, long 1, ubyte 0 ; <%IntList*> [#uses=1]
176 store %IntList %reg167, %IntList* %reg661.idx1
177 store int -1, int* %yychar
178 %reg169 = load int* %yyerrflag ; [#uses=2]
179 %cond669 = setle int %reg169, 0 ; [#uses=1]
180 br bool %cond669, label %bb4, label %bb15
181
182 bb15: ; preds = %bb14
183 %reg171 = add int %reg169, -1 ; [#uses=1]
184 store int %reg171, int* %yyerrflag
185 br label %bb4
186
187 bb16: ; preds = %bb11, %bb10, %bb9, %bb8
188 %reg677 = getelementptr [43 x short]* %yyrindex, long 0, long %reg458-idxcast ; [#uses=1]
189 %reg178 = load short* %reg677 ; [#uses=1]
190 %cast682 = cast short %reg178 to int ; [#uses=2]
191 %cond683 = seteq int %cast682, 0 ; [#uses=1]
192 br bool %cond683, label %bb21, label %bb17
193
194 bb17: ; preds = %bb16
195 %reg180 = load int* %yychar ; [#uses=2]
196 %reg463 = add int %cast682, %reg180 ; [#uses=3]
197 %cond686 = setlt int %reg463, 0 ; [#uses=1]
198 br bool %cond686, label %bb21, label %bb18
199
200 bb18: ; preds = %bb17
201 %cond689 = setgt int %reg463, 262 ; [#uses=1]
202 br bool %cond689, label %bb21, label %bb19
203
204 bb19: ; preds = %bb18
205 %reg463-idxcast = cast int %reg463 to long ; [#uses=2]
206 %reg694 = getelementptr [263 x short]* %yycheck, long 0, long %reg463-idxcast ; [#uses=1]
207 %reg189 = load short* %reg694 ; [#uses=1]
208 %cast699 = cast short %reg189 to int ; [#uses=1]
209 %cond701 = setne int %cast699, %reg180 ; [#uses=1]
210 br bool %cond701, label %bb21, label %bb20
211
212 bb20: ; preds = %bb19
213 %reg704 = getelementptr [263 x short]* %yytable, long 0, long %reg463-idxcast ; [#uses=1]
214 %reg197 = load short* %reg704 ; [#uses=1]
215 %cast709 = cast short %reg197 to int ; [#uses=1]
216 br label %bb36
217
218 bb21: ; preds = %bb19, %bb18, %bb17, %bb16
219 %reg198 = load int* %yyerrflag ; [#uses=1]
220 %cond711 = setne int %reg198, 0 ; [#uses=1]
221 br bool %cond711, label %bb23, label %bb22
222
223 bb22: ; preds = %bb21
224 call void %yyerror( sbyte* getelementptr ([13 x sbyte]* %.LC01, long 0, long 0) )
225 %reg200 = load int* %yynerrs ; [#uses=1]
226 %reg201 = add int %reg200, 1 ; [#uses=1]
227 store int %reg201, int* %yynerrs
228 br label %bb23
229
230 bb23: ; preds = %bb22, %bb21
231 %reg202 = load int* %yyerrflag ; [#uses=1]
232 %cond719 = setgt int %reg202, 2 ; [#uses=1]
233 br bool %cond719, label %bb34, label %bb24
234
235 bb24: ; preds = %bb23
236 store int 3, int* %yyerrflag
237 %reg241 = load short** %yyss ; [#uses=1]
238 %cast778 = cast short* %reg241 to sbyte* ; [#uses=1]
239 br label %bb25
240
241 bb25: ; preds = %bb33, %bb24
242 %reg204 = load short** %yyssp ; [#uses=4]
243 %reg206 = load short* %reg204 ; [#uses=1]
244 %reg206-idxcast = cast short %reg206 to long ; [#uses=1]
245 %reg727 = getelementptr [43 x short]* %yysindex, long 0, long %reg206-idxcast ; [#uses=1]
246 %reg212 = load short* %reg727 ; [#uses=2]
247 %cast732 = cast short %reg212 to int ; [#uses=2]
248 %cond733 = seteq int %cast732, 0 ; [#uses=1]
249 br bool %cond733, label %bb32, label %bb26
250
251 bb26: ; preds = %bb25
252 %reg466 = add int %cast732, 256 ; [#uses=2]
253 %cond736 = setlt int %reg466, 0 ; [#uses=1]
254 br bool %cond736, label %bb32, label %bb27
255
256 bb27: ; preds = %bb26
257 %cond739 = setgt int %reg466, 262 ; [#uses=1]
258 br bool %cond739, label %bb32, label %bb28
259
260 bb28: ; preds = %bb27
261 %reg212-idxcast = cast short %reg212 to long ; [#uses=1]
262 %reg212-idxcast-offset = add long %reg212-idxcast, 256 ; [#uses=2]
263 %reg744 = getelementptr [263 x short]* %yycheck, long 0, long %reg212-idxcast-offset ; [#uses=1]
264 %reg221 = load short* %reg744 ; [#uses=1]
265 %cond748 = setne short %reg221, 256 ; [#uses=1]
266 br bool %cond748, label %bb32, label %bb29
267
268 bb29: ; preds = %bb28
269 %cast750 = cast short* %reg204 to sbyte* ; [#uses=1]
270 %reg223 = load short** %yysslim ; [#uses=1]
271 %cast751 = cast short* %reg223 to sbyte* ; [#uses=1]
272 %cond752 = setlt sbyte* %cast750, %cast751 ; [#uses=1]
273 br bool %cond752, label %bb31, label %bb30
274
275 bb30: ; preds = %bb29
276 %reg754 = call int %yygrowstack( ) ; [#uses=1]
277 %cond754 = setne int %reg754, 0 ; [#uses=1]
278 br bool %cond754, label %bb113, label %bb31
279
280 bb31: ; preds = %bb30, %bb29
281 %reg225 = load short** %yyssp ; [#uses=1]
282 %reg757 = getelementptr short* %reg225, long 1 ; [#uses=2]
283 store short* %reg757, short** %yyssp
284 %reg763 = getelementptr [263 x short]* %yytable, long 0, long %reg212-idxcast-offset ; [#uses=1]
285 %reg234 = load short* %reg763 ; [#uses=2]
286 %cast768 = cast short %reg234 to uint ; [#uses=1]
287 store short %reg234, short* %reg757
288 %reg236 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
289 %reg771 = getelementptr %YYSTYPE* %reg236, long 1 ; <%YYSTYPE*> [#uses=1]
290 store %YYSTYPE* %reg771, %YYSTYPE** %yyvsp
291 %reg239 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, ubyte 0) ; <%IntList> [#uses=1]
292 %reg771.idx1 = getelementptr %YYSTYPE* %reg236, long 1, ubyte 0 ; <%IntList*> [#uses=1]
293 store %IntList %reg239, %IntList* %reg771.idx1
294 br label %bb4
295
296 bb32: ; preds = %bb28, %bb27, %bb26, %bb25
297 %cast777 = cast short* %reg204 to sbyte* ; [#uses=1]
298 %cond779 = setle sbyte* %cast777, %cast778 ; [#uses=1]
299 br bool %cond779, label %UnifiedExitNode, label %bb33
300
301 bb33: ; preds = %bb32
302 %reg781 = getelementptr short* %reg204, long -1 ; [#uses=1]
303 store short* %reg781, short** %yyssp
304 %reg244 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
305 %reg786 = getelementptr %YYSTYPE* %reg244, long -1 ; <%YYSTYPE*> [#uses=1]
306 store %YYSTYPE* %reg786, %YYSTYPE** %yyvsp
307 br label %bb25
308
309 bb34: ; preds = %bb23
310 %reg246 = load int* %yychar ; [#uses=1]
311 %cond791 = seteq int %reg246, 0 ; [#uses=1]
312 br bool %cond791, label %UnifiedExitNode, label %bb35
313
314 bb35: ; preds = %bb34
315 store int -1, int* %yychar
316 br label %bb4
317
318 bb36: ; preds = %bb20, %bb4
319 %reg468 = phi int [ %cast709, %bb20 ], [ %cast599, %bb4 ] ; [#uses=31]
320 %reg468-idxcast = cast int %reg468 to long ; [#uses=2]
321 %reg796 = getelementptr [25 x short]* %yylen, long 0, long %reg468-idxcast ; [#uses=1]
322 %reg254 = load short* %reg796 ; [#uses=2]
323 %reg259 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
324 %reg254-idxcast = cast short %reg254 to long ; [#uses=1]
325 %reg254-idxcast-scale = mul long %reg254-idxcast, -1 ; [#uses=1]
326 %reg254-idxcast-scale-offset = add long %reg254-idxcast-scale, 1 ; [#uses=1]
327 %reg261.idx1 = getelementptr %YYSTYPE* %reg259, long %reg254-idxcast-scale-offset, ubyte 0 ; <%IntList*> [#uses=1]
328 %reg261 = load %IntList* %reg261.idx1 ; <%IntList> [#uses=1]
329 store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
330 %cond812 = seteq int %reg468, 13 ; [#uses=1]
331 br bool %cond812, label %bb85, label %bb37
332
333 bb37: ; preds = %bb36
334 %cond814 = setgt int %reg468, 13 ; [#uses=1]
335 br bool %cond814, label %bb56, label %bb38
336
337 bb38: ; preds = %bb37
338 %cond817 = seteq int %reg468, 7 ; [#uses=1]
339 br bool %cond817, label %bb79, label %bb39
340
341 bb39: ; preds = %bb38
342 %cond819 = setgt int %reg468, 7 ; [#uses=1]
343 br bool %cond819, label %bb48, label %bb40
344
345 bb40: ; preds = %bb39
346 %cond822 = seteq int %reg468, 4 ; [#uses=1]
347 br bool %cond822, label %bb76, label %bb41
348
349 bb41: ; preds = %bb40
350 %cond824 = setgt int %reg468, 4 ; [#uses=1]
351 br bool %cond824, label %bb45, label %bb42
352
353 bb42: ; preds = %bb41
354 %cond827 = seteq int %reg468, 2 ; [#uses=1]
355 br bool %cond827, label %bb74, label %bb43
356
357 bb43: ; preds = %bb42
358 %cond829 = seteq int %reg468, 3 ; [#uses=1]
359 br bool %cond829, label %bb75, label %bb97
360
361 bb45: ; preds = %bb41
362 %cond831 = seteq int %reg468, 5 ; [#uses=1]
363 br bool %cond831, label %bb77, label %bb46
364
365 bb46: ; preds = %bb45
366 %cond833 = seteq int %reg468, 6 ; [#uses=1]
367 br bool %cond833, label %bb78, label %bb97
368
369 bb48: ; preds = %bb39
370 %cond835 = seteq int %reg468, 10 ; [#uses=1]
371 br bool %cond835, label %bb82, label %bb49
372
373 bb49: ; preds = %bb48
374 %cond837 = setgt int %reg468, 10 ; [#uses=1]
375 br bool %cond837, label %bb53, label %bb50
376
377 bb50: ; preds = %bb49
378 %cond840 = seteq int %reg468, 8 ; [#uses=1]
379 br bool %cond840, label %bb80, label %bb51
380
381 bb51: ; preds = %bb50
382 %cond842 = seteq int %reg468, 9 ; [#uses=1]
383 br bool %cond842, label %bb81, label %bb97
384
385 bb53: ; preds = %bb49
386 %cond844 = seteq int %reg468, 11 ; [#uses=1]
387 br bool %cond844, label %bb83, label %bb54
388
389 bb54: ; preds = %bb53
390 %cond846 = seteq int %reg468, 12 ; [#uses=1]
391 br bool %cond846, label %bb84, label %bb97
392
393 bb56: ; preds = %bb37
394 %cond848 = seteq int %reg468, 19 ; [#uses=1]
395 br bool %cond848, label %bb91, label %bb57
396
397 bb57: ; preds = %bb56
398 %cond850 = setgt int %reg468, 19 ; [#uses=1]
399 br bool %cond850, label %bb66, label %bb58
400
401 bb58: ; preds = %bb57
402 %cond853 = seteq int %reg468, 16 ; [#uses=1]
403 br bool %cond853, label %bb88, label %bb59
404
405 bb59: ; preds = %bb58
406 %cond855 = setgt int %reg468, 16 ; [#uses=1]
407 br bool %cond855, label %bb63, label %bb60
408
409 bb60: ; preds = %bb59
410 %cond858 = seteq int %reg468, 14 ; [#uses=1]
411 br bool %cond858, label %bb86, label %bb61
412
413 bb61: ; preds = %bb60
414 %cond860 = seteq int %reg468, 15 ; [#uses=1]
415 br bool %cond860, label %bb87, label %bb97
416
417 bb63: ; preds = %bb59
418 %cond862 = seteq int %reg468, 17 ; [#uses=1]
419 br bool %cond862, label %bb89, label %bb64
420
421 bb64: ; preds = %bb63
422 %cond864 = seteq int %reg468, 18 ; [#uses=1]
423 br bool %cond864, label %bb90, label %bb97
424
425 bb66: ; preds = %bb57
426 %cond866 = seteq int %reg468, 22 ; [#uses=1]
427 br bool %cond866, label %bb94, label %bb67
428
429 bb67: ; preds = %bb66
430 %cond868 = setgt int %reg468, 22 ; [#uses=1]
431 br bool %cond868, label %bb71, label %bb68
432
433 bb68: ; preds = %bb67
434 %cond871 = seteq int %reg468, 20 ; [#uses=1]
435 br bool %cond871, label %bb92, label %bb69
436
437 bb69: ; preds = %bb68
438 %cond873 = seteq int %reg468, 21 ; [#uses=1]
439 br bool %cond873, label %bb93, label %bb97
440
441 bb71: ; preds = %bb67
442 %cond875 = seteq int %reg468, 23 ; [#uses=1]
443 br bool %cond875, label %bb95, label %bb72
444
445 bb72: ; preds = %bb71
446 %cond877 = seteq int %reg468, 24 ; [#uses=1]
447 br bool %cond877, label %bb96, label %bb97
448
449 bb74: ; preds = %bb42
450 call void %yyfinished( )
451 br label %bb97
452
453 bb75: ; preds = %bb43
454 %reg262 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
455 %reg264.idx1 = getelementptr %YYSTYPE* %reg262, long -2, ubyte 0 ; <%IntList*> [#uses=1]
456 %reg264 = load %IntList* %reg264.idx1 ; <%IntList> [#uses=1]
457 %reg265.idx = getelementptr %YYSTYPE* %reg262, long 0, ubyte 0 ; <%IntList*> [#uses=1]
458 %reg265 = load %IntList* %reg265.idx ; <%IntList> [#uses=1]
459 %cast889 = cast %IntList %reg265 to %List ; <%List> [#uses=1]
460 %cast890 = cast %IntList %reg264 to %List ; <%List> [#uses=1]
461 call void %doSpec( %List %cast890, %List %cast889 )
462 br label %bb97
463
464 bb76: ; preds = %bb40
465 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
466 br label %bb97
467
468 bb77: ; preds = %bb45
469 %reg269 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
470 %cast894 = getelementptr %YYSTYPE* %reg269, long 0, ubyte 0 ; <%IntList*> [#uses=1]
471 %reg271 = load %IntList* %cast894 ; <%IntList> [#uses=1]
472 %reg271 = cast %IntList %reg271 to sbyte* ; [#uses=1]
473 %reg272.idx1 = getelementptr %YYSTYPE* %reg269, long -1, ubyte 0 ; <%IntList*> [#uses=1]
474 %reg272 = load %IntList* %reg272.idx1 ; <%IntList> [#uses=1]
475 %cast901 = cast %IntList %reg272 to %List ; <%List> [#uses=1]
476 %reg901 = call %List %newList( sbyte* %reg271, %List %cast901 ) ; <%List> [#uses=1]
477 cast %List %reg901 to %IntList ; <%IntList>:0 [#uses=1]
478 store %IntList %0, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
479 br label %bb97
480
481 bb78: ; preds = %bb46
482 %reg275 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
483 %reg277.idx = getelementptr %YYSTYPE* %reg275, long 0, ubyte 0 ; <%IntList*> [#uses=1]
484 %reg277 = load %IntList* %reg277.idx ; <%IntList> [#uses=1]
485 %cast907 = cast %IntList %reg277 to %List ; <%List> [#uses=1]
486 %reg907 = call %Arity %newArity( int -1, %List %cast907 ) ; <%Arity> [#uses=1]
487 cast %Arity %reg907 to %IntList ; <%IntList>:1 [#uses=1]
488 store %IntList %1, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
489 br label %bb97
490
491 bb79: ; preds = %bb38
492 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
493 %reg281 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
494 %cast912 = getelementptr %YYSTYPE* %reg281, long 0, ubyte 0 ; <%IntList*> [#uses=1]
495 %reg282 = load %IntList* %cast912 ; <%IntList> [#uses=1]
496 %reg282 = cast %IntList %reg282 to %List ; <%List> [#uses=1]
497 call void %doGram( %List %reg282 )
498 br label %bb97
499
500 bb80: ; preds = %bb50
501 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
502 %reg285 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
503 %cast917 = getelementptr %YYSTYPE* %reg285, long 0, ubyte 0 ; <%IntList*> [#uses=1]
504 %reg286 = load %IntList* %cast917 ; <%IntList> [#uses=1]
505 %reg286 = cast %IntList %reg286 to sbyte* ; [#uses=1]
506 call void %doStart( sbyte* %reg286 )
507 br label %bb97
508
509 bb81: ; preds = %bb51
510 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
511 br label %bb97
512
513 bb82: ; preds = %bb48
514 %reg290 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
515 %cast923 = getelementptr %YYSTYPE* %reg290, long 0, ubyte 0 ; <%IntList*> [#uses=1]
516 %reg292 = load %IntList* %cast923 ; <%IntList> [#uses=1]
517 %reg292 = cast %IntList %reg292 to sbyte* ; [#uses=1]
518 %reg293.idx1 = getelementptr %YYSTYPE* %reg290, long -1, ubyte 0 ; <%IntList*> [#uses=1]
519 %reg293 = load %IntList* %reg293.idx1 ; <%IntList> [#uses=1]
520 %cast930 = cast %IntList %reg293 to %List ; <%List> [#uses=1]
521 %reg930 = call %List %newList( sbyte* %reg292, %List %cast930 ) ; <%List> [#uses=1]
522 cast %List %reg930 to %IntList ; <%IntList>:2 [#uses=1]
523 store %IntList %2, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
524 br label %bb97
525
526 bb83: ; preds = %bb53
527 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
528 br label %bb97
529
530 bb84: ; preds = %bb54
531 %reg298 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
532 %cast936 = getelementptr %YYSTYPE* %reg298, long 0, ubyte 0 ; <%IntList*> [#uses=1]
533 %reg300 = load %IntList* %cast936 ; <%IntList> [#uses=1]
534 %reg300 = cast %IntList %reg300 to sbyte* ; [#uses=1]
535 %reg301.idx1 = getelementptr %YYSTYPE* %reg298, long -1, ubyte 0 ; <%IntList*> [#uses=1]
536 %reg301 = load %IntList* %reg301.idx1 ; <%IntList> [#uses=1]
537 %cast943 = cast %IntList %reg301 to %List ; <%List> [#uses=1]
538 %reg943 = call %List %newList( sbyte* %reg300, %List %cast943 ) ; <%List> [#uses=1]
539 cast %List %reg943 to %IntList ; <%IntList>:3 [#uses=1]
540 store %IntList %3, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
541 br label %bb97
542
543 bb85: ; preds = %bb36
544 %reg304 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
545 %cast9521 = getelementptr %YYSTYPE* %reg304, long -2, ubyte 0 ; <%IntList*> [#uses=1]
546 %reg306 = load %IntList* %cast9521 ; <%IntList> [#uses=1]
547 %reg306 = cast %IntList %reg306 to sbyte* ; [#uses=1]
548 %cast953 = cast %YYSTYPE* %reg304 to int* ; [#uses=1]
549 %reg307 = load int* %cast953 ; [#uses=1]
550 %reg955 = call %Binding %newBinding( sbyte* %reg306, int %reg307 ) ; <%Binding> [#uses=1]
551 cast %Binding %reg955 to %IntList ; <%IntList>:4 [#uses=1]
552 store %IntList %4, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
553 br label %bb97
554
555 bb86: ; preds = %bb60
556 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
557 br label %bb97
558
559 bb87: ; preds = %bb61
560 %reg312 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
561 %cast961 = getelementptr %YYSTYPE* %reg312, long 0, ubyte 0 ; <%IntList*> [#uses=1]
562 %reg314 = load %IntList* %cast961 ; <%IntList> [#uses=1]
563 %reg314 = cast %IntList %reg314 to sbyte* ; [#uses=1]
564 %reg315.idx1 = getelementptr %YYSTYPE* %reg312, long -1, ubyte 0 ; <%IntList*> [#uses=1]
565 %reg315 = load %IntList* %reg315.idx1 ; <%IntList> [#uses=1]
566 %cast968 = cast %IntList %reg315 to %List ; <%List> [#uses=1]
567 %reg968 = call %List %newList( sbyte* %reg314, %List %cast968 ) ; <%List> [#uses=1]
568 cast %List %reg968 to %IntList ; <%IntList>:5 [#uses=1]
569 store %IntList %5, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
570 br label %bb97
571
572 bb88: ; preds = %bb58
573 %reg318 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=4]
574 %cast9791 = getelementptr %YYSTYPE* %reg318, long -6, ubyte 0 ; <%IntList*> [#uses=1]
575 %reg322 = load %IntList* %cast9791 ; <%IntList> [#uses=1]
576 %reg322 = cast %IntList %reg322 to sbyte* ; [#uses=1]
577 %reg323.idx1 = getelementptr %YYSTYPE* %reg318, long -4, ubyte 0 ; <%IntList*> [#uses=1]
578 %reg323 = load %IntList* %reg323.idx1 ; <%IntList> [#uses=1]
579 %reg987 = getelementptr %YYSTYPE* %reg318, long -2 ; <%YYSTYPE*> [#uses=1]
580 %cast989 = cast %YYSTYPE* %reg987 to int* ; [#uses=1]
581 %reg324 = load int* %cast989 ; [#uses=1]
582 %reg325.idx1 = getelementptr %YYSTYPE* %reg318, long -1, ubyte 0 ; <%IntList*> [#uses=1]
583 %reg325 = load %IntList* %reg325.idx1 ; <%IntList> [#uses=1]
584 %cast998 = cast %IntList %reg323 to %PatternAST ; <%PatternAST> [#uses=1]
585 %reg996 = call %RuleAST %newRuleAST( sbyte* %reg322, %PatternAST %cast998, int %reg324, %IntList %reg325 ) ; <%RuleAST> [#uses=1]
586 cast %RuleAST %reg996 to %IntList ; <%IntList>:6 [#uses=1]
587 store %IntList %6, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
588 br label %bb97
589
590 bb89: ; preds = %bb63
591 %reg328 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
592 %cast1002 = getelementptr %YYSTYPE* %reg328, long 0, ubyte 0 ; <%IntList*> [#uses=1]
593 %reg329 = load %IntList* %cast1002 ; <%IntList> [#uses=1]
594 %reg329 = cast %IntList %reg329 to sbyte* ; [#uses=1]
595 %reg1004 = call %PatternAST %newPatternAST( sbyte* %reg329, %List null ) ; <%PatternAST> [#uses=1]
596 cast %PatternAST %reg1004 to %IntList ; <%IntList>:7 [#uses=1]
597 store %IntList %7, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
598 br label %bb97
599
600 bb90: ; preds = %bb64
601 %reg333 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
602 %cast10131 = getelementptr %YYSTYPE* %reg333, long -1, ubyte 0 ; <%IntList*> [#uses=1]
603 %reg335 = load %IntList* %cast10131 ; <%IntList> [#uses=1]
604 %reg335 = cast %IntList %reg335 to sbyte* ; [#uses=1]
605 %reg1015 = call %List %newList( sbyte* %reg335, %List null ) ; <%List> [#uses=1]
606 %cast10211 = getelementptr %YYSTYPE* %reg333, long -3, ubyte 0 ; <%IntList*> [#uses=1]
607 %reg338 = load %IntList* %cast10211 ; <%IntList> [#uses=1]
608 %reg338 = cast %IntList %reg338 to sbyte* ; [#uses=1]
609 %reg1023 = call %PatternAST %newPatternAST( sbyte* %reg338, %List %reg1015 ) ; <%PatternAST> [#uses=1]
610 cast %PatternAST %reg1023 to %IntList ; <%IntList>:8 [#uses=1]
611 store %IntList %8, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
612 br label %bb97
613
614 bb91: ; preds = %bb56
615 %reg341 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=3]
616 %cast10331 = getelementptr %YYSTYPE* %reg341, long -1, ubyte 0 ; <%IntList*> [#uses=1]
617 %reg344 = load %IntList* %cast10331 ; <%IntList> [#uses=1]
618 %reg344 = cast %IntList %reg344 to sbyte* ; [#uses=1]
619 %reg1035 = call %List %newList( sbyte* %reg344, %List null ) ; <%List> [#uses=1]
620 %cast10411 = getelementptr %YYSTYPE* %reg341, long -3, ubyte 0 ; <%IntList*> [#uses=1]
621 %reg347 = load %IntList* %cast10411 ; <%IntList> [#uses=1]
622 %reg347 = cast %IntList %reg347 to sbyte* ; [#uses=1]
623 %reg1043 = call %List %newList( sbyte* %reg347, %List %reg1035 ) ; <%List> [#uses=1]
624 %cast10491 = getelementptr %YYSTYPE* %reg341, long -5, ubyte 0 ; <%IntList*> [#uses=1]
625 %reg349 = load %IntList* %cast10491 ; <%IntList> [#uses=1]
626 %reg349 = cast %IntList %reg349 to sbyte* ; [#uses=1]
627 %reg1051 = call %PatternAST %newPatternAST( sbyte* %reg349, %List %reg1043 ) ; <%PatternAST> [#uses=1]
628 cast %PatternAST %reg1051 to %IntList ; <%IntList>:9 [#uses=1]
629 store %IntList %9, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
630 br label %bb97
631
632 bb92: ; preds = %bb68
633 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
634 br label %bb97
635
636 bb93: ; preds = %bb69
637 %reg354 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
638 %reg1059 = getelementptr %YYSTYPE* %reg354, long -2 ; <%YYSTYPE*> [#uses=1]
639 %cast1061 = cast %YYSTYPE* %reg1059 to int* ; [#uses=1]
640 %reg356 = load int* %cast1061 ; [#uses=1]
641 %reg357.idx1 = getelementptr %YYSTYPE* %reg354, long -1, ubyte 0 ; <%IntList*> [#uses=1]
642 %reg357 = load %IntList* %reg357.idx1 ; <%IntList> [#uses=1]
643 %reg1068 = call %IntList %newIntList( int %reg356, %IntList %reg357 ) ; <%IntList> [#uses=1]
644 store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
645 br label %bb97
646
647 bb94: ; preds = %bb66
648 store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
649 br label %bb97
650
651 bb95: ; preds = %bb71
652 %reg362 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
653 %reg1076 = getelementptr %YYSTYPE* %reg362, long -1 ; <%YYSTYPE*> [#uses=1]
654 %cast1078 = cast %YYSTYPE* %reg1076 to int* ; [#uses=1]
655 %reg364 = load int* %cast1078 ; [#uses=1]
656 %reg365.idx = getelementptr %YYSTYPE* %reg362, long 0, ubyte 0 ; <%IntList*> [#uses=1]
657 %reg365 = load %IntList* %reg365.idx ; <%IntList> [#uses=1]
658 %reg1081 = call %IntList %newIntList( int %reg364, %IntList %reg365 ) ; <%IntList> [#uses=1]
659 store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
660 br label %bb97
661
662 bb96: ; preds = %bb72
663 %reg368 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
664 %reg1088 = getelementptr %YYSTYPE* %reg368, long -1 ; <%YYSTYPE*> [#uses=1]
665 %cast1090 = cast %YYSTYPE* %reg1088 to int* ; [#uses=1]
666 %reg370 = load int* %cast1090 ; [#uses=1]
667 %reg371.idx = getelementptr %YYSTYPE* %reg368, long 0, ubyte 0 ; <%IntList*> [#uses=1]
668 %reg371 = load %IntList* %reg371.idx ; <%IntList> [#uses=1]
669 %reg1093 = call %IntList %newIntList( int %reg370, %IntList %reg371 ) ; <%IntList> [#uses=1]
670 store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0)
671 br label %bb97
672
673 bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb72, %bb69, %bb64, %bb61, %bb54, %bb51, %bb46, %bb43
674 %cast1097 = cast short %reg254 to ulong ; [#uses=3]
675 %reg375 = add ulong %cast1097, %cast1097 ; [#uses=1]
676 %reg377 = load short** %yyssp ; [#uses=1]
677 %cast379 = cast short* %reg377 to ulong ; [#uses=1]
678 %reg381 = sub ulong %cast379, %reg375 ; [#uses=1]
679 %cast1099 = cast ulong %reg381 to short* ; [#uses=1]
680 store short* %cast1099, short** %yyssp
681 %reg382 = load short** %yyssp ; [#uses=3]
682 %reg383 = load short* %reg382 ; [#uses=1]
683 %cast1103 = cast short %reg383 to int ; [#uses=3]
684 %reg385 = mul ulong %cast1097, 8 ; [#uses=1]
685 %reg387 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=1]
686 %cast389 = cast %YYSTYPE* %reg387 to ulong ; [#uses=1]
687 %reg391 = sub ulong %cast389, %reg385 ; [#uses=1]
688 %cast1108 = cast ulong %reg391 to %YYSTYPE* ; <%YYSTYPE*> [#uses=1]
689 store %YYSTYPE* %cast1108, %YYSTYPE** %yyvsp
690 %reg1111 = getelementptr [25 x short]* %yylhs, long 0, long %reg468-idxcast ; [#uses=1]
691 %reg398 = load short* %reg1111 ; [#uses=2]
692 %cast1116 = cast short %reg398 to int ; [#uses=1]
693 %cond1117 = setne int %cast1103, 0 ; [#uses=1]
694 br bool %cond1117, label %bb104, label %bb98
695
696 bb98: ; preds = %bb97
697 %cond1119 = setne int %cast1116, 0 ; [#uses=1]
698 br bool %cond1119, label %bb104, label %bb99
699
700 bb99: ; preds = %bb98
701 %reg1122 = getelementptr short* %reg382, long 1 ; [#uses=2]
702 store short* %reg1122, short** %yyssp
703 store short 1, short* %reg1122
704 %reg403 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
705 %reg1128 = getelementptr %YYSTYPE* %reg403, long 1 ; <%YYSTYPE*> [#uses=1]
706 store %YYSTYPE* %reg1128, %YYSTYPE** %yyvsp
707 %reg406 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
708 %reg1128.idx1 = getelementptr %YYSTYPE* %reg403, long 1, ubyte 0 ; <%IntList*> [#uses=1]
709 store %IntList %reg406, %IntList* %reg1128.idx1
710 %reg407 = load int* %yychar ; [#uses=1]
711 %cond1135 = setge int %reg407, 0 ; [#uses=1]
712 br bool %cond1135, label %bb102, label %bb100
713
714 bb100: ; preds = %bb99
715 %reg1139 = call int %yylex( ) ; [#uses=1]
716 store int %reg1139, int* %yychar
717 %reg409 = load int* %yychar ; [#uses=1]
718 %cond1141 = setge int %reg409, 0 ; [#uses=1]
719 br bool %cond1141, label %bb102, label %bb101
720
721 bb101: ; preds = %bb100
722 store int 0, int* %yychar
723 br label %bb102
724
725 bb102: ; preds = %bb101, %bb100, %bb99
726 %reg411 = load int* %yychar ; [#uses=1]
727 %cond1146 = setne int %reg411, 0 ; [#uses=1]
728 br bool %cond1146, label %bb4, label %UnifiedExitNode
729
730 bb104: ; preds = %bb98, %bb97
731 %reg398-idxcast = cast short %reg398 to long ; [#uses=2]
732 %reg1150 = getelementptr [12 x short]* %yygindex, long 0, long %reg398-idxcast ; [#uses=1]
733 %reg418 = load short* %reg1150 ; [#uses=1]
734 %cast1155 = cast short %reg418 to int ; [#uses=2]
735 %cond1156 = seteq int %cast1155, 0 ; [#uses=1]
736 br bool %cond1156, label %bb109, label %bb105
737
738 bb105: ; preds = %bb104
739 %reg473 = add int %cast1155, %cast1103 ; [#uses=3]
740 %cond1158 = setlt int %reg473, 0 ; [#uses=1]
741 br bool %cond1158, label %bb109, label %bb106
742
743 bb106: ; preds = %bb105
744 %cond1161 = setgt int %reg473, 262 ; [#uses=1]
745 br bool %cond1161, label %bb109, label %bb107
746
747 bb107: ; preds = %bb106
748 %reg473-idxcast = cast int %reg473 to long ; [#uses=2]
749 %reg1166 = getelementptr [263 x short]* %yycheck, long 0, long %reg473-idxcast ; [#uses=1]
750 %reg428 = load short* %reg1166 ; [#uses=1]
751 %cast1171 = cast short %reg428 to int ; [#uses=1]
752 %cond1172 = setne int %cast1171, %cast1103 ; [#uses=1]
753 br bool %cond1172, label %bb109, label %bb108
754
755 bb108: ; preds = %bb107
756 %reg1175 = getelementptr [263 x short]* %yytable, long 0, long %reg473-idxcast ; [#uses=1]
757 %reg435 = load short* %reg1175 ; [#uses=1]
758 %cast1180 = cast short %reg435 to uint ; [#uses=1]
759 br label %bb110
760
761 bb109: ; preds = %bb107, %bb106, %bb105, %bb104
762 %reg1183 = getelementptr [12 x short]* %yydgoto, long 0, long %reg398-idxcast ; [#uses=1]
763 %reg442 = load short* %reg1183 ; [#uses=1]
764 %cast1188 = cast short %reg442 to uint ; [#uses=1]
765 br label %bb110
766
767 bb110: ; preds = %bb109, %bb108
768 %reg476 = phi uint [ %cast1188, %bb109 ], [ %cast1180, %bb108 ] ; [#uses=2]
769 %cast1189 = cast short* %reg382 to sbyte* ; [#uses=1]
770 %reg444 = load short** %yysslim ; [#uses=1]
771 %cast1190 = cast short* %reg444 to sbyte* ; [#uses=1]
772 %cond1191 = setlt sbyte* %cast1189, %cast1190 ; [#uses=1]
773 br bool %cond1191, label %bb112, label %bb111
774
775 bb111: ; preds = %bb110
776 %reg1193 = call int %yygrowstack( ) ; [#uses=1]
777 %cond1193 = setne int %reg1193, 0 ; [#uses=1]
778 br bool %cond1193, label %bb113, label %bb112
779
780 bb112: ; preds = %bb111, %bb110
781 %reg446 = load short** %yyssp ; [#uses=1]
782 %reg1196 = getelementptr short* %reg446, long 1 ; [#uses=2]
783 store short* %reg1196, short** %yyssp
784 %cast1357 = cast uint %reg476 to short ; [#uses=1]
785 store short %cast1357, short* %reg1196
786 %reg449 = load %YYSTYPE** %yyvsp ; <%YYSTYPE*> [#uses=2]
787 %reg1202 = getelementptr %YYSTYPE* %reg449, long 1 ; <%YYSTYPE*> [#uses=1]
788 store %YYSTYPE* %reg1202, %YYSTYPE** %yyvsp
789 %reg452 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, ubyte 0) ; <%IntList> [#uses=1]
790 %reg1202.idx1 = getelementptr %YYSTYPE* %reg449, long 1, ubyte 0 ; <%IntList*> [#uses=1]
791 store %IntList %reg452, %IntList* %reg1202.idx1
792 br label %bb4
793
794 bb113: ; preds = %bb111, %bb30, %bb13, %bb2
795 call void %yyerror( sbyte* getelementptr ([20 x sbyte]* %.LC1, long 0, long 0) )
796 br label %UnifiedExitNode
797
798 UnifiedExitNode: ; preds = %bb113, %bb102, %bb34, %bb32
799 %UnifiedRetVal = phi int [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ] ; [#uses=1]
800 ret int %UnifiedRetVal
801 }
802
803 declare %List %newList(sbyte*, %List)
804
805 declare %IntList %newIntList(int, %IntList)
806
807 declare void %doStart(sbyte*)
808
809 declare void %yyerror(sbyte*)
810
811 declare void %doSpec(%List, %List)
812
813 declare %Arity %newArity(int, %List)
814
815 declare %Binding %newBinding(sbyte*, int)
816
817 declare %PatternAST %newPatternAST(sbyte*, %List)
818
819 declare %RuleAST %newRuleAST(sbyte*, %PatternAST, int, %IntList)
820
821 declare void %yyfinished()
822
823 declare int %yylex()
824
825 declare void %doGram(%List)
826
827 declare int %yygrowstack()