1 #include <OOC/SSA.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4
OOC_SSA__InitNode(OOC_SSA__Node n)5 void OOC_SSA__InitNode(OOC_SSA__Node n) {
6
7 return;
8 ;
9 }
10
OOC_SSA__SetUse(OOC_SSA__Result arg,OOC_SSA__Opnd opnd)11 static void OOC_SSA__SetUse(OOC_SSA__Result arg, OOC_SSA__Opnd opnd) {
12 register OOC_INT64 i0,i1,i2;
13
14 i0 = (OOC_INT64)opnd;
15 i1 = (OOC_INT64)arg;
16 *(OOC_INT64*)(_check_pointer(i0, 8896)) = i1;
17 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 8934))+24);
18 *(OOC_INT64*)((_check_pointer(i0, 8918))+32) = i2;
19 *(OOC_INT64*)((_check_pointer(i1, 8952))+24) = i0;
20 return;
21 ;
22 }
23
OOC_SSA__DeleteUse(OOC_SSA__Opnd opnd)24 static void OOC_SSA__DeleteUse(OOC_SSA__Opnd opnd) {
25 register OOC_INT64 i0,i1,i2;
26 OOC_SSA__Opnd prev;
27
28 i0 = (OOC_INT64)opnd;
29 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9121));
30 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9126))+24);
31 i1 = i1==i0;
32 if (i1) goto l12;
33 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9218));
34 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9223))+24);
35 prev = (OOC_SSA__Opnd)i1;
36 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9251))+32);
37 i2 = i2!=i0;
38 if (!i2) goto l11;
39 l6_loop:
40 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9292))+32);
41 prev = (OOC_SSA__Opnd)i1;
42 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 9251))+32);
43 i2 = i2!=i0;
44 if (i2) goto l6_loop;
45 l11:
46 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9340))+32);
47 *(OOC_INT64*)((_check_pointer(i1, 9323))+32) = i2;
48 goto l13;
49 l12:
50 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 9159));
51 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 9181))+32);
52 *(OOC_INT64*)((_check_pointer(i1, 9164))+24) = i2;
53 l13:
54 *(OOC_INT64*)((_check_pointer(i0, 9367))+32) = 0;
55 *(OOC_INT64*)(_check_pointer(i0, 9393)) = 0;
56 return;
57 ;
58 }
59
OOC_SSA__InitOpnd(OOC_SSA__Opnd opnd,OOC_SSA__Result arg,OOC_INT8 _class)60 static void OOC_SSA__InitOpnd(OOC_SSA__Opnd opnd, OOC_SSA__Result arg, OOC_INT8 _class) {
61 register OOC_INT64 i0,i1,i2;
62
63 i0 = (OOC_INT64)opnd;
64 OOC_SSA__InitNode((OOC_SSA__Node)i0);
65 i1 = (OOC_INT64)arg;
66 *(OOC_INT64*)(_check_pointer(i0, 9596)) = i1;
67 *(OOC_INT64*)((_check_pointer(i0, 9618))+32) = 0;
68 *(OOC_INT64*)((_check_pointer(i0, 9644))+16) = 0;
69 *(OOC_INT64*)((_check_pointer(i0, 9671))+24) = 0;
70 i2 = _class;
71 *(OOC_INT8*)((_check_pointer(i0, 9695))+8) = i2;
72 OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
73 return;
74 ;
75 }
76
OOC_SSA__NewOpnd(OOC_SSA__Result arg,OOC_INT8 _class)77 static OOC_SSA__Opnd OOC_SSA__NewOpnd(OOC_SSA__Result arg, OOC_INT8 _class) {
78 register OOC_INT64 i0,i1,i2;
79
80 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Opnd.baseTypes[0]);
81 i1 = _class;
82 i2 = (OOC_INT64)arg;
83 OOC_SSA__InitOpnd((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i2, i1);
84 return (OOC_SSA__Opnd)i0;
85 ;
86 }
87
OOC_SSA__InitTypedOpnd(OOC_SSA__TypedOpnd opnd,OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)88 static void OOC_SSA__InitTypedOpnd(OOC_SSA__TypedOpnd opnd, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
89 register OOC_INT64 i0,i1,i2;
90
91 i0 = _class;
92 i1 = (OOC_INT64)arg;
93 i2 = (OOC_INT64)opnd;
94 OOC_SSA__InitOpnd((OOC_SSA__Opnd)i2, (OOC_SSA__Result)i1, i0);
95 i0 = (OOC_INT64)type;
96 *(OOC_INT64*)((_check_pointer(i2, 10240))+40) = i0;
97 i0 = passByReference;
98 *(OOC_UINT8*)((_check_pointer(i2, 10264))+48) = i0;
99 return;
100 ;
101 }
102
OOC_SSA__NewTypedOpnd(OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)103 static OOC_SSA__Opnd OOC_SSA__NewTypedOpnd(OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
104 register OOC_INT64 i0,i1,i2,i3,i4;
105
106 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypedOpnd.baseTypes[0]);
107 i1 = passByReference;
108 i2 = (OOC_INT64)type;
109 i3 = _class;
110 i4 = (OOC_INT64)arg;
111 OOC_SSA__InitTypedOpnd((OOC_SSA__TypedOpnd)i0, (OOC_SSA__Result)i4, i3, (OOC_SymbolTable__Type)i2, i1);
112 return (OOC_SSA__Opnd)i0;
113 ;
114 }
115
OOC_SSA__OpndDesc_DeleteOpnd(OOC_SSA__Opnd opnd)116 void OOC_SSA__OpndDesc_DeleteOpnd(OOC_SSA__Opnd opnd) {
117 register OOC_INT64 i0,i1,i2;
118 OOC_SSA__Opnd prev;
119
120 i0 = (OOC_INT64)opnd;
121 OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
122 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10811))+24);
123 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10818))+48);
124 i1 = i1==i0;
125 if (i1) goto l12;
126 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10915))+24);
127 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10922))+48);
128 prev = (OOC_SSA__Opnd)i1;
129 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10951))+16);
130 i2 = i2!=i0;
131 if (!i2) goto l11;
132 l6_loop:
133 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10993))+16);
134 prev = (OOC_SSA__Opnd)i1;
135 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 10951))+16);
136 i2 = i2!=i0;
137 if (i2) goto l6_loop;
138 l11:
139 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11043))+16);
140 *(OOC_INT64*)((_check_pointer(i1, 11025))+16) = i2;
141 goto l13;
142 l12:
143 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10852))+24);
144 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 10877))+16);
145 *(OOC_INT64*)((_check_pointer(i1, 10859))+48) = i2;
146 l13:
147 *(OOC_INT64*)((_check_pointer(i0, 11071))+16) = (OOC_INT64)0;
148 *(OOC_INT64*)((_check_pointer(i0, 11098))+24) = (OOC_INT64)0;
149 return;
150 ;
151 }
152
OOC_SSA__OpndDesc_ReplaceArg(OOC_SSA__Opnd opnd,OOC_SSA__Result arg)153 void OOC_SSA__OpndDesc_ReplaceArg(OOC_SSA__Opnd opnd, OOC_SSA__Result arg) {
154 register OOC_INT64 i0,i1;
155
156 i0 = (OOC_INT64)opnd;
157 OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
158 i1 = (OOC_INT64)arg;
159 OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
160 return;
161 ;
162 }
163
OOC_SSA__OpndDesc_OpndIndex(OOC_SSA__Opnd opnd)164 OOC_INT32 OOC_SSA__OpndDesc_OpndIndex(OOC_SSA__Opnd opnd) {
165 register OOC_INT64 i0,i1,i2,i3;
166 OOC_INT32 i;
167 OOC_SSA__Opnd ptr;
168
169 i = 0;
170 i0 = (OOC_INT64)opnd;
171 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 11974))+24);
172 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 11981))+48);
173 ptr = (OOC_SSA__Opnd)i1;
174 i2 = i1!=i0;
175 if (i2) goto l3;
176 i0=0;
177 goto l9;
178 l3:
179 i2=i1;i1=0;
180 l4_loop:
181 i1 = i1+1;
182 i = i1;
183 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 12050))+16);
184 ptr = (OOC_SSA__Opnd)i2;
185 i3 = i2!=i0;
186 if (i3) goto l4_loop;
187 l8:
188 i0=i1;
189 l9:
190 return i0;
191 ;
192 }
193
OOC_SSA__OpndDesc_GetIntConst(OOC_SSA__Opnd opnd)194 OOC_INT32 OOC_SSA__OpndDesc_GetIntConst(OOC_SSA__Opnd opnd) {
195 register OOC_INT64 i0;
196
197 i0 = (OOC_INT64)opnd;
198 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 12247));
199 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12253)))), &_td_OOC_SSA__ConstDesc, 12253)), 12259))+80);
200 i0 = Object_BigInt__BigIntDesc_ToLongInt((Object_BigInt__BigInt)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 12274)))), &_td_Object_BigInt__BigIntDesc, 12274)));
201 return i0;
202 ;
203 }
204
OOC_SSA__OpndDesc_IsScheduleOpnd(OOC_SSA__Opnd opnd)205 OOC_CHAR8 OOC_SSA__OpndDesc_IsScheduleOpnd(OOC_SSA__Opnd opnd) {
206 register OOC_INT64 i0;
207
208 i0 = (OOC_INT64)opnd;
209 i0 = *(OOC_INT8*)((_check_pointer(i0, 12388))+8);
210 switch (i0) {
211 case 17:
212 case 18:
213 case 20:
214 return 1u;
215 goto l4;
216 default:
217 return 0u;
218 goto l4;
219 }
220 l4:
221 _failed_function(12339); return 0;
222 ;
223 }
224
OOC_SSA__OpndDesc_IsValueOpnd(OOC_SSA__Opnd opnd)225 OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpnd(OOC_SSA__Opnd opnd) {
226 register OOC_INT64 i0;
227
228 i0 = (OOC_INT64)opnd;
229 i0 = *(OOC_INT8*)((_check_pointer(i0, 12919))+8);
230 switch (i0) {
231 case 18:
232 case 20:
233 case 5:
234 case 7:
235 return 0u;
236 goto l4;
237 default:
238 return 1u;
239 goto l4;
240 }
241 l4:
242 _failed_function(12601); return 0;
243 ;
244 }
245
OOC_SSA__OpndDesc_IsValueOpndHere(OOC_SSA__Opnd opnd)246 OOC_CHAR8 OOC_SSA__OpndDesc_IsValueOpndHere(OOC_SSA__Opnd opnd) {
247 register OOC_INT64 i0,i1,i2;
248 OOC_SSA__Instr instr;
249
250 i0 = (OOC_INT64)opnd;
251 i1 = OOC_SSA__OpndDesc_IsValueOpnd((OOC_SSA__Opnd)i0);
252 if (i1) goto l3;
253 return 0u;
254 goto l8;
255 l3:
256 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 13890))+24);
257 instr = (OOC_SSA__Instr)i1;
258 i2 = *(OOC_INT8*)((_check_pointer(i1, 14207))+72);
259 i2 = i2!=5;
260 if (i2) goto l6;
261 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 14242))+48);
262 i0 = i1!=i0;
263
264 goto l7;
265 l6:
266 i0=1u;
267 l7:
268 return i0;
269 l8:
270 _failed_function(13153); return 0;
271 ;
272 }
273
OOC_SSA__InitResult(OOC_SSA__Result res,OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)274 static void OOC_SSA__InitResult(OOC_SSA__Result res, OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
275 register OOC_INT64 i0,i1;
276
277 i0 = (OOC_INT64)res;
278 OOC_SSA__InitNode((OOC_SSA__Node)i0);
279 *(OOC_INT64*)(_check_pointer(i0, 14593)) = 0;
280 i1 = (OOC_INT64)instr;
281 *(OOC_INT64*)((_check_pointer(i0, 14621))+16) = i1;
282 i1 = _class;
283 *(OOC_INT8*)((_check_pointer(i0, 14646))+8) = i1;
284 i1 = subclass;
285 *(OOC_INT8*)((_check_pointer(i0, 14671))+9) = i1;
286 *(OOC_INT64*)((_check_pointer(i0, 14702))+32) = 0;
287 *(OOC_INT32*)((_check_pointer(i0, 14724))+40) = (-1);
288 *(OOC_INT64*)((_check_pointer(i0, 14755))+24) = 0;
289 return;
290 ;
291 }
292
OOC_SSA__NewResult(OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)293 OOC_SSA__Result OOC_SSA__NewResult(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
294 register OOC_INT64 i0,i1,i2,i3;
295
296 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Result.baseTypes[0]);
297 i1 = subclass;
298 i2 = _class;
299 i3 = (OOC_INT64)instr;
300 OOC_SSA__InitResult((OOC_SSA__Result)i0, (OOC_SSA__Instr)i3, i2, i1);
301 return (OOC_SSA__Result)i0;
302 ;
303 }
304
OOC_SSA__ResultDesc_DeleteResult(OOC_SSA__Result res)305 void OOC_SSA__ResultDesc_DeleteResult(OOC_SSA__Result res) {
306 register OOC_INT64 i0,i1,i2;
307 OOC_SSA__Result prev;
308
309 i0 = (OOC_INT64)res;
310 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15600))+16);
311 prev = (OOC_SSA__Result)i1;
312 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15624));
313 i2 = i2!=i0;
314 if (!i2) goto l9;
315 l4_loop:
316 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15665));
317 prev = (OOC_SSA__Result)i1;
318 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 15624));
319 i2 = i2!=i0;
320 if (i2) goto l4_loop;
321 l9:
322 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 15714));
323 *(OOC_INT64*)(_check_pointer(i1, 15695)) = i0;
324 return;
325 ;
326 }
327
OOC_SSA__ResultDesc_ReplaceUses(OOC_SSA__Result res,OOC_SSA__Result with)328 void OOC_SSA__ResultDesc_ReplaceUses(OOC_SSA__Result res, OOC_SSA__Result with) {
329 register OOC_INT64 i0,i1,i2;
330 OOC_SSA__Opnd use;
331 OOC_SSA__Opnd nextUse;
332
333 i0 = (OOC_INT64)res;
334 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15914))+24);
335 use = (OOC_SSA__Opnd)i0;
336 i1 = i0!=(OOC_INT64)0;
337 if (!i1) goto l8;
338 i1 = (OOC_INT64)with;
339
340 l3_loop:
341 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 15970))+32);
342 nextUse = (OOC_SSA__Opnd)i2;
343 OOC_SSA__DeleteUse((OOC_SSA__Opnd)i0);
344 OOC_SSA__SetUse((OOC_SSA__Result)i1, (OOC_SSA__Opnd)i0);
345 use = (OOC_SSA__Opnd)i2;
346 i0 = i2!=(OOC_INT64)0;
347 if (!i0) goto l8;
348 i0=i2;
349 goto l3_loop;
350 l8:
351 return;
352 ;
353 }
354
OOC_SSA__ResultDesc_ResultIndex(OOC_SSA__Result result)355 OOC_INT32 OOC_SSA__ResultDesc_ResultIndex(OOC_SSA__Result result) {
356 register OOC_INT64 i0,i1,i2,i3;
357 OOC_INT32 i;
358 OOC_SSA__Result ptr;
359
360 i = 0;
361 i0 = (OOC_INT64)result;
362 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16488))+16);
363 ptr = (OOC_SSA__Result)i1;
364 i2 = i1!=i0;
365 if (i2) goto l3;
366 i0=0;
367 goto l9;
368 l3:
369 i2=i1;i1=0;
370 l4_loop:
371 i1 = i1+1;
372 i = i1;
373 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 16556));
374 ptr = (OOC_SSA__Result)i2;
375 i3 = i2!=i0;
376 if (i3) goto l4_loop;
377 l8:
378 i0=i1;
379 l9:
380 return i0;
381 ;
382 }
383
OOC_SSA__ResultDesc_CalledProc(OOC_SSA__Result calledAdr)384 OOC_SymbolTable__ProcDecl OOC_SSA__ResultDesc_CalledProc(OOC_SSA__Result calledAdr) {
385 register OOC_INT64 i0,i1;
386
387 i0 = (OOC_INT64)calledAdr;
388 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16858))+16);
389 i1 = *(OOC_INT8*)((_check_pointer(i1, 16864))+72);
390 i1 = i1==3;
391 if (i1) goto l7;
392 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16973))+16);
393 i1 = *(OOC_INT8*)((_check_pointer(i1, 16979))+72);
394 i1 = i1==1;
395 if (i1) goto l5;
396 return (OOC_SymbolTable__ProcDecl)(OOC_INT64)0;
397 goto l8;
398 l5:
399 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 17032))+16);
400 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17039)))), &_td_OOC_SSA__DeclRefDesc, 17039)), 17047))+80);
401 return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17057)))), &_td_OOC_SymbolTable__ProcDeclDesc, 17057));
402 goto l8;
403 l7:
404 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 16917))+16);
405 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16924)))), &_td_OOC_SSA__AddressDesc, 16924)), 16932))+80);
406 return (OOC_SymbolTable__ProcDecl)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 16942)))), &_td_OOC_SymbolTable__ProcDeclDesc, 16942));
407 l8:
408 _failed_function(16647); return 0;
409 ;
410 }
411
OOC_SSA__ResultDesc_IsBooleanConst(OOC_SSA__Result result,OOC_CHAR8 value)412 OOC_CHAR8 OOC_SSA__ResultDesc_IsBooleanConst(OOC_SSA__Result result, OOC_CHAR8 value) {
413 register OOC_INT64 i0,i1,i2;
414
415 i0 = (OOC_INT64)result;
416 _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17476)))), &_td_OOC_SSA__ConstDesc)), 127, 17461);
417 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17506)))), &_td_OOC_SSA__ConstDesc, 17506)), 17512))+80);
418 _assert((OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17519)))), &_td_Object_BigInt__BigIntDesc)), 127, 17491);
419 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17557)))), &_td_OOC_SSA__ConstDesc, 17557)), 17563))+80);
420 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17557)))), &_td_OOC_SSA__ConstDesc, 17557)), 17563))+80);
421 i2 = (OOC_INT64)Object_BigInt__zero;
422 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 17569)))), Object__ObjectDesc_Equals)),Object__ObjectDesc_Equals)((Object__Object)i0, (Object__Object)i2);
423 i1 = value;
424 return (i0!=i1);
425 ;
426 }
427
OOC_SSA__ResultDesc_LogId(OOC_SSA__Result result,const OOC_CHAR8 msg__ref[],OOC_LEN msg_0d)428 void OOC_SSA__ResultDesc_LogId(OOC_SSA__Result result, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
429 register OOC_INT64 i0,i1;
430 OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
431 OOC_INT32 i;
432
433 OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
434 i0 = (OOC_INT64)Log__writer;
435 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17722)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (void*)(OOC_INT64)msg, msg_0d);
436 i0 = (OOC_INT64)Log__writer;
437 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17757)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (OOC_CHAR8*)": ", 3);
438 i0 = (OOC_INT64)Log__writer;
439 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 17825)))), TextRider__WriterDesc_WriteString)),TextRider__WriterDesc_WriteString)((TextRider__Writer)i0, (OOC_CHAR8*)"???", 4);
440 i0 = (OOC_INT64)result;
441 i0 = OOC_SSA__ResultDesc_ResultIndex((OOC_SSA__Result)i0);
442 i = i0;
443 i1 = i0!=0;
444 if (!i1) goto l4;
445 i1 = (OOC_INT64)Log__writer;
446 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18000)))), TextRider__WriterDesc_WriteChar)),TextRider__WriterDesc_WriteChar)((TextRider__Writer)i1, 46u);
447 i1 = (OOC_INT64)Log__writer;
448 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 18035)))), TextRider__WriterDesc_WriteLInt)),TextRider__WriterDesc_WriteLInt)((TextRider__Writer)i1, i0, 0);
449 l4:
450 i0 = (OOC_INT64)Log__writer;
451 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 18078)))), TextRider__WriterDesc_WriteLn)),TextRider__WriterDesc_WriteLn)((TextRider__Writer)i0);
452 return;
453 ;
454 }
455
OOC_SSA__InitInstr(OOC_SSA__Instr instr,OOC_INT8 opcode,OOC_INT8 subclass)456 static void OOC_SSA__InitInstr(OOC_SSA__Instr instr, OOC_INT8 opcode, OOC_INT8 subclass) {
457 register OOC_INT64 i0,i1,i2;
458
459 i0 = subclass;
460 i1 = (OOC_INT64)instr;
461 OOC_SSA__InitResult((OOC_SSA__Result)i1, (OOC_SSA__Instr)i1, (-1), i0);
462 *(OOC_INT64*)((_check_pointer(i1, 18347))+48) = (OOC_INT64)0;
463 *(OOC_INT64*)((_check_pointer(i1, 18375))+56) = (OOC_INT64)0;
464 *(OOC_INT64*)((_check_pointer(i1, 18404))+64) = (OOC_INT64)0;
465 i2 = opcode;
466 *(OOC_INT8*)((_check_pointer(i1, 18433))+72) = i2;
467 *(OOC_INT8*)((_check_pointer(i1, 18462))+9) = i0;
468 *(OOC_INT32*)((_check_pointer(i1, 18495))+76) = (-1);
469 return;
470 ;
471 }
472
OOC_SSA__InstrDesc_SetSubclass(OOC_SSA__Instr instr,OOC_INT8 subclass)473 void OOC_SSA__InstrDesc_SetSubclass(OOC_SSA__Instr instr, OOC_INT8 subclass) {
474 register OOC_INT64 i0,i1;
475
476 i0 = (OOC_INT64)instr;
477 i1 = subclass;
478 *(OOC_INT8*)((_check_pointer(i0, 18680))+9) = i1;
479 return;
480 ;
481 }
482
OOC_SSA__InstrDesc_SetPos(OOC_SSA__Instr instr,OOC_Scanner_SymList__Symbol sym)483 void OOC_SSA__InstrDesc_SetPos(OOC_SSA__Instr instr, OOC_Scanner_SymList__Symbol sym) {
484 register OOC_INT64 i0,i1;
485
486 i0 = (OOC_INT64)instr;
487 i1 = (OOC_INT64)sym;
488 i1 = *(OOC_INT32*)((_check_pointer(i1, 18804))+28);
489 *(OOC_INT32*)((_check_pointer(i0, 18792))+76) = i1;
490 return;
491 ;
492 }
493
OOC_SSA__AddOpnd(OOC_SSA__Instr instr,OOC_SSA__Opnd opnd)494 static void OOC_SSA__AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Opnd opnd) {
495 register OOC_INT64 i0,i1,i2;
496 OOC_SSA__Opnd prev;
497
498 i0 = (OOC_INT64)opnd;
499 i1 = (OOC_INT64)instr;
500 *(OOC_INT64*)((_check_pointer(i0, 19106))+24) = i1;
501 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19137))+48);
502 i2 = i2==(OOC_INT64)0;
503 if (i2) goto l12;
504 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19218))+48);
505 prev = (OOC_SSA__Opnd)i1;
506 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19247))+16);
507 i2 = i2!=(OOC_INT64)0;
508 if (!i2) goto l11;
509 l6_loop:
510 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19288))+16);
511 prev = (OOC_SSA__Opnd)i1;
512 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 19247))+16);
513 i2 = i2!=(OOC_INT64)0;
514 if (i2) goto l6_loop;
515 l11:
516 *(OOC_INT64*)((_check_pointer(i1, 19320))+16) = i0;
517 goto l13;
518 l12:
519 *(OOC_INT64*)((_check_pointer(i1, 19171))+48) = i0;
520 l13:
521 return;
522 ;
523 }
524
OOC_SSA__InstrDesc_AddOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)525 void OOC_SSA__InstrDesc_AddOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
526 register OOC_INT64 i0,i1;
527
528 i0 = _class;
529 i1 = (OOC_INT64)arg;
530 i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i1, i0);
531 i1 = (OOC_INT64)instr;
532 OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
533 return;
534 ;
535 }
536
OOC_SSA__InstrDesc_AddOpndFct(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)537 OOC_SSA__Opnd OOC_SSA__InstrDesc_AddOpndFct(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
538 register OOC_INT64 i0,i1;
539
540 i0 = _class;
541 i1 = (OOC_INT64)arg;
542 i0 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i1, i0);
543 i1 = (OOC_INT64)instr;
544 OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
545 return (OOC_SSA__Opnd)i0;
546 ;
547 }
548
OOC_SSA__InstrDesc_AddUniqueOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class)549 void OOC_SSA__InstrDesc_AddUniqueOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class) {
550 register OOC_INT64 i0,i1,i2,i3;
551 OOC_SSA__Opnd opnd;
552 OOC_SSA__Opnd prev;
553
554 i0 = (OOC_INT64)instr;
555 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20289))+48);
556 i1 = i1==(OOC_INT64)0;
557 if (i1) goto l23;
558 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 20435))+48);
559 prev = (OOC_SSA__Opnd)i1;
560 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20464));
561 i3 = (OOC_INT64)arg;
562 i2 = i2!=i3;
563 if (i2) goto l5;
564 i2=0u;
565 goto l7;
566 l5:
567 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20484))+16);
568 i2 = i2!=(OOC_INT64)0;
569
570 l7:
571 if (!i2) goto l19;
572 l10_loop:
573 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20525))+16);
574 prev = (OOC_SSA__Opnd)i1;
575 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20464));
576 i2 = i2!=i3;
577 if (i2) goto l13;
578 i2=0u;
579 goto l15;
580 l13:
581 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 20484))+16);
582 i2 = i2!=(OOC_INT64)0;
583
584 l15:
585 if (i2) goto l10_loop;
586 l19:
587 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 20561));
588 i2 = i2!=i3;
589 if (!i2) goto l24;
590 i2 = _class;
591 i2 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i3, i2);
592 opnd = (OOC_SSA__Opnd)i2;
593 *(OOC_INT64*)((_check_pointer(i2, 20629))+24) = i0;
594 *(OOC_INT64*)((_check_pointer(i1, 20659))+16) = i2;
595 goto l24;
596 l23:
597 i1 = _class;
598 i2 = (OOC_INT64)arg;
599 i1 = (OOC_INT64)OOC_SSA__NewOpnd((OOC_SSA__Result)i2, i1);
600 opnd = (OOC_SSA__Opnd)i1;
601 *(OOC_INT64*)((_check_pointer(i1, 20358))+24) = i0;
602 *(OOC_INT64*)((_check_pointer(i0, 20387))+48) = i1;
603 l24:
604 return;
605 ;
606 }
607
OOC_SSA__InstrDesc_AddTypedOpnd(OOC_SSA__Instr instr,OOC_SSA__Result arg,OOC_INT8 _class,OOC_SymbolTable__Type type,OOC_CHAR8 passByReference)608 void OOC_SSA__InstrDesc_AddTypedOpnd(OOC_SSA__Instr instr, OOC_SSA__Result arg, OOC_INT8 _class, OOC_SymbolTable__Type type, OOC_CHAR8 passByReference) {
609 register OOC_INT64 i0,i1,i2,i3;
610
611 i0 = passByReference;
612 i1 = (OOC_INT64)type;
613 i2 = _class;
614 i3 = (OOC_INT64)arg;
615 i0 = (OOC_INT64)OOC_SSA__NewTypedOpnd((OOC_SSA__Result)i3, i2, (OOC_SymbolTable__Type)i1, i0);
616 i1 = (OOC_INT64)instr;
617 OOC_SSA__AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Opnd)i0);
618 return;
619 ;
620 }
621
OOC_SSA__InstrDesc_AddResultSubclass(OOC_SSA__Instr instr,OOC_INT8 _class,OOC_INT8 subclass)622 OOC_SSA__Result OOC_SSA__InstrDesc_AddResultSubclass(OOC_SSA__Instr instr, OOC_INT8 _class, OOC_INT8 subclass) {
623 register OOC_INT64 i0,i1,i2;
624 OOC_SSA__Result res;
625 OOC_SSA__Result prev;
626
627 i0 = subclass;
628 i1 = _class;
629 i2 = (OOC_INT64)instr;
630 i0 = (OOC_INT64)OOC_SSA__NewResult((OOC_SSA__Instr)i2, i1, i0);
631 res = (OOC_SSA__Result)i0;
632 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 21511));
633 i1 = i1==0;
634 if (i1) goto l12;
635 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 21595));
636 prev = (OOC_SSA__Result)i1;
637 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21626));
638 i2 = i2!=0;
639 if (!i2) goto l11;
640 l6_loop:
641 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21669));
642 prev = (OOC_SSA__Result)i1;
643 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 21626));
644 i2 = i2!=0;
645 if (i2) goto l6_loop;
646 l11:
647 *(OOC_INT64*)(_check_pointer(i1, 21703)) = i0;
648 goto l13;
649 l12:
650 *(OOC_INT64*)(_check_pointer(i2, 21547)) = i0;
651 l13:
652 return (OOC_SSA__Result)i0;
653 ;
654 }
655
OOC_SSA__InstrDesc_AddResult(OOC_SSA__Instr instr,OOC_INT8 _class)656 OOC_SSA__Result OOC_SSA__InstrDesc_AddResult(OOC_SSA__Instr instr, OOC_INT8 _class) {
657 register OOC_INT64 i0,i1;
658
659 i0 = _class;
660 i1 = (OOC_INT64)instr;
661 i0 = (OOC_INT64)OOC_SSA__InstrDesc_AddResultSubclass((OOC_SSA__Instr)i1, i0, 0);
662 return (OOC_SSA__Result)i0;
663 ;
664 }
665
OOC_SSA__InstrDesc_SizeOpndList(OOC_SSA__Instr instr)666 OOC_INT32 OOC_SSA__InstrDesc_SizeOpndList(OOC_SSA__Instr instr) {
667 register OOC_INT64 i0,i1,i2;
668 OOC_INT32 num;
669 OOC_SSA__Opnd opnd;
670
671 num = 0;
672 i0 = (OOC_INT64)instr;
673 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22264))+48);
674 opnd = (OOC_SSA__Opnd)i0;
675 i1 = i0!=(OOC_INT64)0;
676 if (i1) goto l3;
677 i0=0;
678 goto l9;
679 l3:
680 i1=i0;i0=0;
681 l4_loop:
682 i0 = i0+1;
683 num = i0;
684 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 22337))+16);
685 opnd = (OOC_SSA__Opnd)i1;
686 i2 = i1!=(OOC_INT64)0;
687 if (i2) goto l4_loop;
688 l9:
689 return i0;
690 ;
691 }
692
OOC_SSA__InstrDesc_CountOpndClass(OOC_SSA__Instr instr,OOC_INT8 _class)693 OOC_INT32 OOC_SSA__InstrDesc_CountOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
694 register OOC_INT64 i0,i1,i2,i3;
695 OOC_INT32 num;
696 OOC_SSA__Opnd opnd;
697
698 num = 0;
699 i0 = (OOC_INT64)instr;
700 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22640))+48);
701 opnd = (OOC_SSA__Opnd)i0;
702 i1 = i0!=(OOC_INT64)0;
703 if (i1) goto l3;
704 i0=0;
705 goto l13;
706 l3:
707 i1 = _class;
708 i2=0;
709 l4_loop:
710 i3 = *(OOC_INT8*)((_check_pointer(i0, 22692))+8);
711 i3 = i3==i1;
712 if (!i3) goto l8;
713 i2 = i2+1;
714 num = i2;
715
716 l8:
717 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 22762))+16);
718 opnd = (OOC_SSA__Opnd)i0;
719 i3 = i0!=(OOC_INT64)0;
720 if (i3) goto l4_loop;
721 l12:
722 i0=i2;
723 l13:
724 return i0;
725 ;
726 }
727
OOC_SSA__InstrDesc_SizeResultList(OOC_SSA__Instr instr)728 OOC_INT32 OOC_SSA__InstrDesc_SizeResultList(OOC_SSA__Instr instr) {
729 register OOC_INT64 i0,i1,i2;
730 OOC_INT32 num;
731 OOC_SSA__Result res;
732
733 i0 = (OOC_INT64)instr;
734 res = (OOC_SSA__Result)i0;
735 i1 = i0!=(OOC_INT64)0;
736 if (i1) goto l3;
737 i0=0;
738 goto l9;
739 l3:
740 i1=i0;i0=0;
741 l4_loop:
742 i0 = i0+1;
743 num = i0;
744 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 23173));
745 res = (OOC_SSA__Result)i1;
746 i2 = i1!=(OOC_INT64)0;
747 if (i2) goto l4_loop;
748 l9:
749 return i0;
750 ;
751 }
752
OOC_SSA__InstrDesc_NthOpnd(OOC_SSA__Instr instr,OOC_INT32 nth)753 OOC_SSA__Opnd OOC_SSA__InstrDesc_NthOpnd(OOC_SSA__Instr instr, OOC_INT32 nth) {
754 register OOC_INT64 i0,i1,i2;
755 OOC_SSA__Opnd opnd;
756
757 i0 = (OOC_INT64)instr;
758 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23487))+48);
759 opnd = (OOC_SSA__Opnd)i0;
760 i1 = nth;
761 i2 = i1!=0;
762 if (!i2) goto l9;
763 l4_loop:
764 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23540))+16);
765 opnd = (OOC_SSA__Opnd)i0;
766 i1 = i1-1;
767 nth = i1;
768 i2 = i1!=0;
769 if (i2) goto l4_loop;
770 l9:
771 return (OOC_SSA__Opnd)i0;
772 ;
773 }
774
OOC_SSA__InstrDesc_NthArg(OOC_SSA__Instr instr,OOC_INT32 nth)775 OOC_SSA__Result OOC_SSA__InstrDesc_NthArg(OOC_SSA__Instr instr, OOC_INT32 nth) {
776 register OOC_INT64 i0,i1,i2;
777 OOC_SSA__Opnd opnd;
778
779 i0 = (OOC_INT64)instr;
780 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23877))+48);
781 opnd = (OOC_SSA__Opnd)i0;
782 i1 = nth;
783 i2 = i1!=0;
784 if (!i2) goto l9;
785 l4_loop:
786 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 23930))+16);
787 opnd = (OOC_SSA__Opnd)i0;
788 i1 = i1-1;
789 nth = i1;
790 i2 = i1!=0;
791 if (i2) goto l4_loop;
792 l9:
793 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 23982));
794 return (OOC_SSA__Result)i0;
795 ;
796 }
797
OOC_SSA__InstrDesc_LastOpnd(OOC_SSA__Instr instr)798 OOC_SSA__Opnd OOC_SSA__InstrDesc_LastOpnd(OOC_SSA__Instr instr) {
799 register OOC_INT64 i0,i1;
800 OOC_SSA__Opnd opnd;
801
802 i0 = (OOC_INT64)instr;
803 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24215))+48);
804 opnd = (OOC_SSA__Opnd)i0;
805 i1 = i0!=(OOC_INT64)0;
806 if (!i1) goto l13;
807 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24269))+16);
808 i1 = i1!=(OOC_INT64)0;
809 if (!i1) goto l13;
810 l7_loop:
811 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24310))+16);
812 opnd = (OOC_SSA__Opnd)i0;
813 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24269))+16);
814 i1 = i1!=(OOC_INT64)0;
815 if (i1) goto l7_loop;
816 l13:
817 return (OOC_SSA__Opnd)i0;
818 ;
819 }
820
OOC_SSA__InstrDesc_GetOpndClass(OOC_SSA__Instr instr,OOC_INT8 _class)821 OOC_SSA__Opnd OOC_SSA__InstrDesc_GetOpndClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
822 register OOC_INT64 i0,i1,i2;
823 OOC_SSA__Opnd opnd;
824
825 i0 = (OOC_INT64)instr;
826 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24647))+48);
827 opnd = (OOC_SSA__Opnd)i0;
828 i1 = i0!=(OOC_INT64)0;
829 if (i1) goto l3;
830 i1=0u;
831 goto l5;
832 l3:
833 i1 = *(OOC_INT8*)((_check_pointer(i0, 24689))+8);
834 i2 = _class;
835 i1 = i1!=i2;
836
837 l5:
838 if (!i1) goto l17;
839 i1 = _class;
840
841 l8_loop:
842 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 24727))+16);
843 opnd = (OOC_SSA__Opnd)i0;
844 i2 = i0!=(OOC_INT64)0;
845 if (i2) goto l11;
846 i2=0u;
847 goto l13;
848 l11:
849 i2 = *(OOC_INT8*)((_check_pointer(i0, 24689))+8);
850 i2 = i2!=i1;
851
852 l13:
853 if (i2) goto l8_loop;
854 l17:
855 return (OOC_SSA__Opnd)i0;
856 ;
857 }
858
OOC_SSA__InstrDesc_GetArgClass(OOC_SSA__Instr instr,OOC_INT8 _class)859 OOC_SSA__Result OOC_SSA__InstrDesc_GetArgClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
860 register OOC_INT64 i0,i1,i2;
861 OOC_SSA__Opnd opnd;
862
863 i0 = (OOC_INT64)instr;
864 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25072))+48);
865 opnd = (OOC_SSA__Opnd)i0;
866 i1 = i0!=(OOC_INT64)0;
867 if (i1) goto l3;
868 i1=0u;
869 goto l5;
870 l3:
871 i1 = *(OOC_INT8*)((_check_pointer(i0, 25114))+8);
872 i2 = _class;
873 i1 = i1!=i2;
874
875 l5:
876 if (!i1) goto l17;
877 i1 = _class;
878
879 l8_loop:
880 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 25152))+16);
881 opnd = (OOC_SSA__Opnd)i0;
882 i2 = i0!=(OOC_INT64)0;
883 if (i2) goto l11;
884 i2=0u;
885 goto l13;
886 l11:
887 i2 = *(OOC_INT8*)((_check_pointer(i0, 25114))+8);
888 i2 = i2!=i1;
889
890 l13:
891 if (i2) goto l8_loop;
892 l17:
893 i1 = i0==(OOC_INT64)0;
894 if (i1) goto l20;
895 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25241));
896 return (OOC_SSA__Result)i0;
897 goto l21;
898 l20:
899 return (OOC_SSA__Result)(OOC_INT64)0;
900 l21:
901 _failed_function(24810); return 0;
902 ;
903 }
904
OOC_SSA__InstrDesc_GetArgStore(OOC_SSA__Instr instr)905 OOC_SSA__Result OOC_SSA__InstrDesc_GetArgStore(OOC_SSA__Instr instr) {
906 register OOC_INT64 i0;
907
908 i0 = (OOC_INT64)instr;
909 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 2);
910 return (OOC_SSA__Result)i0;
911 ;
912 }
913
OOC_SSA__InstrDesc_NthResult(OOC_SSA__Instr instr,OOC_INT32 nth)914 OOC_SSA__Result OOC_SSA__InstrDesc_NthResult(OOC_SSA__Instr instr, OOC_INT32 nth) {
915 register OOC_INT64 i0,i1,i2;
916 OOC_SSA__Result res;
917
918 i0 = (OOC_INT64)instr;
919 res = (OOC_SSA__Result)i0;
920 i1 = nth;
921 i2 = i1!=0;
922 if (!i2) goto l9;
923
924 l4_loop:
925 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 25818));
926 res = (OOC_SSA__Result)i0;
927 i1 = i1-1;
928 nth = i1;
929 i2 = i1!=0;
930 if (i2) goto l4_loop;
931 l9:
932 return (OOC_SSA__Result)i0;
933 ;
934 }
935
OOC_SSA__InstrDesc_GetResultClass(OOC_SSA__Instr instr,OOC_INT8 _class)936 OOC_SSA__Result OOC_SSA__InstrDesc_GetResultClass(OOC_SSA__Instr instr, OOC_INT8 _class) {
937 register OOC_INT64 i0,i1,i2;
938 OOC_SSA__Result result;
939
940 i0 = (OOC_INT64)instr;
941 result = (OOC_SSA__Result)i0;
942 i1 = i0!=(OOC_INT64)0;
943 if (i1) goto l3;
944 i1=0u;
945 goto l5;
946 l3:
947 i1 = *(OOC_INT8*)((_check_pointer(i0, 26218))+8);
948 i2 = _class;
949 i1 = i1!=i2;
950
951 l5:
952 if (!i1) goto l17;
953 i1 = _class;
954
955 l8_loop:
956 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26260));
957 result = (OOC_SSA__Result)i0;
958 i2 = i0!=(OOC_INT64)0;
959 if (i2) goto l11;
960 i2=0u;
961 goto l13;
962 l11:
963 i2 = *(OOC_INT8*)((_check_pointer(i0, 26218))+8);
964 i2 = i2!=i1;
965
966 l13:
967 if (i2) goto l8_loop;
968 l17:
969 return (OOC_SSA__Result)i0;
970 ;
971 }
972
OOC_SSA__InstrDesc_GetResultStore(OOC_SSA__Instr instr)973 OOC_SSA__Result OOC_SSA__InstrDesc_GetResultStore(OOC_SSA__Instr instr) {
974 register OOC_INT64 i0,i1;
975 OOC_SSA__Result result;
976
977 i0 = (OOC_INT64)instr;
978 result = (OOC_SSA__Result)i0;
979 i1 = i0!=(OOC_INT64)0;
980 if (i1) goto l3;
981 i1=0u;
982 goto l5;
983 l3:
984 i1 = *(OOC_INT8*)((_check_pointer(i0, 26512))+8);
985 i1 = i1!=2;
986
987 l5:
988 if (!i1) goto l17;
989 l8_loop:
990 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 26566));
991 result = (OOC_SSA__Result)i0;
992 i1 = i0!=(OOC_INT64)0;
993 if (i1) goto l11;
994 i1=0u;
995 goto l13;
996 l11:
997 i1 = *(OOC_INT8*)((_check_pointer(i0, 26512))+8);
998 i1 = i1!=2;
999
1000 l13:
1001 if (i1) goto l8_loop;
1002 l17:
1003 return (OOC_SSA__Result)i0;
1004 ;
1005 }
1006
OOC_SSA__InstrDesc_GetOpcodeName(OOC_SSA__Instr instr,OOC_CHAR8 name[],OOC_LEN name_0d)1007 void OOC_SSA__InstrDesc_GetOpcodeName(OOC_SSA__Instr instr, OOC_CHAR8 name[], OOC_LEN name_0d) {
1008 register OOC_INT64 i0,i1;
1009
1010 i0 = (OOC_INT64)instr;
1011 i1 = *(OOC_INT8*)((_check_pointer(i0, 26924))+9);
1012 i0 = *(OOC_INT8*)((_check_pointer(i0, 26909))+72);
1013 OOC_SSA_Opcode__GetName(i0, i1, (void*)(OOC_INT64)name, name_0d);
1014 return;
1015 ;
1016 }
1017
OOC_SSA__InstrDesc_GetResultType(OOC_SSA__Instr instr)1018 OOC_INT8 OOC_SSA__InstrDesc_GetResultType(OOC_SSA__Instr instr) {
1019 register OOC_INT64 i0,i1;
1020
1021 i0 = (OOC_INT64)instr;
1022 i1 = *(OOC_INT8*)((_check_pointer(i0, 27048))+72);
1023 switch (i1) {
1024 case 13:
1025 return 0;
1026 goto l4;
1027 default:
1028 i0 = *(OOC_INT8*)((_check_pointer(i0, 27297))+9);
1029 return i0;
1030 goto l4;
1031 }
1032 l4:
1033 _failed_function(26990); return 0;
1034 ;
1035 }
1036
OOC_SSA__InstrDesc_GetLoopEnd(OOC_SSA__Instr instr)1037 OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopEnd(OOC_SSA__Instr instr) {
1038 register OOC_INT64 i0,i1;
1039 OOC_SSA__Opnd use;
1040 OOC_SSA__Result res;
1041
1042 i0 = (OOC_INT64)instr;
1043 i1 = *(OOC_INT8*)((_check_pointer(i0, 27577))+72);
1044 switch (i1) {
1045 case 10:
1046 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27631))+24);
1047 use = (OOC_SSA__Opnd)i0;
1048 goto l5;
1049 case 9:
1050 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1051 res = (OOC_SSA__Result)i0;
1052 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27715))+24);
1053 use = (OOC_SSA__Opnd)i0;
1054 goto l5;
1055 default:
1056 _failed_case(i1, 27567);
1057 goto l5;
1058 }
1059 l5:
1060 i0 = (OOC_INT64)use;
1061 i1 = i0!=(OOC_INT64)0;
1062 if (i1) goto l8;
1063 i0=0u;
1064 goto l10;
1065 l8:
1066 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27763))+24);
1067 i0 = *(OOC_INT8*)((_check_pointer(i0, 27770))+72);
1068 i0 = i0!=11;
1069
1070 l10:
1071 if (!i0) goto l21;
1072 l12_loop:
1073 i0 = (OOC_INT64)use;
1074 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27816))+32);
1075 use = (OOC_SSA__Opnd)i0;
1076 i1 = i0!=(OOC_INT64)0;
1077 if (i1) goto l15;
1078 i0=0u;
1079 goto l17;
1080 l15:
1081 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27763))+24);
1082 i0 = *(OOC_INT8*)((_check_pointer(i0, 27770))+72);
1083 i0 = i0!=11;
1084
1085 l17:
1086 if (i0) goto l12_loop;
1087 l21:
1088 i0 = (OOC_INT64)use;
1089 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 27850))+24);
1090 return (OOC_SSA__Instr)i0;
1091 ;
1092 }
1093
OOC_SSA__InstrDesc_GetBackwardFeed(OOC_SSA__Instr instr)1094 OOC_SSA__Result OOC_SSA__InstrDesc_GetBackwardFeed(OOC_SSA__Instr instr) {
1095 register OOC_INT64 i0,i1;
1096
1097 i0 = (OOC_INT64)instr;
1098 i1 = *(OOC_INT8*)((_check_pointer(i0, 28132))+72);
1099 i1 = i1==10;
1100 if (!i1) goto l4;
1101 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
1102 instr = (OOC_SSA__Instr)i0;
1103
1104 l4:
1105 i1 = *(OOC_INT8*)((_check_pointer(i0, 28228))+72);
1106 _assert((i1==11), 127, 28215);
1107 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetArgClass((OOC_SSA__Instr)i0, 13);
1108 return (OOC_SSA__Result)i0;
1109 ;
1110 }
1111
OOC_SSA__InstrDesc_GetLoopStart(OOC_SSA__Instr instr)1112 OOC_SSA__Instr OOC_SSA__InstrDesc_GetLoopStart(OOC_SSA__Instr instr) {
1113 register OOC_INT64 i0,i1;
1114
1115 i0 = (OOC_INT64)instr;
1116 i1 = *(OOC_INT8*)((_check_pointer(i0, 28519))+72);
1117 _assert((i1==11), 127, 28506);
1118 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28563))+48);
1119 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 28573));
1120 return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 28579)))), &_td_OOC_SSA__InstrDesc, 28579));
1121 ;
1122 }
1123
OOC_SSA__InstrDesc_GetCollectTarget(OOC_SSA__Instr instr)1124 OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollectTarget(OOC_SSA__Instr instr) {
1125 register OOC_INT64 i0,i1;
1126 OOC_SSA__Result storeOut;
1127 OOC_SSA__Opnd use;
1128
1129 i0 = (OOC_INT64)instr;
1130 i1 = *(OOC_INT8*)((_check_pointer(i0, 28829))+72);
1131 _assert((i1==6), 127, 28816);
1132 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1133 storeOut = (OOC_SSA__Result)i0;
1134 _assert((i0!=(OOC_INT64)0), 127, 28902);
1135 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28947))+24);
1136 _assert((i1!=(OOC_INT64)0), 127, 28931);
1137 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 28985))+24);
1138 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 28994))+32);
1139 _assert((i1==(OOC_INT64)0), 127, 28969);
1140 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29028))+24);
1141 i1 = *(OOC_INT8*)((_check_pointer(i1, 29037))+8);
1142 i1 = i1==13;
1143 if (i1) goto l16;
1144 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29286))+24);
1145 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 29295))+24);
1146 i1 = *(OOC_INT8*)((_check_pointer(i1, 29302))+72);
1147 i1 = i1==9;
1148 if (i1) goto l5;
1149 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29696))+24);
1150 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29705))+24);
1151 return (OOC_SSA__Instr)i0;
1152 goto l17;
1153 l5:
1154 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29480))+24);
1155 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29489))+24);
1156 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetResultStore((OOC_SSA__Instr)i0);
1157 storeOut = (OOC_SSA__Result)i0;
1158 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29537))+24);
1159 use = (OOC_SSA__Opnd)i0;
1160 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29564))+24);
1161 i1 = *(OOC_INT8*)((_check_pointer(i1, 29571))+72);
1162 i1 = i1!=11;
1163 if (!i1) goto l14;
1164 l9_loop:
1165 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29619))+32);
1166 use = (OOC_SSA__Opnd)i0;
1167 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29564))+24);
1168 i1 = *(OOC_INT8*)((_check_pointer(i1, 29571))+72);
1169 i1 = i1!=11;
1170 if (i1) goto l9_loop;
1171 l14:
1172 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29657))+24);
1173 return (OOC_SSA__Instr)i0;
1174 goto l17;
1175 l16:
1176 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29233))+24);
1177 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 29242))+24);
1178 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopStart((OOC_SSA__Instr)i0);
1179 return (OOC_SSA__Instr)i0;
1180 l17:
1181 _failed_function(28633); return 0;
1182 ;
1183 }
1184
OOC_SSA__InstrDesc_NumberOfPaths(OOC_SSA__Instr select)1185 OOC_INT32 OOC_SSA__InstrDesc_NumberOfPaths(OOC_SSA__Instr select) {
1186 register OOC_INT64 i0,i1;
1187
1188 i0 = (OOC_INT64)select;
1189 i1 = *(OOC_INT8*)((_check_pointer(i0, 30019))+72);
1190 switch (i1) {
1191 case 5:
1192 i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
1193 i1 = i1==(OOC_INT64)0;
1194 if (i1) goto l5;
1195 i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 16);
1196 return i0;
1197 goto l10;
1198 l5:
1199 i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
1200 return (i0>>1);
1201 goto l10;
1202 case 10:
1203 return 2;
1204 goto l10;
1205 case 11:
1206 i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 11);
1207 return i0;
1208 goto l10;
1209 default:
1210 _failed_case(i1, 30008);
1211 goto l10;
1212 }
1213 l10:
1214 _failed_function(29774); return 0;
1215 ;
1216 }
1217
OOC_SSA__InstrDesc_GetCollect(OOC_SSA__Instr select,OOC_SSA__ProcBlock pb,OOC_INT32 pathNum)1218 OOC_SSA__Instr OOC_SSA__InstrDesc_GetCollect(OOC_SSA__Instr select, OOC_SSA__ProcBlock pb, OOC_INT32 pathNum) {
1219 register OOC_INT64 i0,i1,i2,i3;
1220 OOC_SSA__Opnd opnd;
1221 OOC_SSA__Instr loopEnd;
1222 OOC_SSA__Instr collect;
1223
1224 i0 = (OOC_INT64)select;
1225 i1 = *(OOC_INT8*)((_check_pointer(i0, 31036))+72);
1226 switch (i1) {
1227 case 5:
1228 i1 = pathNum;
1229 i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (2+i1*2));
1230 opnd = (OOC_SSA__Opnd)i0;
1231 goto l10;
1232 case 11:
1233 i1 = pathNum;
1234 i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, (i1+2));
1235 opnd = (OOC_SSA__Opnd)i0;
1236 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31242));
1237 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31246))+16);
1238 i1 = *(OOC_INT8*)((_check_pointer(i1, 31252))+72);
1239 _assert((i1==9), 127, 31231);
1240 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31294));
1241 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31298))+16);
1242 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31304))+48);
1243 opnd = (OOC_SSA__Opnd)i0;
1244 goto l10;
1245 case 10:
1246 i1 = pathNum;
1247 i2 = i1==0;
1248 if (i2) goto l7;
1249 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetLoopEnd((OOC_SSA__Instr)i0);
1250 loopEnd = (OOC_SSA__Instr)i0;
1251 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 13);
1252 opnd = (OOC_SSA__Opnd)i0;
1253
1254 goto l10;
1255 l7:
1256 i0 = (OOC_INT64)OOC_SSA__InstrDesc_NthOpnd((OOC_SSA__Instr)i0, i1);
1257 opnd = (OOC_SSA__Opnd)i0;
1258
1259 goto l10;
1260 default:
1261 _failed_case(i1, 31025);
1262 goto l10;
1263 }
1264 l10:
1265 i0 = (OOC_INT64)opnd;
1266 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31565));
1267 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 31569))+16);
1268 i1 = *(OOC_INT8*)((_check_pointer(i1, 31575))+72);
1269 i1 = i1==6;
1270 if (i1) goto l13;
1271 i1 = (OOC_INT64)pb;
1272 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 6, 0);
1273 collect = (OOC_SSA__Instr)i1;
1274 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31726));
1275 i3 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
1276 OOC_SSA__OpndDesc_ReplaceArg((OOC_SSA__Opnd)i0, (OOC_SSA__Result)i3);
1277 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
1278 return (OOC_SSA__Instr)i1;
1279 goto l14;
1280 l13:
1281 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 31623));
1282 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 31627))+16);
1283 return (OOC_SSA__Instr)i0;
1284 l14:
1285 _failed_function(30564); return 0;
1286 ;
1287 }
1288
OOC_SSA__InstrDesc_LogOpcode(OOC_SSA__Instr instr,const OOC_CHAR8 msg__ref[],OOC_LEN msg_0d)1289 void OOC_SSA__InstrDesc_LogOpcode(OOC_SSA__Instr instr, const OOC_CHAR8 msg__ref[], OOC_LEN msg_0d) {
1290 register OOC_INT64 i0;
1291 OOC_ALLOCATE_VPAR(msg,OOC_CHAR8 ,msg_0d)
1292 OOC_CHAR8 name[64];
1293
1294 OOC_INITIALIZE_VPAR(msg__ref,msg,OOC_CHAR8 ,msg_0d)
1295 i0 = (OOC_INT64)instr;
1296 OOC_SSA__InstrDesc_GetOpcodeName((OOC_SSA__Instr)i0, (void*)(OOC_INT64)name, 64);
1297 Log__String((void*)(OOC_INT64)msg, msg_0d, (void*)(OOC_INT64)name, 64);
1298 return;
1299 ;
1300 }
1301
OOC_SSA__InstrDesc_IsConst(OOC_SSA__Instr instr)1302 OOC_CHAR8 OOC_SSA__InstrDesc_IsConst(OOC_SSA__Instr instr) {
1303 register OOC_INT64 i0,i1;
1304
1305 i0 = (OOC_INT64)instr;
1306 i1 = *(OOC_INT8*)((_check_pointer(i0, 32415))+72);
1307 i1 = i1==57;
1308 if (i1) goto l3;
1309 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32467)))), &_td_OOC_SSA__ConstDesc);
1310
1311 goto l5;
1312 l3:
1313 i1=1u;
1314 l5:
1315 if (i1) goto l7;
1316 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32487)))), &_td_OOC_SSA__DeclRefDesc);
1317
1318 goto l9;
1319 l7:
1320 i1=1u;
1321 l9:
1322 if (i1) goto l11;
1323 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32517)))), &_td_OOC_SSA__TypeRefDesc);
1324
1325 goto l13;
1326 l11:
1327 i1=1u;
1328 l13:
1329 if (i1) goto l15;
1330 i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 32539)))), &_td_OOC_SSA__AddressDesc);
1331
1332 goto l16;
1333 l15:
1334 i0=1u;
1335 l16:
1336 return i0;
1337 ;
1338 }
1339
OOC_SSA__InstrDesc_UniqueResult(OOC_SSA__Instr instr)1340 OOC_CHAR8 OOC_SSA__InstrDesc_UniqueResult(OOC_SSA__Instr instr) {
1341 register OOC_INT64 i0;
1342
1343 i0 = (OOC_INT64)instr;
1344 i0 = *(OOC_INT8*)((_check_pointer(i0, 32875))+72);
1345 switch (i0) {
1346 case 59:
1347 case 9:
1348 case 7:
1349 return 1u;
1350 goto l4;
1351 default:
1352 return 0u;
1353 goto l4;
1354 }
1355 l4:
1356 _failed_function(32593); return 0;
1357 ;
1358 }
1359
OOC_SSA__InstrDesc_IsSync(OOC_SSA__Instr instr)1360 OOC_CHAR8 OOC_SSA__InstrDesc_IsSync(OOC_SSA__Instr instr) {
1361 register OOC_INT64 i0;
1362
1363 i0 = (OOC_INT64)instr;
1364 i0 = *(OOC_INT8*)((_check_pointer(i0, 33476))+72);
1365 switch (i0) {
1366 case 7:
1367 case 9:
1368 case 12:
1369 case 59:
1370 case 64:
1371 case 65:
1372 case 66:
1373 case 67:
1374 case 68:
1375 case 69:
1376 case 70:
1377 case 71:
1378 return 1u;
1379 goto l4;
1380 default:
1381 return 0u;
1382 goto l4;
1383 }
1384 l4:
1385 _failed_function(33062); return 0;
1386 ;
1387 }
1388
OOC_SSA__InstrDesc_IsSwitchStatm(OOC_SSA__Instr instr)1389 OOC_CHAR8 OOC_SSA__InstrDesc_IsSwitchStatm(OOC_SSA__Instr instr) {
1390 register OOC_INT64 i0,i1;
1391
1392 i0 = (OOC_INT64)instr;
1393 i1 = *(OOC_INT8*)((_check_pointer(i0, 34075))+72);
1394 _assert((i1==5), 127, 34062);
1395 i1 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 16);
1396 i1 = i1!=(OOC_INT64)0;
1397 if (i1) goto l3;
1398 i0 = OOC_SSA__InstrDesc_CountOpndClass((OOC_SSA__Instr)i0, 1);
1399 i0 = i0<4;
1400
1401 goto l4;
1402 l3:
1403 i0=1u;
1404 l4:
1405 return i0;
1406 ;
1407 }
1408
OOC_SSA__InitConst(OOC_SSA__Const _const,OOC_INT8 subclass,Object_Boxed__Object value,OOC_SymbolTable__Type stringType)1409 static void OOC_SSA__InitConst(OOC_SSA__Const _const, OOC_INT8 subclass, Object_Boxed__Object value, OOC_SymbolTable__Type stringType) {
1410 register OOC_INT64 i0,i1;
1411
1412 i0 = subclass;
1413 i1 = (OOC_INT64)_const;
1414 OOC_SSA__InitInstr((OOC_SSA__Instr)i1, 0, i0);
1415 i0 = (OOC_INT64)value;
1416 _assert((i0!=(OOC_INT64)0), 127, 34644);
1417 *(OOC_INT64*)((_check_pointer(i1, 34675))+80) = i0;
1418 i0 = (OOC_INT64)stringType;
1419 *(OOC_INT64*)((_check_pointer(i1, 34702))+88) = i0;
1420 return;
1421 ;
1422 }
1423
OOC_SSA__InitDeclRef(OOC_SSA__DeclRef declRef,OOC_SymbolTable__Declaration decl)1424 static void OOC_SSA__InitDeclRef(OOC_SSA__DeclRef declRef, OOC_SymbolTable__Declaration decl) {
1425 register OOC_INT64 i0,i1;
1426
1427 i0 = (OOC_INT64)declRef;
1428 OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 1, 0);
1429 i1 = (OOC_INT64)decl;
1430 *(OOC_INT64*)((_check_pointer(i0, 34888))+80) = i1;
1431 return;
1432 ;
1433 }
1434
OOC_SSA__InitTypeRef(OOC_SSA__TypeRef typeRef,OOC_SymbolTable__Type type)1435 static void OOC_SSA__InitTypeRef(OOC_SSA__TypeRef typeRef, OOC_SymbolTable__Type type) {
1436 register OOC_INT64 i0,i1;
1437
1438 i0 = (OOC_INT64)typeRef;
1439 OOC_SSA__InitInstr((OOC_SSA__Instr)i0, 2, 0);
1440 i1 = (OOC_INT64)type;
1441 *(OOC_INT64*)((_check_pointer(i0, 35057))+80) = i1;
1442 return;
1443 ;
1444 }
1445
OOC_SSA__InitAddress(OOC_SSA__Address address,OOC_INT8 opcode,OOC_SymbolTable__Declaration decl)1446 static void OOC_SSA__InitAddress(OOC_SSA__Address address, OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
1447 register OOC_INT64 i0,i1;
1448
1449 i0 = opcode;
1450 i1 = (OOC_INT64)address;
1451 OOC_SSA__InitInstr((OOC_SSA__Instr)i1, i0, 9);
1452 i0 = (OOC_INT64)decl;
1453 *(OOC_INT64*)((_check_pointer(i1, 35273))+80) = i0;
1454 return;
1455 ;
1456 }
1457
OOC_SSA__NewAddress(OOC_INT8 opcode,OOC_SymbolTable__Declaration decl)1458 static OOC_SSA__Address OOC_SSA__NewAddress(OOC_INT8 opcode, OOC_SymbolTable__Declaration decl) {
1459 register OOC_INT64 i0,i1,i2;
1460
1461 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Address.baseTypes[0]);
1462 i1 = (OOC_INT64)decl;
1463 i2 = opcode;
1464 OOC_SSA__InitAddress((OOC_SSA__Address)i0, i2, (OOC_SymbolTable__Declaration)i1);
1465 return (OOC_SSA__Address)i0;
1466 ;
1467 }
1468
OOC_SSA__InitProcBlock(OOC_SSA__ProcBlock pb,OOC_SymbolTable__ProcDecl procDecl,OOC_CHAR8 checkFunctionResult)1469 static void OOC_SSA__InitProcBlock(OOC_SSA__ProcBlock pb, OOC_SymbolTable__ProcDecl procDecl, OOC_CHAR8 checkFunctionResult) {
1470 register OOC_INT64 i0,i1,i2;
1471 OOC_SSA__Instr enter;
1472 OOC_SSA__Result initialStore;
1473 OOC_INT32 i;
1474
1475 i0 = (OOC_INT64)pb;
1476 OOC_SSA__InitNode((OOC_SSA__Node)i0);
1477 *(OOC_INT64*)((_check_pointer(i0, 35819))+24) = (OOC_INT64)0;
1478 *(OOC_INT64*)((_check_pointer(i0, 35845))+32) = (OOC_INT64)0;
1479 i1 = (OOC_INT64)procDecl;
1480 *(OOC_INT64*)((_check_pointer(i0, 35871))+40) = i1;
1481 i1 = checkFunctionResult;
1482 *(OOC_UINT8*)((_check_pointer(i0, 35901))+48) = i1;
1483 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 8, 0);
1484 *(OOC_INT64*)(_check_pointer(i0, 35958)) = i1;
1485 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i0, 4, 0);
1486 enter = (OOC_SSA__Instr)i1;
1487 i1 = (OOC_INT64)OOC_SSA__InstrDesc_AddResult((OOC_SSA__Instr)i1, 2);
1488 initialStore = (OOC_SSA__Result)i1;
1489 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 36148));
1490 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i2, (OOC_SSA__Result)i1, 10);
1491 *(OOC_INT64*)((_check_pointer(i0, 36221))+8) = (OOC_INT64)0;
1492 *(OOC_INT64*)((_check_pointer(i0, 36249))+16) = (OOC_INT64)0;
1493 i = 0;
1494 i1=0;
1495 l1_loop:
1496 *(OOC_INT64*)(((_check_pointer(i0, 36318))+56)+(_check_index(i1, 12, OOC_UINT32, 36328))*8) = (OOC_INT64)0;
1497 i1 = i1+1;
1498 i = i1;
1499 i2 = i1<=11;
1500 if (i2) goto l1_loop;
1501 l5:
1502 i1 = (OOC_INT64)ADT_Dictionary__New();
1503 *(OOC_INT64*)((_check_pointer(i0, 36355))+152) = i1;
1504 i1 = (OOC_INT64)ADT_Dictionary__New();
1505 *(OOC_INT64*)((_check_pointer(i0, 36391))+160) = i1;
1506 return;
1507 ;
1508 }
1509
OOC_SSA__NewProcBlock(OOC_IR__Procedure proc)1510 OOC_SSA__ProcBlock OOC_SSA__NewProcBlock(OOC_IR__Procedure proc) {
1511 register OOC_INT64 i0,i1,i2;
1512 OOC_SSA__ProcBlock pb;
1513
1514 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__ProcBlock.baseTypes[0]);
1515 pb = (OOC_SSA__ProcBlock)i0;
1516 i1 = (OOC_INT64)proc;
1517 i2 = *(OOC_UINT8*)((_check_pointer(i1, 36638))+24);
1518 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36626))+8);
1519 OOC_SSA__InitProcBlock((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__ProcDecl)i1, i2);
1520 return (OOC_SSA__ProcBlock)i0;
1521 ;
1522 }
1523
OOC_SSA__AppendInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr)1524 static void OOC_SSA__AppendInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
1525 register OOC_INT64 i0,i1,i2;
1526
1527 i0 = (OOC_INT64)instr;
1528 *(OOC_INT64*)((_check_pointer(i0, 36824))+56) = (OOC_INT64)0;
1529 i1 = (OOC_INT64)pb;
1530 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36870))+32);
1531 *(OOC_INT64*)((_check_pointer(i0, 36853))+64) = i2;
1532 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 36893))+24);
1533 i2 = i2==(OOC_INT64)0;
1534 if (i2) goto l3;
1535 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 37095))+32);
1536 *(OOC_INT64*)((_check_pointer(i2, 37106))+56) = i0;
1537 *(OOC_INT64*)((_check_pointer(i1, 37136))+32) = i0;
1538 goto l4;
1539 l3:
1540 *(OOC_INT64*)((_check_pointer(i1, 36967))+24) = i0;
1541 *(OOC_INT64*)((_check_pointer(i1, 36997))+32) = i0;
1542 l4:
1543 return;
1544 ;
1545 }
1546
OOC_SSA__ProcBlockDesc_AddInstr(OOC_SSA__ProcBlock pb,OOC_INT8 opcode,OOC_INT8 subclass)1547 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddInstr(OOC_SSA__ProcBlock pb, OOC_INT8 opcode, OOC_INT8 subclass) {
1548 register OOC_INT64 i0,i1,i2;
1549
1550 i0 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Instr.baseTypes[0]);
1551 i1 = subclass;
1552 i2 = opcode;
1553 OOC_SSA__InitInstr((OOC_SSA__Instr)i0, i2, i1);
1554 i1 = (OOC_INT64)pb;
1555 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i1, (OOC_SSA__Instr)i0);
1556 return (OOC_SSA__Instr)i0;
1557 ;
1558 }
1559
OOC_SSA__ProcBlockDesc_DeleteInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr)1560 void OOC_SSA__ProcBlockDesc_DeleteInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr) {
1561 register OOC_INT64 i0,i1,i2;
1562
1563 i0 = (OOC_INT64)instr;
1564 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38208)))), &_td_OOC_SSA__AddressDesc);
1565 if (i1) goto l17;
1566 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38272)))), &_td_OOC_SSA__ConstDesc);
1567 if (i1) goto l12;
1568 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38401)))), &_td_OOC_SSA__DeclRefDesc);
1569 if (i1) goto l10;
1570 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38465)))), &_td_OOC_SSA__TypeRefDesc);
1571 if (!i1) goto l18;
1572 i1 = (OOC_INT64)pb;
1573 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38509))+80);
1574 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38486))+152);
1575 ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1576 goto l18;
1577 l10:
1578 i1 = (OOC_INT64)pb;
1579 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38445))+80);
1580 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38422))+152);
1581 ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1582 goto l18;
1583 l12:
1584 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38298))+88);
1585 i1 = i1==(OOC_INT64)0;
1586 if (!i1) goto l18;
1587 i1 = (OOC_INT64)pb;
1588 i2 = *(OOC_INT8*)((_check_pointer(i0, 38347))+9);
1589 i1 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i1, 38332))+56)+(_check_index(i2, 12, OOC_UINT8, 38341))*8);
1590 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38370))+80);
1591 ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1592 goto l18;
1593 l17:
1594 i1 = (OOC_INT64)pb;
1595 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 38229))+160);
1596 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38252))+80);
1597 ADT_Dictionary__DictionaryDesc_Delete((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1598 l18:
1599 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38644))+48);
1600 i1 = i1!=(OOC_INT64)0;
1601 if (!i1) goto l26;
1602 l21_loop:
1603 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38676))+48);
1604 OOC_SSA__OpndDesc_DeleteOpnd((OOC_SSA__Opnd)i1);
1605 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38644))+48);
1606 i1 = i1!=(OOC_INT64)0;
1607 if (i1) goto l21_loop;
1608 l26:
1609 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38725))+64);
1610 i1 = i1==(OOC_INT64)0;
1611 if (i1) goto l29;
1612 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38809))+64);
1613 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38840))+56);
1614 *(OOC_INT64*)((_check_pointer(i1, 38820))+56) = i2;
1615 goto l30;
1616 l29:
1617 i1 = (OOC_INT64)pb;
1618 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38777))+56);
1619 *(OOC_INT64*)((_check_pointer(i1, 38757))+24) = i2;
1620 l30:
1621 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38874))+56);
1622 i1 = i1==(OOC_INT64)0;
1623 if (i1) goto l33;
1624 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38958))+56);
1625 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38989))+64);
1626 *(OOC_INT64*)((_check_pointer(i1, 38969))+64) = i2;
1627 goto l34;
1628 l33:
1629 i1 = (OOC_INT64)pb;
1630 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 38926))+64);
1631 *(OOC_INT64*)((_check_pointer(i1, 38906))+32) = i2;
1632 l34:
1633 *(OOC_INT64*)((_check_pointer(i0, 39019))+56) = (OOC_INT64)0;
1634 *(OOC_INT64*)((_check_pointer(i0, 39048))+64) = (OOC_INT64)0;
1635 return;
1636 ;
1637 }
1638
OOC_SSA__ProcBlockDesc_GetConst(OOC_SSA__ProcBlock pb,Object_Boxed__Object value,OOC_INT8 subclass,OOC_SymbolTable__Type stringType)1639 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConst(OOC_SSA__ProcBlock pb, Object_Boxed__Object value, OOC_INT8 subclass, OOC_SymbolTable__Type stringType) {
1640 register OOC_INT64 i0,i1,i2,i3,i4;
1641 Object__Object obj;
1642 OOC_SSA__Const _const;
1643
1644 i0 = (OOC_INT64)pb;
1645 i1 = subclass;
1646 i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40012))+56)+(_check_index(i1, 12, OOC_UINT8, 40022))*8);
1647 i2 = i2==(OOC_INT64)0;
1648 if (!i2) goto l3;
1649 i2 = (OOC_INT64)ADT_Dictionary__New();
1650 *(OOC_INT64*)(((_check_pointer(i0, 40053))+56)+(_check_index(i1, 12, OOC_UINT8, 40063))*8) = i2;
1651 l3:
1652 i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40118))+56)+(_check_index(i1, 12, OOC_UINT8, 40127))*8);
1653 i3 = (OOC_INT64)value;
1654 i2 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i2, (Object__Object)i3);
1655 if (i2) goto l9;
1656 i2 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__Const.baseTypes[0]);
1657 _const = (OOC_SSA__Const)i2;
1658 i4 = (OOC_INT64)stringType;
1659 OOC_SSA__InitConst((OOC_SSA__Const)i2, i1, (Object_Boxed__Object)i3, (OOC_SymbolTable__Type)i4);
1660 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i2);
1661 i4 = i4==(OOC_INT64)0;
1662 if (!i4) goto l8;
1663 i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40501))+56)+(_check_index(i1, 12, OOC_UINT8, 40511))*8);
1664 ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i3, (Object__Object)i2);
1665 l8:
1666 return (OOC_SSA__Const)i2;
1667 goto l10;
1668 l9:
1669 i0 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 40172))+56)+(_check_index(i1, 12, OOC_UINT8, 40182))*8);
1670 i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i3);
1671 obj = (Object__Object)i0;
1672 return (OOC_SSA__Const)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 40224)))), &_td_OOC_SSA__ConstDesc, 40224));
1673 l10:
1674 _failed_function(39116); return 0;
1675 ;
1676 }
1677
OOC_SSA__ProcBlockDesc_GetConstInt(OOC_SSA__ProcBlock pb,OOC_INT32 _int)1678 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstInt(OOC_SSA__ProcBlock pb, OOC_INT32 _int) {
1679 register OOC_INT64 i0,i1,i2;
1680
1681 i0 = _int;
1682 i0 = (OOC_INT64)Object_BigInt__NewInt(i0);
1683 i1 = (OOC_INT64)OOC_SymbolTable_Predef__SmallestIntType((Object_BigInt__BigInt)i0);
1684 i1 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i1);
1685 i2 = (OOC_INT64)pb;
1686 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i2, (Object_Boxed__Object)i0, i1, (OOC_SymbolTable__Type)(OOC_INT64)0);
1687 return (OOC_SSA__Const)i0;
1688 ;
1689 }
1690
OOC_SSA__ProcBlockDesc_GetConstBool(OOC_SSA__ProcBlock pb,OOC_CHAR8 b)1691 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstBool(OOC_SSA__ProcBlock pb, OOC_CHAR8 b) {
1692 register OOC_INT64 i0,i1;
1693
1694 i0 = b;
1695 if (i0) goto l3;
1696 i0 = (OOC_INT64)Object_BigInt__zero;
1697
1698 goto l4;
1699 l3:
1700 i0 = (OOC_INT64)Object_BigInt__one;
1701
1702 l4:
1703 i1 = (OOC_INT64)pb;
1704 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, 5, (OOC_SymbolTable__Type)(OOC_INT64)0);
1705 return (OOC_SSA__Const)i0;
1706 ;
1707 }
1708
OOC_SSA__ProcBlockDesc_GetConstNil(OOC_SSA__ProcBlock pb)1709 OOC_SSA__Const OOC_SSA__ProcBlockDesc_GetConstNil(OOC_SSA__ProcBlock pb) {
1710 register OOC_INT64 i0,i1,i2;
1711
1712 i0 = (OOC_INT64)OOC_SymbolTable_Predef__GetType(16);
1713 i0 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i0);
1714 i1 = (OOC_INT64)pb;
1715 i2 = (OOC_INT64)OOC_SSA__nil;
1716 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i2, i0, (OOC_SymbolTable__Type)(OOC_INT64)0);
1717 return (OOC_SSA__Const)i0;
1718 ;
1719 }
1720
OOC_SSA__ProcBlockDesc_GetDeclRef(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl)1721 OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_GetDeclRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
1722 register OOC_INT64 i0,i1,i2;
1723 Object__Object obj;
1724 OOC_SSA__DeclRef declRef;
1725
1726 i0 = (OOC_INT64)pb;
1727 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41628))+152);
1728 i2 = (OOC_INT64)decl;
1729 i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1730 if (i1) goto l3;
1731 i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__DeclRef.baseTypes[0]);
1732 declRef = (OOC_SSA__DeclRef)i1;
1733 OOC_SSA__InitDeclRef((OOC_SSA__DeclRef)i1, (OOC_SymbolTable__Declaration)i2);
1734 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1735 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41827))+152);
1736 ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
1737 return (OOC_SSA__DeclRef)i1;
1738 goto l4;
1739 l3:
1740 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 41672))+152);
1741 i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1742 obj = (Object__Object)i0;
1743 return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 41711)))), &_td_OOC_SSA__DeclRefDesc, 41711));
1744 l4:
1745 _failed_function(41367); return 0;
1746 ;
1747 }
1748
OOC_SSA__ProcBlockDesc_GetTypeRef(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Type type)1749 OOC_SSA__TypeRef OOC_SSA__ProcBlockDesc_GetTypeRef(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Type type) {
1750 register OOC_INT64 i0,i1,i2;
1751 Object__Object obj;
1752 OOC_SSA__TypeRef typeRef;
1753
1754 i0 = (OOC_INT64)pb;
1755 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42173))+152);
1756 i2 = (OOC_INT64)type;
1757 i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1758 if (i1) goto l3;
1759 i1 = (OOC_INT64)RT0__NewObject(_td_OOC_SSA__TypeRef.baseTypes[0]);
1760 typeRef = (OOC_SSA__TypeRef)i1;
1761 OOC_SSA__InitTypeRef((OOC_SSA__TypeRef)i1, (OOC_SymbolTable__Type)i2);
1762 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1763 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42372))+152);
1764 ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i2, (Object__Object)i1);
1765 return (OOC_SSA__TypeRef)i1;
1766 goto l4;
1767 l3:
1768 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42217))+152);
1769 i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1770 obj = (Object__Object)i0;
1771 return (OOC_SSA__TypeRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 42256)))), &_td_OOC_SSA__TypeRefDesc, 42256));
1772 l4:
1773 _failed_function(41933); return 0;
1774 ;
1775 }
1776
OOC_SSA__ProcBlockDesc_SetAddress(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl,OOC_SSA__Address address)1777 void OOC_SSA__ProcBlockDesc_SetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl, OOC_SSA__Address address) {
1778 register OOC_INT64 i0,i1,i2;
1779
1780 i0 = (OOC_INT64)pb;
1781 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42584))+160);
1782 i1 = (OOC_INT64)decl;
1783 i2 = (OOC_INT64)address;
1784 ADT_Dictionary__DictionaryDesc_Set((ADT_Dictionary__Dictionary)i0, (Object__Object)i1, (Object__Object)i2);
1785 return;
1786 ;
1787 }
1788
OOC_SSA__ProcBlockDesc_GetAddress(OOC_SSA__ProcBlock pb,OOC_SymbolTable__Declaration decl)1789 OOC_SSA__Address OOC_SSA__ProcBlockDesc_GetAddress(OOC_SSA__ProcBlock pb, OOC_SymbolTable__Declaration decl) {
1790 register OOC_INT64 i0,i1,i2;
1791 Object__Object obj;
1792
1793 i0 = (OOC_INT64)pb;
1794 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42921))+160);
1795 i2 = (OOC_INT64)decl;
1796 i1 = ADT_Dictionary__DictionaryDesc_HasKey((ADT_Dictionary__Dictionary)i1, (Object__Object)i2);
1797 if (i1) goto l3;
1798 i1 = (OOC_INT64)OOC_SSA__NewAddress(3, (OOC_SymbolTable__Declaration)i2);
1799 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
1800 OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i0, (OOC_SymbolTable__Declaration)i2, (OOC_SSA__Address)i1);
1801 return (OOC_SSA__Address)i1;
1802 goto l4;
1803 l3:
1804 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 42965))+160);
1805 i0 = (OOC_INT64)ADT_Dictionary__DictionaryDesc_Get((ADT_Dictionary__Dictionary)i0, (Object__Object)i2);
1806 obj = (Object__Object)i0;
1807 return (OOC_SSA__Address)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 43004)))), &_td_OOC_SSA__AddressDesc, 43004));
1808 l4:
1809 _failed_function(42660); return 0;
1810 ;
1811 }
1812
OOC_SSA__ProcBlockDesc_AddCopyParameter(OOC_SSA__ProcBlock pb,OOC_SymbolTable__VarDecl param,OOC_SSA__Result storeIn,OOC_SSA__Result length,OOC_SSA__Result size)1813 OOC_SSA__Address OOC_SSA__ProcBlockDesc_AddCopyParameter(OOC_SSA__ProcBlock pb, OOC_SymbolTable__VarDecl param, OOC_SSA__Result storeIn, OOC_SSA__Result length, OOC_SSA__Result size) {
1814 register OOC_INT64 i0,i1,i2;
1815
1816 i0 = (OOC_INT64)param;
1817 i1 = (OOC_INT64)OOC_SSA__NewAddress(58, (OOC_SymbolTable__Declaration)i0);
1818 i2 = (OOC_INT64)storeIn;
1819 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 2);
1820 i2 = (OOC_INT64)length;
1821 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
1822 i2 = (OOC_INT64)size;
1823 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i2, 1);
1824 i2 = (OOC_INT64)pb;
1825 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i2, (OOC_SSA__Instr)i1);
1826 OOC_SSA__ProcBlockDesc_SetAddress((OOC_SSA__ProcBlock)i2, (OOC_SymbolTable__Declaration)i0, (OOC_SSA__Address)i1);
1827 return (OOC_SSA__Address)i1;
1828 ;
1829 }
1830
OOC_SSA__ProcBlockDesc_SetMarkers(OOC_SSA__ProcBlock pb,OOC_SSA__Node newInfo,OOC_INT32 newMarker)1831 void OOC_SSA__ProcBlockDesc_SetMarkers(OOC_SSA__ProcBlock pb, OOC_SSA__Node newInfo, OOC_INT32 newMarker) {
1832 register OOC_INT64 i0,i1,i2,i3,i4;
1833 OOC_SSA__Instr instr;
1834 OOC_SSA__Result res;
1835
1836 i0 = (OOC_INT64)pb;
1837 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44260))+24);
1838 instr = (OOC_SSA__Instr)i0;
1839 i1 = i0!=(OOC_INT64)0;
1840 if (!i1) goto l16;
1841 i2 = (OOC_INT64)newInfo;
1842 i3 = newMarker;
1843
1844 l3_loop:
1845 res = (OOC_SSA__Result)i0;
1846 if (!i1) goto l11;
1847 i1=i0;
1848 l6_loop:
1849 *(OOC_INT64*)((_check_pointer(i1, 44358))+32) = i2;
1850 *(OOC_INT32*)((_check_pointer(i1, 44388))+40) = i3;
1851 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 44429));
1852 res = (OOC_SSA__Result)i1;
1853 i4 = i1!=(OOC_INT64)0;
1854 if (i4) goto l6_loop;
1855 l11:
1856 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 44473))+56);
1857 instr = (OOC_SSA__Instr)i0;
1858 i1 = i0!=(OOC_INT64)0;
1859 if (i1) goto l3_loop;
1860 l16:
1861 return;
1862 ;
1863 }
1864
OOC_SSA__ProcBlockDesc_AddSetInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr get,OOC_SSA__Result sourceValue)1865 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddSetInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_SSA__Result sourceValue) {
1866 register OOC_INT64 i0,i1,i2,i3;
1867 OOC_SSA__Instr set;
1868 OOC_SSA__Opnd opnd;
1869 auto OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class);
1870
1871 OOC_INT8 OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(OOC_INT8 _class) {
1872 register OOC_INT64 i0;
1873
1874 i0 = _class;
1875 switch (i0) {
1876 case 4:
1877 return 6;
1878 goto l5;
1879 case 5:
1880 return 7;
1881 goto l5;
1882 default:
1883 return i0;
1884 goto l5;
1885 }
1886 l5:
1887 _failed_function(44822); return 0;
1888 ;
1889 }
1890
1891
1892 i0 = (OOC_INT64)get;
1893 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45111))+16);
1894 i1 = *(OOC_INT8*)((_check_pointer(i1, 45118))+72);
1895 _assert((i1==12), 127, 45100);
1896 i1 = *(OOC_INT8*)((_check_pointer(i0, 45182))+9);
1897 i2 = (OOC_INT64)pb;
1898 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, 13, i1);
1899 set = (OOC_SSA__Instr)i1;
1900 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45210))+48);
1901 opnd = (OOC_SSA__Opnd)i0;
1902 i2 = i0!=(OOC_INT64)0;
1903 if (!i2) goto l8;
1904 l3_loop:
1905 i2 = *(OOC_INT8*)((_check_pointer(i0, 45297))+8);
1906 i2 = OOC_SSA__ProcBlockDesc_AddSetInstr_MapOpndClass(i2);
1907 i3 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 45272));
1908 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i3, i2);
1909 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 45326))+16);
1910 opnd = (OOC_SSA__Opnd)i0;
1911 i2 = i0!=(OOC_INT64)0;
1912 if (i2) goto l3_loop;
1913 l8:
1914 i0 = (OOC_INT64)sourceValue;
1915 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 8);
1916 return (OOC_SSA__Instr)i1;
1917 ;
1918 }
1919
OOC_SSA__ProcBlockDesc_AddGetLengthInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr get,OOC_INT32 dim,OOC_SymbolTable__Array dimType)1920 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr get, OOC_INT32 dim, OOC_SymbolTable__Array dimType) {
1921 register OOC_INT64 i0,i1,i2,i3,i4;
1922 OOC_SSA__Instr dimension;
1923 OOC_SSA__DeclRef paramRef;
1924 OOC_SSA__Instr getLength;
1925 OOC_INT8 opcode;
1926 OOC_SSA__Opnd opnd;
1927 auto OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get);
1928 auto OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension);
1929
1930 OOC_SSA__DeclRef OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray(OOC_SSA__Instr get) {
1931 register OOC_INT64 i0,i1;
1932 OOC_SSA__Opnd opnd;
1933
1934 i0 = (OOC_INT64)get;
1935 i0 = (OOC_INT64)OOC_SSA__InstrDesc_GetOpndClass((OOC_SSA__Instr)i0, 5);
1936 opnd = (OOC_SSA__Opnd)i0;
1937 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46195))+16);
1938 i1 = i1==(OOC_INT64)0;
1939 if (i1) goto l3;
1940 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46231))+16);
1941 i1 = *(OOC_INT8*)((_check_pointer(i1, 46241))+8);
1942 i1 = i1!=5;
1943
1944 goto l5;
1945 l3:
1946 i1=1u;
1947 l5:
1948 if (i1) goto l7;
1949 i1=0u;
1950 goto l9;
1951 l7:
1952 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46290));
1953 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46296)))), &_td_OOC_SSA__DeclRefDesc);
1954
1955 l9:
1956 if (i1) goto l11;
1957 i1=0u;
1958 goto l13;
1959 l11:
1960 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46323));
1961 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46329)))), &_td_OOC_SSA__DeclRefDesc, 46329)), 46337))+80);
1962 i1 = *(OOC_UINT8*)((_check_pointer((_type_guard(i1, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 46348)))), &_td_OOC_SymbolTable__VarDeclDesc, 46348)), 46356))+104);
1963
1964 l13:
1965 if (i1) goto l15;
1966 return (OOC_SSA__DeclRef)(OOC_INT64)0;
1967 goto l16;
1968 l15:
1969 i0 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i0, 46394));
1970 return (OOC_SSA__DeclRef)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 46400)))), &_td_OOC_SSA__DeclRefDesc, 46400));
1971 l16:
1972 _failed_function(45921); return 0;
1973 ;
1974 }
1975
1976
1977 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength(OOC_SSA__Instr varParam, OOC_SSA__Instr dimension) {
1978 register OOC_INT64 i0,i1,i2;
1979 OOC_SSA__Opnd use;
1980
1981 i0 = (OOC_INT64)varParam;
1982 i1 = i0!=(OOC_INT64)0;
1983 if (!i1) goto l18;
1984 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46776))+24);
1985 use = (OOC_SSA__Opnd)i0;
1986 i1 = i0!=(OOC_INT64)0;
1987 if (!i1) goto l18;
1988 i1 = (OOC_INT64)dimension;
1989
1990 l5_loop:
1991 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46833))+24);
1992 i2 = *(OOC_INT8*)((_check_pointer(i2, 46840))+72);
1993 i2 = i2==57;
1994 if (i2) goto l8;
1995 i2=0u;
1996 goto l10;
1997 l8:
1998 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46893))+24);
1999 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 46900))+48);
2000 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 46910));
2001 i2 = i2==i1;
2002
2003 l10:
2004 if (!i2) goto l12;
2005 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 46956))+24);
2006 return (OOC_SSA__Instr)i2;
2007 l12:
2008 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47000))+32);
2009 use = (OOC_SSA__Opnd)i0;
2010 i2 = i0!=(OOC_INT64)0;
2011 if (i2) goto l5_loop;
2012 l18:
2013 return (OOC_SSA__Instr)(OOC_INT64)0;
2014 ;
2015 }
2016
2017
2018 i0 = (OOC_INT64)get;
2019 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 47106))+16);
2020 i1 = *(OOC_INT8*)((_check_pointer(i1, 47113))+72);
2021 _assert((i1==12), 127, 47095);
2022 i1 = (OOC_INT64)dimType;
2023 i2 = *(OOC_UINT8*)((_check_pointer(i1, 47151))+72);
2024 if (i2) goto l3;
2025 i0 = *(OOC_INT32*)((_check_pointer(i1, 47938))+96);
2026 i1 = (OOC_INT64)pb;
2027 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i1, i0);
2028 return (OOC_SSA__Instr)i0;
2029 goto l24;
2030 l3:
2031 i1 = dim;
2032 i2 = (OOC_INT64)pb;
2033 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConstInt((OOC_SSA__ProcBlock)i2, i1);
2034 dimension = (OOC_SSA__Instr)i1;
2035 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_VarParamArray((OOC_SSA__Instr)i0);
2036 paramRef = (OOC_SSA__DeclRef)i0;
2037 i1 = (OOC_INT64)dimension;
2038 i2 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddGetLengthInstr_ExistingGetLength((OOC_SSA__Instr)i0, (OOC_SSA__Instr)i1);
2039 i3 = i2==(OOC_INT64)0;
2040 if (i3) goto l6;
2041 i0=i2;
2042 goto l23;
2043 l6:
2044 i0 = i0!=(OOC_INT64)0;
2045 if (i0) goto l9;
2046 opcode = 56;
2047 i0=56;
2048 goto l10;
2049 l9:
2050 opcode = 57;
2051 i0=57;
2052 l10:
2053 i2 = (OOC_INT64)pb;
2054 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i2, i0, 3);
2055 getLength = (OOC_SSA__Instr)i0;
2056 i2 = (OOC_INT64)get;
2057 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47567))+48);
2058 opnd = (OOC_SSA__Opnd)i2;
2059 i3 = i2!=(OOC_INT64)0;
2060 if (!i3) goto l23;
2061 l13_loop:
2062 i3 = *(OOC_INT8*)((_check_pointer(i2, 47627))+8);
2063 i3 = i3==2;
2064 if (i3) goto l16;
2065 i3 = *(OOC_INT8*)((_check_pointer(i2, 47785))+8);
2066 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 47774));
2067 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i4, i3);
2068 goto l17;
2069 l16:
2070 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i0, (OOC_SSA__Result)i1, 15);
2071 l17:
2072 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 47832))+16);
2073 opnd = (OOC_SSA__Opnd)i2;
2074 i3 = i2!=(OOC_INT64)0;
2075 if (i3) goto l13_loop;
2076 l23:
2077 return (OOC_SSA__Instr)i0;
2078 l24:
2079 _failed_function(45462); return 0;
2080 ;
2081 }
2082
OOC_SSA__ProcBlockDesc_SetLoopContext(OOC_SSA__ProcBlock pb,OOC_SSA__Instr loopContext)2083 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetLoopContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr loopContext) {
2084 register OOC_INT64 i0,i1,i2;
2085 OOC_SSA__Instr old;
2086
2087 i0 = (OOC_INT64)pb;
2088 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48098))+8);
2089 old = (OOC_SSA__Instr)i1;
2090 i2 = (OOC_INT64)loopContext;
2091 *(OOC_INT64*)((_check_pointer(i0, 48119))+8) = i2;
2092 return (OOC_SSA__Instr)i1;
2093 ;
2094 }
2095
OOC_SSA__ProcBlockDesc_SetTryContext(OOC_SSA__ProcBlock pb,OOC_SSA__Instr tryContext)2096 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_SetTryContext(OOC_SSA__ProcBlock pb, OOC_SSA__Instr tryContext) {
2097 register OOC_INT64 i0,i1,i2;
2098 OOC_SSA__Instr old;
2099
2100 i0 = (OOC_INT64)pb;
2101 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 48299))+16);
2102 old = (OOC_SSA__Instr)i1;
2103 i2 = (OOC_INT64)tryContext;
2104 *(OOC_INT64*)((_check_pointer(i0, 48319))+16) = i2;
2105 return (OOC_SSA__Instr)i1;
2106 ;
2107 }
2108
OOC_SSA__ProcBlockDesc_FixSubclass(OOC_SSA__ProcBlock pb,OOC_SSA__Result arg,OOC_INT8 subclass)2109 OOC_SSA__Result OOC_SSA__ProcBlockDesc_FixSubclass(OOC_SSA__ProcBlock pb, OOC_SSA__Result arg, OOC_INT8 subclass) {
2110 register OOC_INT64 i0,i1,i2;
2111
2112 i0 = (OOC_INT64)arg;
2113 i1 = *(OOC_INT8*)((_check_pointer(i0, 48725))+9);
2114 i2 = subclass;
2115 i1 = i1!=i2;
2116 if (i1) goto l3;
2117 return (OOC_SSA__Result)i0;
2118 goto l12;
2119 l3:
2120 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48766)))), &_td_OOC_SSA__ConstDesc);
2121 if (i1) goto l6;
2122 i1=0u;
2123 goto l8;
2124 l6:
2125 i1 = *(OOC_INT8*)((_check_pointer(i0, 48792))+9);
2126 i1 = (i1<10)==(i2<10);
2127
2128 l8:
2129 if (i1) goto l10;
2130 i1 = (OOC_INT64)pb;
2131 i1 = (OOC_INT64)OOC_SSA__ProcBlockDesc_AddInstr((OOC_SSA__ProcBlock)i1, 42, i2);
2132 OOC_SSA__InstrDesc_AddOpnd((OOC_SSA__Instr)i1, (OOC_SSA__Result)i0, 1);
2133 return (OOC_SSA__Result)i1;
2134 goto l12;
2135 l10:
2136 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer((_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 48889)))), &_td_OOC_SSA__ConstDesc, 48889)), 48895))+80);
2137 i1 = (OOC_INT64)pb;
2138 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_GetConst((OOC_SSA__ProcBlock)i1, (Object_Boxed__Object)i0, i2, (OOC_SymbolTable__Type)(OOC_INT64)0);
2139 return (OOC_SSA__Result)i0;
2140 l12:
2141 _failed_function(48410); return 0;
2142 ;
2143 }
2144
OOC_SSA__ProcBlockDesc_FixSubclassInstr(OOC_SSA__ProcBlock pb,OOC_SSA__Instr instr,OOC_INT8 subclass)2145 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_FixSubclassInstr(OOC_SSA__ProcBlock pb, OOC_SSA__Instr instr, OOC_INT8 subclass) {
2146 register OOC_INT64 i0,i1,i2;
2147 OOC_SSA__Result res;
2148
2149 i0 = subclass;
2150 i1 = (OOC_INT64)instr;
2151 i2 = (OOC_INT64)pb;
2152 i0 = (OOC_INT64)OOC_SSA__ProcBlockDesc_FixSubclass((OOC_SSA__ProcBlock)i2, (OOC_SSA__Result)i1, i0);
2153 res = (OOC_SSA__Result)i0;
2154 return (OOC_SSA__Instr)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 49348)))), &_td_OOC_SSA__InstrDesc, 49348));
2155 ;
2156 }
2157
OOC_SSA__Add(OOC_SSA__Instr * list,OOC_SSA__Instr instr)2158 static void OOC_SSA__Add(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
2159 register OOC_INT64 i0,i1,i2;
2160
2161 i0 = (OOC_INT64)instr;
2162 *(OOC_INT64*)((_check_pointer(i0, 49446))+64) = (OOC_INT64)0;
2163 i1 = (OOC_INT64)*list;
2164 *(OOC_INT64*)((_check_pointer(i0, 49475))+56) = i1;
2165 i1 = (OOC_INT64)*list;
2166 i2 = i1!=(OOC_INT64)0;
2167 if (!i2) goto l4;
2168 *(OOC_INT64*)((_check_pointer(i1, 49531))+64) = i0;
2169 l4:
2170 *list = (OOC_SSA__Instr)i0;
2171 return;
2172 ;
2173 }
2174
OOC_SSA__Remove(OOC_SSA__Instr * list,OOC_SSA__Instr instr)2175 static void OOC_SSA__Remove(OOC_SSA__Instr *list, OOC_SSA__Instr instr) {
2176 register OOC_INT64 i0,i1,i2;
2177
2178 i0 = (OOC_INT64)instr;
2179 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49662))+64);
2180 i1 = i1==(OOC_INT64)0;
2181 if (i1) goto l3;
2182 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49737))+64);
2183 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49768))+56);
2184 *(OOC_INT64*)((_check_pointer(i1, 49748))+56) = i2;
2185 goto l4;
2186 l3:
2187 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49705))+56);
2188 *list = (OOC_SSA__Instr)i1;
2189 l4:
2190 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49802))+56);
2191 i1 = i1!=(OOC_INT64)0;
2192 if (!i1) goto l7;
2193 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49837))+56);
2194 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 49868))+64);
2195 *(OOC_INT64*)((_check_pointer(i1, 49848))+64) = i0;
2196 l7:
2197 return;
2198 ;
2199 }
2200
OOC_SSA__ProcBlockDesc_TopSort(OOC_SSA__ProcBlock pb)2201 OOC_CHAR8 OOC_SSA__ProcBlockDesc_TopSort(OOC_SSA__ProcBlock pb) {
2202 register OOC_INT64 i0,i1,i2,i3,i4;
2203 OOC_SSA__Instr ready;
2204 OOC_SSA__Instr waiting;
2205 OOC_SSA__Instr instr;
2206 OOC_SSA__Instr next;
2207 OOC_INT32 opndCount;
2208 OOC_SSA__Result res;
2209 OOC_SSA__Opnd use;
2210
2211 ready = (OOC_SSA__Instr)(OOC_INT64)0;
2212 waiting = (OOC_SSA__Instr)(OOC_INT64)0;
2213 i0 = (OOC_INT64)pb;
2214 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 50279))+24);
2215 instr = (OOC_SSA__Instr)i1;
2216 i2 = i1!=(OOC_INT64)0;
2217 if (!i2) goto l12;
2218 l3_loop:
2219 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50338))+56);
2220 next = (OOC_SSA__Instr)i2;
2221 i3 = OOC_SSA__InstrDesc_SizeOpndList((OOC_SSA__Instr)i1);
2222 opndCount = i3;
2223 *(OOC_INT32*)((_check_pointer(i1, 50405))+40) = i3;
2224 i3 = i3==0;
2225 if (i3) goto l6;
2226 OOC_SSA__Add((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i1);
2227 goto l7;
2228 l6:
2229 OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
2230 l7:
2231 instr = (OOC_SSA__Instr)i2;
2232 i1 = i2!=(OOC_INT64)0;
2233 if (!i1) goto l12;
2234 i1=i2;
2235 goto l3_loop;
2236 l12:
2237 *(OOC_INT64*)((_check_pointer(i0, 50572))+24) = (OOC_INT64)0;
2238 *(OOC_INT64*)((_check_pointer(i0, 50598))+32) = (OOC_INT64)0;
2239 i1 = (OOC_INT64)ready;
2240 i1 = i1!=(OOC_INT64)0;
2241 if (!i1) goto l39;
2242 l15_loop:
2243 i1 = (OOC_INT64)ready;
2244 instr = (OOC_SSA__Instr)i1;
2245 OOC_SSA__Remove((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i1);
2246 OOC_SSA__AppendInstr((OOC_SSA__ProcBlock)i0, (OOC_SSA__Instr)i1);
2247 res = (OOC_SSA__Result)i1;
2248 i2 = i1!=(OOC_INT64)0;
2249 if (!i2) goto l34;
2250 l18_loop:
2251 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 50905))+24);
2252 use = (OOC_SSA__Opnd)i2;
2253 i3 = i2!=(OOC_INT64)0;
2254 if (!i3) goto l29;
2255 l21_loop:
2256 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50963))+24);
2257 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50963))+24);
2258 i4 = *(OOC_INT32*)((_check_pointer(i4, 50970))+40);
2259 *(OOC_INT32*)((_check_pointer(i3, 50970))+40) = (i4-1);
2260 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 50998))+24);
2261 i3 = *(OOC_INT32*)((_check_pointer(i3, 51005))+40);
2262 i3 = i3==0;
2263 if (!i3) goto l24;
2264 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51056))+24);
2265 OOC_SSA__Remove((void*)(OOC_INT64)&waiting, (OOC_SSA__Instr)i3);
2266 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51093))+24);
2267 OOC_SSA__Add((void*)(OOC_INT64)&ready, (OOC_SSA__Instr)i3);
2268 l24:
2269 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 51137))+32);
2270 use = (OOC_SSA__Opnd)i2;
2271 i3 = i2!=(OOC_INT64)0;
2272 if (i3) goto l21_loop;
2273 l29:
2274 i1 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i1, 51178));
2275 res = (OOC_SSA__Result)i1;
2276 i2 = i1!=(OOC_INT64)0;
2277 if (i2) goto l18_loop;
2278 l34:
2279 i1 = (OOC_INT64)ready;
2280 i1 = i1!=(OOC_INT64)0;
2281 if (i1) goto l15_loop;
2282 l39:
2283 i0 = (OOC_INT64)waiting;
2284 return (i0==(OOC_INT64)0);
2285 ;
2286 }
2287
OOC_SSA__ProcBlockDesc_Reverse(OOC_SSA__ProcBlock pb)2288 void OOC_SSA__ProcBlockDesc_Reverse(OOC_SSA__ProcBlock pb) {
2289 register OOC_INT64 i0,i1,i2;
2290 OOC_SSA__Instr newList;
2291 OOC_SSA__Instr instr;
2292 OOC_SSA__Instr next;
2293
2294 newList = (OOC_SSA__Instr)(OOC_INT64)0;
2295 i0 = (OOC_INT64)pb;
2296 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51436))+24);
2297 instr = (OOC_SSA__Instr)i1;
2298 i2 = i1!=(OOC_INT64)0;
2299 if (!i2) goto l8;
2300 l3_loop:
2301 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 51495))+56);
2302 next = (OOC_SSA__Instr)i2;
2303 OOC_SSA__Add((void*)(OOC_INT64)&newList, (OOC_SSA__Instr)i1);
2304 instr = (OOC_SSA__Instr)i2;
2305 i1 = i2!=(OOC_INT64)0;
2306 if (!i1) goto l8;
2307 i1=i2;
2308 goto l3_loop;
2309 l8:
2310 i1 = (OOC_INT64)newList;
2311 *(OOC_INT64*)((_check_pointer(i0, 51571))+24) = i1;
2312 return;
2313 ;
2314 }
2315
OOC_SSA__ProcBlockDesc_GetEnter(OOC_SSA__ProcBlock pb)2316 OOC_SSA__Instr OOC_SSA__ProcBlockDesc_GetEnter(OOC_SSA__ProcBlock pb) {
2317 register OOC_INT64 i0,i1;
2318 OOC_SSA__Instr instr;
2319
2320 i0 = (OOC_INT64)pb;
2321 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51704))+24);
2322 instr = (OOC_SSA__Instr)i0;
2323 i1 = i0!=(OOC_INT64)0;
2324 if (i1) goto l3;
2325 i1=0u;
2326 goto l5;
2327 l3:
2328 i1 = *(OOC_INT8*)((_check_pointer(i0, 51749))+72);
2329 i1 = i1!=4;
2330
2331 l5:
2332 if (!i1) goto l17;
2333 l8_loop:
2334 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 51797))+56);
2335 instr = (OOC_SSA__Instr)i0;
2336 i1 = i0!=(OOC_INT64)0;
2337 if (i1) goto l11;
2338 i1=0u;
2339 goto l13;
2340 l11:
2341 i1 = *(OOC_INT8*)((_check_pointer(i0, 51749))+72);
2342 i1 = i1!=4;
2343
2344 l13:
2345 if (i1) goto l8_loop;
2346 l17:
2347 return (OOC_SSA__Instr)i0;
2348 ;
2349 }
2350
OOC_SSA__ProcBlockDesc_Destroy(OOC_SSA__ProcBlock pb)2351 void OOC_SSA__ProcBlockDesc_Destroy(OOC_SSA__ProcBlock pb) {
2352 register OOC_INT64 i0,i1,i2,i3,i4,i5;
2353 OOC_SSA__Instr instr;
2354 OOC_SSA__Instr nextInstr;
2355 OOC_SSA__Opnd opnd;
2356 OOC_SSA__Opnd nextOpnd;
2357 OOC_SSA__Result res;
2358 OOC_SSA__Result nextResult;
2359 OOC_INT32 i;
2360
2361 i0 = (OOC_INT64)pb;
2362 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 52135))+24);
2363 instr = (OOC_SSA__Instr)i1;
2364 i2 = i1!=(OOC_INT64)0;
2365 if (!i2) goto l27;
2366 l3_loop:
2367 i3 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52198))+56);
2368 nextInstr = (OOC_SSA__Instr)i3;
2369 i4 = *(OOC_INT8*)((_check_pointer(i1, 52225))+72);
2370 i4 = i4!=81;
2371 if (!i4) goto l22;
2372 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 52361))+48);
2373 opnd = (OOC_SSA__Opnd)i4;
2374 i5 = i4!=(OOC_INT64)0;
2375 if (!i5) goto l13;
2376 l8_loop:
2377 i5 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i4, 52428))+16);
2378 nextOpnd = (OOC_SSA__Opnd)i5;
2379 *(OOC_INT64*)(_check_pointer(i4, 52453)) = (OOC_INT64)0;
2380 *(OOC_INT64*)((_check_pointer(i4, 52480))+16) = (OOC_INT64)0;
2381 *(OOC_INT64*)((_check_pointer(i4, 52512))+24) = (OOC_INT64)0;
2382 *(OOC_INT64*)((_check_pointer(i4, 52541))+32) = (OOC_INT64)0;
2383 opnd = (OOC_SSA__Opnd)i5;
2384 i4 = i5!=(OOC_INT64)0;
2385 if (!i4) goto l13;
2386 i4=i5;
2387 goto l8_loop;
2388 l13:
2389 res = (OOC_SSA__Result)i1;
2390 if (!i2) goto l21;
2391 i2=i1;
2392 l16_loop:
2393 i4 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 52686));
2394 nextResult = (OOC_SSA__Result)i4;
2395 *(OOC_INT64*)(_check_pointer(i2, 52712)) = (OOC_INT64)0;
2396 *(OOC_INT64*)((_check_pointer(i2, 52745))+16) = (OOC_INT64)0;
2397 *(OOC_INT64*)((_check_pointer(i2, 52773))+24) = (OOC_INT64)0;
2398 *(OOC_INT64*)((_check_pointer(i2, 52803))+32) = (OOC_INT64)0;
2399 *(OOC_INT32*)((_check_pointer(i2, 52830))+40) = 0;
2400 res = (OOC_SSA__Result)i4;
2401 i2 = i4!=(OOC_INT64)0;
2402 if (!i2) goto l21;
2403 i2=i4;
2404 goto l16_loop;
2405 l21:
2406 *(OOC_INT64*)((_check_pointer(i1, 52908))+48) = (OOC_INT64)0;
2407 *(OOC_INT64*)((_check_pointer(i1, 52939))+56) = (OOC_INT64)0;
2408 *(OOC_INT64*)((_check_pointer(i1, 52971))+64) = (OOC_INT64)0;
2409 *(OOC_INT32*)((_check_pointer(i1, 53003))+76) = 0;
2410 l22:
2411 instr = (OOC_SSA__Instr)i3;
2412 i1 = i3!=(OOC_INT64)0;
2413 if (!i1) goto l27;
2414 i2=i1;i1=i3;
2415 goto l3_loop;
2416 l27:
2417 *(OOC_INT64*)(_check_pointer(i0, 53071)) = (OOC_INT64)0;
2418 *(OOC_INT64*)((_check_pointer(i0, 53099))+8) = (OOC_INT64)0;
2419 *(OOC_INT64*)((_check_pointer(i0, 53126))+24) = (OOC_INT64)0;
2420 *(OOC_INT64*)((_check_pointer(i0, 53151))+32) = (OOC_INT64)0;
2421 *(OOC_INT64*)((_check_pointer(i0, 53176))+40) = (OOC_INT64)0;
2422 i = 0;
2423 i1=0;
2424 l28_loop:
2425 i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53246))+56)+(_check_index(i1, 12, OOC_UINT32, 53255))*8);
2426 i2 = i2!=(OOC_INT64)0;
2427 if (!i2) goto l31;
2428 i2 = (OOC_INT64)*(OOC_INT64*)(((_check_pointer(i0, 53281))+56)+(_check_index(i1, 12, OOC_UINT32, 53290))*8);
2429 ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i2);
2430 *(OOC_INT64*)(((_check_pointer(i0, 53307))+56)+(_check_index(i1, 12, OOC_UINT32, 53316))*8) = (OOC_INT64)0;
2431 l31:
2432 i1 = i1+1;
2433 i = i1;
2434 i2 = i1<=11;
2435 if (i2) goto l28_loop;
2436 l35:
2437 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53358))+152);
2438 i1 = i1!=(OOC_INT64)0;
2439 if (!i1) goto l38;
2440 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53386))+152);
2441 ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
2442 *(OOC_INT64*)((_check_pointer(i0, 53407))+152) = (OOC_INT64)0;
2443 l38:
2444 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53442))+160);
2445 i1 = i1!=(OOC_INT64)0;
2446 if (!i1) goto l41;
2447 i1 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 53470))+160);
2448 ADT_Dictionary__DictionaryDesc_Destroy((ADT_Dictionary__Dictionary)i1);
2449 *(OOC_INT64*)((_check_pointer(i0, 53491))+160) = (OOC_INT64)0;
2450 l41:
2451 return;
2452 ;
2453 }
2454
OOC_OOC_SSA_init(void)2455 void OOC_OOC_SSA_init(void) {
2456 register OOC_INT64 i0,i1;
2457
2458 i0 = (OOC_INT64)Object_BigInt__zero;
2459 i0 = (OOC_INT64)Object_BigInt__BigIntDesc_Add((Object_BigInt__BigInt)i0, (Object_BigInt__BigInt)i0);
2460 i1 = (OOC_INT64)Object_BigInt__zero;
2461 OOC_SSA__nil = (Object_BigInt__BigInt)i0;
2462 _assert((i0!=i1), 127, 53608);
2463 return;
2464 ;
2465 }
2466
OOC_OOC_SSA_destroy(void)2467 void OOC_OOC_SSA_destroy(void) {
2468 }
2469
2470 /* --- */
2471