996
|
1 /* Automatically generated output, edit source and recompile to change */
|
|
2 #include "oil.h"
|
|
3 int optimize_pass1_a(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_OR &&
|
|
11 np->lval->opcode==C_AND &&
|
|
12 np->rval->opcode==C_AND &&
|
|
13 np->rval->lval->opcode==C_OR)
|
|
14 do
|
|
15 {
|
|
16 x4=np->lval->rval->constant; c4=np->lval->rval->optdata;
|
|
17 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
18 x2=np->rval->lval->lval->constant; c2=np->rval->lval->lval->optdata;
|
|
19 if(!nodessame(np->lval->lval,np->rval->lval->rval)) break;
|
|
20 x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
|
|
21 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
22 OPTING(distribhalforoveror1);
|
|
23 tp=newnode();
|
|
24 MAYBENEWNODE(tp);
|
|
25 tp->opcode=C_AND;
|
|
26 tp->width=32;
|
|
27 MAYBENEWNODE(tp->lval);
|
|
28 tp->lval->opcode=C_OR;
|
|
29 tp->lval->width=32;
|
|
30 tp->lval->lval=np->rval->lval->rval;
|
|
31 np->rval->lval->rval=0;
|
|
32 tp->lval->rval=np->rval->lval->lval;
|
|
33 np->rval->lval->lval=0;
|
|
34 MAYBENEWNODE(tp->rval);
|
|
35 tp->rval->opcode=C_OR;
|
|
36 tp->rval->width=32;
|
|
37 tp->rval->lval=np->rval->rval;
|
|
38 np->rval->rval=0;
|
|
39 tp->rval->rval=np->lval->rval;
|
|
40 np->lval->rval=0;
|
|
41 nodefree(np->lval); nodefree(np->rval);
|
|
42 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
43 } while(0);
|
|
44
|
|
45 checknodeactbits(np);
|
|
46 if(np->opcode==C_OR &&
|
|
47 np->lval->opcode==C_AND &&
|
|
48 np->lval->lval->opcode==C_OR &&
|
|
49 np->rval->opcode==C_AND)
|
|
50 do
|
|
51 {
|
|
52 x4=np->rval->lval->constant; c4=np->rval->lval->optdata;
|
|
53 x3=np->lval->rval->constant; c3=np->lval->rval->optdata;
|
|
54 x2=np->lval->lval->lval->constant; c2=np->lval->lval->lval->optdata;
|
|
55 if(!nodessame(np->lval->lval->rval,np->rval->rval)) break;
|
|
56 x1=np->rval->rval->constant; c1=np->rval->rval->optdata;
|
|
57 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
58 OPTING(distribhalforoveror1);
|
|
59 tp=newnode();
|
|
60 MAYBENEWNODE(tp);
|
|
61 tp->opcode=C_AND;
|
|
62 tp->width=32;
|
|
63 MAYBENEWNODE(tp->lval);
|
|
64 tp->lval->opcode=C_OR;
|
|
65 tp->lval->width=32;
|
|
66 tp->lval->lval=np->rval->rval;
|
|
67 np->rval->rval=0;
|
|
68 tp->lval->rval=np->lval->lval->lval;
|
|
69 np->lval->lval->lval=0;
|
|
70 MAYBENEWNODE(tp->rval);
|
|
71 tp->rval->opcode=C_OR;
|
|
72 tp->rval->width=32;
|
|
73 tp->rval->lval=np->lval->rval;
|
|
74 np->lval->rval=0;
|
|
75 tp->rval->rval=np->rval->lval;
|
|
76 np->rval->lval=0;
|
|
77 nodefree(np->lval); nodefree(np->rval);
|
|
78 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
79 } while(0);
|
|
80
|
|
81 checknodeactbits(np);
|
|
82 if(np->opcode==C_OR &&
|
|
83 np->lval->opcode==C_AND &&
|
|
84 np->rval->opcode==C_AND &&
|
|
85 np->rval->lval->opcode==C_OR)
|
|
86 do
|
|
87 {
|
|
88 x4=np->lval->lval->constant; c4=np->lval->lval->optdata;
|
|
89 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
90 x2=np->rval->lval->lval->constant; c2=np->rval->lval->lval->optdata;
|
|
91 if(!nodessame(np->lval->rval,np->rval->lval->rval)) break;
|
|
92 x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
|
|
93 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
94 OPTING(distribhalforoveror1);
|
|
95 tp=newnode();
|
|
96 MAYBENEWNODE(tp);
|
|
97 tp->opcode=C_AND;
|
|
98 tp->width=32;
|
|
99 MAYBENEWNODE(tp->lval);
|
|
100 tp->lval->opcode=C_OR;
|
|
101 tp->lval->width=32;
|
|
102 tp->lval->lval=np->rval->lval->rval;
|
|
103 np->rval->lval->rval=0;
|
|
104 tp->lval->rval=np->rval->lval->lval;
|
|
105 np->rval->lval->lval=0;
|
|
106 MAYBENEWNODE(tp->rval);
|
|
107 tp->rval->opcode=C_OR;
|
|
108 tp->rval->width=32;
|
|
109 tp->rval->lval=np->rval->rval;
|
|
110 np->rval->rval=0;
|
|
111 tp->rval->rval=np->lval->lval;
|
|
112 np->lval->lval=0;
|
|
113 nodefree(np->lval); nodefree(np->rval);
|
|
114 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
115 } while(0);
|
|
116
|
|
117 checknodeactbits(np);
|
|
118 if(np->opcode==C_OR &&
|
|
119 np->lval->opcode==C_AND &&
|
|
120 np->lval->rval->opcode==C_OR &&
|
|
121 np->rval->opcode==C_AND)
|
|
122 do
|
|
123 {
|
|
124 x4=np->rval->rval->constant; c4=np->rval->rval->optdata;
|
|
125 x3=np->lval->lval->constant; c3=np->lval->lval->optdata;
|
|
126 x2=np->lval->rval->lval->constant; c2=np->lval->rval->lval->optdata;
|
|
127 if(!nodessame(np->lval->rval->rval,np->rval->lval)) break;
|
|
128 x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
|
|
129 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
130 OPTING(distribhalforoveror1);
|
|
131 tp=newnode();
|
|
132 MAYBENEWNODE(tp);
|
|
133 tp->opcode=C_AND;
|
|
134 tp->width=32;
|
|
135 MAYBENEWNODE(tp->lval);
|
|
136 tp->lval->opcode=C_OR;
|
|
137 tp->lval->width=32;
|
|
138 tp->lval->lval=np->rval->lval;
|
|
139 np->rval->lval=0;
|
|
140 tp->lval->rval=np->lval->rval->lval;
|
|
141 np->lval->rval->lval=0;
|
|
142 MAYBENEWNODE(tp->rval);
|
|
143 tp->rval->opcode=C_OR;
|
|
144 tp->rval->width=32;
|
|
145 tp->rval->lval=np->lval->lval;
|
|
146 np->lval->lval=0;
|
|
147 tp->rval->rval=np->rval->rval;
|
|
148 np->rval->rval=0;
|
|
149 nodefree(np->lval); nodefree(np->rval);
|
|
150 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
151 } while(0);
|
|
152
|
|
153 checknodeactbits(np);
|
|
154 if(np->opcode==C_OR &&
|
|
155 np->lval->opcode==C_AND &&
|
|
156 np->rval->opcode==C_AND &&
|
|
157 np->rval->rval->opcode==C_OR)
|
|
158 do
|
|
159 {
|
|
160 x4=np->lval->rval->constant; c4=np->lval->rval->optdata;
|
|
161 x3=np->rval->lval->constant; c3=np->rval->lval->optdata;
|
|
162 x2=np->rval->rval->lval->constant; c2=np->rval->rval->lval->optdata;
|
|
163 if(!nodessame(np->lval->lval,np->rval->rval->rval)) break;
|
|
164 x1=np->rval->rval->rval->constant; c1=np->rval->rval->rval->optdata;
|
|
165 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
166 OPTING(distribhalforoveror1);
|
|
167 tp=newnode();
|
|
168 MAYBENEWNODE(tp);
|
|
169 tp->opcode=C_AND;
|
|
170 tp->width=32;
|
|
171 MAYBENEWNODE(tp->lval);
|
|
172 tp->lval->opcode=C_OR;
|
|
173 tp->lval->width=32;
|
|
174 tp->lval->lval=np->rval->rval->rval;
|
|
175 np->rval->rval->rval=0;
|
|
176 tp->lval->rval=np->rval->rval->lval;
|
|
177 np->rval->rval->lval=0;
|
|
178 MAYBENEWNODE(tp->rval);
|
|
179 tp->rval->opcode=C_OR;
|
|
180 tp->rval->width=32;
|
|
181 tp->rval->lval=np->rval->lval;
|
|
182 np->rval->lval=0;
|
|
183 tp->rval->rval=np->lval->rval;
|
|
184 np->lval->rval=0;
|
|
185 nodefree(np->lval); nodefree(np->rval);
|
|
186 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
187 } while(0);
|
|
188
|
|
189 checknodeactbits(np);
|
|
190 if(np->opcode==C_OR &&
|
|
191 np->lval->opcode==C_AND &&
|
|
192 np->lval->rval->opcode==C_OR &&
|
|
193 np->rval->opcode==C_AND)
|
|
194 do
|
|
195 {
|
|
196 x4=np->rval->lval->constant; c4=np->rval->lval->optdata;
|
|
197 x3=np->lval->lval->constant; c3=np->lval->lval->optdata;
|
|
198 x2=np->lval->rval->lval->constant; c2=np->lval->rval->lval->optdata;
|
|
199 if(!nodessame(np->lval->rval->rval,np->rval->rval)) break;
|
|
200 x1=np->rval->rval->constant; c1=np->rval->rval->optdata;
|
|
201 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
202 OPTING(distribhalforoveror1);
|
|
203 tp=newnode();
|
|
204 MAYBENEWNODE(tp);
|
|
205 tp->opcode=C_AND;
|
|
206 tp->width=32;
|
|
207 MAYBENEWNODE(tp->lval);
|
|
208 tp->lval->opcode=C_OR;
|
|
209 tp->lval->width=32;
|
|
210 tp->lval->lval=np->rval->rval;
|
|
211 np->rval->rval=0;
|
|
212 tp->lval->rval=np->lval->rval->lval;
|
|
213 np->lval->rval->lval=0;
|
|
214 MAYBENEWNODE(tp->rval);
|
|
215 tp->rval->opcode=C_OR;
|
|
216 tp->rval->width=32;
|
|
217 tp->rval->lval=np->lval->lval;
|
|
218 np->lval->lval=0;
|
|
219 tp->rval->rval=np->rval->lval;
|
|
220 np->rval->lval=0;
|
|
221 nodefree(np->lval); nodefree(np->rval);
|
|
222 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
223 } while(0);
|
|
224
|
|
225 checknodeactbits(np);
|
|
226 if(np->opcode==C_OR &&
|
|
227 np->lval->opcode==C_AND &&
|
|
228 np->rval->opcode==C_AND &&
|
|
229 np->rval->rval->opcode==C_OR)
|
|
230 do
|
|
231 {
|
|
232 x4=np->lval->lval->constant; c4=np->lval->lval->optdata;
|
|
233 x3=np->rval->lval->constant; c3=np->rval->lval->optdata;
|
|
234 x2=np->rval->rval->lval->constant; c2=np->rval->rval->lval->optdata;
|
|
235 if(!nodessame(np->lval->rval,np->rval->rval->rval)) break;
|
|
236 x1=np->rval->rval->rval->constant; c1=np->rval->rval->rval->optdata;
|
|
237 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
238 OPTING(distribhalforoveror1);
|
|
239 tp=newnode();
|
|
240 MAYBENEWNODE(tp);
|
|
241 tp->opcode=C_AND;
|
|
242 tp->width=32;
|
|
243 MAYBENEWNODE(tp->lval);
|
|
244 tp->lval->opcode=C_OR;
|
|
245 tp->lval->width=32;
|
|
246 tp->lval->lval=np->rval->rval->rval;
|
|
247 np->rval->rval->rval=0;
|
|
248 tp->lval->rval=np->rval->rval->lval;
|
|
249 np->rval->rval->lval=0;
|
|
250 MAYBENEWNODE(tp->rval);
|
|
251 tp->rval->opcode=C_OR;
|
|
252 tp->rval->width=32;
|
|
253 tp->rval->lval=np->rval->lval;
|
|
254 np->rval->lval=0;
|
|
255 tp->rval->rval=np->lval->lval;
|
|
256 np->lval->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_OR &&
|
|
263 np->lval->opcode==C_OR &&
|
|
264 np->lval->lval->opcode==C_AND &&
|
|
265 np->rval->opcode==C_AND)
|
|
266 do
|
|
267 {
|
|
268 x4=np->rval->rval->constant; c4=np->rval->rval->optdata;
|
|
269 x3=np->lval->lval->rval->constant; c3=np->lval->lval->rval->optdata;
|
|
270 x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
|
|
271 if(!nodessame(np->lval->lval->lval,np->rval->lval)) break;
|
|
272 x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
|
|
273 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
274 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
275 OPTING(distribhalforoveror2);
|
|
276 tp=newnode();
|
|
277 MAYBENEWNODE(tp);
|
|
278 tp->opcode=C_AND;
|
|
279 tp->width=32;
|
|
280 MAYBENEWNODE(tp->lval);
|
|
281 tp->lval->opcode=C_OR;
|
|
282 tp->lval->width=32;
|
|
283 tp->lval->lval=np->rval->lval;
|
|
284 np->rval->lval=0;
|
|
285 tp->lval->rval=np->lval->rval;
|
|
286 np->lval->rval=0;
|
|
287 MAYBENEWNODE(tp->rval);
|
|
288 tp->rval->opcode=C_OR;
|
|
289 tp->rval->width=32;
|
|
290 tp->rval->lval=np->lval->lval->rval;
|
|
291 np->lval->lval->rval=0;
|
|
292 tp->rval->rval=np->rval->rval;
|
|
293 np->rval->rval=0;
|
|
294 nodefree(np->lval); nodefree(np->rval);
|
|
295 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
296 } while(0);
|
|
297
|
|
298 checknodeactbits(np);
|
|
299 if(np->opcode==C_OR &&
|
|
300 np->lval->opcode==C_AND &&
|
|
301 np->rval->opcode==C_OR &&
|
|
302 np->rval->lval->opcode==C_AND)
|
|
303 do
|
|
304 {
|
|
305 x4=np->lval->rval->constant; c4=np->lval->rval->optdata;
|
|
306 x3=np->rval->lval->rval->constant; c3=np->rval->lval->rval->optdata;
|
|
307 x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
|
|
308 if(!nodessame(np->lval->lval,np->rval->lval->lval)) break;
|
|
309 x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
|
|
310 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
311 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
312 OPTING(distribhalforoveror2);
|
|
313 tp=newnode();
|
|
314 MAYBENEWNODE(tp);
|
|
315 tp->opcode=C_AND;
|
|
316 tp->width=32;
|
|
317 MAYBENEWNODE(tp->lval);
|
|
318 tp->lval->opcode=C_OR;
|
|
319 tp->lval->width=32;
|
|
320 tp->lval->lval=np->rval->lval->lval;
|
|
321 np->rval->lval->lval=0;
|
|
322 tp->lval->rval=np->rval->rval;
|
|
323 np->rval->rval=0;
|
|
324 MAYBENEWNODE(tp->rval);
|
|
325 tp->rval->opcode=C_OR;
|
|
326 tp->rval->width=32;
|
|
327 tp->rval->lval=np->rval->lval->rval;
|
|
328 np->rval->lval->rval=0;
|
|
329 tp->rval->rval=np->lval->rval;
|
|
330 np->lval->rval=0;
|
|
331 nodefree(np->lval); nodefree(np->rval);
|
|
332 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
333 } while(0);
|
|
334
|
|
335 checknodeactbits(np);
|
|
336 if(np->opcode==C_OR &&
|
|
337 np->lval->opcode==C_OR &&
|
|
338 np->lval->lval->opcode==C_AND &&
|
|
339 np->rval->opcode==C_AND)
|
|
340 do
|
|
341 {
|
|
342 x4=np->rval->lval->constant; c4=np->rval->lval->optdata;
|
|
343 x3=np->lval->lval->rval->constant; c3=np->lval->lval->rval->optdata;
|
|
344 x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
|
|
345 if(!nodessame(np->lval->lval->lval,np->rval->rval)) break;
|
|
346 x1=np->rval->rval->constant; c1=np->rval->rval->optdata;
|
|
347 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
348 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
349 OPTING(distribhalforoveror2);
|
|
350 tp=newnode();
|
|
351 MAYBENEWNODE(tp);
|
|
352 tp->opcode=C_AND;
|
|
353 tp->width=32;
|
|
354 MAYBENEWNODE(tp->lval);
|
|
355 tp->lval->opcode=C_OR;
|
|
356 tp->lval->width=32;
|
|
357 tp->lval->lval=np->rval->rval;
|
|
358 np->rval->rval=0;
|
|
359 tp->lval->rval=np->lval->rval;
|
|
360 np->lval->rval=0;
|
|
361 MAYBENEWNODE(tp->rval);
|
|
362 tp->rval->opcode=C_OR;
|
|
363 tp->rval->width=32;
|
|
364 tp->rval->lval=np->lval->lval->rval;
|
|
365 np->lval->lval->rval=0;
|
|
366 tp->rval->rval=np->rval->lval;
|
|
367 np->rval->lval=0;
|
|
368 nodefree(np->lval); nodefree(np->rval);
|
|
369 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
370 } while(0);
|
|
371
|
|
372 checknodeactbits(np);
|
|
373 if(np->opcode==C_OR &&
|
|
374 np->lval->opcode==C_AND &&
|
|
375 np->rval->opcode==C_OR &&
|
|
376 np->rval->lval->opcode==C_AND)
|
|
377 do
|
|
378 {
|
|
379 x4=np->lval->lval->constant; c4=np->lval->lval->optdata;
|
|
380 x3=np->rval->lval->rval->constant; c3=np->rval->lval->rval->optdata;
|
|
381 x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
|
|
382 if(!nodessame(np->lval->rval,np->rval->lval->lval)) break;
|
|
383 x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
|
|
384 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
385 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
386 OPTING(distribhalforoveror2);
|
|
387 tp=newnode();
|
|
388 MAYBENEWNODE(tp);
|
|
389 tp->opcode=C_AND;
|
|
390 tp->width=32;
|
|
391 MAYBENEWNODE(tp->lval);
|
|
392 tp->lval->opcode=C_OR;
|
|
393 tp->lval->width=32;
|
|
394 tp->lval->lval=np->rval->lval->lval;
|
|
395 np->rval->lval->lval=0;
|
|
396 tp->lval->rval=np->rval->rval;
|
|
397 np->rval->rval=0;
|
|
398 MAYBENEWNODE(tp->rval);
|
|
399 tp->rval->opcode=C_OR;
|
|
400 tp->rval->width=32;
|
|
401 tp->rval->lval=np->rval->lval->rval;
|
|
402 np->rval->lval->rval=0;
|
|
403 tp->rval->rval=np->lval->lval;
|
|
404 np->lval->lval=0;
|
|
405 nodefree(np->lval); nodefree(np->rval);
|
|
406 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
407 } while(0);
|
|
408
|
|
409 checknodeactbits(np);
|
|
410 if(np->opcode==C_OR &&
|
|
411 np->lval->opcode==C_OR &&
|
|
412 np->lval->rval->opcode==C_AND &&
|
|
413 np->rval->opcode==C_AND)
|
|
414 do
|
|
415 {
|
|
416 x4=np->rval->rval->constant; c4=np->rval->rval->optdata;
|
|
417 x3=np->lval->rval->rval->constant; c3=np->lval->rval->rval->optdata;
|
|
418 x2=np->lval->lval->constant; c2=np->lval->lval->optdata;
|
|
419 if(!nodessame(np->lval->rval->lval,np->rval->lval)) break;
|
|
420 x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
|
|
421 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
422 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
423 OPTING(distribhalforoveror2);
|
|
424 tp=newnode();
|
|
425 MAYBENEWNODE(tp);
|
|
426 tp->opcode=C_AND;
|
|
427 tp->width=32;
|
|
428 MAYBENEWNODE(tp->lval);
|
|
429 tp->lval->opcode=C_OR;
|
|
430 tp->lval->width=32;
|
|
431 tp->lval->lval=np->rval->lval;
|
|
432 np->rval->lval=0;
|
|
433 tp->lval->rval=np->lval->lval;
|
|
434 np->lval->lval=0;
|
|
435 MAYBENEWNODE(tp->rval);
|
|
436 tp->rval->opcode=C_OR;
|
|
437 tp->rval->width=32;
|
|
438 tp->rval->lval=np->lval->rval->rval;
|
|
439 np->lval->rval->rval=0;
|
|
440 tp->rval->rval=np->rval->rval;
|
|
441 np->rval->rval=0;
|
|
442 nodefree(np->lval); nodefree(np->rval);
|
|
443 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
444 } while(0);
|
|
445
|
|
446 checknodeactbits(np);
|
|
447 if(np->opcode==C_OR &&
|
|
448 np->lval->opcode==C_AND &&
|
|
449 np->rval->opcode==C_OR &&
|
|
450 np->rval->rval->opcode==C_AND)
|
|
451 do
|
|
452 {
|
|
453 x4=np->lval->rval->constant; c4=np->lval->rval->optdata;
|
|
454 x3=np->rval->rval->rval->constant; c3=np->rval->rval->rval->optdata;
|
|
455 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
456 if(!nodessame(np->lval->lval,np->rval->rval->lval)) break;
|
|
457 x1=np->rval->rval->lval->constant; c1=np->rval->rval->lval->optdata;
|
|
458 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
459 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
460 OPTING(distribhalforoveror2);
|
|
461 tp=newnode();
|
|
462 MAYBENEWNODE(tp);
|
|
463 tp->opcode=C_AND;
|
|
464 tp->width=32;
|
|
465 MAYBENEWNODE(tp->lval);
|
|
466 tp->lval->opcode=C_OR;
|
|
467 tp->lval->width=32;
|
|
468 tp->lval->lval=np->rval->rval->lval;
|
|
469 np->rval->rval->lval=0;
|
|
470 tp->lval->rval=np->rval->lval;
|
|
471 np->rval->lval=0;
|
|
472 MAYBENEWNODE(tp->rval);
|
|
473 tp->rval->opcode=C_OR;
|
|
474 tp->rval->width=32;
|
|
475 tp->rval->lval=np->rval->rval->rval;
|
|
476 np->rval->rval->rval=0;
|
|
477 tp->rval->rval=np->lval->rval;
|
|
478 np->lval->rval=0;
|
|
479 nodefree(np->lval); nodefree(np->rval);
|
|
480 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
481 } while(0);
|
|
482
|
|
483 checknodeactbits(np);
|
|
484 if(np->opcode==C_OR &&
|
|
485 np->lval->opcode==C_OR &&
|
|
486 np->lval->rval->opcode==C_AND &&
|
|
487 np->rval->opcode==C_AND)
|
|
488 do
|
|
489 {
|
|
490 x4=np->rval->lval->constant; c4=np->rval->lval->optdata;
|
|
491 x3=np->lval->rval->rval->constant; c3=np->lval->rval->rval->optdata;
|
|
492 x2=np->lval->lval->constant; c2=np->lval->lval->optdata;
|
|
493 if(!nodessame(np->lval->rval->lval,np->rval->rval)) break;
|
|
494 x1=np->rval->rval->constant; c1=np->rval->rval->optdata;
|
|
495 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
496 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
497 OPTING(distribhalforoveror2);
|
|
498 tp=newnode();
|
|
499 MAYBENEWNODE(tp);
|
|
500 tp->opcode=C_AND;
|
|
501 tp->width=32;
|
|
502 MAYBENEWNODE(tp->lval);
|
|
503 tp->lval->opcode=C_OR;
|
|
504 tp->lval->width=32;
|
|
505 tp->lval->lval=np->rval->rval;
|
|
506 np->rval->rval=0;
|
|
507 tp->lval->rval=np->lval->lval;
|
|
508 np->lval->lval=0;
|
|
509 MAYBENEWNODE(tp->rval);
|
|
510 tp->rval->opcode=C_OR;
|
|
511 tp->rval->width=32;
|
|
512 tp->rval->lval=np->lval->rval->rval;
|
|
513 np->lval->rval->rval=0;
|
|
514 tp->rval->rval=np->rval->lval;
|
|
515 np->rval->lval=0;
|
|
516 nodefree(np->lval); nodefree(np->rval);
|
|
517 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
518 } while(0);
|
|
519
|
|
520 checknodeactbits(np);
|
|
521 if(np->opcode==C_OR &&
|
|
522 np->lval->opcode==C_AND &&
|
|
523 np->rval->opcode==C_OR &&
|
|
524 np->rval->rval->opcode==C_AND)
|
|
525 do
|
|
526 {
|
|
527 x4=np->lval->lval->constant; c4=np->lval->lval->optdata;
|
|
528 x3=np->rval->rval->rval->constant; c3=np->rval->rval->rval->optdata;
|
|
529 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
530 if(!nodessame(np->lval->rval,np->rval->rval->lval)) break;
|
|
531 x1=np->rval->rval->lval->constant; c1=np->rval->rval->lval->optdata;
|
|
532 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
533 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
534 OPTING(distribhalforoveror2);
|
|
535 tp=newnode();
|
|
536 MAYBENEWNODE(tp);
|
|
537 tp->opcode=C_AND;
|
|
538 tp->width=32;
|
|
539 MAYBENEWNODE(tp->lval);
|
|
540 tp->lval->opcode=C_OR;
|
|
541 tp->lval->width=32;
|
|
542 tp->lval->lval=np->rval->rval->lval;
|
|
543 np->rval->rval->lval=0;
|
|
544 tp->lval->rval=np->rval->lval;
|
|
545 np->rval->lval=0;
|
|
546 MAYBENEWNODE(tp->rval);
|
|
547 tp->rval->opcode=C_OR;
|
|
548 tp->rval->width=32;
|
|
549 tp->rval->lval=np->rval->rval->rval;
|
|
550 np->rval->rval->rval=0;
|
|
551 tp->rval->rval=np->lval->lval;
|
|
552 np->lval->lval=0;
|
|
553 nodefree(np->lval); nodefree(np->rval);
|
|
554 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
555 } while(0);
|
|
556
|
|
557 checknodeactbits(np);
|
|
558 if(np->opcode==C_OR &&
|
|
559 np->lval->opcode==C_OR &&
|
|
560 np->lval->lval->opcode==C_AND &&
|
|
561 np->rval->opcode==C_AND)
|
|
562 do
|
|
563 {
|
|
564 x4=np->rval->rval->constant; c4=np->rval->rval->optdata;
|
|
565 x3=np->lval->lval->lval->constant; c3=np->lval->lval->lval->optdata;
|
|
566 x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
|
|
567 if(!nodessame(np->lval->lval->rval,np->rval->lval)) break;
|
|
568 x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
|
|
569 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
570 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
571 OPTING(distribhalforoveror2);
|
|
572 tp=newnode();
|
|
573 MAYBENEWNODE(tp);
|
|
574 tp->opcode=C_AND;
|
|
575 tp->width=32;
|
|
576 MAYBENEWNODE(tp->lval);
|
|
577 tp->lval->opcode=C_OR;
|
|
578 tp->lval->width=32;
|
|
579 tp->lval->lval=np->rval->lval;
|
|
580 np->rval->lval=0;
|
|
581 tp->lval->rval=np->lval->rval;
|
|
582 np->lval->rval=0;
|
|
583 MAYBENEWNODE(tp->rval);
|
|
584 tp->rval->opcode=C_OR;
|
|
585 tp->rval->width=32;
|
|
586 tp->rval->lval=np->lval->lval->lval;
|
|
587 np->lval->lval->lval=0;
|
|
588 tp->rval->rval=np->rval->rval;
|
|
589 np->rval->rval=0;
|
|
590 nodefree(np->lval); nodefree(np->rval);
|
|
591 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
592 } while(0);
|
|
593
|
|
594 checknodeactbits(np);
|
|
595 if(np->opcode==C_OR &&
|
|
596 np->lval->opcode==C_AND &&
|
|
597 np->rval->opcode==C_OR &&
|
|
598 np->rval->lval->opcode==C_AND)
|
|
599 do
|
|
600 {
|
|
601 x4=np->lval->rval->constant; c4=np->lval->rval->optdata;
|
|
602 x3=np->rval->lval->lval->constant; c3=np->rval->lval->lval->optdata;
|
|
603 x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
|
|
604 if(!nodessame(np->lval->lval,np->rval->lval->rval)) break;
|
|
605 x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
|
|
606 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
607 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
608 OPTING(distribhalforoveror2);
|
|
609 tp=newnode();
|
|
610 MAYBENEWNODE(tp);
|
|
611 tp->opcode=C_AND;
|
|
612 tp->width=32;
|
|
613 MAYBENEWNODE(tp->lval);
|
|
614 tp->lval->opcode=C_OR;
|
|
615 tp->lval->width=32;
|
|
616 tp->lval->lval=np->rval->lval->rval;
|
|
617 np->rval->lval->rval=0;
|
|
618 tp->lval->rval=np->rval->rval;
|
|
619 np->rval->rval=0;
|
|
620 MAYBENEWNODE(tp->rval);
|
|
621 tp->rval->opcode=C_OR;
|
|
622 tp->rval->width=32;
|
|
623 tp->rval->lval=np->rval->lval->lval;
|
|
624 np->rval->lval->lval=0;
|
|
625 tp->rval->rval=np->lval->rval;
|
|
626 np->lval->rval=0;
|
|
627 nodefree(np->lval); nodefree(np->rval);
|
|
628 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
629 } while(0);
|
|
630
|
|
631 checknodeactbits(np);
|
|
632 if(np->opcode==C_OR &&
|
|
633 np->lval->opcode==C_OR &&
|
|
634 np->lval->lval->opcode==C_AND &&
|
|
635 np->rval->opcode==C_AND)
|
|
636 do
|
|
637 {
|
|
638 x4=np->rval->lval->constant; c4=np->rval->lval->optdata;
|
|
639 x3=np->lval->lval->lval->constant; c3=np->lval->lval->lval->optdata;
|
|
640 x2=np->lval->rval->constant; c2=np->lval->rval->optdata;
|
|
641 if(!nodessame(np->lval->lval->rval,np->rval->rval)) break;
|
|
642 x1=np->rval->rval->constant; c1=np->rval->rval->optdata;
|
|
643 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
644 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
645 OPTING(distribhalforoveror2);
|
|
646 tp=newnode();
|
|
647 MAYBENEWNODE(tp);
|
|
648 tp->opcode=C_AND;
|
|
649 tp->width=32;
|
|
650 MAYBENEWNODE(tp->lval);
|
|
651 tp->lval->opcode=C_OR;
|
|
652 tp->lval->width=32;
|
|
653 tp->lval->lval=np->rval->rval;
|
|
654 np->rval->rval=0;
|
|
655 tp->lval->rval=np->lval->rval;
|
|
656 np->lval->rval=0;
|
|
657 MAYBENEWNODE(tp->rval);
|
|
658 tp->rval->opcode=C_OR;
|
|
659 tp->rval->width=32;
|
|
660 tp->rval->lval=np->lval->lval->lval;
|
|
661 np->lval->lval->lval=0;
|
|
662 tp->rval->rval=np->rval->lval;
|
|
663 np->rval->lval=0;
|
|
664 nodefree(np->lval); nodefree(np->rval);
|
|
665 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
666 } while(0);
|
|
667
|
|
668 checknodeactbits(np);
|
|
669 if(np->opcode==C_OR &&
|
|
670 np->lval->opcode==C_AND &&
|
|
671 np->rval->opcode==C_OR &&
|
|
672 np->rval->lval->opcode==C_AND)
|
|
673 do
|
|
674 {
|
|
675 x4=np->lval->lval->constant; c4=np->lval->lval->optdata;
|
|
676 x3=np->rval->lval->lval->constant; c3=np->rval->lval->lval->optdata;
|
|
677 x2=np->rval->rval->constant; c2=np->rval->rval->optdata;
|
|
678 if(!nodessame(np->lval->rval,np->rval->lval->rval)) break;
|
|
679 x1=np->rval->lval->rval->constant; c1=np->rval->lval->rval->optdata;
|
|
680 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
681 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
682 OPTING(distribhalforoveror2);
|
|
683 tp=newnode();
|
|
684 MAYBENEWNODE(tp);
|
|
685 tp->opcode=C_AND;
|
|
686 tp->width=32;
|
|
687 MAYBENEWNODE(tp->lval);
|
|
688 tp->lval->opcode=C_OR;
|
|
689 tp->lval->width=32;
|
|
690 tp->lval->lval=np->rval->lval->rval;
|
|
691 np->rval->lval->rval=0;
|
|
692 tp->lval->rval=np->rval->rval;
|
|
693 np->rval->rval=0;
|
|
694 MAYBENEWNODE(tp->rval);
|
|
695 tp->rval->opcode=C_OR;
|
|
696 tp->rval->width=32;
|
|
697 tp->rval->lval=np->rval->lval->lval;
|
|
698 np->rval->lval->lval=0;
|
|
699 tp->rval->rval=np->lval->lval;
|
|
700 np->lval->lval=0;
|
|
701 nodefree(np->lval); nodefree(np->rval);
|
|
702 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
703 } while(0);
|
|
704
|
|
705 checknodeactbits(np);
|
|
706 if(np->opcode==C_OR &&
|
|
707 np->lval->opcode==C_OR &&
|
|
708 np->lval->rval->opcode==C_AND &&
|
|
709 np->rval->opcode==C_AND)
|
|
710 do
|
|
711 {
|
|
712 x4=np->rval->rval->constant; c4=np->rval->rval->optdata;
|
|
713 x3=np->lval->rval->lval->constant; c3=np->lval->rval->lval->optdata;
|
|
714 x2=np->lval->lval->constant; c2=np->lval->lval->optdata;
|
|
715 if(!nodessame(np->lval->rval->rval,np->rval->lval)) break;
|
|
716 x1=np->rval->lval->constant; c1=np->rval->lval->optdata;
|
|
717 x=x2; c=c2; if(!((c&c3)==c)) break;
|
|
718 x=x4; c=c4; if(!((c&c3)==0)) break;
|
|
719 OPTING(distribhalforoveror2);
|
|
720 tp=newnode();
|
|
721 MAYBENEWNODE(tp);
|
|
722 tp->opcode=C_AND;
|
|
723 tp->width=32;
|
|
724 MAYBENEWNODE(tp->lval);
|
|
725 tp->lval->opcode=C_OR;
|
|
726 tp->lval->width=32;
|
|
727 tp->lval->lval=np->rval->lval;
|
|
728 np->rval->lval=0;
|
|
729 tp->lval->rval=np->lval->lval;
|
|
730 np->lval->lval=0;
|
|
731 MAYBENEWNODE(tp->rval);
|
|
732 tp->rval->opcode=C_OR;
|
|
733 tp->rval->width=32;
|
|
734 tp->rval->lval=np->lval->rval->lval;
|
|
735 np->lval->rval->lval=0;
|
|
736 tp->rval->rval=np->rval->rval;
|
|
737 np->rval->rval=0;
|
|
738 nodefree(np->lval); nodefree(np->rval);
|
|
739 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
740 } while(0);
|
|
741
|
|
742 c=c1=c2=c3=c4=c5=c6=c7=c8=c9=0;
|
|
743 x=x1=x2=x3=x4=x5=x6=x7=x8=x9=r=0;
|
|
744 if(c+c1+c2+c3+c4+c5+c6+c7+c8+c9+r+
|
|
745 x+x1+x2+x3+x4+x5+x6+x7+x8+x9) raise(SIGSEGV);
|
|
746 return opted;
|
|
747 }
|