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