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