Mercurial > repo
comparison interps/c-intercal/oilout07.c @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
995:6883f5911eb7 | 996:859f9b4339e6 |
---|---|
1 /* Automatically generated output, edit source and recompile to change */ | |
2 #include "oil.h" | |
3 int optimize_pass1_7(node *np) | |
4 { int opted=0; | |
5 unsigned long c,c1,c2,c3,c4,c5,c6,c7,c8,c9; | |
6 unsigned long x,x1,x2,x3,x4,x5,x6,x7,x8,x9,r; | |
7 int tempw; | |
8 node *tp; | |
9 checknodeactbits(np); | |
10 if(np->opcode==C_AND && | |
11 np->lval->opcode==C_RSHIFTBY && | |
12 np->rval->opcode==C_RSHIFTBY) | |
13 do | |
14 { | |
15 if(!nodessame(np->lval->rval,np->rval->rval)) break; | |
16 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
17 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
18 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
19 OPTING(distribll); | |
20 tp=newnode(); | |
21 MAYBENEWNODE(tp); | |
22 tp->opcode=C_RSHIFTBY; | |
23 tp->width=32; | |
24 MAYBENEWNODE(tp->lval); | |
25 tp->lval->opcode=C_AND; | |
26 tp->lval->width=32; | |
27 tp->lval->lval=np->lval->lval; | |
28 np->lval->lval=0; | |
29 tp->lval->rval=np->rval->lval; | |
30 np->rval->lval=0; | |
31 tp->rval=np->rval->rval; | |
32 np->rval->rval=0; | |
33 nodefree(np->lval); nodefree(np->rval); | |
34 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
35 } while(0); | |
36 | |
37 checknodeactbits(np); | |
38 if(np->opcode==C_OR && | |
39 np->lval->opcode==C_RSHIFTBY && | |
40 np->rval->opcode==C_RSHIFTBY) | |
41 do | |
42 { | |
43 if(!nodessame(np->lval->rval,np->rval->rval)) break; | |
44 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
45 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
46 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
47 OPTING(distribll); | |
48 tp=newnode(); | |
49 MAYBENEWNODE(tp); | |
50 tp->opcode=C_RSHIFTBY; | |
51 tp->width=32; | |
52 MAYBENEWNODE(tp->lval); | |
53 tp->lval->opcode=C_OR; | |
54 tp->lval->width=32; | |
55 tp->lval->lval=np->lval->lval; | |
56 np->lval->lval=0; | |
57 tp->lval->rval=np->rval->lval; | |
58 np->rval->lval=0; | |
59 tp->rval=np->rval->rval; | |
60 np->rval->rval=0; | |
61 nodefree(np->lval); nodefree(np->rval); | |
62 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
63 } while(0); | |
64 | |
65 checknodeactbits(np); | |
66 if(np->opcode==C_XOR && | |
67 np->lval->opcode==C_RSHIFTBY && | |
68 np->rval->opcode==C_RSHIFTBY) | |
69 do | |
70 { | |
71 if(!nodessame(np->lval->rval,np->rval->rval)) break; | |
72 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
73 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
74 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
75 OPTING(distribll); | |
76 tp=newnode(); | |
77 MAYBENEWNODE(tp); | |
78 tp->opcode=C_RSHIFTBY; | |
79 tp->width=32; | |
80 MAYBENEWNODE(tp->lval); | |
81 tp->lval->opcode=C_XOR; | |
82 tp->lval->width=32; | |
83 tp->lval->lval=np->lval->lval; | |
84 np->lval->lval=0; | |
85 tp->lval->rval=np->rval->lval; | |
86 np->rval->lval=0; | |
87 tp->rval=np->rval->rval; | |
88 np->rval->rval=0; | |
89 nodefree(np->lval); nodefree(np->rval); | |
90 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
91 } while(0); | |
92 | |
93 checknodeactbits(np); | |
94 if(np->opcode==C_AND && | |
95 np->lval->opcode==C_AND && | |
96 np->rval->opcode==C_AND) | |
97 do | |
98 { | |
99 if(!nodessame(np->lval->lval,np->rval->rval)) break; | |
100 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
101 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
102 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
103 OPTING(distribrl); | |
104 tp=newnode(); | |
105 MAYBENEWNODE(tp); | |
106 tp->opcode=C_AND; | |
107 tp->width=32; | |
108 MAYBENEWNODE(tp->lval); | |
109 tp->lval->opcode=C_AND; | |
110 tp->lval->width=32; | |
111 tp->lval->lval=np->lval->rval; | |
112 np->lval->rval=0; | |
113 tp->lval->rval=np->rval->lval; | |
114 np->rval->lval=0; | |
115 tp->rval=np->rval->rval; | |
116 np->rval->rval=0; | |
117 nodefree(np->lval); nodefree(np->rval); | |
118 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
119 } while(0); | |
120 | |
121 checknodeactbits(np); | |
122 if(np->opcode==C_AND && | |
123 np->lval->opcode==C_OR && | |
124 np->rval->opcode==C_OR) | |
125 do | |
126 { | |
127 if(!nodessame(np->lval->lval,np->rval->rval)) break; | |
128 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
129 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
130 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
131 OPTING(distribrl); | |
132 tp=newnode(); | |
133 MAYBENEWNODE(tp); | |
134 tp->opcode=C_OR; | |
135 tp->width=32; | |
136 MAYBENEWNODE(tp->lval); | |
137 tp->lval->opcode=C_AND; | |
138 tp->lval->width=32; | |
139 tp->lval->lval=np->lval->rval; | |
140 np->lval->rval=0; | |
141 tp->lval->rval=np->rval->lval; | |
142 np->rval->lval=0; | |
143 tp->rval=np->rval->rval; | |
144 np->rval->rval=0; | |
145 nodefree(np->lval); nodefree(np->rval); | |
146 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
147 } while(0); | |
148 | |
149 checknodeactbits(np); | |
150 if(np->opcode==C_OR && | |
151 np->lval->opcode==C_AND && | |
152 np->rval->opcode==C_AND) | |
153 do | |
154 { | |
155 if(!nodessame(np->lval->lval,np->rval->rval)) break; | |
156 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
157 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
158 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
159 OPTING(distribrl); | |
160 tp=newnode(); | |
161 MAYBENEWNODE(tp); | |
162 tp->opcode=C_AND; | |
163 tp->width=32; | |
164 MAYBENEWNODE(tp->lval); | |
165 tp->lval->opcode=C_OR; | |
166 tp->lval->width=32; | |
167 tp->lval->lval=np->lval->rval; | |
168 np->lval->rval=0; | |
169 tp->lval->rval=np->rval->lval; | |
170 np->rval->lval=0; | |
171 tp->rval=np->rval->rval; | |
172 np->rval->rval=0; | |
173 nodefree(np->lval); nodefree(np->rval); | |
174 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
175 } while(0); | |
176 | |
177 checknodeactbits(np); | |
178 if(np->opcode==C_OR && | |
179 np->lval->opcode==C_OR && | |
180 np->rval->opcode==C_OR) | |
181 do | |
182 { | |
183 if(!nodessame(np->lval->lval,np->rval->rval)) break; | |
184 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
185 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
186 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
187 OPTING(distribrl); | |
188 tp=newnode(); | |
189 MAYBENEWNODE(tp); | |
190 tp->opcode=C_OR; | |
191 tp->width=32; | |
192 MAYBENEWNODE(tp->lval); | |
193 tp->lval->opcode=C_OR; | |
194 tp->lval->width=32; | |
195 tp->lval->lval=np->lval->rval; | |
196 np->lval->rval=0; | |
197 tp->lval->rval=np->rval->lval; | |
198 np->rval->lval=0; | |
199 tp->rval=np->rval->rval; | |
200 np->rval->rval=0; | |
201 nodefree(np->lval); nodefree(np->rval); | |
202 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
203 } while(0); | |
204 | |
205 checknodeactbits(np); | |
206 if(np->opcode==C_XOR && | |
207 np->lval->opcode==C_AND && | |
208 np->rval->opcode==C_AND) | |
209 do | |
210 { | |
211 if(!nodessame(np->lval->lval,np->rval->rval)) break; | |
212 x3=np->rval->rval->constant; c3=np->rval->rval->optdata; | |
213 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
214 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
215 OPTING(distribrl); | |
216 tp=newnode(); | |
217 MAYBENEWNODE(tp); | |
218 tp->opcode=C_AND; | |
219 tp->width=32; | |
220 MAYBENEWNODE(tp->lval); | |
221 tp->lval->opcode=C_XOR; | |
222 tp->lval->width=32; | |
223 tp->lval->lval=np->lval->rval; | |
224 np->lval->rval=0; | |
225 tp->lval->rval=np->rval->lval; | |
226 np->rval->lval=0; | |
227 tp->rval=np->rval->rval; | |
228 np->rval->rval=0; | |
229 nodefree(np->lval); nodefree(np->rval); | |
230 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
231 } while(0); | |
232 | |
233 checknodeactbits(np); | |
234 if(np->opcode==C_AND && | |
235 np->lval->opcode==C_AND && | |
236 np->rval->opcode==C_AND) | |
237 do | |
238 { | |
239 if(!nodessame(np->lval->rval,np->rval->lval)) break; | |
240 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
241 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
242 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
243 OPTING(distriblr); | |
244 tp=newnode(); | |
245 MAYBENEWNODE(tp); | |
246 tp->opcode=C_AND; | |
247 tp->width=32; | |
248 MAYBENEWNODE(tp->lval); | |
249 tp->lval->opcode=C_AND; | |
250 tp->lval->width=32; | |
251 tp->lval->lval=np->lval->lval; | |
252 np->lval->lval=0; | |
253 tp->lval->rval=np->rval->rval; | |
254 np->rval->rval=0; | |
255 tp->rval=np->rval->lval; | |
256 np->rval->lval=0; | |
257 nodefree(np->lval); nodefree(np->rval); | |
258 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
259 } while(0); | |
260 | |
261 checknodeactbits(np); | |
262 if(np->opcode==C_AND && | |
263 np->lval->opcode==C_OR && | |
264 np->rval->opcode==C_OR) | |
265 do | |
266 { | |
267 if(!nodessame(np->lval->rval,np->rval->lval)) break; | |
268 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
269 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
270 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
271 OPTING(distriblr); | |
272 tp=newnode(); | |
273 MAYBENEWNODE(tp); | |
274 tp->opcode=C_OR; | |
275 tp->width=32; | |
276 MAYBENEWNODE(tp->lval); | |
277 tp->lval->opcode=C_AND; | |
278 tp->lval->width=32; | |
279 tp->lval->lval=np->lval->lval; | |
280 np->lval->lval=0; | |
281 tp->lval->rval=np->rval->rval; | |
282 np->rval->rval=0; | |
283 tp->rval=np->rval->lval; | |
284 np->rval->lval=0; | |
285 nodefree(np->lval); nodefree(np->rval); | |
286 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
287 } while(0); | |
288 | |
289 checknodeactbits(np); | |
290 if(np->opcode==C_OR && | |
291 np->lval->opcode==C_AND && | |
292 np->rval->opcode==C_AND) | |
293 do | |
294 { | |
295 if(!nodessame(np->lval->rval,np->rval->lval)) break; | |
296 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
297 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
298 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
299 OPTING(distriblr); | |
300 tp=newnode(); | |
301 MAYBENEWNODE(tp); | |
302 tp->opcode=C_AND; | |
303 tp->width=32; | |
304 MAYBENEWNODE(tp->lval); | |
305 tp->lval->opcode=C_OR; | |
306 tp->lval->width=32; | |
307 tp->lval->lval=np->lval->lval; | |
308 np->lval->lval=0; | |
309 tp->lval->rval=np->rval->rval; | |
310 np->rval->rval=0; | |
311 tp->rval=np->rval->lval; | |
312 np->rval->lval=0; | |
313 nodefree(np->lval); nodefree(np->rval); | |
314 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
315 } while(0); | |
316 | |
317 checknodeactbits(np); | |
318 if(np->opcode==C_OR && | |
319 np->lval->opcode==C_OR && | |
320 np->rval->opcode==C_OR) | |
321 do | |
322 { | |
323 if(!nodessame(np->lval->rval,np->rval->lval)) break; | |
324 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
325 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
326 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
327 OPTING(distriblr); | |
328 tp=newnode(); | |
329 MAYBENEWNODE(tp); | |
330 tp->opcode=C_OR; | |
331 tp->width=32; | |
332 MAYBENEWNODE(tp->lval); | |
333 tp->lval->opcode=C_OR; | |
334 tp->lval->width=32; | |
335 tp->lval->lval=np->lval->lval; | |
336 np->lval->lval=0; | |
337 tp->lval->rval=np->rval->rval; | |
338 np->rval->rval=0; | |
339 tp->rval=np->rval->lval; | |
340 np->rval->lval=0; | |
341 nodefree(np->lval); nodefree(np->rval); | |
342 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
343 } while(0); | |
344 | |
345 checknodeactbits(np); | |
346 if(np->opcode==C_XOR && | |
347 np->lval->opcode==C_AND && | |
348 np->rval->opcode==C_AND) | |
349 do | |
350 { | |
351 if(!nodessame(np->lval->rval,np->rval->lval)) break; | |
352 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
353 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
354 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
355 OPTING(distriblr); | |
356 tp=newnode(); | |
357 MAYBENEWNODE(tp); | |
358 tp->opcode=C_AND; | |
359 tp->width=32; | |
360 MAYBENEWNODE(tp->lval); | |
361 tp->lval->opcode=C_XOR; | |
362 tp->lval->width=32; | |
363 tp->lval->lval=np->lval->lval; | |
364 np->lval->lval=0; | |
365 tp->lval->rval=np->rval->rval; | |
366 np->rval->rval=0; | |
367 tp->rval=np->rval->lval; | |
368 np->rval->lval=0; | |
369 nodefree(np->lval); nodefree(np->rval); | |
370 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
371 } while(0); | |
372 | |
373 checknodeactbits(np); | |
374 if(np->opcode==C_AND && | |
375 np->lval->opcode==C_AND && | |
376 np->rval->opcode==C_AND) | |
377 do | |
378 { | |
379 if(!nodessame(np->lval->lval,np->rval->lval)) break; | |
380 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
381 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
382 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
383 OPTING(distribrr); | |
384 tp=newnode(); | |
385 MAYBENEWNODE(tp); | |
386 tp->opcode=C_AND; | |
387 tp->width=32; | |
388 MAYBENEWNODE(tp->lval); | |
389 tp->lval->opcode=C_AND; | |
390 tp->lval->width=32; | |
391 tp->lval->lval=np->lval->rval; | |
392 np->lval->rval=0; | |
393 tp->lval->rval=np->rval->rval; | |
394 np->rval->rval=0; | |
395 tp->rval=np->rval->lval; | |
396 np->rval->lval=0; | |
397 nodefree(np->lval); nodefree(np->rval); | |
398 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
399 } while(0); | |
400 | |
401 checknodeactbits(np); | |
402 if(np->opcode==C_AND && | |
403 np->lval->opcode==C_OR && | |
404 np->rval->opcode==C_OR) | |
405 do | |
406 { | |
407 if(!nodessame(np->lval->lval,np->rval->lval)) break; | |
408 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
409 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
410 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
411 OPTING(distribrr); | |
412 tp=newnode(); | |
413 MAYBENEWNODE(tp); | |
414 tp->opcode=C_OR; | |
415 tp->width=32; | |
416 MAYBENEWNODE(tp->lval); | |
417 tp->lval->opcode=C_AND; | |
418 tp->lval->width=32; | |
419 tp->lval->lval=np->lval->rval; | |
420 np->lval->rval=0; | |
421 tp->lval->rval=np->rval->rval; | |
422 np->rval->rval=0; | |
423 tp->rval=np->rval->lval; | |
424 np->rval->lval=0; | |
425 nodefree(np->lval); nodefree(np->rval); | |
426 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
427 } while(0); | |
428 | |
429 checknodeactbits(np); | |
430 if(np->opcode==C_OR && | |
431 np->lval->opcode==C_AND && | |
432 np->rval->opcode==C_AND) | |
433 do | |
434 { | |
435 if(!nodessame(np->lval->lval,np->rval->lval)) break; | |
436 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
437 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
438 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
439 OPTING(distribrr); | |
440 tp=newnode(); | |
441 MAYBENEWNODE(tp); | |
442 tp->opcode=C_AND; | |
443 tp->width=32; | |
444 MAYBENEWNODE(tp->lval); | |
445 tp->lval->opcode=C_OR; | |
446 tp->lval->width=32; | |
447 tp->lval->lval=np->lval->rval; | |
448 np->lval->rval=0; | |
449 tp->lval->rval=np->rval->rval; | |
450 np->rval->rval=0; | |
451 tp->rval=np->rval->lval; | |
452 np->rval->lval=0; | |
453 nodefree(np->lval); nodefree(np->rval); | |
454 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
455 } while(0); | |
456 | |
457 checknodeactbits(np); | |
458 if(np->opcode==C_OR && | |
459 np->lval->opcode==C_OR && | |
460 np->rval->opcode==C_OR) | |
461 do | |
462 { | |
463 if(!nodessame(np->lval->lval,np->rval->lval)) break; | |
464 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
465 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
466 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
467 OPTING(distribrr); | |
468 tp=newnode(); | |
469 MAYBENEWNODE(tp); | |
470 tp->opcode=C_OR; | |
471 tp->width=32; | |
472 MAYBENEWNODE(tp->lval); | |
473 tp->lval->opcode=C_OR; | |
474 tp->lval->width=32; | |
475 tp->lval->lval=np->lval->rval; | |
476 np->lval->rval=0; | |
477 tp->lval->rval=np->rval->rval; | |
478 np->rval->rval=0; | |
479 tp->rval=np->rval->lval; | |
480 np->rval->lval=0; | |
481 nodefree(np->lval); nodefree(np->rval); | |
482 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
483 } while(0); | |
484 | |
485 checknodeactbits(np); | |
486 if(np->opcode==C_XOR && | |
487 np->lval->opcode==C_AND && | |
488 np->rval->opcode==C_AND) | |
489 do | |
490 { | |
491 if(!nodessame(np->lval->lval,np->rval->lval)) break; | |
492 x3=np->rval->lval->constant; c3=np->rval->lval->optdata; | |
493 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
494 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
495 OPTING(distribrr); | |
496 tp=newnode(); | |
497 MAYBENEWNODE(tp); | |
498 tp->opcode=C_AND; | |
499 tp->width=32; | |
500 MAYBENEWNODE(tp->lval); | |
501 tp->lval->opcode=C_XOR; | |
502 tp->lval->width=32; | |
503 tp->lval->lval=np->lval->rval; | |
504 np->lval->rval=0; | |
505 tp->lval->rval=np->rval->rval; | |
506 np->rval->rval=0; | |
507 tp->rval=np->rval->lval; | |
508 np->rval->lval=0; | |
509 nodefree(np->lval); nodefree(np->rval); | |
510 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
511 } while(0); | |
512 | |
513 checknodeactbits(np); | |
514 if(np->opcode==C_AND && | |
515 np->lval->opcode==C_LOGICALNOT && | |
516 np->rval->opcode==C_LOGICALNOT) | |
517 do | |
518 { | |
519 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
520 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
521 OPTING(distribunary); | |
522 tp=newnode(); | |
523 MAYBENEWNODE(tp); | |
524 tp->opcode=C_LOGICALNOT; | |
525 tp->width=16; | |
526 MAYBENEWNODE(tp->rval); | |
527 tp->rval->opcode=C_OR; | |
528 tp->rval->width=32; | |
529 tp->rval->lval=np->lval->rval; | |
530 np->lval->rval=0; | |
531 tp->rval->rval=np->rval->rval; | |
532 np->rval->rval=0; | |
533 nodefree(np->lval); nodefree(np->rval); | |
534 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
535 } while(0); | |
536 | |
537 checknodeactbits(np); | |
538 if(np->opcode==C_OR && | |
539 np->lval->opcode==C_AND && | |
540 np->lval->lval->opcode==C_XOR && | |
541 np->rval->opcode==C_AND) | |
542 do | |
543 { | |
544 x4=np->rval->rval->constant; c4=np->rval->rval->optdata; | |
545 x3=np->lval->rval->constant; c3=np->lval->rval->optdata; | |
546 x2=np->lval->lval->rval->constant; c2=np->lval->lval->rval->optdata; | |
547 if(!nodessame(np->lval->lval->lval,np->rval->lval)) break; | |
548 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
549 x=x4; c=c4; if(!((c&c3)==0)) break; | |
550 OPTING(distribhalfxoroveror1); | |
551 tp=newnode(); | |
552 MAYBENEWNODE(tp); | |
553 tp->opcode=C_AND; | |
554 tp->width=32; | |
555 MAYBENEWNODE(tp->lval); | |
556 tp->lval->opcode=C_XOR; | |
557 tp->lval->width=32; | |
558 tp->lval->lval=np->rval->lval; | |
559 np->rval->lval=0; | |
560 tp->lval->rval=np->lval->lval->rval; | |
561 np->lval->lval->rval=0; | |
562 MAYBENEWNODE(tp->rval); | |
563 tp->rval->opcode=C_OR; | |
564 tp->rval->width=32; | |
565 tp->rval->lval=np->lval->rval; | |
566 np->lval->rval=0; | |
567 tp->rval->rval=np->rval->rval; | |
568 np->rval->rval=0; | |
569 nodefree(np->lval); nodefree(np->rval); | |
570 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
571 } while(0); | |
572 | |
573 c=c1=c2=c3=c4=c5=c6=c7=c8=c9=0; | |
574 x=x1=x2=x3=x4=x5=x6=x7=x8=x9=r=0; | |
575 if(c+c1+c2+c3+c4+c5+c6+c7+c8+c9+r+ | |
576 x+x1+x2+x3+x4+x5+x6+x7+x8+x9) raise(SIGSEGV); | |
577 return opted; | |
578 } |