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