Branch data Line data Source code
1 : : /* Generated automatically by the program `genmatch' from
2 : : a IL pattern matching and simplification description. */
3 : : #pragma GCC diagnostic push
4 : : #pragma GCC diagnostic ignored "-Wunused-variable"
5 : : #pragma GCC diagnostic ignored "-Wunused-function"
6 : :
7 : : #include "generic-match-auto.h"
8 : :
9 : : bool
10 : 95327935 : tree_zero_one_valued_p (tree t)
11 : : {
12 : 95327935 : const tree type = TREE_TYPE (t);
13 : 95327935 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 95327935 : if (TREE_SIDE_EFFECTS (t)) return false;
15 : 90082669 : {
16 : 90082669 : tree captures[1] ATTRIBUTE_UNUSED = { t };
17 : 180165338 : if (INTEGRAL_TYPE_P (type)
18 : 63559857 : && (TYPE_UNSIGNED (type)
19 : 12029226 : || TYPE_PRECISION (type) > 1)
20 : 217202365 : && wi::leu_p (tree_nonzero_bits (captures[0]), 1)
21 : : )
22 : : {
23 : 431506 : {
24 : 431506 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 28, __FILE__, __LINE__, false);
25 : 431506 : return true;
26 : : }
27 : : }
28 : : }
29 : 89651163 : switch (TREE_CODE (t))
30 : : {
31 : 337957 : case BIT_AND_EXPR:
32 : 337957 : {
33 : 337957 : tree _p0 = TREE_OPERAND (t, 0);
34 : 337957 : tree _p1 = TREE_OPERAND (t, 1);
35 : 337957 : if (integer_onep (_p1))
36 : : {
37 : 0 : {
38 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
39 : 0 : if (INTEGRAL_TYPE_P (type)
40 : : )
41 : : {
42 : 0 : {
43 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 29, __FILE__, __LINE__, false);
44 : 0 : return true;
45 : : }
46 : : }
47 : : }
48 : : }
49 : 337957 : if (integer_onep (_p0))
50 : : {
51 : 0 : {
52 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p1 };
53 : 0 : if (INTEGRAL_TYPE_P (type)
54 : : )
55 : : {
56 : 0 : {
57 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 29, __FILE__, __LINE__, false);
58 : 0 : return true;
59 : : }
60 : : }
61 : : }
62 : : }
63 : : break;
64 : : }
65 : 42594422 : CASE_CONVERT:
66 : 42594422 : {
67 : 42594422 : tree _p0 = TREE_OPERAND (t, 0);
68 : 42594422 : {
69 : 42594422 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
70 : 85181902 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
71 : 37904333 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
72 : 33604579 : || TYPE_PRECISION (TREE_TYPE (captures[1])) > 1)
73 : 37904333 : && INTEGRAL_TYPE_P (type)
74 : 37904319 : && (TYPE_UNSIGNED (type)
75 : 1805756 : || TYPE_PRECISION (type) > 1)
76 : 123093163 : && wi::leu_p (tree_nonzero_bits (captures[1]), 1)
77 : : )
78 : : {
79 : 0 : {
80 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 30, __FILE__, __LINE__, false);
81 : 0 : return true;
82 : : }
83 : : }
84 : : }
85 : : break;
86 : : }
87 : 89651163 : default:;
88 : : }
89 : 89651163 : if (tree_truth_valued_p (t))
90 : : {
91 : 75341 : {
92 : 75341 : tree captures[1] ATTRIBUTE_UNUSED = { t };
93 : 75341 : if (INTEGRAL_TYPE_P (type)
94 : 75341 : && (TYPE_UNSIGNED (type)
95 : 75261 : || TYPE_PRECISION (type) > 1)
96 : : )
97 : : {
98 : 75323 : {
99 : 75323 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 31, __FILE__, __LINE__, false);
100 : 75323 : return true;
101 : : }
102 : : }
103 : : }
104 : : }
105 : : return false;
106 : : }
107 : :
108 : : bool
109 : 0 : tree_signed_integer_sat_val (tree t, tree *res_ops)
110 : : {
111 : 0 : const tree type = TREE_TYPE (t);
112 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
113 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
114 : 0 : switch (TREE_CODE (t))
115 : : {
116 : 0 : case BIT_XOR_EXPR:
117 : 0 : {
118 : 0 : tree _p0 = TREE_OPERAND (t, 0);
119 : 0 : tree _p1 = TREE_OPERAND (t, 1);
120 : 0 : switch (TREE_CODE (_p0))
121 : : {
122 : 0 : case NEGATE_EXPR:
123 : 0 : {
124 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
125 : 0 : switch (TREE_CODE (_q20))
126 : : {
127 : 0 : CASE_CONVERT:
128 : 0 : {
129 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
130 : 0 : switch (TREE_CODE (_q30))
131 : : {
132 : 0 : case LT_EXPR:
133 : 0 : {
134 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
135 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
136 : 0 : if (integer_zerop (_q41))
137 : : {
138 : 0 : if (tree_max_value (_p1))
139 : : {
140 : 0 : {
141 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
142 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
143 : : )
144 : : {
145 : 0 : {
146 : 0 : res_ops[0] = captures[0];
147 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, false);
148 : 0 : return true;
149 : : }
150 : : }
151 : : }
152 : : }
153 : : }
154 : : break;
155 : : }
156 : : default:;
157 : : }
158 : : break;
159 : : }
160 : : default:;
161 : : }
162 : : break;
163 : : }
164 : 0 : default:;
165 : : }
166 : 0 : {
167 : 0 : tree _p0_pops[1];
168 : 0 : if (tree_nop_convert (_p0, _p0_pops))
169 : : {
170 : 0 : tree _q20 = _p0_pops[0];
171 : 0 : switch (TREE_CODE (_q20))
172 : : {
173 : 0 : case NEGATE_EXPR:
174 : 0 : {
175 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
176 : 0 : {
177 : 0 : tree _q30_pops[1];
178 : 0 : if (tree_nop_convert (_q30, _q30_pops))
179 : : {
180 : 0 : tree _q40 = _q30_pops[0];
181 : 0 : switch (TREE_CODE (_q40))
182 : : {
183 : 0 : CASE_CONVERT:
184 : 0 : {
185 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
186 : 0 : switch (TREE_CODE (_q50))
187 : : {
188 : 0 : case LT_EXPR:
189 : 0 : {
190 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
191 : 0 : tree _q61 = TREE_OPERAND (_q50, 1);
192 : 0 : if (integer_zerop (_q61))
193 : : {
194 : 0 : if (tree_max_value (_p1))
195 : : {
196 : 0 : {
197 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
198 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
199 : : )
200 : : {
201 : 0 : {
202 : 0 : res_ops[0] = captures[0];
203 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, false);
204 : 0 : return true;
205 : : }
206 : : }
207 : : }
208 : : }
209 : : }
210 : : break;
211 : : }
212 : : default:;
213 : : }
214 : : break;
215 : : }
216 : : default:;
217 : : }
218 : : }
219 : : }
220 : 0 : break;
221 : : }
222 : : default:;
223 : : }
224 : : }
225 : : }
226 : 0 : if (tree_max_value (_p0))
227 : : {
228 : 0 : switch (TREE_CODE (_p1))
229 : : {
230 : 0 : case NEGATE_EXPR:
231 : 0 : {
232 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
233 : 0 : switch (TREE_CODE (_q30))
234 : : {
235 : 0 : CASE_CONVERT:
236 : 0 : {
237 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
238 : 0 : switch (TREE_CODE (_q40))
239 : : {
240 : 0 : case LT_EXPR:
241 : 0 : {
242 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
243 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
244 : 0 : if (integer_zerop (_q51))
245 : : {
246 : 0 : {
247 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
248 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
249 : : )
250 : : {
251 : 0 : {
252 : 0 : res_ops[0] = captures[0];
253 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, false);
254 : 0 : return true;
255 : : }
256 : : }
257 : : }
258 : : }
259 : : break;
260 : : }
261 : : default:;
262 : : }
263 : : break;
264 : : }
265 : : default:;
266 : : }
267 : : break;
268 : : }
269 : 0 : default:;
270 : : }
271 : 0 : {
272 : 0 : tree _p1_pops[1];
273 : 0 : if (tree_nop_convert (_p1, _p1_pops))
274 : : {
275 : 0 : tree _q30 = _p1_pops[0];
276 : 0 : switch (TREE_CODE (_q30))
277 : : {
278 : 0 : case NEGATE_EXPR:
279 : 0 : {
280 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
281 : 0 : {
282 : 0 : tree _q40_pops[1];
283 : 0 : if (tree_nop_convert (_q40, _q40_pops))
284 : : {
285 : 0 : tree _q50 = _q40_pops[0];
286 : 0 : switch (TREE_CODE (_q50))
287 : : {
288 : 0 : CASE_CONVERT:
289 : 0 : {
290 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
291 : 0 : switch (TREE_CODE (_q60))
292 : : {
293 : 0 : case LT_EXPR:
294 : 0 : {
295 : 0 : tree _q70 = TREE_OPERAND (_q60, 0);
296 : 0 : tree _q71 = TREE_OPERAND (_q60, 1);
297 : 0 : if (integer_zerop (_q71))
298 : : {
299 : 0 : {
300 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
301 : 0 : if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type)
302 : : )
303 : : {
304 : 0 : {
305 : 0 : res_ops[0] = captures[0];
306 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, false);
307 : 0 : return true;
308 : : }
309 : : }
310 : : }
311 : : }
312 : : break;
313 : : }
314 : : default:;
315 : : }
316 : : break;
317 : : }
318 : : default:;
319 : : }
320 : : }
321 : : }
322 : 0 : break;
323 : : }
324 : : default:;
325 : : }
326 : : }
327 : : }
328 : : }
329 : : break;
330 : : }
331 : : default:;
332 : : }
333 : : return false;
334 : : }
335 : :
336 : : bool
337 : 0 : tree_compositional_complex (tree t)
338 : : {
339 : 0 : const tree type = TREE_TYPE (t);
340 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
341 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
342 : 0 : switch (TREE_CODE (t))
343 : : {
344 : 0 : CASE_CONVERT:
345 : 0 : {
346 : 0 : tree _p0 = TREE_OPERAND (t, 0);
347 : 0 : switch (TREE_CODE (_p0))
348 : : {
349 : 0 : case COMPLEX_EXPR:
350 : 0 : {
351 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
352 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
353 : 0 : {
354 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
355 : 0 : {
356 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 94, __FILE__, __LINE__, false);
357 : 0 : return true;
358 : : }
359 : : }
360 : : break;
361 : : }
362 : : default:;
363 : : }
364 : : break;
365 : : }
366 : 0 : case COMPLEX_EXPR:
367 : 0 : {
368 : 0 : tree _p0 = TREE_OPERAND (t, 0);
369 : 0 : tree _p1 = TREE_OPERAND (t, 1);
370 : 0 : {
371 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
372 : 0 : {
373 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 94, __FILE__, __LINE__, false);
374 : 0 : return true;
375 : : }
376 : : }
377 : : break;
378 : : }
379 : : default:;
380 : : }
381 : : return false;
382 : : }
383 : :
384 : : bool
385 : 0 : tree_float_value_p (tree t)
386 : : {
387 : 0 : const tree type = TREE_TYPE (t);
388 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
389 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
390 : 0 : {
391 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
392 : 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == float_type_node
393 : : )
394 : : {
395 : 0 : {
396 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, false);
397 : 0 : return true;
398 : : }
399 : : }
400 : : }
401 : : return false;
402 : : }
403 : :
404 : : bool
405 : 0 : tree_ctz_table_index (tree t, tree *res_ops)
406 : : {
407 : 0 : const tree type = TREE_TYPE (t);
408 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
409 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
410 : 0 : switch (TREE_CODE (t))
411 : : {
412 : 0 : case RSHIFT_EXPR:
413 : 0 : {
414 : 0 : tree _p0 = TREE_OPERAND (t, 0);
415 : 0 : tree _p1 = TREE_OPERAND (t, 1);
416 : 0 : switch (TREE_CODE (_p0))
417 : : {
418 : 0 : case MULT_EXPR:
419 : 0 : {
420 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
421 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
422 : 0 : switch (TREE_CODE (_q20))
423 : : {
424 : 0 : case BIT_AND_EXPR:
425 : 0 : {
426 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
427 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
428 : 0 : switch (TREE_CODE (_q30))
429 : : {
430 : 0 : case NEGATE_EXPR:
431 : 0 : {
432 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
433 : 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
434 : : {
435 : 0 : switch (TREE_CODE (_q21))
436 : : {
437 : 0 : case INTEGER_CST:
438 : 0 : {
439 : 0 : switch (TREE_CODE (_p1))
440 : : {
441 : 0 : case INTEGER_CST:
442 : 0 : {
443 : 0 : {
444 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q21, _p1 };
445 : 0 : {
446 : 0 : res_ops[0] = captures[0];
447 : 0 : res_ops[1] = captures[1];
448 : 0 : res_ops[2] = captures[2];
449 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, false);
450 : 0 : return true;
451 : : }
452 : : }
453 : : break;
454 : : }
455 : : default:;
456 : : }
457 : : break;
458 : : }
459 : : default:;
460 : : }
461 : : }
462 : : break;
463 : : }
464 : 0 : default:;
465 : : }
466 : 0 : switch (TREE_CODE (_q31))
467 : : {
468 : 0 : case NEGATE_EXPR:
469 : 0 : {
470 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
471 : 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
472 : : {
473 : 0 : switch (TREE_CODE (_q21))
474 : : {
475 : 0 : case INTEGER_CST:
476 : 0 : {
477 : 0 : switch (TREE_CODE (_p1))
478 : : {
479 : 0 : case INTEGER_CST:
480 : 0 : {
481 : 0 : {
482 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p1 };
483 : 0 : {
484 : 0 : res_ops[0] = captures[0];
485 : 0 : res_ops[1] = captures[1];
486 : 0 : res_ops[2] = captures[2];
487 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, false);
488 : 0 : return true;
489 : : }
490 : : }
491 : : break;
492 : : }
493 : : default:;
494 : : }
495 : : break;
496 : : }
497 : : default:;
498 : : }
499 : : }
500 : : break;
501 : : }
502 : : default:;
503 : : }
504 : : break;
505 : : }
506 : : default:;
507 : : }
508 : : break;
509 : : }
510 : : default:;
511 : : }
512 : : break;
513 : : }
514 : : default:;
515 : : }
516 : : return false;
517 : : }
518 : :
519 : : bool
520 : 0 : tree_bitwise_induction_p (tree t, tree *res_ops)
521 : : {
522 : 0 : const tree type = TREE_TYPE (t);
523 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
524 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
525 : 0 : switch (TREE_CODE (t))
526 : : {
527 : 0 : case BIT_AND_EXPR:
528 : 0 : case BIT_IOR_EXPR:
529 : 0 : case BIT_XOR_EXPR:
530 : 0 : {
531 : 0 : tree _p0 = TREE_OPERAND (t, 0);
532 : 0 : tree _p1 = TREE_OPERAND (t, 1);
533 : 0 : {
534 : 0 : tree _p0_pops[1];
535 : 0 : if (tree_nop_convert (_p0, _p0_pops))
536 : : {
537 : 0 : tree _q20 = _p0_pops[0];
538 : 0 : switch (TREE_CODE (_q20))
539 : : {
540 : 0 : case BIT_NOT_EXPR:
541 : 0 : {
542 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
543 : 0 : switch (TREE_CODE (_q30))
544 : : {
545 : 0 : CASE_CONVERT:
546 : 0 : {
547 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
548 : 0 : switch (TREE_CODE (_q40))
549 : : {
550 : 0 : case LSHIFT_EXPR:
551 : 0 : {
552 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
553 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
554 : 0 : if (integer_onep (_q50))
555 : : {
556 : 0 : {
557 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q51, _p1, _q50 };
558 : 0 : {
559 : 0 : res_ops[0] = captures[0];
560 : 0 : res_ops[1] = captures[1];
561 : 0 : res_ops[2] = captures[2];
562 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
563 : 0 : return true;
564 : : }
565 : : }
566 : : }
567 : : break;
568 : : }
569 : : default:;
570 : : }
571 : : break;
572 : : }
573 : 0 : case LSHIFT_EXPR:
574 : 0 : {
575 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
576 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
577 : 0 : if (integer_onep (_q40))
578 : : {
579 : 0 : {
580 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _p1, _q40 };
581 : 0 : {
582 : 0 : res_ops[0] = captures[0];
583 : 0 : res_ops[1] = captures[1];
584 : 0 : res_ops[2] = captures[2];
585 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
586 : 0 : return true;
587 : : }
588 : : }
589 : : }
590 : : break;
591 : : }
592 : : default:;
593 : : }
594 : : break;
595 : : }
596 : 0 : CASE_CONVERT:
597 : 0 : {
598 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
599 : 0 : switch (TREE_CODE (_q30))
600 : : {
601 : 0 : case LSHIFT_EXPR:
602 : 0 : {
603 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
604 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
605 : 0 : if (integer_onep (_q40))
606 : : {
607 : 0 : {
608 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _p1, _q40 };
609 : 0 : {
610 : 0 : res_ops[0] = captures[0];
611 : 0 : res_ops[1] = captures[1];
612 : 0 : res_ops[2] = captures[2];
613 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
614 : 0 : return true;
615 : : }
616 : : }
617 : : }
618 : : break;
619 : : }
620 : : default:;
621 : : }
622 : : break;
623 : : }
624 : 0 : case LSHIFT_EXPR:
625 : 0 : {
626 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
627 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
628 : 0 : if (integer_onep (_q30))
629 : : {
630 : 0 : {
631 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q31, _p1, _q30 };
632 : 0 : {
633 : 0 : res_ops[0] = captures[0];
634 : 0 : res_ops[1] = captures[1];
635 : 0 : res_ops[2] = captures[2];
636 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
637 : 0 : return true;
638 : : }
639 : : }
640 : : }
641 : : break;
642 : : }
643 : : default:;
644 : : }
645 : : }
646 : : }
647 : 0 : {
648 : 0 : tree _p1_pops[1];
649 : 0 : if (tree_nop_convert (_p1, _p1_pops))
650 : : {
651 : 0 : tree _q30 = _p1_pops[0];
652 : 0 : switch (TREE_CODE (_q30))
653 : : {
654 : 0 : case BIT_NOT_EXPR:
655 : 0 : {
656 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
657 : 0 : switch (TREE_CODE (_q40))
658 : : {
659 : 0 : CASE_CONVERT:
660 : 0 : {
661 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
662 : 0 : switch (TREE_CODE (_q50))
663 : : {
664 : 0 : case LSHIFT_EXPR:
665 : 0 : {
666 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
667 : 0 : tree _q61 = TREE_OPERAND (_q50, 1);
668 : 0 : if (integer_onep (_q60))
669 : : {
670 : 0 : {
671 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q61, _p0, _q60 };
672 : 0 : {
673 : 0 : res_ops[0] = captures[0];
674 : 0 : res_ops[1] = captures[1];
675 : 0 : res_ops[2] = captures[2];
676 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
677 : 0 : return true;
678 : : }
679 : : }
680 : : }
681 : : break;
682 : : }
683 : : default:;
684 : : }
685 : : break;
686 : : }
687 : 0 : case LSHIFT_EXPR:
688 : 0 : {
689 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
690 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
691 : 0 : if (integer_onep (_q50))
692 : : {
693 : 0 : {
694 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q51, _p0, _q50 };
695 : 0 : {
696 : 0 : res_ops[0] = captures[0];
697 : 0 : res_ops[1] = captures[1];
698 : 0 : res_ops[2] = captures[2];
699 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
700 : 0 : return true;
701 : : }
702 : : }
703 : : }
704 : : break;
705 : : }
706 : : default:;
707 : : }
708 : : break;
709 : : }
710 : 0 : CASE_CONVERT:
711 : 0 : {
712 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
713 : 0 : switch (TREE_CODE (_q40))
714 : : {
715 : 0 : case LSHIFT_EXPR:
716 : 0 : {
717 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
718 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
719 : 0 : if (integer_onep (_q50))
720 : : {
721 : 0 : {
722 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q51, _p0, _q50 };
723 : 0 : {
724 : 0 : res_ops[0] = captures[0];
725 : 0 : res_ops[1] = captures[1];
726 : 0 : res_ops[2] = captures[2];
727 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
728 : 0 : return true;
729 : : }
730 : : }
731 : : }
732 : : break;
733 : : }
734 : : default:;
735 : : }
736 : : break;
737 : : }
738 : 0 : case LSHIFT_EXPR:
739 : 0 : {
740 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
741 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
742 : 0 : if (integer_onep (_q40))
743 : : {
744 : 0 : {
745 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q41, _p0, _q40 };
746 : 0 : {
747 : 0 : res_ops[0] = captures[0];
748 : 0 : res_ops[1] = captures[1];
749 : 0 : res_ops[2] = captures[2];
750 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
751 : 0 : return true;
752 : : }
753 : : }
754 : : }
755 : : break;
756 : : }
757 : : default:;
758 : : }
759 : : }
760 : : }
761 : 0 : switch (TREE_CODE (_p0))
762 : : {
763 : 0 : case BIT_NOT_EXPR:
764 : 0 : {
765 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
766 : 0 : switch (TREE_CODE (_q20))
767 : : {
768 : 0 : CASE_CONVERT:
769 : 0 : {
770 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
771 : 0 : switch (TREE_CODE (_q30))
772 : : {
773 : 0 : case LSHIFT_EXPR:
774 : 0 : {
775 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
776 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
777 : 0 : if (integer_onep (_q40))
778 : : {
779 : 0 : {
780 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q41, _p1, _q40 };
781 : 0 : {
782 : 0 : res_ops[0] = captures[0];
783 : 0 : res_ops[1] = captures[1];
784 : 0 : res_ops[2] = captures[2];
785 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
786 : 0 : return true;
787 : : }
788 : : }
789 : : }
790 : : break;
791 : : }
792 : : default:;
793 : : }
794 : : break;
795 : : }
796 : 0 : case LSHIFT_EXPR:
797 : 0 : {
798 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
799 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
800 : 0 : if (integer_onep (_q30))
801 : : {
802 : 0 : {
803 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _p1, _q30 };
804 : 0 : {
805 : 0 : res_ops[0] = captures[0];
806 : 0 : res_ops[1] = captures[1];
807 : 0 : res_ops[2] = captures[2];
808 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
809 : 0 : return true;
810 : : }
811 : : }
812 : : }
813 : : break;
814 : : }
815 : : default:;
816 : : }
817 : : break;
818 : : }
819 : 0 : default:;
820 : : }
821 : 0 : switch (TREE_CODE (_p1))
822 : : {
823 : 0 : case BIT_NOT_EXPR:
824 : 0 : {
825 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
826 : 0 : switch (TREE_CODE (_q30))
827 : : {
828 : 0 : CASE_CONVERT:
829 : 0 : {
830 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
831 : 0 : switch (TREE_CODE (_q40))
832 : : {
833 : 0 : case LSHIFT_EXPR:
834 : 0 : {
835 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
836 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
837 : 0 : if (integer_onep (_q50))
838 : : {
839 : 0 : {
840 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q51, _p0, _q50 };
841 : 0 : {
842 : 0 : res_ops[0] = captures[0];
843 : 0 : res_ops[1] = captures[1];
844 : 0 : res_ops[2] = captures[2];
845 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
846 : 0 : return true;
847 : : }
848 : : }
849 : : }
850 : : break;
851 : : }
852 : : default:;
853 : : }
854 : : break;
855 : : }
856 : 0 : case LSHIFT_EXPR:
857 : 0 : {
858 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
859 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
860 : 0 : if (integer_onep (_q40))
861 : : {
862 : 0 : {
863 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _p0, _q40 };
864 : 0 : {
865 : 0 : res_ops[0] = captures[0];
866 : 0 : res_ops[1] = captures[1];
867 : 0 : res_ops[2] = captures[2];
868 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
869 : 0 : return true;
870 : : }
871 : : }
872 : : }
873 : : break;
874 : : }
875 : : default:;
876 : : }
877 : : break;
878 : : }
879 : 0 : default:;
880 : : }
881 : 0 : switch (TREE_CODE (_p0))
882 : : {
883 : 0 : CASE_CONVERT:
884 : 0 : {
885 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
886 : 0 : switch (TREE_CODE (_q20))
887 : : {
888 : 0 : case LSHIFT_EXPR:
889 : 0 : {
890 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
891 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
892 : 0 : if (integer_onep (_q30))
893 : : {
894 : 0 : {
895 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _p1, _q30 };
896 : 0 : {
897 : 0 : res_ops[0] = captures[0];
898 : 0 : res_ops[1] = captures[1];
899 : 0 : res_ops[2] = captures[2];
900 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
901 : 0 : return true;
902 : : }
903 : : }
904 : : }
905 : : break;
906 : : }
907 : : default:;
908 : : }
909 : : break;
910 : : }
911 : 0 : default:;
912 : : }
913 : 0 : switch (TREE_CODE (_p1))
914 : : {
915 : 0 : CASE_CONVERT:
916 : 0 : {
917 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
918 : 0 : switch (TREE_CODE (_q30))
919 : : {
920 : 0 : case LSHIFT_EXPR:
921 : 0 : {
922 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
923 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
924 : 0 : if (integer_onep (_q40))
925 : : {
926 : 0 : {
927 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _p0, _q40 };
928 : 0 : {
929 : 0 : res_ops[0] = captures[0];
930 : 0 : res_ops[1] = captures[1];
931 : 0 : res_ops[2] = captures[2];
932 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
933 : 0 : return true;
934 : : }
935 : : }
936 : : }
937 : : break;
938 : : }
939 : : default:;
940 : : }
941 : : break;
942 : : }
943 : 0 : default:;
944 : : }
945 : 0 : switch (TREE_CODE (_p0))
946 : : {
947 : 0 : case LSHIFT_EXPR:
948 : 0 : {
949 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
950 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
951 : 0 : if (integer_onep (_q20))
952 : : {
953 : 0 : {
954 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _p1, _q20 };
955 : 0 : {
956 : 0 : res_ops[0] = captures[0];
957 : 0 : res_ops[1] = captures[1];
958 : 0 : res_ops[2] = captures[2];
959 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
960 : 0 : return true;
961 : : }
962 : : }
963 : : }
964 : : break;
965 : : }
966 : 0 : default:;
967 : : }
968 : 0 : switch (TREE_CODE (_p1))
969 : : {
970 : 0 : case LSHIFT_EXPR:
971 : 0 : {
972 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
973 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
974 : 0 : if (integer_onep (_q30))
975 : : {
976 : 0 : {
977 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q31, _p0, _q30 };
978 : 0 : {
979 : 0 : res_ops[0] = captures[0];
980 : 0 : res_ops[1] = captures[1];
981 : 0 : res_ops[2] = captures[2];
982 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
983 : 0 : return true;
984 : : }
985 : : }
986 : : }
987 : : break;
988 : : }
989 : : default:;
990 : : }
991 : : break;
992 : : }
993 : 0 : case BIT_NOT_EXPR:
994 : 0 : {
995 : 0 : tree _p0 = TREE_OPERAND (t, 0);
996 : 0 : switch (TREE_CODE (_p0))
997 : : {
998 : 0 : case BIT_XOR_EXPR:
999 : 0 : {
1000 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
1001 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
1002 : 0 : switch (TREE_CODE (_q20))
1003 : : {
1004 : 0 : CASE_CONVERT:
1005 : 0 : {
1006 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
1007 : 0 : switch (TREE_CODE (_q30))
1008 : : {
1009 : 0 : case LSHIFT_EXPR:
1010 : 0 : {
1011 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
1012 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
1013 : 0 : if (integer_onep (_q40))
1014 : : {
1015 : 0 : {
1016 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q41, _q21, _q40 };
1017 : 0 : {
1018 : 0 : res_ops[0] = captures[0];
1019 : 0 : res_ops[1] = captures[1];
1020 : 0 : res_ops[2] = captures[2];
1021 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
1022 : 0 : return true;
1023 : : }
1024 : : }
1025 : : }
1026 : : break;
1027 : : }
1028 : : default:;
1029 : : }
1030 : : break;
1031 : : }
1032 : 0 : case LSHIFT_EXPR:
1033 : 0 : {
1034 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
1035 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
1036 : 0 : if (integer_onep (_q30))
1037 : : {
1038 : 0 : {
1039 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q21, _q30 };
1040 : 0 : {
1041 : 0 : res_ops[0] = captures[0];
1042 : 0 : res_ops[1] = captures[1];
1043 : 0 : res_ops[2] = captures[2];
1044 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
1045 : 0 : return true;
1046 : : }
1047 : : }
1048 : : }
1049 : : break;
1050 : : }
1051 : : default:;
1052 : : }
1053 : : break;
1054 : : }
1055 : 0 : default:;
1056 : : }
1057 : 0 : {
1058 : 0 : tree _p0_pops[1];
1059 : 0 : if (tree_nop_convert (_p0, _p0_pops))
1060 : : {
1061 : 0 : tree _q20 = _p0_pops[0];
1062 : 0 : switch (TREE_CODE (_q20))
1063 : : {
1064 : 0 : case BIT_XOR_EXPR:
1065 : 0 : {
1066 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
1067 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
1068 : 0 : switch (TREE_CODE (_q30))
1069 : : {
1070 : 0 : CASE_CONVERT:
1071 : 0 : {
1072 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
1073 : 0 : switch (TREE_CODE (_q40))
1074 : : {
1075 : 0 : case LSHIFT_EXPR:
1076 : 0 : {
1077 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
1078 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
1079 : 0 : if (integer_onep (_q50))
1080 : : {
1081 : 0 : {
1082 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q51, _q31, _q50 };
1083 : 0 : {
1084 : 0 : res_ops[0] = captures[0];
1085 : 0 : res_ops[1] = captures[1];
1086 : 0 : res_ops[2] = captures[2];
1087 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
1088 : 0 : return true;
1089 : : }
1090 : : }
1091 : : }
1092 : : break;
1093 : : }
1094 : : default:;
1095 : : }
1096 : : break;
1097 : : }
1098 : 0 : case LSHIFT_EXPR:
1099 : 0 : {
1100 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
1101 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
1102 : 0 : if (integer_onep (_q40))
1103 : : {
1104 : 0 : {
1105 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _q31, _q40 };
1106 : 0 : {
1107 : 0 : res_ops[0] = captures[0];
1108 : 0 : res_ops[1] = captures[1];
1109 : 0 : res_ops[2] = captures[2];
1110 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
1111 : 0 : return true;
1112 : : }
1113 : : }
1114 : : }
1115 : : break;
1116 : : }
1117 : : default:;
1118 : : }
1119 : : break;
1120 : : }
1121 : : default:;
1122 : : }
1123 : : }
1124 : : }
1125 : 0 : break;
1126 : : }
1127 : : default:;
1128 : : }
1129 : : return false;
1130 : : }
1131 : :
1132 : : tree
1133 : 536 : generic_simplify_23 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1134 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1135 : : {
1136 : 536 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1137 : 536 : if (!TYPE_SATURATING (type)
1138 : : )
1139 : : {
1140 : 536 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
1141 : 1072 : && !FIXED_POINT_TYPE_P (type)
1142 : : )
1143 : : {
1144 : 536 : if (!TYPE_OVERFLOW_TRAPS (type)
1145 : : )
1146 : : {
1147 : 536 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail278;
1148 : 536 : {
1149 : 536 : tree res_op0;
1150 : 536 : res_op0 = build_all_ones_cst (TREE_TYPE (captures[0]));
1151 : 536 : tree _r;
1152 : 536 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1153 : 536 : if (TREE_SIDE_EFFECTS (captures[0]))
1154 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1155 : 536 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 141, __FILE__, __LINE__, true);
1156 : 536 : return _r;
1157 : : }
1158 : 0 : next_after_fail278:;
1159 : : }
1160 : : }
1161 : : }
1162 : : return NULL_TREE;
1163 : : }
1164 : :
1165 : : tree
1166 : 2287491 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1167 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1168 : : const enum tree_code ARG_UNUSED (plusminus))
1169 : : {
1170 : 2287491 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1171 : 2287491 : if (!TYPE_SATURATING (type)
1172 : 2287491 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
1173 : : )
1174 : : {
1175 : 110 : if (!ANY_INTEGRAL_TYPE_P (type)
1176 : 2287262 : || TYPE_OVERFLOW_WRAPS (type)
1177 : 4005460 : || (INTEGRAL_TYPE_P (type)
1178 : 1718088 : && tree_expr_nonzero_p (captures[1])
1179 : 3210009 : && expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (type))))
1180 : : )
1181 : : {
1182 : 1491617 : if (single_use (captures[0]) || single_use (captures[3])
1183 : : )
1184 : : {
1185 : 1491617 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail280;
1186 : 1491617 : {
1187 : 1491617 : tree res_op0;
1188 : 1491617 : {
1189 : 1491617 : tree _o1[2], _r1;
1190 : 1491617 : _o1[0] = captures[2];
1191 : 1491617 : _o1[1] = captures[4];
1192 : 1491617 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1193 : 1491617 : res_op0 = _r1;
1194 : : }
1195 : 1491617 : tree res_op1;
1196 : 1491617 : res_op1 = captures[1];
1197 : 1491617 : tree _r;
1198 : 1491617 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1199 : 1491617 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 143, __FILE__, __LINE__, true);
1200 : 1491617 : return _r;
1201 : : }
1202 : 0 : next_after_fail280:;
1203 : : }
1204 : : else
1205 : : {
1206 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail281;
1207 : : {
1208 : : tree res_op0;
1209 : : {
1210 : : tree _o1[2], _r1;
1211 : : _o1[0] = captures[2];
1212 : : _o1[1] = captures[4];
1213 : : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1214 : : res_op0 = _r1;
1215 : : }
1216 : : tree res_op1;
1217 : : res_op1 = captures[1];
1218 : : tree _r;
1219 : : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1220 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
1221 : : return _r;
1222 : : }
1223 : : next_after_fail281:;
1224 : : }
1225 : : }
1226 : : }
1227 : : return NULL_TREE;
1228 : : }
1229 : :
1230 : : tree
1231 : 3555586 : generic_simplify_28 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1232 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1233 : : {
1234 : 3555586 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1235 : 3555586 : if (!TYPE_SATURATING (type)
1236 : 3555586 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
1237 : : )
1238 : : {
1239 : 3555586 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
1240 : : )
1241 : : {
1242 : 7111172 : if (TREE_CODE (type) == INTEGER_TYPE
1243 : 3555586 : && wi::neg_p (wi::to_wide (captures[3]))
1244 : 10666758 : && wi::to_wide (captures[3]) != wi::min_value (TYPE_PRECISION (type), SIGNED)
1245 : : )
1246 : : {
1247 : 852430 : {
1248 : 852430 : wide_int c0 = wi::to_wide (captures[1]);
1249 : 852430 : wide_int c2 = wi::to_wide (captures[3]);
1250 : 852430 : wide_int c2_abs = wi::abs (c2);
1251 : 852430 : if (wi::multiple_of_p (c2_abs, c0, TYPE_SIGN (type))
1252 : : )
1253 : : {
1254 : 391760 : {
1255 : 391760 : wide_int div_res = wi::sdiv_trunc (c2, c0);
1256 : 391760 : tree div_cst = wide_int_to_tree (type, div_res);
1257 : 391760 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail284;
1258 : 391760 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail284;
1259 : 391760 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail284;
1260 : 391760 : {
1261 : 391760 : tree res_op0;
1262 : 391760 : {
1263 : 391760 : tree _o1[2], _r1;
1264 : 391760 : _o1[0] = captures[2];
1265 : 391760 : _o1[1] = div_cst;
1266 : 391760 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1267 : 391760 : res_op0 = _r1;
1268 : : }
1269 : 391760 : tree res_op1;
1270 : 391760 : res_op1 = captures[1];
1271 : 391760 : tree _r;
1272 : 391760 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1273 : 391760 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 147, __FILE__, __LINE__, true);
1274 : 391760 : return _r;
1275 : : }
1276 : 0 : next_after_fail284:;
1277 : 391760 : }
1278 : : }
1279 : 852430 : }
1280 : : }
1281 : : }
1282 : : }
1283 : : return NULL_TREE;
1284 : : }
1285 : :
1286 : : tree
1287 : 4 : generic_simplify_37 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1288 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1289 : : const enum tree_code ARG_UNUSED (log1),
1290 : : const enum tree_code ARG_UNUSED (log2),
1291 : : const combined_fn ARG_UNUSED (popcount))
1292 : : {
1293 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1294 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail294;
1295 : 4 : {
1296 : 4 : tree res_op0;
1297 : 4 : {
1298 : 4 : tree _o1[2], _r1;
1299 : 4 : _o1[0] = captures[2];
1300 : 4 : _o1[1] = captures[5];
1301 : 4 : _r1 = fold_build2_loc (loc, log2, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1302 : 4 : res_op0 = _r1;
1303 : : }
1304 : 4 : tree _r;
1305 : 4 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
1306 : 4 : if (!_r)
1307 : 0 : goto next_after_fail294;
1308 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 157, __FILE__, __LINE__, true);
1309 : : return _r;
1310 : : }
1311 : : next_after_fail294:;
1312 : : return NULL_TREE;
1313 : : }
1314 : :
1315 : : tree
1316 : 84 : generic_simplify_40 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1317 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1318 : : {
1319 : 84 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1320 : 84 : if (INTEGRAL_TYPE_P (type)
1321 : 84 : || (VECTOR_INTEGER_TYPE_P (type)
1322 : : && ((optimize_vectors_before_lowering_p ()
1323 : 1 : && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
1324 : 0 : || target_supports_op_p (type, TRUNC_MOD_EXPR,
1325 : : optab_vector)))
1326 : : )
1327 : : {
1328 : 84 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail297;
1329 : 84 : {
1330 : 84 : tree res_op0;
1331 : 84 : {
1332 : 84 : tree _o1[2], _r1;
1333 : 84 : _o1[0] = captures[0];
1334 : 84 : _o1[1] = captures[1];
1335 : 84 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1336 : 84 : res_op0 = _r1;
1337 : : }
1338 : 84 : tree _r;
1339 : 84 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1340 : 84 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 160, __FILE__, __LINE__, true);
1341 : 84 : return _r;
1342 : : }
1343 : 0 : next_after_fail297:;
1344 : : }
1345 : : return NULL_TREE;
1346 : : }
1347 : :
1348 : : tree
1349 : 1512 : generic_simplify_49 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1350 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1351 : : {
1352 : 1512 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1353 : 1512 : if (!TYPE_SATURATING (type)
1354 : : )
1355 : : {
1356 : 1512 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
1357 : 1512 : && !TYPE_OVERFLOW_SANITIZED (type)
1358 : : )
1359 : : {
1360 : 5 : {
1361 : 5 : tree t1 = type;
1362 : 5 : if (INTEGRAL_TYPE_P (type)
1363 : 5 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
1364 : 0 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
1365 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail306;
1366 : 5 : {
1367 : 5 : tree res_op0;
1368 : 5 : {
1369 : 5 : tree _o1[2], _r1;
1370 : 5 : {
1371 : 5 : tree _o2[1], _r2;
1372 : 5 : _o2[0] = captures[0];
1373 : 5 : if (TREE_TYPE (_o2[0]) != t1)
1374 : : {
1375 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
1376 : : }
1377 : : else
1378 : : _r2 = _o2[0];
1379 : 5 : _o1[0] = _r2;
1380 : : }
1381 : 5 : {
1382 : 5 : tree _o2[1], _r2;
1383 : 5 : _o2[0] = captures[1];
1384 : 5 : if (TREE_TYPE (_o2[0]) != t1)
1385 : : {
1386 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
1387 : : }
1388 : : else
1389 : : _r2 = _o2[0];
1390 : 5 : _o1[1] = _r2;
1391 : : }
1392 : 5 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1393 : 5 : res_op0 = _r1;
1394 : : }
1395 : 5 : tree _r;
1396 : 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1397 : 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 168, __FILE__, __LINE__, true);
1398 : 5 : return _r;
1399 : : }
1400 : 0 : next_after_fail306:;
1401 : : }
1402 : : }
1403 : : }
1404 : : return NULL_TREE;
1405 : : }
1406 : :
1407 : : tree
1408 : 143658 : generic_simplify_59 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1409 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1410 : : {
1411 : 143658 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1412 : 143658 : if (!TYPE_SATURATING (type)
1413 : : )
1414 : : {
1415 : 143658 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
1416 : 287316 : && !FIXED_POINT_TYPE_P (type)
1417 : : )
1418 : : {
1419 : 143658 : if (INTEGRAL_TYPE_P (type)
1420 : 143658 : && TYPE_OVERFLOW_UNDEFINED (type)
1421 : 47 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
1422 : 143705 : && element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
1423 : : )
1424 : : {
1425 : 47 : {
1426 : 47 : tree utype = unsigned_type_for (type);
1427 : 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail321;
1428 : 47 : {
1429 : 47 : tree res_op0;
1430 : 47 : {
1431 : 47 : tree _o1[2], _r1;
1432 : 47 : {
1433 : 47 : tree _o2[1], _r2;
1434 : 47 : _o2[0] = captures[1];
1435 : 47 : if (TREE_TYPE (_o2[0]) != utype)
1436 : : {
1437 : 39 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1438 : : }
1439 : : else
1440 : : _r2 = _o2[0];
1441 : 47 : _o1[0] = _r2;
1442 : : }
1443 : 47 : {
1444 : 47 : tree _o2[1], _r2;
1445 : 47 : _o2[0] = captures[2];
1446 : 47 : if (TREE_TYPE (_o2[0]) != utype)
1447 : : {
1448 : 38 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1449 : : }
1450 : : else
1451 : : _r2 = _o2[0];
1452 : 47 : _o1[1] = _r2;
1453 : : }
1454 : 47 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1455 : 47 : res_op0 = _r1;
1456 : : }
1457 : 47 : tree _r;
1458 : 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1459 : 47 : if (TREE_SIDE_EFFECTS (captures[3]))
1460 : 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1461 : 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 183, __FILE__, __LINE__, true);
1462 : 47 : return _r;
1463 : : }
1464 : 0 : next_after_fail321:;
1465 : : }
1466 : : }
1467 : : else
1468 : : {
1469 : 143611 : if (((element_precision (type) <= element_precision (TREE_TYPE (captures[1])))
1470 : 143611 : == (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))))
1471 : 143611 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
1472 : 53 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1473 : 53 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1474 : 53 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1475 : 53 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))))
1476 : : )
1477 : : {
1478 : 126946 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail322;
1479 : 126946 : {
1480 : 126946 : tree res_op0;
1481 : 126946 : {
1482 : 126946 : tree _o1[1], _r1;
1483 : 126946 : _o1[0] = captures[1];
1484 : 126946 : if (TREE_TYPE (_o1[0]) != type)
1485 : : {
1486 : 126946 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1487 : : }
1488 : : else
1489 : : _r1 = _o1[0];
1490 : 126946 : res_op0 = _r1;
1491 : : }
1492 : 126946 : tree res_op1;
1493 : 126946 : {
1494 : 126946 : tree _o1[1], _r1;
1495 : 126946 : _o1[0] = captures[2];
1496 : 126946 : if (TREE_TYPE (_o1[0]) != type)
1497 : : {
1498 : 126946 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1499 : : }
1500 : : else
1501 : : _r1 = _o1[0];
1502 : 126946 : res_op1 = _r1;
1503 : : }
1504 : 126946 : tree _r;
1505 : 126946 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
1506 : 126946 : if (TREE_SIDE_EFFECTS (captures[3]))
1507 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1508 : 126946 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
1509 : 126946 : return _r;
1510 : : }
1511 : 0 : next_after_fail322:;
1512 : : }
1513 : : }
1514 : : }
1515 : : }
1516 : : return NULL_TREE;
1517 : : }
1518 : :
1519 : : tree
1520 : 8 : generic_simplify_83 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1521 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1522 : : {
1523 : 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1524 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1525 : 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
1526 : : )
1527 : : {
1528 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail350;
1529 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail350;
1530 : 0 : {
1531 : 0 : tree _r;
1532 : 0 : _r = captures[2];
1533 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
1534 : 0 : return _r;
1535 : : }
1536 : : next_after_fail350:;
1537 : : }
1538 : : return NULL_TREE;
1539 : : }
1540 : :
1541 : : tree
1542 : 1 : generic_simplify_92 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1543 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1544 : : {
1545 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1546 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail359;
1547 : 1 : {
1548 : 1 : tree res_op0;
1549 : 1 : {
1550 : 1 : tree _o1[2], _r1;
1551 : 1 : _o1[0] = captures[1];
1552 : 1 : _o1[1] = captures[2];
1553 : 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1554 : 1 : res_op0 = _r1;
1555 : : }
1556 : 1 : tree _r;
1557 : 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
1558 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
1559 : : return _r;
1560 : : }
1561 : 0 : next_after_fail359:;
1562 : 0 : return NULL_TREE;
1563 : : }
1564 : :
1565 : : tree
1566 : 0 : generic_simplify_100 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1567 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1568 : : const enum tree_code ARG_UNUSED (op))
1569 : : {
1570 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1571 : 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
1572 : 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
1573 : : )
1574 : : {
1575 : 0 : if (single_use (captures[4]) && single_use (captures[5])
1576 : : )
1577 : : {
1578 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail368;
1579 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail368;
1580 : 0 : {
1581 : 0 : tree res_op0;
1582 : 0 : res_op0 = captures[0];
1583 : 0 : tree res_op1;
1584 : 0 : {
1585 : 0 : tree _o1[1], _r1;
1586 : 0 : _o1[0] = captures[6];
1587 : 0 : if (TREE_TYPE (_o1[0]) != type)
1588 : : {
1589 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1590 : : }
1591 : : else
1592 : : _r1 = _o1[0];
1593 : 0 : res_op1 = _r1;
1594 : : }
1595 : 0 : tree _r;
1596 : 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1597 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
1598 : 0 : return _r;
1599 : : }
1600 : : next_after_fail368:;
1601 : : }
1602 : : else
1603 : : {
1604 : : if (single_use (captures[0]) && single_use (captures[1])
1605 : : )
1606 : : {
1607 : : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail369;
1608 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail369;
1609 : : {
1610 : : tree res_op0;
1611 : : {
1612 : : tree _o1[1], _r1;
1613 : : _o1[0] = captures[3];
1614 : : if (TREE_TYPE (_o1[0]) != type)
1615 : : {
1616 : : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1617 : : }
1618 : : else
1619 : : _r1 = _o1[0];
1620 : : res_op0 = _r1;
1621 : : }
1622 : : tree res_op1;
1623 : : res_op1 = captures[4];
1624 : : tree _r;
1625 : : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1626 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
1627 : : return _r;
1628 : : }
1629 : : next_after_fail369:;
1630 : : }
1631 : : }
1632 : : }
1633 : : return NULL_TREE;
1634 : : }
1635 : :
1636 : : tree
1637 : 0 : generic_simplify_111 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1638 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1639 : : const enum tree_code ARG_UNUSED (bitop),
1640 : : const enum tree_code ARG_UNUSED (rbitop))
1641 : : {
1642 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1643 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail382;
1644 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail382;
1645 : 0 : {
1646 : 0 : tree _r;
1647 : 0 : _r = captures[2];
1648 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1649 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1650 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 222, __FILE__, __LINE__, true);
1651 : : return _r;
1652 : : }
1653 : : next_after_fail382:;
1654 : : return NULL_TREE;
1655 : : }
1656 : :
1657 : : tree
1658 : 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1659 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1660 : : const enum tree_code ARG_UNUSED (op))
1661 : : {
1662 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1663 : 0 : if (INTEGRAL_TYPE_P (type)
1664 : 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
1665 : : )
1666 : : {
1667 : 0 : {
1668 : 0 : tree t = type;
1669 : 0 : if (!TYPE_OVERFLOW_WRAPS (t))
1670 : 0 : t = unsigned_type_for (t);
1671 : 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
1672 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail390;
1673 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail390;
1674 : 0 : {
1675 : 0 : tree res_op0;
1676 : 0 : {
1677 : 0 : tree _o1[2], _r1;
1678 : 0 : {
1679 : 0 : tree _o2[1], _r2;
1680 : 0 : _o2[0] = captures[2];
1681 : 0 : if (TREE_TYPE (_o2[0]) != t)
1682 : : {
1683 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
1684 : : }
1685 : : else
1686 : : _r2 = _o2[0];
1687 : 0 : _o1[0] = _r2;
1688 : : }
1689 : 0 : _o1[1] = wide_int_to_tree (t, c);
1690 : 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
1691 : 0 : res_op0 = _r1;
1692 : : }
1693 : 0 : tree _r;
1694 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1695 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
1696 : 0 : return _r;
1697 : : }
1698 : 0 : next_after_fail390:;
1699 : 0 : }
1700 : : }
1701 : : return NULL_TREE;
1702 : : }
1703 : :
1704 : : tree
1705 : 0 : generic_simplify_127 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1706 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1707 : : {
1708 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1709 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1710 : 0 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
1711 : : )
1712 : : {
1713 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail405;
1714 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail405;
1715 : 0 : {
1716 : 0 : tree res_op0;
1717 : 0 : res_op0 = captures[3];
1718 : 0 : tree res_op1;
1719 : 0 : {
1720 : 0 : tree _o1[2], _r1;
1721 : 0 : _o1[0] = captures[1];
1722 : 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
1723 : 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1724 : 0 : res_op1 = _r1;
1725 : : }
1726 : 0 : tree _r;
1727 : 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1728 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 244, __FILE__, __LINE__, true);
1729 : 0 : return _r;
1730 : : }
1731 : : next_after_fail405:;
1732 : : }
1733 : : return NULL_TREE;
1734 : : }
1735 : :
1736 : : tree
1737 : 0 : generic_simplify_134 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1738 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1739 : : {
1740 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1741 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail430;
1742 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail430;
1743 : 0 : {
1744 : 0 : tree _r;
1745 : 0 : _r = constant_boolean_node (true, type);
1746 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1747 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1748 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 261, __FILE__, __LINE__, true);
1749 : : return _r;
1750 : : }
1751 : : next_after_fail430:;
1752 : : return NULL_TREE;
1753 : : }
1754 : :
1755 : : tree
1756 : 148 : generic_simplify_138 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1757 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1758 : : const enum tree_code ARG_UNUSED (code2),
1759 : : const enum tree_code ARG_UNUSED (code1))
1760 : : {
1761 : 148 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1762 : 148 : if ((TREE_CODE (captures[2]) == INTEGER_CST
1763 : 124 : && TREE_CODE (captures[5]) == INTEGER_CST)
1764 : 148 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1765 : 1 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1766 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
1767 : 24 : && bitwise_equal_p (captures[2], captures[5]))
1768 : : )
1769 : : {
1770 : 124 : {
1771 : 124 : bool one_before = false;
1772 : 124 : bool one_after = false;
1773 : 124 : int cmp = 0;
1774 : 124 : bool allbits = true;
1775 : 124 : if (TREE_CODE (captures[2]) == INTEGER_CST
1776 : 124 : && TREE_CODE (captures[5]) == INTEGER_CST)
1777 : : {
1778 : 124 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
1779 : 124 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
1780 : 124 : auto t2 = wi::to_wide (captures[5]);
1781 : 124 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
1782 : 124 : if (cmp < 0
1783 : 124 : && t1 == t2 - 1)
1784 : : one_before = true;
1785 : 124 : if (cmp > 0
1786 : 124 : && t1 == t2 + 1)
1787 : : one_after = true;
1788 : : }
1789 : 124 : bool val;
1790 : 124 : switch (code2)
1791 : : {
1792 : 115 : case EQ_EXPR: val = (cmp == 0); break;
1793 : 0 : case NE_EXPR: val = (cmp != 0); break;
1794 : 0 : case LT_EXPR: val = (cmp < 0); break;
1795 : 9 : case GT_EXPR: val = (cmp > 0); break;
1796 : 0 : case LE_EXPR: val = (cmp <= 0); break;
1797 : 0 : case GE_EXPR: val = (cmp >= 0); break;
1798 : 0 : default: gcc_unreachable ();
1799 : : }
1800 : 124 : if (code1 == EQ_EXPR && val
1801 : : )
1802 : : {
1803 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail441;
1804 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail441;
1805 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail441;
1806 : 0 : {
1807 : 0 : tree _r;
1808 : 0 : _r = captures[3];
1809 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 245, __FILE__, __LINE__, true);
1810 : 0 : return _r;
1811 : : }
1812 : : next_after_fail441:;
1813 : : }
1814 : : else
1815 : : {
1816 : 124 : if (code1 == NE_EXPR && val && allbits
1817 : : )
1818 : : {
1819 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail442;
1820 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail442;
1821 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail442;
1822 : 0 : {
1823 : 0 : tree _r;
1824 : 0 : _r = constant_boolean_node (true, type);
1825 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1826 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1827 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 246, __FILE__, __LINE__, true);
1828 : 0 : return _r;
1829 : : }
1830 : : next_after_fail442:;
1831 : : }
1832 : : else
1833 : : {
1834 : 124 : if (code1 == NE_EXPR && !val && allbits
1835 : : )
1836 : : {
1837 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail443;
1838 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail443;
1839 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail443;
1840 : 0 : {
1841 : 0 : tree _r;
1842 : 0 : _r = captures[0];
1843 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1844 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1845 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 247, __FILE__, __LINE__, true);
1846 : 0 : return _r;
1847 : : }
1848 : : next_after_fail443:;
1849 : : }
1850 : : else
1851 : : {
1852 : 124 : if (code1 == EQ_EXPR
1853 : 124 : && code2 == GT_EXPR
1854 : 9 : && cmp == 0
1855 : 9 : && allbits
1856 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1857 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
1858 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1859 : : )
1860 : : {
1861 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail444;
1862 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail444;
1863 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail444;
1864 : 0 : {
1865 : 0 : tree res_op0;
1866 : 0 : res_op0 = captures[4];
1867 : 0 : tree res_op1;
1868 : 0 : res_op1 = captures[5];
1869 : 0 : tree _r;
1870 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1871 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 248, __FILE__, __LINE__, true);
1872 : 0 : return _r;
1873 : : }
1874 : : next_after_fail444:;
1875 : : }
1876 : : else
1877 : : {
1878 : 124 : if (code1 == EQ_EXPR
1879 : 124 : && code2 == LT_EXPR
1880 : 0 : && cmp == 0
1881 : 0 : && allbits
1882 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1883 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1884 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1885 : : )
1886 : : {
1887 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail445;
1888 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail445;
1889 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail445;
1890 : 0 : {
1891 : 0 : tree res_op0;
1892 : 0 : res_op0 = captures[4];
1893 : 0 : tree res_op1;
1894 : 0 : res_op1 = captures[5];
1895 : 0 : tree _r;
1896 : 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1897 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 249, __FILE__, __LINE__, true);
1898 : 0 : return _r;
1899 : : }
1900 : : next_after_fail445:;
1901 : : }
1902 : : else
1903 : : {
1904 : 124 : if (code1 == EQ_EXPR
1905 : 124 : && code2 == GE_EXPR
1906 : : && one_before
1907 : 0 : && allbits
1908 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1909 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
1910 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1911 : : )
1912 : : {
1913 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail446;
1914 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail446;
1915 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail446;
1916 : 0 : {
1917 : 0 : tree res_op0;
1918 : 0 : res_op0 = captures[4];
1919 : 0 : tree res_op1;
1920 : 0 : {
1921 : 0 : tree _o1[1], _r1;
1922 : 0 : _o1[0] = captures[2];
1923 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1924 : : {
1925 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1926 : : }
1927 : : else
1928 : : _r1 = _o1[0];
1929 : 0 : res_op1 = _r1;
1930 : : }
1931 : 0 : tree _r;
1932 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1933 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 250, __FILE__, __LINE__, true);
1934 : 0 : return _r;
1935 : : }
1936 : : next_after_fail446:;
1937 : : }
1938 : : else
1939 : : {
1940 : 124 : if (code1 == EQ_EXPR
1941 : 124 : && code2 == LE_EXPR
1942 : : && one_after
1943 : 0 : && allbits
1944 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1945 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1946 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1947 : : )
1948 : : {
1949 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail447;
1950 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail447;
1951 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail447;
1952 : 0 : {
1953 : 0 : tree res_op0;
1954 : 0 : res_op0 = captures[4];
1955 : 0 : tree res_op1;
1956 : 0 : {
1957 : 0 : tree _o1[1], _r1;
1958 : 0 : _o1[0] = captures[2];
1959 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1960 : : {
1961 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1962 : : }
1963 : : else
1964 : : _r1 = _o1[0];
1965 : 0 : res_op1 = _r1;
1966 : : }
1967 : 0 : tree _r;
1968 : 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1969 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 251, __FILE__, __LINE__, true);
1970 : 0 : return _r;
1971 : : }
1972 : : next_after_fail447:;
1973 : : }
1974 : : }
1975 : : }
1976 : : }
1977 : : }
1978 : : }
1979 : : }
1980 : : }
1981 : : }
1982 : : return NULL_TREE;
1983 : : }
1984 : :
1985 : : tree
1986 : 4 : generic_simplify_175 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1987 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1988 : : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1989 : : {
1990 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1991 : 4 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
1992 : : )
1993 : : {
1994 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail487;
1995 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail487;
1996 : 0 : {
1997 : 0 : tree res_op0;
1998 : 0 : res_op0 = captures[0];
1999 : 0 : tree _r;
2000 : 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2001 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 293, __FILE__, __LINE__, true);
2002 : 0 : return _r;
2003 : : }
2004 : : next_after_fail487:;
2005 : : }
2006 : : return NULL_TREE;
2007 : : }
2008 : :
2009 : : tree
2010 : 0 : generic_simplify_182 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2011 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2012 : : {
2013 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2014 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail494;
2015 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail494;
2016 : 0 : {
2017 : 0 : tree _r;
2018 : 0 : _r = build_zero_cst (type);
2019 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 298, __FILE__, __LINE__, true);
2020 : : return _r;
2021 : : }
2022 : : next_after_fail494:;
2023 : : return NULL_TREE;
2024 : : }
2025 : :
2026 : : tree
2027 : 14 : generic_simplify_188 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2028 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2029 : : {
2030 : 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2031 : 14 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2032 : 14 : && wi::ltu_p (wi::to_widest (captures[1]), TYPE_PRECISION (type))
2033 : : )
2034 : : {
2035 : 14 : {
2036 : 14 : unsigned int shift = tree_to_uhwi (captures[1]);
2037 : 14 : unsigned int prec = TYPE_PRECISION (type);
2038 : 14 : if ((prec <= TYPE_PRECISION (TREE_TYPE (captures[2])) + shift
2039 : 0 : || tree_int_cst_sgn (captures[2]) >= 0)
2040 : 28 : && wi::to_wide (captures[3]) == wi::set_bit_in_zero (shift, prec)
2041 : : )
2042 : : {
2043 : 6 : {
2044 : 6 : auto mask = wide_int::from (wi::to_wide (captures[2]), prec, UNSIGNED);
2045 : 6 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail502;
2046 : 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail502;
2047 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail502;
2048 : 6 : {
2049 : 6 : tree res_op0;
2050 : 6 : {
2051 : 6 : tree _o1[1], _r1;
2052 : 6 : _o1[0] = captures[0];
2053 : 6 : if (TREE_TYPE (_o1[0]) != type)
2054 : : {
2055 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2056 : : }
2057 : : else
2058 : : _r1 = _o1[0];
2059 : 6 : res_op0 = _r1;
2060 : : }
2061 : 6 : tree res_op1;
2062 : 6 : res_op1 = wide_int_to_tree (type, mask << shift);
2063 : 6 : tree _r;
2064 : 6 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2065 : 6 : if (TREE_SIDE_EFFECTS (captures[3]))
2066 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
2067 : 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 303, __FILE__, __LINE__, true);
2068 : 6 : return _r;
2069 : : }
2070 : 0 : next_after_fail502:;
2071 : 6 : }
2072 : : }
2073 : : }
2074 : : }
2075 : : return NULL_TREE;
2076 : : }
2077 : :
2078 : : tree
2079 : 6806 : generic_simplify_201 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2080 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2081 : : const enum tree_code ARG_UNUSED (cmp),
2082 : : const enum tree_code ARG_UNUSED (mod))
2083 : : {
2084 : 6806 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2085 : 6806 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2086 : : )
2087 : : {
2088 : 6806 : {
2089 : 6806 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
2090 : 6806 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail516;
2091 : 6806 : {
2092 : 6806 : tree res_op0;
2093 : 6806 : {
2094 : 6806 : tree _o1[2], _r1;
2095 : 6806 : {
2096 : 6806 : tree _o2[1], _r2;
2097 : 6806 : _o2[0] = captures[0];
2098 : 6806 : if (TREE_TYPE (_o2[0]) != utype)
2099 : : {
2100 : 6806 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2101 : : }
2102 : : else
2103 : : _r2 = _o2[0];
2104 : 6806 : _o1[0] = _r2;
2105 : : }
2106 : 6806 : {
2107 : 6806 : tree _o2[1], _r2;
2108 : 6806 : _o2[0] = captures[1];
2109 : 6806 : if (TREE_TYPE (_o2[0]) != utype)
2110 : : {
2111 : 6806 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2112 : : }
2113 : : else
2114 : : _r2 = _o2[0];
2115 : 6806 : _o1[1] = _r2;
2116 : : }
2117 : 6806 : _r1 = fold_build2_loc (loc, mod, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2118 : 6806 : res_op0 = _r1;
2119 : : }
2120 : 6806 : tree res_op1;
2121 : 6806 : {
2122 : 6806 : tree _o1[1], _r1;
2123 : 6806 : _o1[0] = captures[2];
2124 : 6806 : if (TREE_TYPE (_o1[0]) != utype)
2125 : : {
2126 : 6806 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
2127 : : }
2128 : : else
2129 : : _r1 = _o1[0];
2130 : 6806 : res_op1 = _r1;
2131 : : }
2132 : 6806 : tree _r;
2133 : 6806 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2134 : 6806 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 317, __FILE__, __LINE__, true);
2135 : 6806 : return _r;
2136 : : }
2137 : 0 : next_after_fail516:;
2138 : : }
2139 : : }
2140 : : return NULL_TREE;
2141 : : }
2142 : :
2143 : : tree
2144 : 29303 : generic_simplify_214 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2145 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2146 : : const enum tree_code ARG_UNUSED (op))
2147 : : {
2148 : 29303 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2149 : 58606 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2150 : 58492 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
2151 : 26758 : || ((op == EQ_EXPR || op == NE_EXPR)
2152 : 1762 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))))
2153 : 58549 : && (CONSTANT_CLASS_P (captures[2]) || single_use (captures[1]))
2154 : : )
2155 : : {
2156 : 4250 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail545;
2157 : 4250 : {
2158 : 4250 : tree res_op0;
2159 : 4250 : res_op0 = captures[2];
2160 : 4250 : tree res_op1;
2161 : 4250 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
2162 : 4250 : tree _r;
2163 : 4250 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2164 : 4250 : if (TREE_SIDE_EFFECTS (captures[0]))
2165 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2166 : 4250 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 345, __FILE__, __LINE__, true);
2167 : 4250 : return _r;
2168 : : }
2169 : 0 : next_after_fail545:;
2170 : : }
2171 : : return NULL_TREE;
2172 : : }
2173 : :
2174 : : tree
2175 : 0 : generic_simplify_223 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2176 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2177 : : const enum tree_code ARG_UNUSED (cmp1),
2178 : : const enum tree_code ARG_UNUSED (cmp2),
2179 : : const enum tree_code ARG_UNUSED (rcmp))
2180 : : {
2181 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2182 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2183 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
2184 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
2185 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
2186 : : )
2187 : : {
2188 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail554;
2189 : 0 : {
2190 : 0 : tree res_op0;
2191 : 0 : res_op0 = captures[0];
2192 : 0 : tree res_op1;
2193 : 0 : res_op1 = captures[1];
2194 : 0 : tree _r;
2195 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
2196 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 353, __FILE__, __LINE__, true);
2197 : 0 : return _r;
2198 : : }
2199 : 0 : next_after_fail554:;
2200 : : }
2201 : : return NULL_TREE;
2202 : : }
2203 : :
2204 : : tree
2205 : 13 : generic_simplify_229 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2206 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2207 : : const enum tree_code ARG_UNUSED (cmp))
2208 : : {
2209 : 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2210 : 13 : if (tree_fits_shwi_p (captures[3])
2211 : 13 : && tree_to_shwi (captures[3]) > 0
2212 : 26 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
2213 : : )
2214 : : {
2215 : 13 : if (tree_to_shwi (captures[3]) > wi::ctz (wi::to_wide (captures[5]))
2216 : : )
2217 : : {
2218 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail563;
2219 : 0 : {
2220 : 0 : tree _r;
2221 : 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
2222 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2223 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2224 : 0 : if (TREE_SIDE_EFFECTS (captures[3]))
2225 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
2226 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2227 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2228 : 0 : if (TREE_SIDE_EFFECTS (captures[5]))
2229 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
2230 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 362, __FILE__, __LINE__, true);
2231 : 0 : return _r;
2232 : : }
2233 : 0 : next_after_fail563:;
2234 : : }
2235 : : else
2236 : : {
2237 : 13 : {
2238 : 13 : wide_int c1 = wi::to_wide (captures[3]);
2239 : 13 : wide_int c2 = wi::lrshift (wi::to_wide (captures[4]), c1);
2240 : 13 : wide_int c3 = wi::lrshift (wi::to_wide (captures[5]), c1);
2241 : 13 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail564;
2242 : 13 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail564;
2243 : 13 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail564;
2244 : 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail564;
2245 : 13 : {
2246 : 13 : tree res_op0;
2247 : 13 : {
2248 : 13 : tree _o1[2], _r1;
2249 : 13 : _o1[0] = captures[2];
2250 : 13 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[2]), c2);
2251 : 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2252 : 13 : res_op0 = _r1;
2253 : : }
2254 : 13 : tree res_op1;
2255 : 13 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[2]), c3);
2256 : 13 : tree _r;
2257 : 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2258 : 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 363, __FILE__, __LINE__, true);
2259 : 13 : return _r;
2260 : : }
2261 : 0 : next_after_fail564:;
2262 : 13 : }
2263 : : }
2264 : : }
2265 : : return NULL_TREE;
2266 : : }
2267 : :
2268 : : tree
2269 : 177 : generic_simplify_240 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2270 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2271 : : const enum tree_code ARG_UNUSED (cmp),
2272 : : const enum tree_code ARG_UNUSED (icmp),
2273 : : const enum tree_code ARG_UNUSED (ncmp))
2274 : : {
2275 : 177 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2276 : 177 : if (types_match (type, TREE_TYPE (captures[0]))
2277 : : )
2278 : : {
2279 : 125 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail583;
2280 : 125 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail583;
2281 : 125 : {
2282 : 125 : tree res_op0;
2283 : 125 : res_op0 = captures[1];
2284 : 125 : tree res_op1;
2285 : 125 : res_op1 = captures[2];
2286 : 125 : tree _r;
2287 : 125 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2288 : 125 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 382, __FILE__, __LINE__, true);
2289 : 125 : return _r;
2290 : : }
2291 : : next_after_fail583:;
2292 : : }
2293 : : return NULL_TREE;
2294 : : }
2295 : :
2296 : : tree
2297 : 127143 : generic_simplify_246 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2298 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2299 : : const enum tree_code ARG_UNUSED (cmp))
2300 : : {
2301 : 127143 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2302 : 249465 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2303 : 127180 : || ! tree_expr_maybe_nan_p (captures[0])
2304 : : )
2305 : : {
2306 : 122359 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail594;
2307 : 122359 : {
2308 : 122359 : tree _r;
2309 : 122359 : _r = constant_boolean_node (true, type);
2310 : 122359 : if (TREE_SIDE_EFFECTS (captures[0]))
2311 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2312 : 122359 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
2313 : 122359 : return _r;
2314 : : }
2315 : 0 : next_after_fail594:;
2316 : : }
2317 : : else
2318 : : {
2319 : 4784 : if (cmp != EQ_EXPR
2320 : 4784 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2321 : 79 : || ! flag_trapping_math)
2322 : : )
2323 : : {
2324 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail595;
2325 : 0 : {
2326 : 0 : tree res_op0;
2327 : 0 : res_op0 = unshare_expr (captures[0]);
2328 : 0 : tree res_op1;
2329 : 0 : res_op1 = captures[0];
2330 : 0 : tree _r;
2331 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2332 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
2333 : 0 : return _r;
2334 : : }
2335 : 0 : next_after_fail595:;
2336 : : }
2337 : : }
2338 : : return NULL_TREE;
2339 : : }
2340 : :
2341 : : tree
2342 : 8900 : generic_simplify_252 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2343 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2344 : : const enum tree_code ARG_UNUSED (op),
2345 : : const enum tree_code ARG_UNUSED (cmp))
2346 : : {
2347 : 8900 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2348 : 8900 : if (flag_unsafe_math_optimizations
2349 : : )
2350 : : {
2351 : 5 : {
2352 : 8 : tree tem = const_binop (op == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR,
2353 : 5 : TREE_TYPE (captures[1]), captures[2], captures[1]);
2354 : 5 : if (tem && !TREE_OVERFLOW (tem)
2355 : : )
2356 : : {
2357 : 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail615;
2358 : 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail615;
2359 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail615;
2360 : 4 : {
2361 : 4 : tree res_op0;
2362 : 4 : res_op0 = captures[0];
2363 : 4 : tree res_op1;
2364 : 4 : res_op1 = tem;
2365 : 4 : tree _r;
2366 : 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2367 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 412, __FILE__, __LINE__, true);
2368 : 4 : return _r;
2369 : : }
2370 : : next_after_fail615:;
2371 : : }
2372 : : }
2373 : : }
2374 : : return NULL_TREE;
2375 : : }
2376 : :
2377 : : tree
2378 : 84401 : generic_simplify_257 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2379 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2380 : : const enum tree_code ARG_UNUSED (cmp),
2381 : : const enum tree_code ARG_UNUSED (icmp))
2382 : : {
2383 : 84401 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2384 : 84401 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[1]))
2385 : 84401 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1]))
2386 : : )
2387 : : {
2388 : 83910 : {
2389 : 83910 : tree itype = TREE_TYPE (captures[0]);
2390 : 83910 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[1]))));
2391 : 83910 : const REAL_VALUE_TYPE *cst = TREE_REAL_CST_PTR (captures[1]);
2392 : 83910 : bool exception_p = real_isnan (cst)
2393 : 150 : && flag_trapping_math
2394 : 84060 : && ((cmp != EQ_EXPR && cmp != NE_EXPR)
2395 : 30 : || (cst->signalling
2396 : 30 : && HONOR_SNANS (TREE_TYPE (captures[1]))));
2397 : 83910 : if (fmt.can_represent_integral_type_p (itype) && ! exception_p
2398 : : )
2399 : : {
2400 : 40881 : {
2401 : 40881 : signop isign = TYPE_SIGN (itype);
2402 : 40881 : REAL_VALUE_TYPE imin, imax;
2403 : 40881 : real_from_integer (&imin, fmt, wi::min_value (itype), isign);
2404 : 40881 : real_from_integer (&imax, fmt, wi::max_value (itype), isign);
2405 : 40881 : REAL_VALUE_TYPE icst;
2406 : 40881 : if (cmp == GT_EXPR || cmp == GE_EXPR)
2407 : 40546 : real_ceil (&icst, fmt, cst);
2408 : 335 : else if (cmp == LT_EXPR || cmp == LE_EXPR)
2409 : 183 : real_floor (&icst, fmt, cst);
2410 : : else
2411 : 152 : real_trunc (&icst, fmt, cst);
2412 : 40881 : bool cst_int_p = !real_isnan (cst) && real_identical (&icst, cst);
2413 : 40881 : bool overflow_p = false;
2414 : 40881 : wide_int icst_val
2415 : 40881 : = real_to_integer (&icst, &overflow_p, TYPE_PRECISION (itype));
2416 : 40881 : if (real_compare (LT_EXPR, cst, &imin)
2417 : : )
2418 : : {
2419 : 20270 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail641;
2420 : 20270 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail641;
2421 : 20270 : {
2422 : 20270 : tree _r;
2423 : 20270 : _r = constant_boolean_node (cmp == GT_EXPR || cmp == GE_EXPR || cmp == NE_EXPR,
2424 : : type);
2425 : 20270 : if (TREE_SIDE_EFFECTS (captures[0]))
2426 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2427 : 20270 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 438, __FILE__, __LINE__, true);
2428 : 20270 : return _r;
2429 : : }
2430 : 0 : next_after_fail641:;
2431 : : }
2432 : : else
2433 : : {
2434 : 20611 : if (real_compare (GT_EXPR, cst, &imax)
2435 : : )
2436 : : {
2437 : 99 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail642;
2438 : 99 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail642;
2439 : 99 : {
2440 : 99 : tree _r;
2441 : 99 : _r = constant_boolean_node (cmp == LT_EXPR || cmp == LE_EXPR || cmp == NE_EXPR,
2442 : : type);
2443 : 99 : if (TREE_SIDE_EFFECTS (captures[0]))
2444 : 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2445 : 99 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 439, __FILE__, __LINE__, true);
2446 : 99 : return _r;
2447 : : }
2448 : 0 : next_after_fail642:;
2449 : : }
2450 : : else
2451 : : {
2452 : 20512 : if (cst_int_p
2453 : : )
2454 : : {
2455 : 20404 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail643;
2456 : 20404 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail643;
2457 : 20404 : {
2458 : 20404 : tree res_op0;
2459 : 20404 : res_op0 = captures[0];
2460 : 20404 : tree res_op1;
2461 : 20404 : gcc_assert (!overflow_p); res_op1 =
2462 : 20404 : wide_int_to_tree (itype, icst_val);
2463 : 20404 : tree _r;
2464 : 20404 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2465 : 20404 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 440, __FILE__, __LINE__, true);
2466 : 20404 : return _r;
2467 : : }
2468 : 0 : next_after_fail643:;
2469 : : }
2470 : : else
2471 : : {
2472 : 108 : if (cmp == EQ_EXPR || cmp == NE_EXPR
2473 : : )
2474 : : {
2475 : 14 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail644;
2476 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail644;
2477 : 14 : {
2478 : 14 : tree _r;
2479 : 14 : _r = constant_boolean_node (cmp == NE_EXPR, type);
2480 : 14 : if (TREE_SIDE_EFFECTS (captures[0]))
2481 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2482 : 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 441, __FILE__, __LINE__, true);
2483 : 14 : return _r;
2484 : : }
2485 : 0 : next_after_fail644:;
2486 : : }
2487 : : else
2488 : : {
2489 : 94 : {
2490 : 94 : gcc_checking_assert (!overflow_p);
2491 : 94 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail645;
2492 : 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail645;
2493 : 94 : {
2494 : 94 : tree res_op0;
2495 : 94 : res_op0 = captures[0];
2496 : 94 : tree res_op1;
2497 : 94 : res_op1 = wide_int_to_tree (itype, icst_val);
2498 : 94 : tree _r;
2499 : 94 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2500 : 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 442, __FILE__, __LINE__, true);
2501 : 94 : return _r;
2502 : : }
2503 : 0 : next_after_fail645:;
2504 : : }
2505 : : }
2506 : : }
2507 : : }
2508 : : }
2509 : 40881 : }
2510 : : }
2511 : : }
2512 : : }
2513 : : return NULL_TREE;
2514 : : }
2515 : :
2516 : : tree
2517 : 28255193 : generic_simplify_271 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2518 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2519 : : const enum tree_code ARG_UNUSED (cmp))
2520 : : {
2521 : 28255193 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2522 : 28255193 : if (tree_expr_nonzero_p (captures[0])
2523 : : )
2524 : : {
2525 : 1081564 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail676;
2526 : 1081564 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail676;
2527 : 1081564 : {
2528 : 1081564 : tree _r;
2529 : 1081564 : _r = constant_boolean_node (cmp == NE_EXPR, type);
2530 : 1081564 : if (TREE_SIDE_EFFECTS (captures[0]))
2531 : 7779 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2532 : 1081564 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
2533 : 1081564 : return _r;
2534 : : }
2535 : : next_after_fail676:;
2536 : : }
2537 : : return NULL_TREE;
2538 : : }
2539 : :
2540 : : tree
2541 : 791972 : generic_simplify_275 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2542 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2543 : : const enum tree_code ARG_UNUSED (cmp),
2544 : : const enum tree_code ARG_UNUSED (ncmp))
2545 : : {
2546 : 791972 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2547 : 1501157 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2548 : 791972 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
2549 : 790727 : && element_precision (captures[0]) >= element_precision (captures[1])
2550 : 1583944 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
2551 : : )
2552 : : {
2553 : 18481 : {
2554 : 18481 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
2555 : 18481 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail680;
2556 : 18481 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail680;
2557 : 18481 : {
2558 : 18481 : tree res_op0;
2559 : 18481 : {
2560 : 18481 : tree _o1[1], _r1;
2561 : 18481 : _o1[0] = captures[1];
2562 : 18481 : if (TREE_TYPE (_o1[0]) != stype)
2563 : : {
2564 : 18268 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2565 : : }
2566 : : else
2567 : : _r1 = _o1[0];
2568 : 18481 : res_op0 = _r1;
2569 : : }
2570 : 18481 : tree res_op1;
2571 : 18481 : res_op1 = build_zero_cst (stype);
2572 : 18481 : tree _r;
2573 : 18481 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
2574 : 18481 : if (TREE_SIDE_EFFECTS (captures[2]))
2575 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2576 : 18481 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 469, __FILE__, __LINE__, true);
2577 : 18481 : return _r;
2578 : : }
2579 : : next_after_fail680:;
2580 : : }
2581 : : }
2582 : : return NULL_TREE;
2583 : : }
2584 : :
2585 : : tree
2586 : 51561116 : generic_simplify_281 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2587 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2588 : : const enum tree_code ARG_UNUSED (neeq))
2589 : : {
2590 : 51561116 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2591 : 92195127 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
2592 : 51579826 : && ptrs_compare_unequal (captures[0], captures[1])
2593 : : )
2594 : : {
2595 : 11964 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail700;
2596 : 11964 : {
2597 : 11964 : tree _r;
2598 : 11964 : _r = constant_boolean_node (neeq != EQ_EXPR, type);
2599 : 11964 : if (TREE_SIDE_EFFECTS (captures[0]))
2600 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2601 : 11964 : if (TREE_SIDE_EFFECTS (captures[1]))
2602 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2603 : 11964 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
2604 : 11964 : return _r;
2605 : : }
2606 : 0 : next_after_fail700:;
2607 : : }
2608 : : return NULL_TREE;
2609 : : }
2610 : :
2611 : : tree
2612 : 2 : generic_simplify_284 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2613 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2614 : : const enum tree_code ARG_UNUSED (cmp))
2615 : : {
2616 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2617 : 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2618 : 2 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2619 : 2 : && TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2620 : 2 : && (TYPE_PRECISION (TREE_TYPE (captures[1]))
2621 : 2 : >= 2 * TYPE_PRECISION (TREE_TYPE (captures[2])))
2622 : 2 : && tree_fits_uhwi_p (captures[4])
2623 : 2 : && tree_to_uhwi (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[2]))
2624 : 2 : && types_match (captures[2], captures[3])
2625 : 2 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2626 : 6 : && (optab_handler (umulv4_optab, TYPE_MODE (TREE_TYPE (captures[2])))
2627 : : != CODE_FOR_nothing)
2628 : : )
2629 : : {
2630 : 2 : {
2631 : 2 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2632 : 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail707;
2633 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail707;
2634 : 2 : {
2635 : 2 : tree res_op0;
2636 : 2 : {
2637 : 2 : tree _o1[1], _r1;
2638 : 2 : {
2639 : 2 : tree _o2[2], _r2;
2640 : 2 : _o2[0] = captures[2];
2641 : 2 : _o2[1] = captures[3];
2642 : 2 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2643 : 2 : if (!_r2)
2644 : 0 : goto next_after_fail707;
2645 : 2 : _o1[0] = _r2;
2646 : : }
2647 : 2 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2648 : 2 : res_op0 = _r1;
2649 : : }
2650 : 2 : tree res_op1;
2651 : 2 : res_op1 = build_zero_cst (t);
2652 : 2 : tree _r;
2653 : 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2654 : 2 : if (TREE_SIDE_EFFECTS (captures[4]))
2655 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2656 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 487, __FILE__, __LINE__, true);
2657 : 2 : return _r;
2658 : : }
2659 : : next_after_fail707:;
2660 : : }
2661 : : }
2662 : : return NULL_TREE;
2663 : : }
2664 : :
2665 : : tree
2666 : 581805 : generic_simplify_286 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2667 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2668 : : const enum tree_code ARG_UNUSED (cmp),
2669 : : const enum tree_code ARG_UNUSED (rcmp))
2670 : : {
2671 : 581805 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2672 : 1163610 : if (!TREE_OVERFLOW (captures[0]) && !TREE_OVERFLOW (captures[2])
2673 : 1163610 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2674 : : )
2675 : : {
2676 : 4229 : {
2677 : 4229 : tree res = int_const_binop (MINUS_EXPR, captures[0], captures[2]);
2678 : 4229 : if (TREE_OVERFLOW (res)
2679 : : )
2680 : : {
2681 : 48 : if (cmp == NE_EXPR
2682 : : )
2683 : : {
2684 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail710;
2685 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail710;
2686 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail710;
2687 : 0 : {
2688 : 0 : tree _r;
2689 : 0 : _r = constant_boolean_node (true, type);
2690 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2691 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2692 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
2693 : 0 : return _r;
2694 : : }
2695 : : next_after_fail710:;
2696 : : }
2697 : : else
2698 : : {
2699 : 48 : if (cmp == EQ_EXPR
2700 : : )
2701 : : {
2702 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail711;
2703 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail711;
2704 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail711;
2705 : 0 : {
2706 : 0 : tree _r;
2707 : 0 : _r = constant_boolean_node (false, type);
2708 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2709 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2710 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 491, __FILE__, __LINE__, true);
2711 : 0 : return _r;
2712 : : }
2713 : : next_after_fail711:;
2714 : : }
2715 : : else
2716 : : {
2717 : 48 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail712;
2718 : 48 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail712;
2719 : 48 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail712;
2720 : 48 : {
2721 : 48 : tree _r;
2722 : 48 : bool less = cmp == LE_EXPR || cmp == LT_EXPR;
2723 : 48 : bool ovf_high = wi::lt_p (wi::to_wide (captures[0]), 0,
2724 : 48 : TYPE_SIGN (TREE_TYPE (captures[0]))); _r =
2725 : 48 : constant_boolean_node (less == ovf_high, type);
2726 : 48 : if (TREE_SIDE_EFFECTS (captures[1]))
2727 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2728 : 48 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 492, __FILE__, __LINE__, true);
2729 : 48 : return _r;
2730 : : }
2731 : : next_after_fail712:;
2732 : : }
2733 : : }
2734 : : }
2735 : : else
2736 : : {
2737 : 4181 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail713;
2738 : 4181 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail713;
2739 : 4181 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail713;
2740 : 4181 : {
2741 : 4181 : tree res_op0;
2742 : 4181 : res_op0 = captures[1];
2743 : 4181 : tree res_op1;
2744 : 4181 : res_op1 = res;
2745 : 4181 : tree _r;
2746 : 4181 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
2747 : 4181 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 493, __FILE__, __LINE__, true);
2748 : 4181 : return _r;
2749 : : }
2750 : : next_after_fail713:;
2751 : : }
2752 : : }
2753 : : }
2754 : : else
2755 : : {
2756 : 577576 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2757 : : )
2758 : : {
2759 : 577470 : if (cmp == EQ_EXPR || cmp == NE_EXPR
2760 : : )
2761 : : {
2762 : 39551 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail714;
2763 : 39551 : {
2764 : 39551 : tree res_op0;
2765 : 39551 : res_op0 = captures[1];
2766 : 39551 : tree res_op1;
2767 : 39551 : {
2768 : 39551 : tree _o1[2], _r1;
2769 : 39551 : _o1[0] = captures[0];
2770 : 39551 : _o1[1] = captures[2];
2771 : 39551 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2772 : 39551 : res_op1 = _r1;
2773 : : }
2774 : 39551 : tree _r;
2775 : 39551 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2776 : 39551 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 494, __FILE__, __LINE__, true);
2777 : 39551 : return _r;
2778 : : }
2779 : 0 : next_after_fail714:;
2780 : : }
2781 : : else
2782 : : {
2783 : 537919 : if (cmp == LE_EXPR || cmp == GT_EXPR
2784 : : )
2785 : : {
2786 : 537919 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail715;
2787 : 537919 : {
2788 : 537919 : if (! tree_invariant_p (captures[2])) goto next_after_fail715;
2789 : 537919 : tree res_op0;
2790 : 537919 : {
2791 : 537919 : tree _o1[2], _r1;
2792 : 537919 : _o1[0] = captures[1];
2793 : 537919 : {
2794 : 537919 : tree _o2[2], _r2;
2795 : 537919 : _o2[0] = unshare_expr (captures[2]);
2796 : 537919 : _o2[1] = captures[0];
2797 : 537919 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2798 : 537919 : _o1[1] = _r2;
2799 : : }
2800 : 537919 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2801 : 537919 : res_op0 = _r1;
2802 : : }
2803 : 537919 : tree res_op1;
2804 : 537919 : res_op1 = captures[2];
2805 : 537919 : tree _r;
2806 : 537919 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2807 : 537919 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
2808 : 537919 : return _r;
2809 : : }
2810 : : next_after_fail715:;
2811 : : }
2812 : : else
2813 : : {
2814 : 0 : if (cmp == LT_EXPR || cmp == GE_EXPR
2815 : : )
2816 : : {
2817 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail716;
2818 : 0 : {
2819 : 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail716;
2820 : 0 : tree res_op0;
2821 : 0 : {
2822 : 0 : tree _o1[2], _r1;
2823 : 0 : _o1[0] = captures[1];
2824 : 0 : {
2825 : 0 : tree _o2[2], _r2;
2826 : 0 : _o2[0] = unshare_expr (captures[2]);
2827 : 0 : {
2828 : 0 : tree _o3[2], _r3;
2829 : 0 : _o3[0] = captures[0];
2830 : 0 : _o3[1] = build_one_cst (TREE_TYPE (captures[1]));
2831 : 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2832 : 0 : _o2[1] = _r3;
2833 : : }
2834 : 0 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2835 : 0 : _o1[1] = _r2;
2836 : : }
2837 : 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2838 : 0 : res_op0 = _r1;
2839 : : }
2840 : 0 : tree res_op1;
2841 : 0 : res_op1 = captures[2];
2842 : 0 : tree _r;
2843 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2844 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 496, __FILE__, __LINE__, true);
2845 : 0 : return _r;
2846 : : }
2847 : : next_after_fail716:;
2848 : : }
2849 : : }
2850 : : }
2851 : : }
2852 : : else
2853 : : {
2854 : 106 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2855 : 106 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2856 : : )
2857 : : {
2858 : 106 : if (cmp == EQ_EXPR || cmp == NE_EXPR
2859 : : )
2860 : : {
2861 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail717;
2862 : 0 : {
2863 : 0 : tree res_op0;
2864 : 0 : res_op0 = captures[1];
2865 : 0 : tree res_op1;
2866 : 0 : {
2867 : 0 : tree _o1[2], _r1;
2868 : 0 : _o1[0] = captures[0];
2869 : 0 : _o1[1] = captures[2];
2870 : 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2871 : 0 : res_op1 = _r1;
2872 : : }
2873 : 0 : tree _r;
2874 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2875 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 497, __FILE__, __LINE__, true);
2876 : 0 : return _r;
2877 : : }
2878 : 0 : next_after_fail717:;
2879 : : }
2880 : : else
2881 : : {
2882 : 106 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail718;
2883 : 106 : {
2884 : 106 : tree res_op0;
2885 : 106 : {
2886 : 106 : tree _o1[2], _r1;
2887 : 106 : _o1[0] = captures[1];
2888 : 106 : {
2889 : 106 : tree _o2[2], _r2;
2890 : 106 : _o2[0] = captures[0];
2891 : 106 : _o2[1] = build_one_cst (TREE_TYPE (captures[1]));
2892 : 106 : _r2 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2893 : 106 : _o1[1] = _r2;
2894 : : }
2895 : 106 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2896 : 106 : res_op0 = _r1;
2897 : : }
2898 : 106 : tree res_op1;
2899 : 106 : {
2900 : 106 : tree _o1[1], _r1;
2901 : 106 : _o1[0] = captures[2];
2902 : 106 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2903 : 106 : res_op1 = _r1;
2904 : : }
2905 : 106 : tree _r;
2906 : 106 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
2907 : 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 498, __FILE__, __LINE__, true);
2908 : 106 : return _r;
2909 : : }
2910 : 0 : next_after_fail718:;
2911 : : }
2912 : : }
2913 : : }
2914 : : }
2915 : : return NULL_TREE;
2916 : : }
2917 : :
2918 : : tree
2919 : 6 : generic_simplify_332 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2920 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2921 : : const combined_fn ARG_UNUSED (COS),
2922 : : const combined_fn ARG_UNUSED (SIN),
2923 : : const combined_fn ARG_UNUSED (TAN))
2924 : : {
2925 : 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2926 : 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
2927 : : )
2928 : : {
2929 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail776;
2930 : 6 : {
2931 : 6 : tree res_op0;
2932 : 6 : res_op0 = build_one_cst (type);
2933 : 6 : tree res_op1;
2934 : 6 : {
2935 : 6 : tree _o1[1], _r1;
2936 : 6 : _o1[0] = captures[1];
2937 : 6 : _r1 = maybe_build_call_expr_loc (loc, TAN, TREE_TYPE (_o1[0]), 1, _o1[0]);
2938 : 6 : if (!_r1)
2939 : 0 : goto next_after_fail776;
2940 : 6 : res_op1 = _r1;
2941 : : }
2942 : 6 : tree _r;
2943 : 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
2944 : 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 554, __FILE__, __LINE__, true);
2945 : 6 : return _r;
2946 : : }
2947 : : next_after_fail776:;
2948 : : }
2949 : : return NULL_TREE;
2950 : : }
2951 : :
2952 : : tree
2953 : 43 : generic_simplify_340 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2954 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2955 : : const enum tree_code ARG_UNUSED (cmp),
2956 : : const enum tree_code ARG_UNUSED (minmax))
2957 : : {
2958 : 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2959 : 43 : {
2960 : 43 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[4]);
2961 : 43 : if ((cmp == LT_EXPR || cmp == LE_EXPR)
2962 : 15 : && code == MIN_EXPR
2963 : 47 : && integer_nonzerop (fold_build2 (LE_EXPR, boolean_type_node, captures[3], captures[4]))
2964 : : )
2965 : : {
2966 : 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail788;
2967 : 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail788;
2968 : 4 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail788;
2969 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail788;
2970 : 4 : {
2971 : 4 : tree res_op0;
2972 : 4 : res_op0 = captures[2];
2973 : 4 : tree res_op1;
2974 : 4 : res_op1 = captures[4];
2975 : 4 : tree _r;
2976 : 4 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
2977 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 566, __FILE__, __LINE__, true);
2978 : 4 : return _r;
2979 : : }
2980 : : next_after_fail788:;
2981 : : }
2982 : : else
2983 : : {
2984 : 39 : if ((cmp == GT_EXPR || cmp == GE_EXPR)
2985 : 28 : && code == MAX_EXPR
2986 : 59 : && integer_nonzerop (fold_build2 (GE_EXPR, boolean_type_node, captures[3], captures[4]))
2987 : : )
2988 : : {
2989 : 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail789;
2990 : 6 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail789;
2991 : 6 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail789;
2992 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail789;
2993 : 6 : {
2994 : 6 : tree res_op0;
2995 : 6 : res_op0 = captures[2];
2996 : 6 : tree res_op1;
2997 : 6 : res_op1 = captures[4];
2998 : 6 : tree _r;
2999 : 6 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
3000 : 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 567, __FILE__, __LINE__, true);
3001 : 6 : return _r;
3002 : : }
3003 : : next_after_fail789:;
3004 : : }
3005 : : }
3006 : : }
3007 : : return NULL_TREE;
3008 : : }
3009 : :
3010 : : tree
3011 : 0 : generic_simplify_350 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3012 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3013 : : const enum tree_code ARG_UNUSED (op))
3014 : : {
3015 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3016 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail800;
3017 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail800;
3018 : 0 : {
3019 : 0 : tree _r;
3020 : 0 : _r = captures[2];
3021 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 577, __FILE__, __LINE__, true);
3022 : : return _r;
3023 : : }
3024 : : next_after_fail800:;
3025 : : return NULL_TREE;
3026 : : }
3027 : :
3028 : : tree
3029 : 0 : generic_simplify_357 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3030 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3031 : : {
3032 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3033 : 0 : if (INTEGRAL_TYPE_P (type)
3034 : : )
3035 : : {
3036 : 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail807;
3037 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail807;
3038 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail807;
3039 : 0 : {
3040 : 0 : tree _r;
3041 : 0 : _r = captures[2];
3042 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 584, __FILE__, __LINE__, true);
3043 : 0 : return _r;
3044 : : }
3045 : : next_after_fail807:;
3046 : : }
3047 : : return NULL_TREE;
3048 : : }
3049 : :
3050 : : tree
3051 : 3 : generic_simplify_363 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3052 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3053 : : const combined_fn ARG_UNUSED (func))
3054 : : {
3055 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3056 : 3 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
3057 : : )
3058 : : {
3059 : 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail814;
3060 : 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail814;
3061 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail814;
3062 : 3 : {
3063 : 3 : tree _r;
3064 : 3 : _r = captures[2];
3065 : 3 : if (TREE_SIDE_EFFECTS (captures[1]))
3066 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3067 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
3068 : 3 : return _r;
3069 : : }
3070 : : next_after_fail814:;
3071 : : }
3072 : : return NULL_TREE;
3073 : : }
3074 : :
3075 : : tree
3076 : 19396 : generic_simplify_370 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3077 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3078 : : const enum tree_code ARG_UNUSED (cmp))
3079 : : {
3080 : 19396 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3081 : 38792 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3082 : 38731 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
3083 : : )
3084 : : {
3085 : 15935 : if (tree_expr_nonnegative_p (captures[1]) && tree_expr_nonzero_p (captures[1])
3086 : : )
3087 : : {
3088 : 12272 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail824;
3089 : 12272 : {
3090 : 12272 : tree res_op0;
3091 : 12272 : res_op0 = captures[0];
3092 : 12272 : tree res_op1;
3093 : 12272 : res_op1 = captures[2];
3094 : 12272 : tree _r;
3095 : 12272 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
3096 : 12272 : if (TREE_SIDE_EFFECTS (captures[1]))
3097 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3098 : 12272 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 600, __FILE__, __LINE__, true);
3099 : 12272 : return _r;
3100 : : }
3101 : 0 : next_after_fail824:;
3102 : : }
3103 : : else
3104 : : {
3105 : 3663 : if (TREE_CODE (captures[1]) == INTEGER_CST
3106 : 3663 : && wi::neg_p (wi::to_wide (captures[1]), TYPE_SIGN (TREE_TYPE (captures[1])))
3107 : : )
3108 : : {
3109 : 1190 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail825;
3110 : 1190 : {
3111 : 1190 : tree res_op0;
3112 : 1190 : res_op0 = captures[2];
3113 : 1190 : tree res_op1;
3114 : 1190 : res_op1 = captures[0];
3115 : 1190 : tree _r;
3116 : 1190 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
3117 : 1190 : if (TREE_SIDE_EFFECTS (captures[1]))
3118 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3119 : 1190 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 601, __FILE__, __LINE__, true);
3120 : 1190 : return _r;
3121 : : }
3122 : 0 : next_after_fail825:;
3123 : : }
3124 : : }
3125 : : }
3126 : : return NULL_TREE;
3127 : : }
3128 : :
3129 : : tree
3130 : 37867 : generic_simplify_380 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3131 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3132 : : const enum tree_code ARG_UNUSED (cmp),
3133 : : const enum tree_code ARG_UNUSED (out))
3134 : : {
3135 : 37867 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3136 : 37867 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
3137 : 37851 : && types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[0]))
3138 : 37851 : && tree_nop_conversion_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
3139 : 37867 : && wi::to_wide (captures[4]) != 0
3140 : 0 : && single_use (captures[1])
3141 : : )
3142 : : {
3143 : 37851 : {
3144 : 37851 : unsigned int prec = TYPE_PRECISION (TREE_TYPE (captures[3]));
3145 : 37851 : signop sign = TYPE_SIGN (TREE_TYPE (captures[3]));
3146 : 37851 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail836;
3147 : 37851 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail836;
3148 : 37851 : {
3149 : 37851 : tree res_op0;
3150 : 37851 : res_op0 = captures[3];
3151 : 37851 : tree res_op1;
3152 : 37851 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[3]),
3153 : 37851 : wi::max_value (prec, sign)
3154 : 113553 : - wi::to_wide (captures[4]));
3155 : 37851 : tree _r;
3156 : 37851 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
3157 : 37851 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 612, __FILE__, __LINE__, true);
3158 : 37851 : return _r;
3159 : : }
3160 : : next_after_fail836:;
3161 : : }
3162 : : }
3163 : : return NULL_TREE;
3164 : : }
3165 : :
3166 : : tree
3167 : 0 : generic_simplify_389 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3168 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3169 : : const enum tree_code ARG_UNUSED (cmp),
3170 : : const enum tree_code ARG_UNUSED (out))
3171 : : {
3172 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3173 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3174 : 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
3175 : : )
3176 : : {
3177 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail877;
3178 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail877;
3179 : 0 : {
3180 : 0 : tree res_op0;
3181 : 0 : {
3182 : 0 : tree _o1[1], _r1;
3183 : 0 : _o1[0] = captures[0];
3184 : 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
3185 : 0 : res_op0 = _r1;
3186 : : }
3187 : 0 : tree res_op1;
3188 : 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
3189 : 0 : tree _r;
3190 : 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
3191 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
3192 : 0 : return _r;
3193 : : }
3194 : : next_after_fail877:;
3195 : : }
3196 : : return NULL_TREE;
3197 : : }
3198 : :
3199 : : tree
3200 : 749121 : generic_simplify_395 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3201 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3202 : : const enum tree_code ARG_UNUSED (cmp),
3203 : : const enum tree_code ARG_UNUSED (icmp))
3204 : : {
3205 : 749121 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3206 : 1496300 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3207 : 749121 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3208 : 336448 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
3209 : 1834690 : && (wi::to_wide (captures[2])
3210 : 1758465 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
3211 : : )
3212 : : {
3213 : 5066 : {
3214 : 5066 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
3215 : 5066 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail890;
3216 : 5066 : {
3217 : 5066 : tree res_op0;
3218 : 5066 : {
3219 : 5066 : tree _o1[1], _r1;
3220 : 5066 : _o1[0] = captures[0];
3221 : 5066 : if (TREE_TYPE (_o1[0]) != stype)
3222 : : {
3223 : 5066 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
3224 : : }
3225 : : else
3226 : : _r1 = _o1[0];
3227 : 5066 : res_op0 = _r1;
3228 : : }
3229 : 5066 : tree res_op1;
3230 : 5066 : res_op1 = build_int_cst (stype, 0);
3231 : 5066 : tree _r;
3232 : 5066 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
3233 : 5066 : if (TREE_SIDE_EFFECTS (captures[1]))
3234 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3235 : 5066 : if (TREE_SIDE_EFFECTS (captures[2]))
3236 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3237 : 5066 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 649, __FILE__, __LINE__, true);
3238 : 5066 : return _r;
3239 : : }
3240 : 0 : next_after_fail890:;
3241 : : }
3242 : : }
3243 : : return NULL_TREE;
3244 : : }
3245 : :
3246 : : tree
3247 : 0 : generic_simplify_399 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3248 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3249 : : const enum tree_code ARG_UNUSED (cmp),
3250 : : const enum tree_code ARG_UNUSED (out))
3251 : : {
3252 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3253 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3254 : 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
3255 : : )
3256 : : {
3257 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail894;
3258 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail894;
3259 : 0 : {
3260 : 0 : tree res_op0;
3261 : 0 : {
3262 : 0 : tree _o1[1], _r1;
3263 : 0 : _o1[0] = captures[0];
3264 : 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
3265 : 0 : res_op0 = _r1;
3266 : : }
3267 : 0 : tree res_op1;
3268 : 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
3269 : 0 : tree _r;
3270 : 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
3271 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 635, __FILE__, __LINE__, true);
3272 : 0 : return _r;
3273 : : }
3274 : : next_after_fail894:;
3275 : : }
3276 : : return NULL_TREE;
3277 : : }
3278 : :
3279 : : tree
3280 : 43 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3281 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3282 : : const enum tree_code ARG_UNUSED (cmp),
3283 : : const enum tree_code ARG_UNUSED (cmp2),
3284 : : const enum tree_code ARG_UNUSED (cmp3),
3285 : : const enum tree_code ARG_UNUSED (bit_op),
3286 : : const combined_fn ARG_UNUSED (ffs))
3287 : : {
3288 : 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3289 : 43 : {
3290 : 43 : int prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
3291 : 43 : if (integer_zerop (captures[2])
3292 : : )
3293 : : {
3294 : 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail899;
3295 : 11 : {
3296 : 11 : tree res_op0;
3297 : 11 : res_op0 = captures[1];
3298 : 11 : tree res_op1;
3299 : 11 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
3300 : 11 : tree _r;
3301 : 11 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
3302 : 11 : if (TREE_SIDE_EFFECTS (captures[2]))
3303 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3304 : 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 654, __FILE__, __LINE__, true);
3305 : 27 : return _r;
3306 : : }
3307 : 0 : next_after_fail899:;
3308 : : }
3309 : : else
3310 : : {
3311 : 32 : if (tree_int_cst_sgn (captures[2]) < 0
3312 : : )
3313 : : {
3314 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail900;
3315 : 0 : {
3316 : 0 : tree _r;
3317 : 0 : _r = constant_boolean_node (cmp == GT_EXPR ? true : false, type);
3318 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3319 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3320 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3321 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3322 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 655, __FILE__, __LINE__, true);
3323 : 0 : return _r;
3324 : : }
3325 : 0 : next_after_fail900:;
3326 : : }
3327 : : else
3328 : : {
3329 : 32 : if (wi::to_widest (captures[2]) >= prec
3330 : : )
3331 : : {
3332 : 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail901;
3333 : 14 : {
3334 : 14 : tree _r;
3335 : 14 : _r = constant_boolean_node (cmp == GT_EXPR ? false : true, type);
3336 : 14 : if (TREE_SIDE_EFFECTS (captures[1]))
3337 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3338 : 14 : if (TREE_SIDE_EFFECTS (captures[2]))
3339 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3340 : 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 656, __FILE__, __LINE__, true);
3341 : 14 : return _r;
3342 : : }
3343 : 0 : next_after_fail901:;
3344 : : }
3345 : : else
3346 : : {
3347 : 18 : if (wi::to_widest (captures[2]) == prec - 1
3348 : : )
3349 : : {
3350 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail902;
3351 : 2 : {
3352 : 2 : tree res_op0;
3353 : 2 : res_op0 = captures[1];
3354 : 2 : tree res_op1;
3355 : 2 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[1]),
3356 : 2 : wi::shifted_mask (prec - 1, 1,
3357 : : false, prec));
3358 : 2 : tree _r;
3359 : 2 : _r = fold_build2_loc (loc, cmp3, type, res_op0, res_op1);
3360 : 2 : if (TREE_SIDE_EFFECTS (captures[2]))
3361 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3362 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 657, __FILE__, __LINE__, true);
3363 : 2 : return _r;
3364 : : }
3365 : 0 : next_after_fail902:;
3366 : : }
3367 : : else
3368 : : {
3369 : 16 : if (single_use (captures[0])
3370 : : )
3371 : : {
3372 : 16 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail903;
3373 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail903;
3374 : 16 : {
3375 : 16 : if (! tree_invariant_p (captures[1])) goto next_after_fail903;
3376 : 0 : tree res_op0;
3377 : 0 : {
3378 : 0 : tree _o1[2], _r1;
3379 : 0 : _o1[0] = unshare_expr (captures[1]);
3380 : 0 : _o1[1] = build_zero_cst (TREE_TYPE (captures[1]));
3381 : 0 : _r1 = fold_build2_loc (loc, cmp2, type, _o1[0], _o1[1]);
3382 : 0 : res_op0 = _r1;
3383 : : }
3384 : 0 : tree res_op1;
3385 : 0 : {
3386 : 0 : tree _o1[2], _r1;
3387 : 0 : {
3388 : 0 : tree _o2[2], _r2;
3389 : 0 : _o2[0] = captures[1];
3390 : 0 : _o2[1] = wide_int_to_tree (TREE_TYPE (captures[1]),
3391 : 0 : wi::mask (tree_to_uhwi (captures[2]),
3392 : : false, prec));
3393 : 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3394 : 0 : _o1[0] = _r2;
3395 : : }
3396 : 0 : _o1[1] = build_zero_cst (TREE_TYPE (captures[1]));
3397 : 0 : _r1 = fold_build2_loc (loc, cmp3, type, _o1[0], _o1[1]);
3398 : 0 : res_op1 = _r1;
3399 : : }
3400 : 0 : tree _r;
3401 : 0 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
3402 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 658, __FILE__, __LINE__, true);
3403 : 0 : return _r;
3404 : : }
3405 : 16 : next_after_fail903:;
3406 : : }
3407 : : }
3408 : : }
3409 : : }
3410 : : }
3411 : : }
3412 : 16 : return NULL_TREE;
3413 : : }
3414 : :
3415 : : tree
3416 : 20481540 : generic_simplify_424 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3417 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3418 : : const enum tree_code ARG_UNUSED (op))
3419 : : {
3420 : 20481540 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3421 : 20481540 : if (INTEGRAL_TYPE_P (type)
3422 : 19054456 : && op != MULT_EXPR
3423 : 19054456 : && op != RDIV_EXPR
3424 : 11060811 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
3425 : 11060811 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3426 : 11060811 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
3427 : 11059623 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
3428 : 11059623 : && type_has_mode_precision_p (type)
3429 : 11027940 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3430 : 0 : && types_match (captures[2], type)
3431 : 20481540 : && (types_match (captures[2], captures[4])
3432 : 0 : || poly_int_tree_p (captures[3]))
3433 : : )
3434 : : {
3435 : 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
3436 : : )
3437 : : {
3438 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail940;
3439 : 0 : {
3440 : 0 : tree res_op0;
3441 : 0 : res_op0 = captures[2];
3442 : 0 : tree res_op1;
3443 : 0 : {
3444 : 0 : tree _o1[1], _r1;
3445 : 0 : _o1[0] = captures[4];
3446 : 0 : if (TREE_TYPE (_o1[0]) != type)
3447 : : {
3448 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3449 : : }
3450 : : else
3451 : : _r1 = _o1[0];
3452 : 0 : res_op1 = _r1;
3453 : : }
3454 : 0 : tree _r;
3455 : 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
3456 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
3457 : 0 : return _r;
3458 : : }
3459 : 0 : next_after_fail940:;
3460 : : }
3461 : : else
3462 : : {
3463 : 0 : {
3464 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
3465 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail941;
3466 : 0 : {
3467 : 0 : tree res_op0;
3468 : 0 : {
3469 : 0 : tree _o1[2], _r1;
3470 : 0 : {
3471 : 0 : tree _o2[1], _r2;
3472 : 0 : _o2[0] = captures[2];
3473 : 0 : if (TREE_TYPE (_o2[0]) != utype)
3474 : : {
3475 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3476 : : }
3477 : : else
3478 : : _r2 = _o2[0];
3479 : 0 : _o1[0] = _r2;
3480 : : }
3481 : 0 : {
3482 : 0 : tree _o2[1], _r2;
3483 : 0 : _o2[0] = captures[4];
3484 : 0 : if (TREE_TYPE (_o2[0]) != utype)
3485 : : {
3486 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3487 : : }
3488 : : else
3489 : : _r2 = _o2[0];
3490 : 0 : _o1[1] = _r2;
3491 : : }
3492 : 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3493 : 0 : res_op0 = _r1;
3494 : : }
3495 : 0 : tree _r;
3496 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3497 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
3498 : 0 : return _r;
3499 : : }
3500 : 0 : next_after_fail941:;
3501 : : }
3502 : : }
3503 : : }
3504 : : else
3505 : : {
3506 : 20420112 : if (FLOAT_TYPE_P (type)
3507 : 20542968 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
3508 : 61428 : == DECIMAL_FLOAT_TYPE_P (type)
3509 : : )
3510 : : {
3511 : 61388 : {
3512 : 61388 : tree arg0 = strip_float_extensions (captures[2]);
3513 : 61388 : tree arg1 = strip_float_extensions (captures[4]);
3514 : 61388 : tree itype = TREE_TYPE (captures[0]);
3515 : 61388 : tree ty1 = TREE_TYPE (arg0);
3516 : 61388 : tree ty2 = TREE_TYPE (arg1);
3517 : 61388 : enum tree_code code = TREE_CODE (itype);
3518 : 0 : if (FLOAT_TYPE_P (ty1)
3519 : 61388 : && FLOAT_TYPE_P (ty2)
3520 : : )
3521 : : {
3522 : 61388 : {
3523 : 61388 : tree newtype = type;
3524 : 61388 : if (TYPE_MODE (ty1) == SDmode
3525 : 61120 : || TYPE_MODE (ty2) == SDmode
3526 : 122508 : || TYPE_MODE (type) == SDmode)
3527 : 283 : newtype = dfloat32_type_node;
3528 : 61388 : if (TYPE_MODE (ty1) == DDmode
3529 : 61242 : || TYPE_MODE (ty2) == DDmode
3530 : 122503 : || TYPE_MODE (type) == DDmode)
3531 : 275 : newtype = dfloat64_type_node;
3532 : 61388 : if (TYPE_MODE (ty1) == TDmode
3533 : 61387 : || TYPE_MODE (ty2) == TDmode
3534 : 122523 : || TYPE_MODE (type) == TDmode)
3535 : 268 : newtype = dfloat128_type_node;
3536 : 61388 : if ((newtype == dfloat32_type_node
3537 : 61384 : || newtype == dfloat64_type_node
3538 : 61241 : || newtype == dfloat128_type_node)
3539 : 415 : && newtype == type
3540 : 61399 : && types_match (newtype, type)
3541 : : )
3542 : : {
3543 : 11 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail942;
3544 : 5 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail942;
3545 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail942;
3546 : 5 : {
3547 : 5 : tree res_op0;
3548 : 5 : {
3549 : 5 : tree _o1[1], _r1;
3550 : 5 : _o1[0] = captures[2];
3551 : 5 : if (TREE_TYPE (_o1[0]) != newtype)
3552 : : {
3553 : 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
3554 : : }
3555 : : else
3556 : : _r1 = _o1[0];
3557 : 5 : res_op0 = _r1;
3558 : : }
3559 : 5 : tree res_op1;
3560 : 5 : {
3561 : 5 : tree _o1[1], _r1;
3562 : 5 : _o1[0] = captures[4];
3563 : 5 : if (TREE_TYPE (_o1[0]) != newtype)
3564 : : {
3565 : 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
3566 : : }
3567 : : else
3568 : : _r1 = _o1[0];
3569 : 5 : res_op1 = _r1;
3570 : : }
3571 : 5 : tree _r;
3572 : 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
3573 : 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
3574 : 5 : return _r;
3575 : : }
3576 : : next_after_fail942:;
3577 : : }
3578 : : else
3579 : : {
3580 : 61377 : {
3581 : 61377 : if (element_precision (ty1) > element_precision (newtype))
3582 : 16026 : newtype = ty1;
3583 : 61377 : if (element_precision (ty2) > element_precision (newtype))
3584 : 5859 : newtype = ty2;
3585 : 61377 : if (element_precision (newtype) < element_precision (itype)
3586 : 18933 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
3587 : 0 : || target_supports_op_p (newtype, op, optab_default))
3588 : 18933 : && (flag_unsafe_math_optimizations
3589 : 18925 : || (element_precision (newtype) == element_precision (type)
3590 : 18896 : && real_can_shorten_arithmetic (element_mode (itype),
3591 : : element_mode (type))
3592 : 6703 : && !excess_precision_type (newtype)))
3593 : 61532 : && !types_match (itype, newtype)
3594 : : )
3595 : : {
3596 : 155 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail943;
3597 : 154 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail943;
3598 : 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail943;
3599 : 136 : {
3600 : 136 : tree res_op0;
3601 : 136 : {
3602 : 136 : tree _o1[2], _r1;
3603 : 136 : {
3604 : 136 : tree _o2[1], _r2;
3605 : 136 : _o2[0] = captures[2];
3606 : 136 : if (TREE_TYPE (_o2[0]) != newtype)
3607 : : {
3608 : 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
3609 : : }
3610 : : else
3611 : : _r2 = _o2[0];
3612 : 136 : _o1[0] = _r2;
3613 : : }
3614 : 136 : {
3615 : 136 : tree _o2[1], _r2;
3616 : 136 : _o2[0] = captures[4];
3617 : 136 : if (TREE_TYPE (_o2[0]) != newtype)
3618 : : {
3619 : 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
3620 : : }
3621 : : else
3622 : : _r2 = _o2[0];
3623 : 136 : _o1[1] = _r2;
3624 : : }
3625 : 136 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3626 : 136 : res_op0 = _r1;
3627 : : }
3628 : 136 : tree _r;
3629 : 136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3630 : 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 684, __FILE__, __LINE__, true);
3631 : 136 : return _r;
3632 : : }
3633 : : next_after_fail943:;
3634 : : }
3635 : : }
3636 : : }
3637 : : }
3638 : : }
3639 : : }
3640 : : }
3641 : : }
3642 : : return NULL_TREE;
3643 : : }
3644 : :
3645 : : tree
3646 : 1667 : generic_simplify_454 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3647 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3648 : : {
3649 : 1667 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3650 : 1667 : {
3651 : 1667 : bool wascmp;
3652 : 1667 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
3653 : 1667 : || bitwise_inverted_equal_p (captures[1], captures[2], wascmp)
3654 : : )
3655 : : {
3656 : 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail973;
3657 : 8 : {
3658 : 8 : tree _r;
3659 : 8 : _r = wascmp ? constant_boolean_node (false, type) : build_zero_cst (type);
3660 : 8 : if (TREE_SIDE_EFFECTS (captures[0]))
3661 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3662 : 8 : if (TREE_SIDE_EFFECTS (captures[1]))
3663 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3664 : 8 : if (TREE_SIDE_EFFECTS (captures[2]))
3665 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3666 : 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 713, __FILE__, __LINE__, true);
3667 : 8 : return _r;
3668 : : }
3669 : 0 : next_after_fail973:;
3670 : : }
3671 : : }
3672 : 1659 : return NULL_TREE;
3673 : : }
3674 : :
3675 : : tree
3676 : 52080 : generic_simplify_460 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3677 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3678 : : const enum tree_code ARG_UNUSED (shift))
3679 : : {
3680 : 52080 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3681 : 52080 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
3682 : 23433 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
3683 : 23433 : && tree_fits_uhwi_p (captures[4])
3684 : 23433 : && tree_to_uhwi (captures[4]) > 0
3685 : 75511 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
3686 : : )
3687 : : {
3688 : 23431 : {
3689 : 23431 : unsigned int shiftc = tree_to_uhwi (captures[4]);
3690 : 23431 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
3691 : 23431 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
3692 : 23431 : tree shift_type = TREE_TYPE (captures[2]);
3693 : 23431 : unsigned int prec;
3694 : 23431 : if (shift == LSHIFT_EXPR)
3695 : 0 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
3696 : 23431 : else if (shift == RSHIFT_EXPR
3697 : 23431 : && type_has_mode_precision_p (shift_type))
3698 : : {
3699 : 23431 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
3700 : 23431 : tree arg00 = captures[3];
3701 : 23431 : if (captures[2] != captures[3]
3702 : 23431 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
3703 : : {
3704 : 0 : tree inner_type = TREE_TYPE (captures[3]);
3705 : 0 : if (type_has_mode_precision_p (inner_type)
3706 : 0 : && TYPE_PRECISION (inner_type) < prec)
3707 : : {
3708 : 0 : prec = TYPE_PRECISION (inner_type);
3709 : 0 : if (shiftc < prec)
3710 : 0 : shift_type = inner_type;
3711 : : }
3712 : : }
3713 : 23431 : zerobits = HOST_WIDE_INT_M1U;
3714 : 23431 : if (shiftc < prec)
3715 : : {
3716 : 23431 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
3717 : 23431 : zerobits <<= prec - shiftc;
3718 : : }
3719 : 23431 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
3720 : 23431 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
3721 : : {
3722 : 94 : if ((mask & zerobits) == 0)
3723 : 78 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
3724 : : else
3725 : : zerobits = 0;
3726 : : }
3727 : : }
3728 : 23415 : if ((mask & zerobits) == mask
3729 : : )
3730 : : {
3731 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail981;
3732 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail981;
3733 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail981;
3734 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail981;
3735 : 0 : {
3736 : 0 : tree _r;
3737 : 0 : _r = build_int_cst (type, 0);
3738 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 717, __FILE__, __LINE__, true);
3739 : 0 : return _r;
3740 : : }
3741 : : next_after_fail981:;
3742 : : }
3743 : : else
3744 : : {
3745 : 23431 : {
3746 : 23431 : newmask = mask | zerobits;
3747 : 23431 : if (newmask != mask && (newmask & (newmask + 1)) == 0
3748 : : )
3749 : : {
3750 : : {
3751 : 109 : for (prec = BITS_PER_UNIT;
3752 : 181 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
3753 : 171 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
3754 : : break;
3755 : 72 : if (prec < HOST_BITS_PER_WIDE_INT
3756 : 10 : || newmask == HOST_WIDE_INT_M1U
3757 : : )
3758 : : {
3759 : 72 : {
3760 : 72 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
3761 : 72 : if (!tree_int_cst_equal (newmaskt, captures[5])
3762 : : )
3763 : : {
3764 : 72 : if (shift_type != TREE_TYPE (captures[2])
3765 : : )
3766 : : {
3767 : 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail982;
3768 : 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail982;
3769 : 11 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail982;
3770 : 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail982;
3771 : 11 : {
3772 : 11 : tree res_op0;
3773 : 11 : {
3774 : 11 : tree _o1[1], _r1;
3775 : 11 : {
3776 : 11 : tree _o2[2], _r2;
3777 : 11 : {
3778 : 11 : tree _o3[1], _r3;
3779 : 11 : _o3[0] = captures[2];
3780 : 11 : if (TREE_TYPE (_o3[0]) != shift_type)
3781 : : {
3782 : 11 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
3783 : : }
3784 : : else
3785 : : _r3 = _o3[0];
3786 : 11 : _o2[0] = _r3;
3787 : : }
3788 : 11 : _o2[1] = captures[4];
3789 : 11 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
3790 : 11 : _o1[0] = _r2;
3791 : : }
3792 : 11 : if (TREE_TYPE (_o1[0]) != type)
3793 : : {
3794 : 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3795 : : }
3796 : : else
3797 : : _r1 = _o1[0];
3798 : 11 : res_op0 = _r1;
3799 : : }
3800 : 11 : tree res_op1;
3801 : 11 : res_op1 = newmaskt;
3802 : 11 : tree _r;
3803 : 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3804 : 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 718, __FILE__, __LINE__, true);
3805 : 11 : return _r;
3806 : : }
3807 : : next_after_fail982:;
3808 : : }
3809 : : else
3810 : : {
3811 : 61 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail983;
3812 : 61 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail983;
3813 : 61 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail983;
3814 : 61 : {
3815 : 61 : tree res_op0;
3816 : 61 : res_op0 = captures[0];
3817 : 61 : tree res_op1;
3818 : 61 : res_op1 = newmaskt;
3819 : 61 : tree _r;
3820 : 61 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3821 : 61 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 719, __FILE__, __LINE__, true);
3822 : 61 : return _r;
3823 : : }
3824 : : next_after_fail983:;
3825 : : }
3826 : : }
3827 : : }
3828 : : }
3829 : : }
3830 : : }
3831 : : }
3832 : : }
3833 : : }
3834 : : }
3835 : : return NULL_TREE;
3836 : : }
3837 : :
3838 : : tree
3839 : 0 : generic_simplify_480 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3840 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3841 : : {
3842 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3843 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1042;
3844 : 0 : {
3845 : 0 : tree res_op0;
3846 : 0 : res_op0 = captures[0];
3847 : 0 : tree res_op1;
3848 : 0 : res_op1 = captures[1];
3849 : 0 : tree _r;
3850 : 0 : _r = fold_build2_loc (loc, LTGT_EXPR, type, res_op0, res_op1);
3851 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
3852 : : return _r;
3853 : : }
3854 : 0 : next_after_fail1042:;
3855 : 0 : return NULL_TREE;
3856 : : }
3857 : :
3858 : : tree
3859 : 452316 : generic_simplify_483 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3860 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3861 : : const enum tree_code ARG_UNUSED (op))
3862 : : {
3863 : 452316 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3864 : 904632 : if (INTEGRAL_TYPE_P (type)
3865 : 452316 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
3866 : 67097 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3867 : 67097 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
3868 : 67097 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
3869 : 67097 : && type_has_mode_precision_p (type)
3870 : 67097 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3871 : 52 : && types_match (captures[2], captures[4])
3872 : 33 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
3873 : 33 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
3874 : 452343 : && (wi::to_wide (captures[5])
3875 : 452370 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
3876 : 452370 : true, TYPE_PRECISION (type))) == 0
3877 : : )
3878 : : {
3879 : 25 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
3880 : : )
3881 : : {
3882 : 12 : {
3883 : 12 : tree ntype = TREE_TYPE (captures[2]);
3884 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
3885 : 12 : {
3886 : 12 : tree res_op0;
3887 : 12 : {
3888 : 12 : tree _o1[2], _r1;
3889 : 12 : {
3890 : 12 : tree _o2[2], _r2;
3891 : 12 : _o2[0] = captures[2];
3892 : 12 : _o2[1] = captures[4];
3893 : 12 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3894 : 12 : _o1[0] = _r2;
3895 : : }
3896 : 12 : {
3897 : 12 : tree _o2[1], _r2;
3898 : 12 : _o2[0] = captures[5];
3899 : 12 : if (TREE_TYPE (_o2[0]) != ntype)
3900 : : {
3901 : 12 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
3902 : : }
3903 : : else
3904 : : _r2 = _o2[0];
3905 : 12 : _o1[1] = _r2;
3906 : : }
3907 : 12 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3908 : 12 : res_op0 = _r1;
3909 : : }
3910 : 12 : tree _r;
3911 : 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3912 : 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 746, __FILE__, __LINE__, true);
3913 : 12 : return _r;
3914 : : }
3915 : 0 : next_after_fail1045:;
3916 : : }
3917 : : }
3918 : : else
3919 : : {
3920 : 13 : {
3921 : 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
3922 : 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
3923 : 13 : {
3924 : 13 : tree res_op0;
3925 : 13 : {
3926 : 13 : tree _o1[2], _r1;
3927 : 13 : {
3928 : 13 : tree _o2[2], _r2;
3929 : 13 : {
3930 : 13 : tree _o3[1], _r3;
3931 : 13 : _o3[0] = captures[2];
3932 : 13 : if (TREE_TYPE (_o3[0]) != utype)
3933 : : {
3934 : 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
3935 : : }
3936 : : else
3937 : : _r3 = _o3[0];
3938 : 13 : _o2[0] = _r3;
3939 : : }
3940 : 13 : {
3941 : 13 : tree _o3[1], _r3;
3942 : 13 : _o3[0] = captures[4];
3943 : 13 : if (TREE_TYPE (_o3[0]) != utype)
3944 : : {
3945 : 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
3946 : : }
3947 : : else
3948 : : _r3 = _o3[0];
3949 : 13 : _o2[1] = _r3;
3950 : : }
3951 : 13 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3952 : 13 : _o1[0] = _r2;
3953 : : }
3954 : 13 : {
3955 : 13 : tree _o2[1], _r2;
3956 : 13 : _o2[0] = captures[5];
3957 : 13 : if (TREE_TYPE (_o2[0]) != utype)
3958 : : {
3959 : 13 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3960 : : }
3961 : : else
3962 : : _r2 = _o2[0];
3963 : 13 : _o1[1] = _r2;
3964 : : }
3965 : 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3966 : 13 : res_op0 = _r1;
3967 : : }
3968 : 13 : tree _r;
3969 : 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3970 : 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 747, __FILE__, __LINE__, true);
3971 : 13 : return _r;
3972 : : }
3973 : 0 : next_after_fail1046:;
3974 : : }
3975 : : }
3976 : : }
3977 : : return NULL_TREE;
3978 : : }
3979 : :
3980 : : tree
3981 : 0 : generic_simplify_495 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3982 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3983 : : const enum tree_code ARG_UNUSED (rotate))
3984 : : {
3985 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3986 : 0 : if ((element_precision (TREE_TYPE (captures[2]))
3987 : 0 : <= element_precision (TREE_TYPE (captures[3]))
3988 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
3989 : 0 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
3990 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
3991 : : )
3992 : : {
3993 : 0 : {
3994 : 0 : tree rotate_type = TREE_TYPE (captures[2]);
3995 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1058;
3996 : 0 : {
3997 : 0 : tree res_op0;
3998 : 0 : {
3999 : 0 : tree _o1[2], _r1;
4000 : 0 : {
4001 : 0 : tree _o2[1], _r2;
4002 : 0 : _o2[0] = captures[3];
4003 : 0 : if (TREE_TYPE (_o2[0]) != rotate_type)
4004 : : {
4005 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, rotate_type, _o2[0]);
4006 : : }
4007 : : else
4008 : : _r2 = _o2[0];
4009 : 0 : _o1[0] = _r2;
4010 : : }
4011 : 0 : _o1[1] = captures[4];
4012 : 0 : _r1 = fold_build2_loc (loc, rotate, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4013 : 0 : res_op0 = _r1;
4014 : : }
4015 : 0 : tree _r;
4016 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4017 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 758, __FILE__, __LINE__, true);
4018 : 0 : return _r;
4019 : : }
4020 : 0 : next_after_fail1058:;
4021 : : }
4022 : : }
4023 : : return NULL_TREE;
4024 : : }
4025 : :
4026 : : tree
4027 : 16 : generic_simplify_505 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4028 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4029 : : const combined_fn ARG_UNUSED (fmas))
4030 : : {
4031 : 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4032 : 16 : if (canonicalize_math_after_vectorization_p ()
4033 : : )
4034 : : {
4035 : : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
4036 : : )
4037 : : {
4038 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1070;
4039 : : {
4040 : : tree res_op0;
4041 : : res_op0 = captures[1];
4042 : : tree res_op1;
4043 : : res_op1 = captures[2];
4044 : : tree res_op2;
4045 : : res_op2 = captures[3];
4046 : : tree _r;
4047 : : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
4048 : : if (!_r)
4049 : : goto next_after_fail1070;
4050 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 769, __FILE__, __LINE__, true);
4051 : : return _r;
4052 : : }
4053 : 16 : next_after_fail1070:;
4054 : : }
4055 : : }
4056 : 16 : return NULL_TREE;
4057 : : }
4058 : :
4059 : : tree
4060 : 2 : generic_simplify_516 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4061 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
4062 : : const enum tree_code ARG_UNUSED (op),
4063 : : const enum tree_code ARG_UNUSED (logic))
4064 : : {
4065 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4066 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1093;
4067 : 2 : {
4068 : 2 : tree res_op0;
4069 : 2 : res_op0 = captures[0];
4070 : 2 : tree res_op1;
4071 : 2 : res_op1 = captures[1];
4072 : 2 : tree _r;
4073 : 2 : _r = fold_build2_loc (loc, logic, type, res_op0, res_op1);
4074 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
4075 : : return _r;
4076 : : }
4077 : 0 : next_after_fail1093:;
4078 : 0 : return NULL_TREE;
4079 : : }
4080 : :
4081 : : tree
4082 : 0 : generic_simplify_519 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4083 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
4084 : : const combined_fn ARG_UNUSED (minmax))
4085 : : {
4086 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4087 : 0 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
4088 : : )
4089 : : {
4090 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
4091 : 0 : {
4092 : 0 : tree _r;
4093 : 0 : _r = captures[0];
4094 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 782, __FILE__, __LINE__, true);
4095 : 0 : return _r;
4096 : : }
4097 : 0 : next_after_fail1096:;
4098 : : }
4099 : : return NULL_TREE;
4100 : : }
4101 : :
4102 : : tree
4103 : 0 : generic_simplify_524 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4104 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
4105 : : const enum tree_code ARG_UNUSED (rotate),
4106 : : const enum tree_code ARG_UNUSED (orotate))
4107 : : {
4108 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4109 : 0 : {
4110 : 0 : auto prec = element_precision (TREE_TYPE (captures[0]));
4111 : 0 : if (prec == wi::to_wide (captures[2])
4112 : : )
4113 : : {
4114 : 0 : if (expr_not_equal_to (captures[3], wi::uhwi (prec,
4115 : 0 : TYPE_PRECISION (TREE_TYPE (captures[3]))))
4116 : : )
4117 : : {
4118 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1101;
4119 : 0 : {
4120 : 0 : tree res_op0;
4121 : 0 : res_op0 = captures[0];
4122 : 0 : tree res_op1;
4123 : 0 : res_op1 = captures[3];
4124 : 0 : tree _r;
4125 : 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
4126 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4127 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4128 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 787, __FILE__, __LINE__, true);
4129 : 0 : return _r;
4130 : : }
4131 : 0 : next_after_fail1101:;
4132 : : }
4133 : : else
4134 : : {
4135 : 0 : if (single_use (captures[1])
4136 : 0 : && pow2p_hwi (prec)
4137 : 0 : && cfun
4138 : 0 : && (fold_before_rtl_expansion_p ()
4139 : 0 : || !flag_tree_vrp
4140 : 0 : || optimize_debug)
4141 : : )
4142 : : {
4143 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1102;
4144 : 0 : {
4145 : 0 : tree res_op0;
4146 : 0 : res_op0 = captures[0];
4147 : 0 : tree res_op1;
4148 : 0 : {
4149 : 0 : tree _o1[2], _r1;
4150 : 0 : _o1[0] = captures[3];
4151 : 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[3]), prec - 1);
4152 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4153 : 0 : res_op1 = _r1;
4154 : : }
4155 : 0 : tree _r;
4156 : 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
4157 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4158 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4159 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 788, __FILE__, __LINE__, true);
4160 : 0 : return _r;
4161 : : }
4162 : 0 : next_after_fail1102:;
4163 : : }
4164 : : }
4165 : : }
4166 : : }
4167 : 0 : return NULL_TREE;
4168 : : }
4169 : :
4170 : : tree
4171 : 0 : generic_simplify_543 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4172 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
4173 : : const combined_fn ARG_UNUSED (cond_op))
4174 : : {
4175 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4176 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1123;
4177 : 0 : {
4178 : 0 : tree res_op0;
4179 : 0 : {
4180 : 0 : tree _o1[2], _r1;
4181 : 0 : _o1[0] = captures[2];
4182 : 0 : _o1[1] = captures[0];
4183 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4184 : 0 : res_op0 = _r1;
4185 : : }
4186 : 0 : tree res_op1;
4187 : 0 : res_op1 = captures[3];
4188 : 0 : tree res_op2;
4189 : 0 : res_op2 = captures[4];
4190 : 0 : tree res_op3;
4191 : 0 : res_op3 = captures[5];
4192 : 0 : tree _r;
4193 : 0 : _r = maybe_build_call_expr_loc (loc, cond_op, type, 4, res_op0, res_op1, res_op2, res_op3);
4194 : 0 : if (!_r)
4195 : 0 : goto next_after_fail1123;
4196 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 804, __FILE__, __LINE__, true);
4197 : : return _r;
4198 : : }
4199 : : next_after_fail1123:;
4200 : : return NULL_TREE;
4201 : : }
4202 : :
4203 : : tree
4204 : 60 : generic_simplify_547 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4205 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
4206 : : const enum tree_code ARG_UNUSED (cmp))
4207 : : {
4208 : 60 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4209 : 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1127;
4210 : 60 : {
4211 : 60 : tree _r;
4212 : 60 : _r = constant_boolean_node (true, type);
4213 : 60 : if (TREE_SIDE_EFFECTS (captures[0]))
4214 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4215 : 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 808, __FILE__, __LINE__, true);
4216 : : return _r;
4217 : : }
4218 : 0 : next_after_fail1127:;
4219 : 0 : return NULL_TREE;
4220 : : }
4221 : :
4222 : : tree
4223 : 0 : generic_simplify_555 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4224 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4225 : : const combined_fn ARG_UNUSED (sinhs),
4226 : : const combined_fn ARG_UNUSED (atanhs),
4227 : : const combined_fn ARG_UNUSED (sqrts))
4228 : : {
4229 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4230 : 0 : if (!flag_errno_math
4231 : : )
4232 : : {
4233 : 0 : {
4234 : 0 : tree t_one = build_one_cst (type);
4235 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1135;
4236 : 0 : {
4237 : 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail1135;
4238 : 0 : tree res_op0;
4239 : 0 : res_op0 = unshare_expr (captures[1]);
4240 : 0 : tree res_op1;
4241 : 0 : {
4242 : 0 : tree _o1[1], _r1;
4243 : 0 : {
4244 : 0 : tree _o2[2], _r2;
4245 : 0 : {
4246 : 0 : tree _o3[2], _r3;
4247 : 0 : _o3[0] = t_one;
4248 : 0 : _o3[1] = unshare_expr (captures[1]);
4249 : 0 : _r3 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
4250 : 0 : _o2[0] = _r3;
4251 : : }
4252 : 0 : {
4253 : 0 : tree _o3[2], _r3;
4254 : 0 : _o3[0] = t_one;
4255 : 0 : _o3[1] = captures[1];
4256 : 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
4257 : 0 : _o2[1] = _r3;
4258 : : }
4259 : 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4260 : 0 : _o1[0] = _r2;
4261 : : }
4262 : 0 : _r1 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o1[0]), 1, _o1[0]);
4263 : 0 : if (!_r1)
4264 : 0 : goto next_after_fail1135;
4265 : 0 : res_op1 = _r1;
4266 : : }
4267 : 0 : tree _r;
4268 : 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
4269 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 816, __FILE__, __LINE__, true);
4270 : 0 : return _r;
4271 : : }
4272 : : next_after_fail1135:;
4273 : : }
4274 : : }
4275 : : return NULL_TREE;
4276 : : }
4277 : :
4278 : : tree
4279 : 0 : generic_simplify_573 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4280 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
4281 : : const combined_fn ARG_UNUSED (fmas))
4282 : : {
4283 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4284 : 0 : if (canonicalize_math_after_vectorization_p ()
4285 : : )
4286 : : {
4287 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
4288 : : {
4289 : : tree res_op0;
4290 : : res_op0 = captures[0];
4291 : : tree res_op1;
4292 : : res_op1 = captures[1];
4293 : : tree res_op2;
4294 : : res_op2 = captures[2];
4295 : : tree _r;
4296 : : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
4297 : : if (!_r)
4298 : : goto next_after_fail1153;
4299 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
4300 : : return _r;
4301 : : }
4302 : 0 : next_after_fail1153:;
4303 : : }
4304 : 0 : return NULL_TREE;
4305 : : }
4306 : :
4307 : : tree
4308 : 0 : generic_simplify_583 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4309 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4310 : : const combined_fn ARG_UNUSED (ctz))
4311 : : {
4312 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4313 : 0 : {
4314 : 0 : tree t = TREE_TYPE (captures[0]);
4315 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1163;
4316 : 0 : {
4317 : 0 : tree res_op0;
4318 : 0 : {
4319 : 0 : tree _o1[1], _r1;
4320 : 0 : _o1[0] = captures[1];
4321 : 0 : if (TREE_TYPE (_o1[0]) != t)
4322 : : {
4323 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
4324 : : }
4325 : : else
4326 : : _r1 = _o1[0];
4327 : 0 : res_op0 = _r1;
4328 : : }
4329 : 0 : tree _r;
4330 : 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
4331 : 0 : if (!_r)
4332 : 0 : goto next_after_fail1163;
4333 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
4334 : : return _r;
4335 : : }
4336 : : next_after_fail1163:;
4337 : : }
4338 : : return NULL_TREE;
4339 : : }
4340 : :
4341 : : tree
4342 : 0 : generic_simplify_593 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4343 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4344 : : const combined_fn ARG_UNUSED (bswap),
4345 : : const combined_fn ARG_UNUSED (parity))
4346 : : {
4347 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4348 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4349 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
4350 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
4351 : 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
4352 : : )
4353 : : {
4354 : 0 : {
4355 : 0 : tree type0 = TREE_TYPE (captures[0]);
4356 : 0 : tree type1 = TREE_TYPE (captures[1]);
4357 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1174;
4358 : 0 : {
4359 : 0 : tree res_op0;
4360 : 0 : {
4361 : 0 : tree _o1[1], _r1;
4362 : 0 : {
4363 : 0 : tree _o2[1], _r2;
4364 : 0 : _o2[0] = captures[2];
4365 : 0 : if (TREE_TYPE (_o2[0]) != type1)
4366 : : {
4367 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
4368 : : }
4369 : : else
4370 : : _r2 = _o2[0];
4371 : 0 : _o1[0] = _r2;
4372 : : }
4373 : 0 : if (TREE_TYPE (_o1[0]) != type0)
4374 : : {
4375 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
4376 : : }
4377 : : else
4378 : : _r1 = _o1[0];
4379 : 0 : res_op0 = _r1;
4380 : : }
4381 : 0 : tree _r;
4382 : 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
4383 : 0 : if (!_r)
4384 : 0 : goto next_after_fail1174;
4385 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
4386 : 0 : return _r;
4387 : : }
4388 : : next_after_fail1174:;
4389 : : }
4390 : : }
4391 : : return NULL_TREE;
4392 : : }
4393 : :
4394 : : tree
4395 : 3873636 : generic_simplify_NEGATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
4396 : : {
4397 : 3873636 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4398 : 3873636 : switch (TREE_CODE (_p0))
4399 : : {
4400 : 40036 : case PLUS_EXPR:
4401 : 40036 : {
4402 : 40036 : tree _q20 = TREE_OPERAND (_p0, 0);
4403 : 40036 : tree _q21 = TREE_OPERAND (_p0, 1);
4404 : 40036 : if (tree_negate_expr_p (_q21))
4405 : : {
4406 : 38887 : {
4407 : 38887 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4408 : 38887 : tree res = generic_simplify_499 (loc, type, _p0, captures);
4409 : 38887 : if (res) return res;
4410 : : }
4411 : : }
4412 : 1149 : if (tree_negate_expr_p (_q20))
4413 : : {
4414 : 9 : {
4415 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
4416 : 9 : tree res = generic_simplify_499 (loc, type, _p0, captures);
4417 : 9 : if (res) return res;
4418 : : }
4419 : : }
4420 : : break;
4421 : : }
4422 : 112466 : case MINUS_EXPR:
4423 : 112466 : {
4424 : 112466 : tree _q20 = TREE_OPERAND (_p0, 0);
4425 : 112466 : tree _q21 = TREE_OPERAND (_p0, 1);
4426 : 112466 : {
4427 : 112466 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4428 : 112466 : if ((ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type))
4429 : 193143 : || (FLOAT_TYPE_P (type)
4430 : 80677 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
4431 : 80677 : && !HONOR_SIGNED_ZEROS (type))
4432 : : )
4433 : : {
4434 : 31846 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1221;
4435 : 31846 : {
4436 : 31846 : tree res_op0;
4437 : 31846 : res_op0 = captures[1];
4438 : 31846 : tree res_op1;
4439 : 31846 : res_op1 = captures[0];
4440 : 31846 : tree _r;
4441 : 31846 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
4442 : 31846 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
4443 : 31846 : return _r;
4444 : : }
4445 : 0 : next_after_fail1221:;
4446 : : }
4447 : : }
4448 : 80620 : break;
4449 : : }
4450 : 16 : case POINTER_DIFF_EXPR:
4451 : 16 : {
4452 : 16 : tree _q20 = TREE_OPERAND (_p0, 0);
4453 : 16 : tree _q21 = TREE_OPERAND (_p0, 1);
4454 : 16 : {
4455 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4456 : 16 : tree res = generic_simplify_500 (loc, type, _p0, captures);
4457 : 16 : if (res) return res;
4458 : : }
4459 : 0 : break;
4460 : : }
4461 : 4109 : case MULT_EXPR:
4462 : 4109 : {
4463 : 4109 : tree _q20 = TREE_OPERAND (_p0, 0);
4464 : 4109 : tree _q21 = TREE_OPERAND (_p0, 1);
4465 : 4109 : if (tree_negate_expr_p (_q21))
4466 : : {
4467 : 1820 : {
4468 : 1820 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4469 : 1820 : tree res = generic_simplify_503 (loc, type, _p0, captures);
4470 : 1820 : if (res) return res;
4471 : : }
4472 : : }
4473 : 2704 : if (tree_negate_expr_p (_q20))
4474 : : {
4475 : 27 : {
4476 : 27 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4477 : 27 : tree res = generic_simplify_503 (loc, type, _p0, captures);
4478 : 27 : if (res) return res;
4479 : : }
4480 : : }
4481 : : break;
4482 : : }
4483 : 188 : case RDIV_EXPR:
4484 : 188 : {
4485 : 188 : tree _q20 = TREE_OPERAND (_p0, 0);
4486 : 188 : tree _q21 = TREE_OPERAND (_p0, 1);
4487 : 188 : if (tree_negate_expr_p (_q21))
4488 : : {
4489 : 60 : {
4490 : 60 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4491 : 60 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
4492 : 60 : && single_use (captures[0])
4493 : : )
4494 : : {
4495 : 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1222;
4496 : 60 : {
4497 : 60 : tree res_op0;
4498 : 60 : res_op0 = captures[1];
4499 : 60 : tree res_op1;
4500 : 60 : {
4501 : 60 : tree _o1[1], _r1;
4502 : 60 : _o1[0] = captures[2];
4503 : 60 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4504 : 60 : res_op1 = _r1;
4505 : : }
4506 : 60 : tree _r;
4507 : 60 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
4508 : 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 887, __FILE__, __LINE__, true);
4509 : 60 : return _r;
4510 : : }
4511 : 0 : next_after_fail1222:;
4512 : : }
4513 : : }
4514 : : }
4515 : 128 : if (tree_negate_expr_p (_q20))
4516 : : {
4517 : 0 : {
4518 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4519 : 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
4520 : 0 : && single_use (captures[0])
4521 : : )
4522 : : {
4523 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1223;
4524 : 0 : {
4525 : 0 : tree res_op0;
4526 : 0 : {
4527 : 0 : tree _o1[1], _r1;
4528 : 0 : _o1[0] = captures[1];
4529 : 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4530 : 0 : res_op0 = _r1;
4531 : : }
4532 : 0 : tree res_op1;
4533 : 0 : res_op1 = captures[2];
4534 : 0 : tree _r;
4535 : 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
4536 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 888, __FILE__, __LINE__, true);
4537 : 0 : return _r;
4538 : : }
4539 : 0 : next_after_fail1223:;
4540 : : }
4541 : : }
4542 : : }
4543 : : break;
4544 : : }
4545 : 839515 : CASE_CONVERT:
4546 : 839515 : {
4547 : 839515 : tree _q20 = TREE_OPERAND (_p0, 0);
4548 : 839515 : switch (TREE_CODE (_q20))
4549 : : {
4550 : 58 : case RSHIFT_EXPR:
4551 : 58 : {
4552 : 58 : tree _q30 = TREE_OPERAND (_q20, 0);
4553 : 58 : tree _q31 = TREE_OPERAND (_q20, 1);
4554 : 58 : switch (TREE_CODE (_q31))
4555 : : {
4556 : 43 : case INTEGER_CST:
4557 : 43 : {
4558 : 43 : {
4559 : 43 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4560 : 43 : tree res = generic_simplify_504 (loc, type, _p0, captures);
4561 : 43 : if (res) return res;
4562 : : }
4563 : 36 : break;
4564 : : }
4565 : : default:;
4566 : : }
4567 : : break;
4568 : : }
4569 : 140 : case NEGATE_EXPR:
4570 : 140 : {
4571 : 140 : tree _q30 = TREE_OPERAND (_q20, 0);
4572 : 140 : {
4573 : 140 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
4574 : 140 : if (!TYPE_SATURATING (type)
4575 : : )
4576 : : {
4577 : 140 : if (INTEGRAL_TYPE_P (type)
4578 : 140 : && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
4579 : 17 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
4580 : 32 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
4581 : 139 : && !TYPE_OVERFLOW_SANITIZED (type)
4582 : 295 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
4583 : : )
4584 : : {
4585 : 139 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1224;
4586 : 139 : {
4587 : 139 : tree res_op0;
4588 : 139 : res_op0 = captures[0];
4589 : 139 : tree _r;
4590 : 139 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4591 : 139 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
4592 : 139 : return _r;
4593 : : }
4594 : 0 : next_after_fail1224:;
4595 : : }
4596 : : }
4597 : : }
4598 : : break;
4599 : : }
4600 : 839369 : default:;
4601 : : }
4602 : 839369 : {
4603 : 839369 : tree _q20_pops[1];
4604 : 839369 : if (tree_logical_inverted_value (_q20, _q20_pops))
4605 : : {
4606 : 1 : tree _q30 = _q20_pops[0];
4607 : 1 : {
4608 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
4609 : 1 : if (INTEGRAL_TYPE_P (type)
4610 : 1 : && TREE_CODE (type) != BOOLEAN_TYPE
4611 : 1 : && TYPE_PRECISION (type) > 1
4612 : 1 : && TREE_CODE (captures[2]) == SSA_NAME
4613 : 1 : && ssa_name_has_boolean_range (captures[2])
4614 : : )
4615 : : {
4616 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1225;
4617 : 0 : {
4618 : 0 : tree res_op0;
4619 : 0 : {
4620 : 0 : tree _o1[1], _r1;
4621 : 0 : _o1[0] = captures[2];
4622 : 0 : if (TREE_TYPE (_o1[0]) != type)
4623 : : {
4624 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4625 : : }
4626 : : else
4627 : : _r1 = _o1[0];
4628 : 0 : res_op0 = _r1;
4629 : : }
4630 : 0 : tree res_op1;
4631 : 0 : res_op1 = build_all_ones_cst (type);
4632 : 0 : tree _r;
4633 : 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
4634 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
4635 : 0 : return _r;
4636 : : }
4637 : 0 : next_after_fail1225:;
4638 : : }
4639 : : }
4640 : : }
4641 : : }
4642 : 839369 : if (tree_negate_expr_p (_q20))
4643 : : {
4644 : 1460 : {
4645 : 1460 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4646 : 1460 : if (!TYPE_SATURATING (type)
4647 : : )
4648 : : {
4649 : 1460 : if (SCALAR_FLOAT_TYPE_P (type)
4650 : 1460 : && ((DECIMAL_FLOAT_TYPE_P (type)
4651 : 0 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
4652 : 0 : && TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (captures[0])))
4653 : 0 : || !HONOR_SIGN_DEPENDENT_ROUNDING (type))
4654 : : )
4655 : : {
4656 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1226;
4657 : 0 : {
4658 : 0 : tree res_op0;
4659 : 0 : {
4660 : 0 : tree _o1[1], _r1;
4661 : 0 : _o1[0] = captures[0];
4662 : 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4663 : 0 : res_op0 = _r1;
4664 : : }
4665 : 0 : tree _r;
4666 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4667 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
4668 : 0 : return _r;
4669 : : }
4670 : 0 : next_after_fail1226:;
4671 : : }
4672 : : }
4673 : : }
4674 : : }
4675 : : break;
4676 : : }
4677 : 373 : case RSHIFT_EXPR:
4678 : 373 : {
4679 : 373 : tree _q20 = TREE_OPERAND (_p0, 0);
4680 : 373 : tree _q21 = TREE_OPERAND (_p0, 1);
4681 : 373 : switch (TREE_CODE (_q21))
4682 : : {
4683 : 355 : case INTEGER_CST:
4684 : 355 : {
4685 : 355 : {
4686 : 355 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4687 : 355 : tree res = generic_simplify_504 (loc, type, _p0, captures);
4688 : 355 : if (res) return res;
4689 : : }
4690 : 318 : break;
4691 : : }
4692 : : default:;
4693 : : }
4694 : : break;
4695 : : }
4696 : 147 : case BIT_NOT_EXPR:
4697 : 147 : {
4698 : 147 : tree _q20 = TREE_OPERAND (_p0, 0);
4699 : 147 : {
4700 : 147 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4701 : 147 : tree res = generic_simplify_501 (loc, type, _p0, captures);
4702 : 147 : if (res) return res;
4703 : : }
4704 : 0 : break;
4705 : : }
4706 : 3980 : case NEGATE_EXPR:
4707 : 3980 : {
4708 : 3980 : tree _q20 = TREE_OPERAND (_p0, 0);
4709 : 3980 : {
4710 : 3980 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4711 : 3980 : tree res = generic_simplify_502 (loc, type, _p0, captures);
4712 : 3980 : if (res) return res;
4713 : : }
4714 : 13 : break;
4715 : : }
4716 : 72 : case VEC_COND_EXPR:
4717 : 72 : {
4718 : 72 : tree _q20 = TREE_OPERAND (_p0, 0);
4719 : 72 : tree _q21 = TREE_OPERAND (_p0, 1);
4720 : 72 : tree _q22 = TREE_OPERAND (_p0, 2);
4721 : 72 : {
4722 : 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4723 : 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1227;
4724 : 72 : {
4725 : 72 : tree res_op0;
4726 : 72 : res_op0 = captures[1];
4727 : 72 : tree res_op1;
4728 : 72 : {
4729 : 72 : tree _o1[1], _r1;
4730 : 72 : _o1[0] = captures[2];
4731 : 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4732 : 72 : if (EXPR_P (_r1))
4733 : 0 : goto next_after_fail1227;
4734 : 72 : res_op1 = _r1;
4735 : : }
4736 : 72 : tree res_op2;
4737 : 72 : {
4738 : 72 : tree _o1[1], _r1;
4739 : 72 : _o1[0] = captures[3];
4740 : 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4741 : 72 : if (EXPR_P (_r1))
4742 : 0 : goto next_after_fail1227;
4743 : 72 : res_op2 = _r1;
4744 : : }
4745 : 72 : tree _r;
4746 : 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4747 : 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 858, __FILE__, __LINE__, true);
4748 : 72 : return _r;
4749 : : }
4750 : 0 : next_after_fail1227:;
4751 : : }
4752 : 0 : break;
4753 : : }
4754 : 285215 : case CALL_EXPR:
4755 : 285215 : switch (get_call_combined_fn (_p0))
4756 : : {
4757 : 12 : case CFN_BUILT_IN_FMA:
4758 : 12 : if (call_expr_nargs (_p0) == 3)
4759 : : {
4760 : 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4761 : 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4762 : 12 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4763 : 12 : {
4764 : 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4765 : 12 : tree res = generic_simplify_505 (loc, type, _p0, captures, CFN_BUILT_IN_FMA);
4766 : 12 : if (res) return res;
4767 : : }
4768 : : }
4769 : : break;
4770 : 4 : case CFN_BUILT_IN_FMAF:
4771 : 4 : if (call_expr_nargs (_p0) == 3)
4772 : : {
4773 : 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4774 : 4 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4775 : 4 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4776 : 4 : {
4777 : 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4778 : 4 : tree res = generic_simplify_505 (loc, type, _p0, captures, CFN_BUILT_IN_FMAF);
4779 : 4 : if (res) return res;
4780 : : }
4781 : : }
4782 : : break;
4783 : 0 : case CFN_BUILT_IN_FMAL:
4784 : 0 : if (call_expr_nargs (_p0) == 3)
4785 : : {
4786 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4787 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4788 : 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4789 : 0 : {
4790 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4791 : 0 : tree res = generic_simplify_505 (loc, type, _p0, captures, CFN_BUILT_IN_FMAL);
4792 : 0 : if (res) return res;
4793 : : }
4794 : : }
4795 : : break;
4796 : 0 : case CFN_FMA:
4797 : 0 : if (call_expr_nargs (_p0) == 3)
4798 : : {
4799 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4800 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4801 : 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4802 : 0 : {
4803 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4804 : 0 : tree res = generic_simplify_505 (loc, type, _p0, captures, CFN_FMA);
4805 : 0 : if (res) return res;
4806 : : }
4807 : : }
4808 : : break;
4809 : 0 : case CFN_FMS:
4810 : 0 : if (call_expr_nargs (_p0) == 3)
4811 : : {
4812 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4813 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4814 : 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4815 : 0 : {
4816 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4817 : 0 : if (canonicalize_math_after_vectorization_p ()
4818 : : )
4819 : : {
4820 : : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
4821 : : )
4822 : : {
4823 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1228;
4824 : : {
4825 : : tree res_op0;
4826 : : res_op0 = captures[1];
4827 : : tree res_op1;
4828 : : res_op1 = captures[2];
4829 : : tree res_op2;
4830 : : res_op2 = captures[3];
4831 : : tree _r;
4832 : : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
4833 : : if (!_r)
4834 : : goto next_after_fail1228;
4835 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
4836 : : return _r;
4837 : : }
4838 : 0 : next_after_fail1228:;
4839 : : }
4840 : : }
4841 : : }
4842 : : }
4843 : : break;
4844 : 0 : case CFN_FNMA:
4845 : 0 : if (call_expr_nargs (_p0) == 3)
4846 : : {
4847 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4848 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4849 : 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4850 : 0 : {
4851 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4852 : 0 : if (canonicalize_math_after_vectorization_p ()
4853 : : )
4854 : : {
4855 : : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
4856 : : )
4857 : : {
4858 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1229;
4859 : : {
4860 : : tree res_op0;
4861 : : res_op0 = captures[1];
4862 : : tree res_op1;
4863 : : res_op1 = captures[2];
4864 : : tree res_op2;
4865 : : res_op2 = captures[3];
4866 : : tree _r;
4867 : : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
4868 : : if (!_r)
4869 : : goto next_after_fail1229;
4870 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
4871 : : return _r;
4872 : : }
4873 : 0 : next_after_fail1229:;
4874 : : }
4875 : : }
4876 : : }
4877 : : }
4878 : : break;
4879 : 0 : case CFN_FNMS:
4880 : 0 : if (call_expr_nargs (_p0) == 3)
4881 : : {
4882 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4883 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4884 : 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
4885 : 0 : {
4886 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4887 : 0 : if (canonicalize_math_after_vectorization_p ()
4888 : : )
4889 : : {
4890 : : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
4891 : : )
4892 : : {
4893 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1230;
4894 : : {
4895 : : tree res_op0;
4896 : : res_op0 = captures[1];
4897 : : tree res_op1;
4898 : : res_op1 = captures[2];
4899 : : tree res_op2;
4900 : : res_op2 = captures[3];
4901 : : tree _r;
4902 : : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
4903 : : if (!_r)
4904 : : goto next_after_fail1230;
4905 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
4906 : : return _r;
4907 : : }
4908 : 0 : next_after_fail1230:;
4909 : : }
4910 : : }
4911 : : }
4912 : : }
4913 : : break;
4914 : : default:;
4915 : : }
4916 : : break;
4917 : 3797017 : default:;
4918 : : }
4919 : 3797017 : {
4920 : 3797017 : tree _p0_pops[1];
4921 : 3797017 : if (tree_nop_convert (_p0, _p0_pops))
4922 : : {
4923 : 1120302 : tree _q20 = _p0_pops[0];
4924 : 1120302 : switch (TREE_CODE (_q20))
4925 : : {
4926 : 0 : case POINTER_DIFF_EXPR:
4927 : 0 : {
4928 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4929 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4930 : 0 : {
4931 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
4932 : 0 : tree res = generic_simplify_500 (loc, type, _p0, captures);
4933 : 0 : if (res) return res;
4934 : : }
4935 : 0 : break;
4936 : : }
4937 : 0 : case BIT_NOT_EXPR:
4938 : 0 : {
4939 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4940 : 0 : {
4941 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
4942 : 0 : tree res = generic_simplify_501 (loc, type, _p0, captures);
4943 : 0 : if (res) return res;
4944 : : }
4945 : 0 : break;
4946 : : }
4947 : 0 : case NEGATE_EXPR:
4948 : 0 : {
4949 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4950 : 0 : {
4951 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
4952 : 0 : tree res = generic_simplify_502 (loc, type, _p0, captures);
4953 : 0 : if (res) return res;
4954 : : }
4955 : 0 : break;
4956 : : }
4957 : : default:;
4958 : : }
4959 : : }
4960 : : }
4961 : 3797017 : {
4962 : 3797017 : tree _p0_pops[1];
4963 : 3797017 : if (tree_logical_inverted_value (_p0, _p0_pops))
4964 : : {
4965 : 70 : tree _q20 = _p0_pops[0];
4966 : 70 : {
4967 : 70 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
4968 : 70 : if (INTEGRAL_TYPE_P (type)
4969 : 70 : && TREE_CODE (type) != BOOLEAN_TYPE
4970 : 70 : && TYPE_PRECISION (type) > 1
4971 : 70 : && TREE_CODE (captures[2]) == SSA_NAME
4972 : 70 : && ssa_name_has_boolean_range (captures[2])
4973 : : )
4974 : : {
4975 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1231;
4976 : 0 : {
4977 : 0 : tree res_op0;
4978 : 0 : {
4979 : 0 : tree _o1[1], _r1;
4980 : 0 : _o1[0] = captures[2];
4981 : 0 : if (TREE_TYPE (_o1[0]) != type)
4982 : : {
4983 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4984 : : }
4985 : : else
4986 : : _r1 = _o1[0];
4987 : 0 : res_op0 = _r1;
4988 : : }
4989 : 0 : tree res_op1;
4990 : 0 : res_op1 = build_all_ones_cst (type);
4991 : 0 : tree _r;
4992 : 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
4993 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
4994 : 0 : return _r;
4995 : : }
4996 : 0 : next_after_fail1231:;
4997 : : }
4998 : : }
4999 : : }
5000 : : }
5001 : 3797017 : {
5002 : 3797017 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5003 : 3797017 : tree res = generic_simplify_425 (loc, type, _p0, captures);
5004 : 3797017 : if (res) return res;
5005 : : }
5006 : 3782061 : return NULL_TREE;
5007 : : }
5008 : :
5009 : : tree
5010 : 25739674 : generic_simplify_EQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5011 : : {
5012 : 25739674 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5013 : 25739674 : switch (TREE_CODE (_p1))
5014 : : {
5015 : 44 : case NEGATE_EXPR:
5016 : 44 : {
5017 : 44 : tree _q30 = TREE_OPERAND (_p1, 0);
5018 : 44 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5019 : : {
5020 : 0 : {
5021 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5022 : 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, EQ_EXPR);
5023 : 0 : if (res) return res;
5024 : : }
5025 : : }
5026 : : break;
5027 : : }
5028 : 25739674 : default:;
5029 : : }
5030 : 25739674 : switch (TREE_CODE (_p0))
5031 : : {
5032 : 928 : case NEGATE_EXPR:
5033 : 928 : {
5034 : 928 : tree _q20 = TREE_OPERAND (_p0, 0);
5035 : 928 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5036 : : {
5037 : 83 : {
5038 : 83 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5039 : 83 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, EQ_EXPR);
5040 : 83 : if (res) return res;
5041 : : }
5042 : : }
5043 : : break;
5044 : : }
5045 : 0 : case CEIL_MOD_EXPR:
5046 : 0 : {
5047 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5048 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5049 : 0 : if (integer_pow2p (_q21))
5050 : : {
5051 : 0 : if (integer_zerop (_p1))
5052 : : {
5053 : 0 : {
5054 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5055 : 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, EQ_EXPR, CEIL_MOD_EXPR);
5056 : 0 : if (res) return res;
5057 : : }
5058 : : }
5059 : : }
5060 : : break;
5061 : : }
5062 : 876 : case FLOOR_MOD_EXPR:
5063 : 876 : {
5064 : 876 : tree _q20 = TREE_OPERAND (_p0, 0);
5065 : 876 : tree _q21 = TREE_OPERAND (_p0, 1);
5066 : 876 : if (integer_pow2p (_q21))
5067 : : {
5068 : 26 : if (integer_zerop (_p1))
5069 : : {
5070 : 26 : {
5071 : 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5072 : 26 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, EQ_EXPR, FLOOR_MOD_EXPR);
5073 : 26 : if (res) return res;
5074 : : }
5075 : : }
5076 : : }
5077 : : break;
5078 : : }
5079 : 0 : case ROUND_MOD_EXPR:
5080 : 0 : {
5081 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5082 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5083 : 0 : if (integer_pow2p (_q21))
5084 : : {
5085 : 0 : if (integer_zerop (_p1))
5086 : : {
5087 : 0 : {
5088 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5089 : 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, EQ_EXPR, ROUND_MOD_EXPR);
5090 : 0 : if (res) return res;
5091 : : }
5092 : : }
5093 : : }
5094 : : break;
5095 : : }
5096 : 67539 : case TRUNC_MOD_EXPR:
5097 : 67539 : {
5098 : 67539 : tree _q20 = TREE_OPERAND (_p0, 0);
5099 : 67539 : tree _q21 = TREE_OPERAND (_p0, 1);
5100 : 67539 : if (integer_pow2p (_q21))
5101 : : {
5102 : 41660 : if (integer_zerop (_p1))
5103 : : {
5104 : 621 : {
5105 : 621 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5106 : 621 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, EQ_EXPR, TRUNC_MOD_EXPR);
5107 : 621 : if (res) return res;
5108 : : }
5109 : : }
5110 : : }
5111 : : break;
5112 : : }
5113 : 25739024 : default:;
5114 : : }
5115 : 25739024 : {
5116 : 25739024 : tree _p0_pops[1];
5117 : 25739024 : if (tree_nop_convert (_p0, _p0_pops))
5118 : : {
5119 : 2758728 : tree _q20 = _p0_pops[0];
5120 : 2758728 : switch (TREE_CODE (_q20))
5121 : : {
5122 : 1 : case LSHIFT_EXPR:
5123 : 1 : {
5124 : 1 : tree _q30 = TREE_OPERAND (_q20, 0);
5125 : 1 : tree _q31 = TREE_OPERAND (_q20, 1);
5126 : 1 : {
5127 : 1 : tree _p1_pops[1];
5128 : 1 : if (tree_nop_convert (_p1, _p1_pops))
5129 : : {
5130 : 0 : tree _q60 = _p1_pops[0];
5131 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5132 : : {
5133 : 0 : {
5134 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
5135 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5136 : 0 : if (res) return res;
5137 : : }
5138 : : }
5139 : : }
5140 : : }
5141 : 1 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5142 : : {
5143 : 1 : {
5144 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
5145 : 1 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5146 : 1 : if (res) return res;
5147 : : }
5148 : : }
5149 : : break;
5150 : : }
5151 : 2758727 : default:;
5152 : : }
5153 : 2758727 : switch (TREE_CODE (_p1))
5154 : : {
5155 : 0 : case LSHIFT_EXPR:
5156 : 0 : {
5157 : 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5158 : 0 : tree _q41 = TREE_OPERAND (_p1, 1);
5159 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
5160 : : {
5161 : 0 : {
5162 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
5163 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5164 : 0 : if (res) return res;
5165 : : }
5166 : : }
5167 : : break;
5168 : : }
5169 : 2758727 : default:;
5170 : : }
5171 : 2758727 : {
5172 : 2758727 : tree _p1_pops[1];
5173 : 2758727 : if (tree_nop_convert (_p1, _p1_pops))
5174 : : {
5175 : 752965 : tree _q40 = _p1_pops[0];
5176 : 752965 : switch (TREE_CODE (_q40))
5177 : : {
5178 : 0 : case LSHIFT_EXPR:
5179 : 0 : {
5180 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5181 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5182 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5183 : : {
5184 : 0 : {
5185 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
5186 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5187 : 0 : if (res) return res;
5188 : : }
5189 : : }
5190 : : break;
5191 : : }
5192 : : default:;
5193 : : }
5194 : : }
5195 : : }
5196 : 2758727 : switch (TREE_CODE (_q20))
5197 : : {
5198 : 2448 : case PLUS_EXPR:
5199 : 2448 : {
5200 : 2448 : tree _q30 = TREE_OPERAND (_q20, 0);
5201 : 2448 : tree _q31 = TREE_OPERAND (_q20, 1);
5202 : 2448 : switch (TREE_CODE (_q31))
5203 : : {
5204 : 0 : CASE_CONVERT:
5205 : 0 : {
5206 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5207 : 0 : switch (TREE_CODE (_p1))
5208 : : {
5209 : 0 : CASE_CONVERT:
5210 : 0 : {
5211 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5212 : 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
5213 : : {
5214 : 0 : {
5215 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
5216 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5217 : 0 : if (res) return res;
5218 : : }
5219 : : }
5220 : : break;
5221 : : }
5222 : : default:;
5223 : : }
5224 : : break;
5225 : : }
5226 : 2448 : default:;
5227 : : }
5228 : 2448 : switch (TREE_CODE (_q30))
5229 : : {
5230 : 1266 : CASE_CONVERT:
5231 : 1266 : {
5232 : 1266 : tree _q40 = TREE_OPERAND (_q30, 0);
5233 : 1266 : switch (TREE_CODE (_p1))
5234 : : {
5235 : 32 : CASE_CONVERT:
5236 : 32 : {
5237 : 32 : tree _q70 = TREE_OPERAND (_p1, 0);
5238 : 32 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5239 : : {
5240 : 0 : {
5241 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
5242 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5243 : 0 : if (res) return res;
5244 : : }
5245 : : }
5246 : : break;
5247 : : }
5248 : 1266 : default:;
5249 : : }
5250 : 1266 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5251 : : {
5252 : 0 : {
5253 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
5254 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5255 : 0 : if (res) return res;
5256 : : }
5257 : : }
5258 : : break;
5259 : : }
5260 : 2448 : default:;
5261 : : }
5262 : 2448 : switch (TREE_CODE (_q31))
5263 : : {
5264 : 0 : CASE_CONVERT:
5265 : 0 : {
5266 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5267 : 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5268 : : {
5269 : 0 : {
5270 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
5271 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5272 : 0 : if (res) return res;
5273 : : }
5274 : : }
5275 : : break;
5276 : : }
5277 : 2448 : default:;
5278 : : }
5279 : 2448 : switch (TREE_CODE (_p1))
5280 : : {
5281 : 101 : CASE_CONVERT:
5282 : 101 : {
5283 : 101 : tree _q60 = TREE_OPERAND (_p1, 0);
5284 : 101 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5285 : : {
5286 : 0 : {
5287 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5288 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5289 : 0 : if (res) return res;
5290 : : }
5291 : : }
5292 : 101 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5293 : : {
5294 : 0 : {
5295 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
5296 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5297 : 0 : if (res) return res;
5298 : : }
5299 : : }
5300 : : break;
5301 : : }
5302 : 2448 : default:;
5303 : : }
5304 : 2448 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5305 : : {
5306 : 0 : {
5307 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5308 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5309 : 0 : if (res) return res;
5310 : : }
5311 : : }
5312 : 2448 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5313 : : {
5314 : 0 : {
5315 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
5316 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5317 : 0 : if (res) return res;
5318 : : }
5319 : : }
5320 : : break;
5321 : : }
5322 : : default:;
5323 : : }
5324 : : }
5325 : : }
5326 : 25739023 : {
5327 : 25739023 : tree _p1_pops[1];
5328 : 25739023 : if (tree_nop_convert (_p1, _p1_pops))
5329 : : {
5330 : 1023831 : tree _q30 = _p1_pops[0];
5331 : 1023831 : switch (TREE_CODE (_q30))
5332 : : {
5333 : 0 : case LSHIFT_EXPR:
5334 : 0 : {
5335 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5336 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5337 : 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5338 : : {
5339 : 0 : {
5340 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
5341 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5342 : 0 : if (res) return res;
5343 : : }
5344 : : }
5345 : : break;
5346 : : }
5347 : : default:;
5348 : : }
5349 : : }
5350 : : }
5351 : 25739023 : switch (TREE_CODE (_p0))
5352 : : {
5353 : 1431 : case LSHIFT_EXPR:
5354 : 1431 : {
5355 : 1431 : tree _q20 = TREE_OPERAND (_p0, 0);
5356 : 1431 : tree _q21 = TREE_OPERAND (_p0, 1);
5357 : 1431 : {
5358 : 1431 : tree _p1_pops[1];
5359 : 1431 : if (tree_nop_convert (_p1, _p1_pops))
5360 : : {
5361 : 24 : tree _q50 = _p1_pops[0];
5362 : 24 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5363 : : {
5364 : 4 : {
5365 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5366 : 4 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5367 : 4 : if (res) return res;
5368 : : }
5369 : : }
5370 : : }
5371 : : }
5372 : 1430 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5373 : : {
5374 : 27 : {
5375 : 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5376 : 27 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5377 : 27 : if (res) return res;
5378 : : }
5379 : : }
5380 : 1426 : if (tree_zero_one_valued_p (_q20))
5381 : : {
5382 : 224 : switch (TREE_CODE (_q21))
5383 : : {
5384 : 10 : case INTEGER_CST:
5385 : 10 : {
5386 : 10 : if (integer_zerop (_p1))
5387 : : {
5388 : 2 : {
5389 : 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5390 : 2 : if (tree_fits_shwi_p (captures[1])
5391 : 2 : && tree_to_shwi (captures[1]) > 0
5392 : 4 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
5393 : : )
5394 : : {
5395 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1625;
5396 : 2 : {
5397 : 2 : tree res_op0;
5398 : 2 : res_op0 = captures[0];
5399 : 2 : tree res_op1;
5400 : 2 : res_op1 = captures[2];
5401 : 2 : tree _r;
5402 : 2 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5403 : 2 : if (TREE_SIDE_EFFECTS (captures[1]))
5404 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5405 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1006, __FILE__, __LINE__, true);
5406 : 2 : return _r;
5407 : : }
5408 : 0 : next_after_fail1625:;
5409 : : }
5410 : : }
5411 : : }
5412 : : break;
5413 : : }
5414 : : default:;
5415 : : }
5416 : : }
5417 : : break;
5418 : : }
5419 : 25739016 : default:;
5420 : : }
5421 : 25739016 : switch (TREE_CODE (_p1))
5422 : : {
5423 : 72 : case LSHIFT_EXPR:
5424 : 72 : {
5425 : 72 : tree _q30 = TREE_OPERAND (_p1, 0);
5426 : 72 : tree _q31 = TREE_OPERAND (_p1, 1);
5427 : 72 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5428 : : {
5429 : 0 : {
5430 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5431 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures);
5432 : 0 : if (res) return res;
5433 : : }
5434 : : }
5435 : : break;
5436 : : }
5437 : 25739016 : default:;
5438 : : }
5439 : 25739016 : switch (TREE_CODE (_p0))
5440 : : {
5441 : 45277 : case VIEW_CONVERT_EXPR:
5442 : 45277 : {
5443 : 45277 : tree _q20 = TREE_OPERAND (_p0, 0);
5444 : 45277 : if (tree_zero_one_valued_p (_q20))
5445 : : {
5446 : 0 : if (integer_zerop (_p1))
5447 : : {
5448 : 0 : {
5449 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5450 : 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, EQ_EXPR);
5451 : 0 : if (res) return res;
5452 : : }
5453 : : }
5454 : : }
5455 : : break;
5456 : : }
5457 : 896601 : case BIT_AND_EXPR:
5458 : 896601 : {
5459 : 896601 : tree _q20 = TREE_OPERAND (_p0, 0);
5460 : 896601 : tree _q21 = TREE_OPERAND (_p0, 1);
5461 : 896601 : if (tree_truth_valued_p (_q20))
5462 : : {
5463 : 19 : if (tree_truth_valued_p (_q21))
5464 : : {
5465 : 18 : switch (TREE_CODE (_p1))
5466 : : {
5467 : 0 : case BIT_XOR_EXPR:
5468 : 0 : {
5469 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5470 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5471 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5472 : : {
5473 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5474 : : {
5475 : 0 : {
5476 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5477 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1626;
5478 : 0 : {
5479 : 0 : tree res_op0;
5480 : 0 : {
5481 : 0 : tree _o1[2], _r1;
5482 : 0 : _o1[0] = captures[0];
5483 : 0 : _o1[1] = captures[1];
5484 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5485 : 0 : res_op0 = _r1;
5486 : : }
5487 : 0 : tree _r;
5488 : 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
5489 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
5490 : 0 : return _r;
5491 : : }
5492 : 0 : next_after_fail1626:;
5493 : : }
5494 : : }
5495 : : }
5496 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5497 : : {
5498 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5499 : : {
5500 : 0 : {
5501 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5502 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1627;
5503 : 0 : {
5504 : 0 : tree res_op0;
5505 : 0 : {
5506 : 0 : tree _o1[2], _r1;
5507 : 0 : _o1[0] = captures[0];
5508 : 0 : _o1[1] = captures[1];
5509 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5510 : 0 : res_op0 = _r1;
5511 : : }
5512 : 0 : tree _r;
5513 : 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
5514 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
5515 : 0 : return _r;
5516 : : }
5517 : 0 : next_after_fail1627:;
5518 : : }
5519 : : }
5520 : : }
5521 : : break;
5522 : : }
5523 : : default:;
5524 : : }
5525 : : }
5526 : : }
5527 : : break;
5528 : : }
5529 : 595 : case BIT_XOR_EXPR:
5530 : 595 : {
5531 : 595 : tree _q20 = TREE_OPERAND (_p0, 0);
5532 : 595 : tree _q21 = TREE_OPERAND (_p0, 1);
5533 : 595 : switch (TREE_CODE (_p1))
5534 : : {
5535 : 0 : case BIT_AND_EXPR:
5536 : 0 : {
5537 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5538 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5539 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5540 : : {
5541 : 0 : if (tree_truth_valued_p (_q50))
5542 : : {
5543 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5544 : : {
5545 : 0 : if (tree_truth_valued_p (_q51))
5546 : : {
5547 : 0 : {
5548 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5549 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1628;
5550 : 0 : {
5551 : 0 : tree res_op0;
5552 : 0 : {
5553 : 0 : tree _o1[2], _r1;
5554 : 0 : _o1[0] = captures[0];
5555 : 0 : _o1[1] = captures[1];
5556 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5557 : 0 : res_op0 = _r1;
5558 : : }
5559 : 0 : tree _r;
5560 : 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
5561 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
5562 : 0 : return _r;
5563 : : }
5564 : 0 : next_after_fail1628:;
5565 : : }
5566 : : }
5567 : : }
5568 : : }
5569 : : }
5570 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5571 : : {
5572 : 0 : if (tree_truth_valued_p (_q50))
5573 : : {
5574 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5575 : : {
5576 : 0 : if (tree_truth_valued_p (_q51))
5577 : : {
5578 : 0 : {
5579 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5580 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1629;
5581 : 0 : {
5582 : 0 : tree res_op0;
5583 : 0 : {
5584 : 0 : tree _o1[2], _r1;
5585 : 0 : _o1[0] = captures[0];
5586 : 0 : _o1[1] = captures[1];
5587 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5588 : 0 : res_op0 = _r1;
5589 : : }
5590 : 0 : tree _r;
5591 : 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
5592 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
5593 : 0 : return _r;
5594 : : }
5595 : 0 : next_after_fail1629:;
5596 : : }
5597 : : }
5598 : : }
5599 : : }
5600 : : }
5601 : : break;
5602 : : }
5603 : : default:;
5604 : : }
5605 : : break;
5606 : : }
5607 : 412 : case BIT_NOT_EXPR:
5608 : 412 : {
5609 : 412 : tree _q20 = TREE_OPERAND (_p0, 0);
5610 : 412 : if (tree_truth_valued_p (_q20))
5611 : : {
5612 : 0 : if (tree_truth_valued_p (_p1))
5613 : : {
5614 : 0 : {
5615 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
5616 : 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures);
5617 : 0 : if (res) return res;
5618 : : }
5619 : : }
5620 : : }
5621 : : break;
5622 : : }
5623 : 63399 : case MULT_EXPR:
5624 : 63399 : {
5625 : 63399 : tree _q20 = TREE_OPERAND (_p0, 0);
5626 : 63399 : tree _q21 = TREE_OPERAND (_p0, 1);
5627 : 63399 : switch (TREE_CODE (_p1))
5628 : : {
5629 : 811 : case MULT_EXPR:
5630 : 811 : {
5631 : 811 : tree _q50 = TREE_OPERAND (_p1, 0);
5632 : 811 : tree _q51 = TREE_OPERAND (_p1, 1);
5633 : 811 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5634 : : {
5635 : 530 : {
5636 : 530 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5637 : 530 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
5638 : 530 : if (res) return res;
5639 : : }
5640 : : }
5641 : 803 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5642 : : {
5643 : 0 : {
5644 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5645 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
5646 : 0 : if (res) return res;
5647 : : }
5648 : : }
5649 : 803 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5650 : : {
5651 : 0 : {
5652 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5653 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
5654 : 0 : if (res) return res;
5655 : : }
5656 : : }
5657 : 803 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5658 : : {
5659 : 16 : {
5660 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5661 : 16 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
5662 : 16 : if (res) return res;
5663 : : }
5664 : : }
5665 : : break;
5666 : : }
5667 : 63391 : default:;
5668 : : }
5669 : 63391 : switch (TREE_CODE (_q21))
5670 : : {
5671 : 55805 : case INTEGER_CST:
5672 : 55805 : {
5673 : 55805 : switch (TREE_CODE (_p1))
5674 : : {
5675 : 767 : case MULT_EXPR:
5676 : 767 : {
5677 : 767 : tree _q50 = TREE_OPERAND (_p1, 0);
5678 : 767 : tree _q51 = TREE_OPERAND (_p1, 1);
5679 : 767 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5680 : : {
5681 : 493 : {
5682 : 493 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5683 : 493 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, EQ_EXPR);
5684 : 493 : if (res) return res;
5685 : : }
5686 : : }
5687 : : break;
5688 : : }
5689 : : default:;
5690 : : }
5691 : : break;
5692 : : }
5693 : : default:;
5694 : : }
5695 : : break;
5696 : : }
5697 : 4516492 : CASE_CONVERT:
5698 : 4516492 : {
5699 : 4516492 : tree _q20 = TREE_OPERAND (_p0, 0);
5700 : 4516492 : switch (TREE_CODE (_q20))
5701 : : {
5702 : 80 : case EXACT_DIV_EXPR:
5703 : 80 : {
5704 : 80 : tree _q30 = TREE_OPERAND (_q20, 0);
5705 : 80 : tree _q31 = TREE_OPERAND (_q20, 1);
5706 : 80 : switch (TREE_CODE (_q31))
5707 : : {
5708 : 80 : case INTEGER_CST:
5709 : 80 : {
5710 : 80 : switch (TREE_CODE (_p1))
5711 : : {
5712 : 0 : CASE_CONVERT:
5713 : 0 : {
5714 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5715 : 0 : switch (TREE_CODE (_q60))
5716 : : {
5717 : 0 : case EXACT_DIV_EXPR:
5718 : 0 : {
5719 : 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5720 : 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5721 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5722 : : {
5723 : 0 : {
5724 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5725 : 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
5726 : 0 : if (res) return res;
5727 : : }
5728 : : }
5729 : : break;
5730 : : }
5731 : : default:;
5732 : : }
5733 : : break;
5734 : : }
5735 : : default:;
5736 : : }
5737 : : break;
5738 : : }
5739 : : default:;
5740 : : }
5741 : : break;
5742 : : }
5743 : 4516492 : default:;
5744 : : }
5745 : 4516492 : switch (TREE_CODE (_p1))
5746 : : {
5747 : 28638 : case PLUS_EXPR:
5748 : 28638 : {
5749 : 28638 : tree _q40 = TREE_OPERAND (_p1, 0);
5750 : 28638 : tree _q41 = TREE_OPERAND (_p1, 1);
5751 : 28638 : switch (TREE_CODE (_q41))
5752 : : {
5753 : 26 : CASE_CONVERT:
5754 : 26 : {
5755 : 26 : tree _q60 = TREE_OPERAND (_q41, 0);
5756 : 26 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5757 : : {
5758 : 0 : {
5759 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
5760 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5761 : 0 : if (res) return res;
5762 : : }
5763 : : }
5764 : : break;
5765 : : }
5766 : 28638 : default:;
5767 : : }
5768 : 28638 : switch (TREE_CODE (_q40))
5769 : : {
5770 : 4003 : CASE_CONVERT:
5771 : 4003 : {
5772 : 4003 : tree _q50 = TREE_OPERAND (_q40, 0);
5773 : 4003 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5774 : : {
5775 : 0 : {
5776 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
5777 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5778 : 0 : if (res) return res;
5779 : : }
5780 : : }
5781 : : break;
5782 : : }
5783 : 28638 : default:;
5784 : : }
5785 : 28638 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
5786 : : {
5787 : 0 : {
5788 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
5789 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5790 : 0 : if (res) return res;
5791 : : }
5792 : : }
5793 : 28638 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5794 : : {
5795 : 0 : {
5796 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
5797 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5798 : 0 : if (res) return res;
5799 : : }
5800 : : }
5801 : : break;
5802 : : }
5803 : 4516492 : default:;
5804 : : }
5805 : 4516492 : {
5806 : 4516492 : tree _p1_pops[1];
5807 : 4516492 : if (tree_nop_convert (_p1, _p1_pops))
5808 : : {
5809 : 786124 : tree _q40 = _p1_pops[0];
5810 : 786124 : switch (TREE_CODE (_q40))
5811 : : {
5812 : 472 : case PLUS_EXPR:
5813 : 472 : {
5814 : 472 : tree _q50 = TREE_OPERAND (_q40, 0);
5815 : 472 : tree _q51 = TREE_OPERAND (_q40, 1);
5816 : 472 : switch (TREE_CODE (_q51))
5817 : : {
5818 : 0 : CASE_CONVERT:
5819 : 0 : {
5820 : 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5821 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5822 : : {
5823 : 0 : {
5824 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
5825 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5826 : 0 : if (res) return res;
5827 : : }
5828 : : }
5829 : : break;
5830 : : }
5831 : 472 : default:;
5832 : : }
5833 : 472 : switch (TREE_CODE (_q50))
5834 : : {
5835 : 403 : CASE_CONVERT:
5836 : 403 : {
5837 : 403 : tree _q60 = TREE_OPERAND (_q50, 0);
5838 : 403 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5839 : : {
5840 : 0 : {
5841 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
5842 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5843 : 0 : if (res) return res;
5844 : : }
5845 : : }
5846 : : break;
5847 : : }
5848 : 472 : default:;
5849 : : }
5850 : 472 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5851 : : {
5852 : 0 : {
5853 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
5854 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5855 : 0 : if (res) return res;
5856 : : }
5857 : : }
5858 : 472 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5859 : : {
5860 : 0 : {
5861 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
5862 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
5863 : 0 : if (res) return res;
5864 : : }
5865 : : }
5866 : : break;
5867 : : }
5868 : : default:;
5869 : : }
5870 : : }
5871 : : }
5872 : 4516492 : break;
5873 : : }
5874 : 9524 : case EXACT_DIV_EXPR:
5875 : 9524 : {
5876 : 9524 : tree _q20 = TREE_OPERAND (_p0, 0);
5877 : 9524 : tree _q21 = TREE_OPERAND (_p0, 1);
5878 : 9524 : switch (TREE_CODE (_q21))
5879 : : {
5880 : 9524 : case INTEGER_CST:
5881 : 9524 : {
5882 : 9524 : switch (TREE_CODE (_p1))
5883 : : {
5884 : 0 : case EXACT_DIV_EXPR:
5885 : 0 : {
5886 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5887 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5888 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5889 : : {
5890 : 0 : {
5891 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5892 : 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
5893 : 0 : if (res) return res;
5894 : : }
5895 : : }
5896 : : break;
5897 : : }
5898 : : default:;
5899 : : }
5900 : : break;
5901 : : }
5902 : : default:;
5903 : : }
5904 : : break;
5905 : : }
5906 : 5378 : case TRUNC_DIV_EXPR:
5907 : 5378 : {
5908 : 5378 : tree _q20 = TREE_OPERAND (_p0, 0);
5909 : 5378 : tree _q21 = TREE_OPERAND (_p0, 1);
5910 : 5378 : switch (TREE_CODE (_q21))
5911 : : {
5912 : 3892 : case INTEGER_CST:
5913 : 3892 : {
5914 : 3892 : switch (TREE_CODE (_p1))
5915 : : {
5916 : 967 : case INTEGER_CST:
5917 : 967 : {
5918 : 967 : {
5919 : 967 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5920 : 967 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
5921 : 967 : if (res) return res;
5922 : : }
5923 : 19 : break;
5924 : : }
5925 : : default:;
5926 : : }
5927 : : break;
5928 : : }
5929 : : default:;
5930 : : }
5931 : : break;
5932 : : }
5933 : 675209 : case PLUS_EXPR:
5934 : 675209 : {
5935 : 675209 : tree _q20 = TREE_OPERAND (_p0, 0);
5936 : 675209 : tree _q21 = TREE_OPERAND (_p0, 1);
5937 : 675209 : switch (TREE_CODE (_p1))
5938 : : {
5939 : 50344 : case PLUS_EXPR:
5940 : 50344 : {
5941 : 50344 : tree _q50 = TREE_OPERAND (_p1, 0);
5942 : 50344 : tree _q51 = TREE_OPERAND (_p1, 1);
5943 : 50344 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5944 : : {
5945 : 388 : {
5946 : 388 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5947 : 776 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5948 : 713 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5949 : 291 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5950 : : )
5951 : : {
5952 : 325 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1630;
5953 : 325 : {
5954 : 325 : tree res_op0;
5955 : 325 : res_op0 = captures[0];
5956 : 325 : tree res_op1;
5957 : 325 : res_op1 = captures[2];
5958 : 325 : tree _r;
5959 : 325 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5960 : 325 : if (TREE_SIDE_EFFECTS (captures[1]))
5961 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5962 : 325 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 946, __FILE__, __LINE__, true);
5963 : 325 : return _r;
5964 : : }
5965 : 0 : next_after_fail1630:;
5966 : : }
5967 : : }
5968 : : }
5969 : 50019 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5970 : : {
5971 : 0 : {
5972 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5973 : 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5974 : 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5975 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5976 : : )
5977 : : {
5978 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1631;
5979 : 0 : {
5980 : 0 : tree res_op0;
5981 : 0 : res_op0 = captures[0];
5982 : 0 : tree res_op1;
5983 : 0 : res_op1 = captures[2];
5984 : 0 : tree _r;
5985 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5986 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5987 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5988 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 946, __FILE__, __LINE__, true);
5989 : 0 : return _r;
5990 : : }
5991 : 0 : next_after_fail1631:;
5992 : : }
5993 : : }
5994 : : }
5995 : 50019 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5996 : : {
5997 : 0 : {
5998 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5999 : 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6000 : 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
6001 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
6002 : : )
6003 : : {
6004 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1632;
6005 : 0 : {
6006 : 0 : tree res_op0;
6007 : 0 : res_op0 = captures[0];
6008 : 0 : tree res_op1;
6009 : 0 : res_op1 = captures[2];
6010 : 0 : tree _r;
6011 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6012 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
6013 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
6014 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 946, __FILE__, __LINE__, true);
6015 : 0 : return _r;
6016 : : }
6017 : 0 : next_after_fail1632:;
6018 : : }
6019 : : }
6020 : : }
6021 : 50019 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6022 : : {
6023 : 35 : {
6024 : 35 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
6025 : 70 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6026 : 35 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
6027 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
6028 : : )
6029 : : {
6030 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1633;
6031 : 0 : {
6032 : 0 : tree res_op0;
6033 : 0 : res_op0 = captures[0];
6034 : 0 : tree res_op1;
6035 : 0 : res_op1 = captures[2];
6036 : 0 : tree _r;
6037 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6038 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
6039 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
6040 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 946, __FILE__, __LINE__, true);
6041 : 0 : return _r;
6042 : : }
6043 : 0 : next_after_fail1633:;
6044 : : }
6045 : : }
6046 : : }
6047 : : break;
6048 : : }
6049 : 674884 : default:;
6050 : : }
6051 : 674884 : switch (TREE_CODE (_q21))
6052 : : {
6053 : 2647 : CASE_CONVERT:
6054 : 2647 : {
6055 : 2647 : tree _q40 = TREE_OPERAND (_q21, 0);
6056 : 2647 : switch (TREE_CODE (_p1))
6057 : : {
6058 : 158 : CASE_CONVERT:
6059 : 158 : {
6060 : 158 : tree _q60 = TREE_OPERAND (_p1, 0);
6061 : 158 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6062 : : {
6063 : 0 : {
6064 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
6065 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6066 : 0 : if (res) return res;
6067 : : }
6068 : : }
6069 : : break;
6070 : : }
6071 : : default:;
6072 : : }
6073 : : break;
6074 : : }
6075 : 674884 : default:;
6076 : : }
6077 : 674884 : switch (TREE_CODE (_q20))
6078 : : {
6079 : 26298 : CASE_CONVERT:
6080 : 26298 : {
6081 : 26298 : tree _q30 = TREE_OPERAND (_q20, 0);
6082 : 26298 : switch (TREE_CODE (_p1))
6083 : : {
6084 : 367 : CASE_CONVERT:
6085 : 367 : {
6086 : 367 : tree _q60 = TREE_OPERAND (_p1, 0);
6087 : 367 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6088 : : {
6089 : 1 : {
6090 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
6091 : 1 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6092 : 1 : if (res) return res;
6093 : : }
6094 : : }
6095 : : break;
6096 : : }
6097 : 26297 : default:;
6098 : : }
6099 : 26297 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6100 : : {
6101 : 0 : {
6102 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
6103 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6104 : 0 : if (res) return res;
6105 : : }
6106 : : }
6107 : : break;
6108 : : }
6109 : 674883 : default:;
6110 : : }
6111 : 674883 : switch (TREE_CODE (_q21))
6112 : : {
6113 : 2647 : CASE_CONVERT:
6114 : 2647 : {
6115 : 2647 : tree _q40 = TREE_OPERAND (_q21, 0);
6116 : 2647 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6117 : : {
6118 : 0 : {
6119 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
6120 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6121 : 0 : if (res) return res;
6122 : : }
6123 : : }
6124 : : break;
6125 : : }
6126 : 674883 : default:;
6127 : : }
6128 : 674883 : switch (TREE_CODE (_p1))
6129 : : {
6130 : 13429 : CASE_CONVERT:
6131 : 13429 : {
6132 : 13429 : tree _q50 = TREE_OPERAND (_p1, 0);
6133 : 13429 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6134 : : {
6135 : 0 : {
6136 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6137 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6138 : 0 : if (res) return res;
6139 : : }
6140 : : }
6141 : 13429 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6142 : : {
6143 : 0 : {
6144 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
6145 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6146 : 0 : if (res) return res;
6147 : : }
6148 : : }
6149 : : break;
6150 : : }
6151 : 674883 : default:;
6152 : : }
6153 : 674883 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6154 : : {
6155 : 19209 : {
6156 : 19209 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6157 : 19209 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6158 : 19209 : if (res) return res;
6159 : : }
6160 : : }
6161 : 655736 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6162 : : {
6163 : 61 : {
6164 : 61 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
6165 : 61 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6166 : 61 : if (res) return res;
6167 : : }
6168 : : }
6169 : : break;
6170 : : }
6171 : 74827 : case POINTER_PLUS_EXPR:
6172 : 74827 : {
6173 : 74827 : tree _q20 = TREE_OPERAND (_p0, 0);
6174 : 74827 : tree _q21 = TREE_OPERAND (_p0, 1);
6175 : 74827 : switch (TREE_CODE (_p1))
6176 : : {
6177 : 2487 : case POINTER_PLUS_EXPR:
6178 : 2487 : {
6179 : 2487 : tree _q50 = TREE_OPERAND (_p1, 0);
6180 : 2487 : tree _q51 = TREE_OPERAND (_p1, 1);
6181 : 2487 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6182 : : {
6183 : 26 : {
6184 : 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
6185 : 26 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
6186 : 26 : if (res) return res;
6187 : : }
6188 : : }
6189 : : break;
6190 : : }
6191 : 74801 : default:;
6192 : : }
6193 : 74801 : switch (TREE_CODE (_q20))
6194 : : {
6195 : 1474 : CASE_CONVERT:
6196 : 1474 : {
6197 : 1474 : tree _q30 = TREE_OPERAND (_q20, 0);
6198 : 1474 : switch (TREE_CODE (_p1))
6199 : : {
6200 : 96 : CASE_CONVERT:
6201 : 96 : {
6202 : 96 : tree _q60 = TREE_OPERAND (_p1, 0);
6203 : 96 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6204 : : {
6205 : 60 : {
6206 : 60 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
6207 : 60 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6208 : 60 : if (res) return res;
6209 : : }
6210 : : }
6211 : : break;
6212 : : }
6213 : 1414 : default:;
6214 : : }
6215 : 1414 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6216 : : {
6217 : 0 : {
6218 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
6219 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6220 : 0 : if (res) return res;
6221 : : }
6222 : : }
6223 : : break;
6224 : : }
6225 : 74741 : default:;
6226 : : }
6227 : 74741 : switch (TREE_CODE (_p1))
6228 : : {
6229 : 488 : CASE_CONVERT:
6230 : 488 : {
6231 : 488 : tree _q50 = TREE_OPERAND (_p1, 0);
6232 : 488 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6233 : : {
6234 : 0 : {
6235 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6236 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6237 : 0 : if (res) return res;
6238 : : }
6239 : : }
6240 : : break;
6241 : : }
6242 : 74741 : default:;
6243 : : }
6244 : 74741 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6245 : : {
6246 : 1219 : {
6247 : 1219 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6248 : 1219 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6249 : 1219 : if (res) return res;
6250 : : }
6251 : : }
6252 : : break;
6253 : : }
6254 : 130615 : case MINUS_EXPR:
6255 : 130615 : {
6256 : 130615 : tree _q20 = TREE_OPERAND (_p0, 0);
6257 : 130615 : tree _q21 = TREE_OPERAND (_p0, 1);
6258 : 130615 : switch (TREE_CODE (_p1))
6259 : : {
6260 : 189 : case MINUS_EXPR:
6261 : 189 : {
6262 : 189 : tree _q50 = TREE_OPERAND (_p1, 0);
6263 : 189 : tree _q51 = TREE_OPERAND (_p1, 1);
6264 : 189 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6265 : : {
6266 : 18 : {
6267 : 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6268 : 36 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6269 : 18 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
6270 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
6271 : : )
6272 : : {
6273 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1634;
6274 : 0 : {
6275 : 0 : tree res_op0;
6276 : 0 : res_op0 = captures[0];
6277 : 0 : tree res_op1;
6278 : 0 : res_op1 = captures[2];
6279 : 0 : tree _r;
6280 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6281 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
6282 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
6283 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
6284 : 0 : return _r;
6285 : : }
6286 : 0 : next_after_fail1634:;
6287 : : }
6288 : : }
6289 : : }
6290 : 189 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6291 : : {
6292 : 18 : {
6293 : 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
6294 : 36 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6295 : 18 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
6296 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
6297 : : )
6298 : : {
6299 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1635;
6300 : 0 : {
6301 : 0 : tree res_op0;
6302 : 0 : res_op0 = captures[2];
6303 : 0 : tree res_op1;
6304 : 0 : res_op1 = captures[1];
6305 : 0 : tree _r;
6306 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6307 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
6308 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
6309 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
6310 : 0 : return _r;
6311 : : }
6312 : 0 : next_after_fail1635:;
6313 : : }
6314 : : }
6315 : : }
6316 : : break;
6317 : : }
6318 : 130615 : default:;
6319 : : }
6320 : 130615 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6321 : : {
6322 : 74 : {
6323 : 74 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
6324 : 74 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
6325 : 74 : if (res) return res;
6326 : : }
6327 : : }
6328 : : break;
6329 : : }
6330 : 38912 : case POINTER_DIFF_EXPR:
6331 : 38912 : {
6332 : 38912 : tree _q20 = TREE_OPERAND (_p0, 0);
6333 : 38912 : tree _q21 = TREE_OPERAND (_p0, 1);
6334 : 38912 : switch (TREE_CODE (_p1))
6335 : : {
6336 : 1029 : case POINTER_DIFF_EXPR:
6337 : 1029 : {
6338 : 1029 : tree _q50 = TREE_OPERAND (_p1, 0);
6339 : 1029 : tree _q51 = TREE_OPERAND (_p1, 1);
6340 : 1029 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6341 : : {
6342 : 0 : {
6343 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
6344 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, EQ_EXPR);
6345 : 0 : if (res) return res;
6346 : : }
6347 : : }
6348 : 1029 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6349 : : {
6350 : 0 : {
6351 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
6352 : 0 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, EQ_EXPR);
6353 : 0 : if (res) return res;
6354 : : }
6355 : : }
6356 : : break;
6357 : : }
6358 : : default:;
6359 : : }
6360 : : break;
6361 : : }
6362 : 25717155 : default:;
6363 : : }
6364 : 25717155 : {
6365 : 25717155 : tree _p0_pops[1];
6366 : 25717155 : if (tree_logical_inverted_value (_p0, _p0_pops))
6367 : : {
6368 : 7830 : tree _q20 = _p0_pops[0];
6369 : 7830 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6370 : : {
6371 : 9 : if (tree_truth_valued_p (_p1))
6372 : : {
6373 : 0 : {
6374 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6375 : 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, EQ_EXPR);
6376 : 0 : if (res) return res;
6377 : : }
6378 : : }
6379 : : }
6380 : : }
6381 : : }
6382 : 25717155 : if (tree_truth_valued_p (_p0))
6383 : : {
6384 : 490826 : switch (TREE_CODE (_p1))
6385 : : {
6386 : 24 : case BIT_NOT_EXPR:
6387 : 24 : {
6388 : 24 : tree _q30 = TREE_OPERAND (_p1, 0);
6389 : 24 : if (tree_truth_valued_p (_q30))
6390 : : {
6391 : 4 : {
6392 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
6393 : 4 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures);
6394 : 4 : if (res) return res;
6395 : : }
6396 : : }
6397 : : break;
6398 : : }
6399 : 490826 : default:;
6400 : : }
6401 : 490826 : {
6402 : 490826 : tree _p1_pops[1];
6403 : 490826 : if (tree_logical_inverted_value (_p1, _p1_pops))
6404 : : {
6405 : 93 : tree _q30 = _p1_pops[0];
6406 : 93 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6407 : : {
6408 : 0 : {
6409 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6410 : 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, EQ_EXPR);
6411 : 0 : if (res) return res;
6412 : : }
6413 : : }
6414 : : }
6415 : : }
6416 : : }
6417 : 25717155 : switch (TREE_CODE (_p1))
6418 : : {
6419 : 84933 : case PLUS_EXPR:
6420 : 84933 : {
6421 : 84933 : tree _q30 = TREE_OPERAND (_p1, 0);
6422 : 84933 : tree _q31 = TREE_OPERAND (_p1, 1);
6423 : 84933 : switch (TREE_CODE (_q31))
6424 : : {
6425 : 26 : CASE_CONVERT:
6426 : 26 : {
6427 : 26 : tree _q50 = TREE_OPERAND (_q31, 0);
6428 : 26 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6429 : : {
6430 : 0 : {
6431 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
6432 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6433 : 0 : if (res) return res;
6434 : : }
6435 : : }
6436 : : break;
6437 : : }
6438 : 84933 : default:;
6439 : : }
6440 : 84933 : switch (TREE_CODE (_q30))
6441 : : {
6442 : 22295 : CASE_CONVERT:
6443 : 22295 : {
6444 : 22295 : tree _q40 = TREE_OPERAND (_q30, 0);
6445 : 22295 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6446 : : {
6447 : 0 : {
6448 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
6449 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6450 : 0 : if (res) return res;
6451 : : }
6452 : : }
6453 : : break;
6454 : : }
6455 : 84933 : default:;
6456 : : }
6457 : 84933 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6458 : : {
6459 : 0 : {
6460 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
6461 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6462 : 0 : if (res) return res;
6463 : : }
6464 : : }
6465 : 84933 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6466 : : {
6467 : 0 : {
6468 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
6469 : 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
6470 : 0 : if (res) return res;
6471 : : }
6472 : : }
6473 : : break;
6474 : : }
6475 : 25717155 : default:;
6476 : : }
6477 : 25717155 : {
6478 : 25717155 : tree _p1_pops[1];
6479 : 25717155 : if (tree_nop_convert (_p1, _p1_pops))
6480 : : {
6481 : 1023768 : tree _q30 = _p1_pops[0];
6482 : 1023768 : switch (TREE_CODE (_q30))
6483 : : {
6484 : 1648 : case PLUS_EXPR:
6485 : 1648 : {
6486 : 1648 : tree _q40 = TREE_OPERAND (_q30, 0);
6487 : 1648 : tree _q41 = TREE_OPERAND (_q30, 1);
6488 : 1648 : switch (TREE_CODE (_q41))
6489 : : {
6490 : 2 : CASE_CONVERT:
6491 : 2 : {
6492 : 2 : tree _q60 = TREE_OPERAND (_q41, 0);
6493 : 2 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6494 : : {
6495 : 0 : {
6496 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
6497 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
6498 : 0 : if (res) return res;
6499 : : }
6500 : : }
6501 : : break;
6502 : : }
6503 : 1648 : default:;
6504 : : }
6505 : 1648 : switch (TREE_CODE (_q40))
6506 : : {
6507 : 1546 : CASE_CONVERT:
6508 : 1546 : {
6509 : 1546 : tree _q50 = TREE_OPERAND (_q40, 0);
6510 : 1546 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6511 : : {
6512 : 0 : {
6513 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
6514 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
6515 : 0 : if (res) return res;
6516 : : }
6517 : : }
6518 : : break;
6519 : : }
6520 : 1648 : default:;
6521 : : }
6522 : 1648 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6523 : : {
6524 : 0 : {
6525 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
6526 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
6527 : 0 : if (res) return res;
6528 : : }
6529 : : }
6530 : 1648 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6531 : : {
6532 : 0 : {
6533 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
6534 : 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, EQ_EXPR);
6535 : 0 : if (res) return res;
6536 : : }
6537 : : }
6538 : : break;
6539 : : }
6540 : : default:;
6541 : : }
6542 : : }
6543 : : }
6544 : 25717155 : switch (TREE_CODE (_p0))
6545 : : {
6546 : 4516492 : CASE_CONVERT:
6547 : 4516492 : {
6548 : 4516492 : tree _q20 = TREE_OPERAND (_p0, 0);
6549 : 4516492 : switch (TREE_CODE (_p1))
6550 : : {
6551 : 161 : case POINTER_PLUS_EXPR:
6552 : 161 : {
6553 : 161 : tree _q40 = TREE_OPERAND (_p1, 0);
6554 : 161 : tree _q41 = TREE_OPERAND (_p1, 1);
6555 : 161 : switch (TREE_CODE (_q40))
6556 : : {
6557 : 101 : CASE_CONVERT:
6558 : 101 : {
6559 : 101 : tree _q50 = TREE_OPERAND (_q40, 0);
6560 : 101 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6561 : : {
6562 : 6 : {
6563 : 6 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6564 : 6 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6565 : 6 : if (res) return res;
6566 : : }
6567 : : }
6568 : : break;
6569 : : }
6570 : 155 : default:;
6571 : : }
6572 : 155 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6573 : : {
6574 : 0 : {
6575 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6576 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6577 : 0 : if (res) return res;
6578 : : }
6579 : : }
6580 : : break;
6581 : : }
6582 : 4516486 : default:;
6583 : : }
6584 : 4516486 : {
6585 : 4516486 : tree _p1_pops[1];
6586 : 4516486 : if (tree_nop_convert (_p1, _p1_pops))
6587 : : {
6588 : 786124 : tree _q40 = _p1_pops[0];
6589 : 786124 : switch (TREE_CODE (_q40))
6590 : : {
6591 : 6 : case POINTER_PLUS_EXPR:
6592 : 6 : {
6593 : 6 : tree _q50 = TREE_OPERAND (_q40, 0);
6594 : 6 : tree _q51 = TREE_OPERAND (_q40, 1);
6595 : 6 : switch (TREE_CODE (_q50))
6596 : : {
6597 : 0 : CASE_CONVERT:
6598 : 0 : {
6599 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6600 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6601 : : {
6602 : 0 : {
6603 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6604 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6605 : 0 : if (res) return res;
6606 : : }
6607 : : }
6608 : : break;
6609 : : }
6610 : 6 : default:;
6611 : : }
6612 : 6 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6613 : : {
6614 : 0 : {
6615 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6616 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6617 : 0 : if (res) return res;
6618 : : }
6619 : : }
6620 : : break;
6621 : : }
6622 : : default:;
6623 : : }
6624 : : }
6625 : : }
6626 : 4516486 : break;
6627 : : }
6628 : 25717149 : default:;
6629 : : }
6630 : 25717149 : {
6631 : 25717149 : tree _p0_pops[1];
6632 : 25717149 : if (tree_nop_convert (_p0, _p0_pops))
6633 : : {
6634 : 2758721 : tree _q20 = _p0_pops[0];
6635 : 2758721 : switch (TREE_CODE (_q20))
6636 : : {
6637 : 97 : case POINTER_PLUS_EXPR:
6638 : 97 : {
6639 : 97 : tree _q30 = TREE_OPERAND (_q20, 0);
6640 : 97 : tree _q31 = TREE_OPERAND (_q20, 1);
6641 : 97 : switch (TREE_CODE (_q30))
6642 : : {
6643 : 21 : CASE_CONVERT:
6644 : 21 : {
6645 : 21 : tree _q40 = TREE_OPERAND (_q30, 0);
6646 : 21 : switch (TREE_CODE (_p1))
6647 : : {
6648 : 0 : CASE_CONVERT:
6649 : 0 : {
6650 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6651 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6652 : : {
6653 : 0 : {
6654 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6655 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6656 : 0 : if (res) return res;
6657 : : }
6658 : : }
6659 : : break;
6660 : : }
6661 : 21 : default:;
6662 : : }
6663 : 21 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6664 : : {
6665 : 0 : {
6666 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6667 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6668 : 0 : if (res) return res;
6669 : : }
6670 : : }
6671 : : break;
6672 : : }
6673 : 97 : default:;
6674 : : }
6675 : 97 : switch (TREE_CODE (_p1))
6676 : : {
6677 : 27 : CASE_CONVERT:
6678 : 27 : {
6679 : 27 : tree _q60 = TREE_OPERAND (_p1, 0);
6680 : 27 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6681 : : {
6682 : 0 : {
6683 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6684 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6685 : 0 : if (res) return res;
6686 : : }
6687 : : }
6688 : : break;
6689 : : }
6690 : 97 : default:;
6691 : : }
6692 : 97 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6693 : : {
6694 : 0 : {
6695 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6696 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6697 : 0 : if (res) return res;
6698 : : }
6699 : : }
6700 : : break;
6701 : : }
6702 : : default:;
6703 : : }
6704 : : }
6705 : : }
6706 : 25717149 : switch (TREE_CODE (_p1))
6707 : : {
6708 : 6782 : case POINTER_PLUS_EXPR:
6709 : 6782 : {
6710 : 6782 : tree _q30 = TREE_OPERAND (_p1, 0);
6711 : 6782 : tree _q31 = TREE_OPERAND (_p1, 1);
6712 : 6782 : switch (TREE_CODE (_q30))
6713 : : {
6714 : 4024 : CASE_CONVERT:
6715 : 4024 : {
6716 : 4024 : tree _q40 = TREE_OPERAND (_q30, 0);
6717 : 4024 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6718 : : {
6719 : 0 : {
6720 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6721 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6722 : 0 : if (res) return res;
6723 : : }
6724 : : }
6725 : : break;
6726 : : }
6727 : 6782 : default:;
6728 : : }
6729 : 6782 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6730 : : {
6731 : 0 : {
6732 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6733 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
6734 : 0 : if (res) return res;
6735 : : }
6736 : : }
6737 : : break;
6738 : : }
6739 : 25717149 : default:;
6740 : : }
6741 : 25717149 : {
6742 : 25717149 : tree _p1_pops[1];
6743 : 25717149 : if (tree_nop_convert (_p1, _p1_pops))
6744 : : {
6745 : 1023768 : tree _q30 = _p1_pops[0];
6746 : 1023768 : switch (TREE_CODE (_q30))
6747 : : {
6748 : 18 : case POINTER_PLUS_EXPR:
6749 : 18 : {
6750 : 18 : tree _q40 = TREE_OPERAND (_q30, 0);
6751 : 18 : tree _q41 = TREE_OPERAND (_q30, 1);
6752 : 18 : switch (TREE_CODE (_q40))
6753 : : {
6754 : 0 : CASE_CONVERT:
6755 : 0 : {
6756 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6757 : 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6758 : : {
6759 : 0 : {
6760 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6761 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6762 : 0 : if (res) return res;
6763 : : }
6764 : : }
6765 : : break;
6766 : : }
6767 : 18 : default:;
6768 : : }
6769 : 18 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6770 : : {
6771 : 0 : {
6772 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6773 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
6774 : 0 : if (res) return res;
6775 : : }
6776 : : }
6777 : : break;
6778 : : }
6779 : : default:;
6780 : : }
6781 : : }
6782 : : }
6783 : 25717149 : switch (TREE_CODE (_p0))
6784 : : {
6785 : 73522 : case POINTER_PLUS_EXPR:
6786 : 73522 : {
6787 : 73522 : tree _q20 = TREE_OPERAND (_p0, 0);
6788 : 73522 : tree _q21 = TREE_OPERAND (_p0, 1);
6789 : 73522 : switch (TREE_CODE (_p1))
6790 : : {
6791 : 11759 : case ADDR_EXPR:
6792 : 11759 : {
6793 : 11759 : {
6794 : 11759 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6795 : 11759 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
6796 : 11759 : if (res) return res;
6797 : : }
6798 : 11758 : break;
6799 : : }
6800 : 73521 : default:;
6801 : : }
6802 : 73521 : switch (TREE_CODE (_q20))
6803 : : {
6804 : 1187 : case ADDR_EXPR:
6805 : 1187 : {
6806 : 1187 : switch (TREE_CODE (_p1))
6807 : : {
6808 : 9 : case POINTER_PLUS_EXPR:
6809 : 9 : {
6810 : 9 : tree _q50 = TREE_OPERAND (_p1, 0);
6811 : 9 : tree _q51 = TREE_OPERAND (_p1, 1);
6812 : 9 : switch (TREE_CODE (_q50))
6813 : : {
6814 : 0 : case ADDR_EXPR:
6815 : 0 : {
6816 : 0 : {
6817 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
6818 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, EQ_EXPR);
6819 : 0 : if (res) return res;
6820 : : }
6821 : 0 : break;
6822 : : }
6823 : : default:;
6824 : : }
6825 : : break;
6826 : : }
6827 : : default:;
6828 : : }
6829 : : break;
6830 : : }
6831 : : default:;
6832 : : }
6833 : : break;
6834 : : }
6835 : 83866 : case ADDR_EXPR:
6836 : 83866 : {
6837 : 83866 : switch (TREE_CODE (_p1))
6838 : : {
6839 : 0 : case POINTER_PLUS_EXPR:
6840 : 0 : {
6841 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6842 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6843 : 0 : {
6844 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6845 : 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
6846 : 0 : if (res) return res;
6847 : : }
6848 : 0 : break;
6849 : : }
6850 : : default:;
6851 : : }
6852 : : break;
6853 : : }
6854 : 25717148 : default:;
6855 : : }
6856 : 25717148 : switch (TREE_CODE (_p1))
6857 : : {
6858 : 3498 : case MINUS_EXPR:
6859 : 3498 : {
6860 : 3498 : tree _q30 = TREE_OPERAND (_p1, 0);
6861 : 3498 : tree _q31 = TREE_OPERAND (_p1, 1);
6862 : 3498 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6863 : : {
6864 : 0 : {
6865 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6866 : 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
6867 : 0 : if (res) return res;
6868 : : }
6869 : : }
6870 : : break;
6871 : : }
6872 : 25717148 : default:;
6873 : : }
6874 : 25717148 : switch (TREE_CODE (_p0))
6875 : : {
6876 : 4430 : case TRUNC_DIV_EXPR:
6877 : 4430 : {
6878 : 4430 : tree _q20 = TREE_OPERAND (_p0, 0);
6879 : 4430 : tree _q21 = TREE_OPERAND (_p0, 1);
6880 : 4430 : if (integer_zerop (_p1))
6881 : : {
6882 : 319 : {
6883 : 319 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6884 : 319 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
6885 : 319 : if (res) return res;
6886 : : }
6887 : : }
6888 : : break;
6889 : : }
6890 : 4516486 : CASE_CONVERT:
6891 : 4516486 : {
6892 : 4516486 : tree _q20 = TREE_OPERAND (_p0, 0);
6893 : 4516486 : switch (TREE_CODE (_p1))
6894 : : {
6895 : 1093319 : CASE_CONVERT:
6896 : 1093319 : {
6897 : 1093319 : tree _q40 = TREE_OPERAND (_p1, 0);
6898 : 1093319 : switch (TREE_CODE (_q40))
6899 : : {
6900 : 0 : case MINUS_EXPR:
6901 : 0 : {
6902 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6903 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6904 : 0 : switch (TREE_CODE (_q50))
6905 : : {
6906 : 0 : case INTEGER_CST:
6907 : 0 : {
6908 : 0 : switch (TREE_CODE (_q51))
6909 : : {
6910 : 0 : CASE_CONVERT:
6911 : 0 : {
6912 : 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6913 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6914 : : {
6915 : 0 : {
6916 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6917 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
6918 : 0 : if (res) return res;
6919 : : }
6920 : : }
6921 : : break;
6922 : : }
6923 : : default:;
6924 : : }
6925 : : break;
6926 : : }
6927 : : default:;
6928 : : }
6929 : : break;
6930 : : }
6931 : : default:;
6932 : : }
6933 : : break;
6934 : : }
6935 : 4516486 : default:;
6936 : : }
6937 : 4516486 : switch (TREE_CODE (_q20))
6938 : : {
6939 : 242 : case MINUS_EXPR:
6940 : 242 : {
6941 : 242 : tree _q30 = TREE_OPERAND (_q20, 0);
6942 : 242 : tree _q31 = TREE_OPERAND (_q20, 1);
6943 : 242 : switch (TREE_CODE (_q30))
6944 : : {
6945 : 56 : case INTEGER_CST:
6946 : 56 : {
6947 : 56 : switch (TREE_CODE (_q31))
6948 : : {
6949 : 0 : CASE_CONVERT:
6950 : 0 : {
6951 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6952 : 0 : switch (TREE_CODE (_p1))
6953 : : {
6954 : 0 : CASE_CONVERT:
6955 : 0 : {
6956 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6957 : 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6958 : : {
6959 : 0 : {
6960 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6961 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
6962 : 0 : if (res) return res;
6963 : : }
6964 : : }
6965 : : break;
6966 : : }
6967 : 0 : default:;
6968 : : }
6969 : 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6970 : : {
6971 : 0 : {
6972 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6973 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
6974 : 0 : if (res) return res;
6975 : : }
6976 : : }
6977 : : break;
6978 : : }
6979 : 56 : default:;
6980 : : }
6981 : 56 : switch (TREE_CODE (_p1))
6982 : : {
6983 : 0 : CASE_CONVERT:
6984 : 0 : {
6985 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6986 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6987 : : {
6988 : 0 : {
6989 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6990 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
6991 : 0 : if (res) return res;
6992 : : }
6993 : : }
6994 : : break;
6995 : : }
6996 : 56 : default:;
6997 : : }
6998 : 56 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6999 : : {
7000 : 0 : {
7001 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
7002 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7003 : 0 : if (res) return res;
7004 : : }
7005 : : }
7006 : : break;
7007 : : }
7008 : : default:;
7009 : : }
7010 : : break;
7011 : : }
7012 : 4516486 : default:;
7013 : : }
7014 : 4516486 : switch (TREE_CODE (_p1))
7015 : : {
7016 : 1093319 : CASE_CONVERT:
7017 : 1093319 : {
7018 : 1093319 : tree _q40 = TREE_OPERAND (_p1, 0);
7019 : 1093319 : switch (TREE_CODE (_q40))
7020 : : {
7021 : 0 : case MINUS_EXPR:
7022 : 0 : {
7023 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7024 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7025 : 0 : switch (TREE_CODE (_q50))
7026 : : {
7027 : 0 : case INTEGER_CST:
7028 : 0 : {
7029 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7030 : : {
7031 : 0 : {
7032 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
7033 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7034 : 0 : if (res) return res;
7035 : : }
7036 : : }
7037 : : break;
7038 : : }
7039 : : default:;
7040 : : }
7041 : : break;
7042 : : }
7043 : : default:;
7044 : : }
7045 : : break;
7046 : : }
7047 : 267 : case MINUS_EXPR:
7048 : 267 : {
7049 : 267 : tree _q40 = TREE_OPERAND (_p1, 0);
7050 : 267 : tree _q41 = TREE_OPERAND (_p1, 1);
7051 : 267 : switch (TREE_CODE (_q40))
7052 : : {
7053 : 64 : case INTEGER_CST:
7054 : 64 : {
7055 : 64 : switch (TREE_CODE (_q41))
7056 : : {
7057 : 12 : CASE_CONVERT:
7058 : 12 : {
7059 : 12 : tree _q60 = TREE_OPERAND (_q41, 0);
7060 : 12 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7061 : : {
7062 : 0 : {
7063 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7064 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7065 : 0 : if (res) return res;
7066 : : }
7067 : : }
7068 : : break;
7069 : : }
7070 : 64 : default:;
7071 : : }
7072 : 64 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7073 : : {
7074 : 0 : {
7075 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7076 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7077 : 0 : if (res) return res;
7078 : : }
7079 : : }
7080 : : break;
7081 : : }
7082 : : default:;
7083 : : }
7084 : : break;
7085 : : }
7086 : : default:;
7087 : : }
7088 : : break;
7089 : : }
7090 : 130541 : case MINUS_EXPR:
7091 : 130541 : {
7092 : 130541 : tree _q20 = TREE_OPERAND (_p0, 0);
7093 : 130541 : tree _q21 = TREE_OPERAND (_p0, 1);
7094 : 130541 : switch (TREE_CODE (_q20))
7095 : : {
7096 : 43134 : case INTEGER_CST:
7097 : 43134 : {
7098 : 43134 : switch (TREE_CODE (_q21))
7099 : : {
7100 : 23611 : CASE_CONVERT:
7101 : 23611 : {
7102 : 23611 : tree _q40 = TREE_OPERAND (_q21, 0);
7103 : 23611 : switch (TREE_CODE (_p1))
7104 : : {
7105 : 0 : CASE_CONVERT:
7106 : 0 : {
7107 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
7108 : 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
7109 : : {
7110 : 0 : {
7111 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7112 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7113 : 0 : if (res) return res;
7114 : : }
7115 : : }
7116 : : break;
7117 : : }
7118 : 23611 : default:;
7119 : : }
7120 : 23611 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7121 : : {
7122 : 0 : {
7123 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7124 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7125 : 0 : if (res) return res;
7126 : : }
7127 : : }
7128 : : break;
7129 : : }
7130 : 43134 : default:;
7131 : : }
7132 : 43134 : switch (TREE_CODE (_p1))
7133 : : {
7134 : 4 : CASE_CONVERT:
7135 : 4 : {
7136 : 4 : tree _q50 = TREE_OPERAND (_p1, 0);
7137 : 4 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7138 : : {
7139 : 0 : {
7140 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7141 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7142 : 0 : if (res) return res;
7143 : : }
7144 : : }
7145 : : break;
7146 : : }
7147 : 43134 : default:;
7148 : : }
7149 : 43134 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7150 : : {
7151 : 2 : {
7152 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7153 : 2 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7154 : 2 : if (res) return res;
7155 : : }
7156 : : }
7157 : : break;
7158 : : }
7159 : : default:;
7160 : : }
7161 : : break;
7162 : : }
7163 : 25716912 : default:;
7164 : : }
7165 : 25716912 : switch (TREE_CODE (_p1))
7166 : : {
7167 : 1386991 : CASE_CONVERT:
7168 : 1386991 : {
7169 : 1386991 : tree _q30 = TREE_OPERAND (_p1, 0);
7170 : 1386991 : switch (TREE_CODE (_q30))
7171 : : {
7172 : 12 : case MINUS_EXPR:
7173 : 12 : {
7174 : 12 : tree _q40 = TREE_OPERAND (_q30, 0);
7175 : 12 : tree _q41 = TREE_OPERAND (_q30, 1);
7176 : 12 : switch (TREE_CODE (_q40))
7177 : : {
7178 : 12 : case INTEGER_CST:
7179 : 12 : {
7180 : 12 : switch (TREE_CODE (_q41))
7181 : : {
7182 : 12 : CASE_CONVERT:
7183 : 12 : {
7184 : 12 : tree _q60 = TREE_OPERAND (_q41, 0);
7185 : 12 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7186 : : {
7187 : 0 : {
7188 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
7189 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7190 : 0 : if (res) return res;
7191 : : }
7192 : : }
7193 : : break;
7194 : : }
7195 : 12 : default:;
7196 : : }
7197 : 12 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7198 : : {
7199 : 0 : {
7200 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
7201 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7202 : 0 : if (res) return res;
7203 : : }
7204 : : }
7205 : : break;
7206 : : }
7207 : : default:;
7208 : : }
7209 : : break;
7210 : : }
7211 : : default:;
7212 : : }
7213 : : break;
7214 : : }
7215 : 3498 : case MINUS_EXPR:
7216 : 3498 : {
7217 : 3498 : tree _q30 = TREE_OPERAND (_p1, 0);
7218 : 3498 : tree _q31 = TREE_OPERAND (_p1, 1);
7219 : 3498 : switch (TREE_CODE (_q30))
7220 : : {
7221 : 157 : case INTEGER_CST:
7222 : 157 : {
7223 : 157 : switch (TREE_CODE (_q31))
7224 : : {
7225 : 16 : CASE_CONVERT:
7226 : 16 : {
7227 : 16 : tree _q50 = TREE_OPERAND (_q31, 0);
7228 : 16 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7229 : : {
7230 : 0 : {
7231 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7232 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7233 : 0 : if (res) return res;
7234 : : }
7235 : : }
7236 : : break;
7237 : : }
7238 : 157 : default:;
7239 : : }
7240 : 157 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7241 : : {
7242 : 0 : {
7243 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7244 : 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
7245 : 0 : if (res) return res;
7246 : : }
7247 : : }
7248 : : break;
7249 : : }
7250 : : default:;
7251 : : }
7252 : : break;
7253 : : }
7254 : 25716912 : default:;
7255 : : }
7256 : 25716912 : switch (TREE_CODE (_p0))
7257 : : {
7258 : 1194 : case LT_EXPR:
7259 : 1194 : {
7260 : 1194 : tree _q20 = TREE_OPERAND (_p0, 0);
7261 : 1194 : tree _q21 = TREE_OPERAND (_p0, 1);
7262 : 1194 : switch (TREE_CODE (_p1))
7263 : : {
7264 : 23 : case GT_EXPR:
7265 : 23 : {
7266 : 23 : tree _q50 = TREE_OPERAND (_p1, 0);
7267 : 23 : tree _q51 = TREE_OPERAND (_p1, 1);
7268 : 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7269 : : {
7270 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7271 : : {
7272 : 0 : {
7273 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7274 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
7275 : 0 : if (res) return res;
7276 : : }
7277 : : }
7278 : : }
7279 : : break;
7280 : : }
7281 : 0 : case EQ_EXPR:
7282 : 0 : {
7283 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7284 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7285 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7286 : : {
7287 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7288 : : {
7289 : 0 : {
7290 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7291 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
7292 : 0 : if (res) return res;
7293 : : }
7294 : : }
7295 : : }
7296 : : break;
7297 : : }
7298 : 2 : case NE_EXPR:
7299 : 2 : {
7300 : 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7301 : 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7302 : 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7303 : : {
7304 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7305 : : {
7306 : 0 : {
7307 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7308 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
7309 : 0 : if (res) return res;
7310 : : }
7311 : : }
7312 : : }
7313 : : break;
7314 : : }
7315 : : default:;
7316 : : }
7317 : : break;
7318 : : }
7319 : 1611 : case LE_EXPR:
7320 : 1611 : {
7321 : 1611 : tree _q20 = TREE_OPERAND (_p0, 0);
7322 : 1611 : tree _q21 = TREE_OPERAND (_p0, 1);
7323 : 1611 : switch (TREE_CODE (_p1))
7324 : : {
7325 : 9 : case GE_EXPR:
7326 : 9 : {
7327 : 9 : tree _q50 = TREE_OPERAND (_p1, 0);
7328 : 9 : tree _q51 = TREE_OPERAND (_p1, 1);
7329 : 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7330 : : {
7331 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7332 : : {
7333 : 0 : {
7334 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7335 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
7336 : 0 : if (res) return res;
7337 : : }
7338 : : }
7339 : : }
7340 : : break;
7341 : : }
7342 : 0 : case EQ_EXPR:
7343 : 0 : {
7344 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7345 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7346 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7347 : : {
7348 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7349 : : {
7350 : 0 : {
7351 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7352 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
7353 : 0 : if (res) return res;
7354 : : }
7355 : : }
7356 : : }
7357 : : break;
7358 : : }
7359 : 8 : case NE_EXPR:
7360 : 8 : {
7361 : 8 : tree _q50 = TREE_OPERAND (_p1, 0);
7362 : 8 : tree _q51 = TREE_OPERAND (_p1, 1);
7363 : 8 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7364 : : {
7365 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7366 : : {
7367 : 0 : {
7368 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7369 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
7370 : 0 : if (res) return res;
7371 : : }
7372 : : }
7373 : : }
7374 : : break;
7375 : : }
7376 : : default:;
7377 : : }
7378 : : break;
7379 : : }
7380 : 31305 : case GT_EXPR:
7381 : 31305 : {
7382 : 31305 : tree _q20 = TREE_OPERAND (_p0, 0);
7383 : 31305 : tree _q21 = TREE_OPERAND (_p0, 1);
7384 : 31305 : switch (TREE_CODE (_p1))
7385 : : {
7386 : 29501 : case GT_EXPR:
7387 : 29501 : {
7388 : 29501 : tree _q50 = TREE_OPERAND (_p1, 0);
7389 : 29501 : tree _q51 = TREE_OPERAND (_p1, 1);
7390 : 29501 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7391 : : {
7392 : 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7393 : : {
7394 : 0 : {
7395 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7396 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
7397 : 0 : if (res) return res;
7398 : : }
7399 : 0 : {
7400 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7401 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
7402 : 0 : if (res) return res;
7403 : : }
7404 : : }
7405 : : }
7406 : : break;
7407 : : }
7408 : 57 : case EQ_EXPR:
7409 : 57 : {
7410 : 57 : tree _q50 = TREE_OPERAND (_p1, 0);
7411 : 57 : tree _q51 = TREE_OPERAND (_p1, 1);
7412 : 57 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7413 : : {
7414 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7415 : : {
7416 : 0 : {
7417 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7418 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
7419 : 0 : if (res) return res;
7420 : : }
7421 : : }
7422 : : }
7423 : : break;
7424 : : }
7425 : 37 : case NE_EXPR:
7426 : 37 : {
7427 : 37 : tree _q50 = TREE_OPERAND (_p1, 0);
7428 : 37 : tree _q51 = TREE_OPERAND (_p1, 1);
7429 : 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7430 : : {
7431 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7432 : : {
7433 : 0 : {
7434 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7435 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
7436 : 0 : if (res) return res;
7437 : : }
7438 : : }
7439 : : }
7440 : : break;
7441 : : }
7442 : 51 : case LT_EXPR:
7443 : 51 : {
7444 : 51 : tree _q50 = TREE_OPERAND (_p1, 0);
7445 : 51 : tree _q51 = TREE_OPERAND (_p1, 1);
7446 : 51 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7447 : : {
7448 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7449 : : {
7450 : 0 : {
7451 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7452 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
7453 : 0 : if (res) return res;
7454 : : }
7455 : : }
7456 : : }
7457 : : break;
7458 : : }
7459 : : default:;
7460 : : }
7461 : : break;
7462 : : }
7463 : 6757 : case GE_EXPR:
7464 : 6757 : {
7465 : 6757 : tree _q20 = TREE_OPERAND (_p0, 0);
7466 : 6757 : tree _q21 = TREE_OPERAND (_p0, 1);
7467 : 6757 : switch (TREE_CODE (_p1))
7468 : : {
7469 : 35 : case GE_EXPR:
7470 : 35 : {
7471 : 35 : tree _q50 = TREE_OPERAND (_p1, 0);
7472 : 35 : tree _q51 = TREE_OPERAND (_p1, 1);
7473 : 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7474 : : {
7475 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7476 : : {
7477 : 0 : {
7478 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7479 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
7480 : 0 : if (res) return res;
7481 : : }
7482 : 0 : {
7483 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7484 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
7485 : 0 : if (res) return res;
7486 : : }
7487 : : }
7488 : : }
7489 : : break;
7490 : : }
7491 : 90 : case EQ_EXPR:
7492 : 90 : {
7493 : 90 : tree _q50 = TREE_OPERAND (_p1, 0);
7494 : 90 : tree _q51 = TREE_OPERAND (_p1, 1);
7495 : 90 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7496 : : {
7497 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7498 : : {
7499 : 0 : {
7500 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7501 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
7502 : 0 : if (res) return res;
7503 : : }
7504 : : }
7505 : : }
7506 : : break;
7507 : : }
7508 : 56 : case NE_EXPR:
7509 : 56 : {
7510 : 56 : tree _q50 = TREE_OPERAND (_p1, 0);
7511 : 56 : tree _q51 = TREE_OPERAND (_p1, 1);
7512 : 56 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7513 : : {
7514 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7515 : : {
7516 : 0 : {
7517 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7518 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
7519 : 0 : if (res) return res;
7520 : : }
7521 : : }
7522 : : }
7523 : : break;
7524 : : }
7525 : 17 : case LE_EXPR:
7526 : 17 : {
7527 : 17 : tree _q50 = TREE_OPERAND (_p1, 0);
7528 : 17 : tree _q51 = TREE_OPERAND (_p1, 1);
7529 : 17 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7530 : : {
7531 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7532 : : {
7533 : 0 : {
7534 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7535 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
7536 : 0 : if (res) return res;
7537 : : }
7538 : : }
7539 : : }
7540 : : break;
7541 : : }
7542 : : default:;
7543 : : }
7544 : : break;
7545 : : }
7546 : 31628 : case EQ_EXPR:
7547 : 31628 : {
7548 : 31628 : tree _q20 = TREE_OPERAND (_p0, 0);
7549 : 31628 : tree _q21 = TREE_OPERAND (_p0, 1);
7550 : 31628 : switch (TREE_CODE (_p1))
7551 : : {
7552 : 4 : case LT_EXPR:
7553 : 4 : {
7554 : 4 : tree _q50 = TREE_OPERAND (_p1, 0);
7555 : 4 : tree _q51 = TREE_OPERAND (_p1, 1);
7556 : 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7557 : : {
7558 : 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7559 : : {
7560 : 0 : {
7561 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7562 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
7563 : 0 : if (res) return res;
7564 : : }
7565 : : }
7566 : : }
7567 : : break;
7568 : : }
7569 : 4 : case LE_EXPR:
7570 : 4 : {
7571 : 4 : tree _q50 = TREE_OPERAND (_p1, 0);
7572 : 4 : tree _q51 = TREE_OPERAND (_p1, 1);
7573 : 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7574 : : {
7575 : 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7576 : : {
7577 : 0 : {
7578 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7579 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
7580 : 0 : if (res) return res;
7581 : : }
7582 : : }
7583 : : }
7584 : : break;
7585 : : }
7586 : 75 : case GT_EXPR:
7587 : 75 : {
7588 : 75 : tree _q50 = TREE_OPERAND (_p1, 0);
7589 : 75 : tree _q51 = TREE_OPERAND (_p1, 1);
7590 : 75 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7591 : : {
7592 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7593 : : {
7594 : 0 : {
7595 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7596 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
7597 : 0 : if (res) return res;
7598 : : }
7599 : : }
7600 : : }
7601 : : break;
7602 : : }
7603 : 112 : case GE_EXPR:
7604 : 112 : {
7605 : 112 : tree _q50 = TREE_OPERAND (_p1, 0);
7606 : 112 : tree _q51 = TREE_OPERAND (_p1, 1);
7607 : 112 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7608 : : {
7609 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7610 : : {
7611 : 0 : {
7612 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7613 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
7614 : 0 : if (res) return res;
7615 : : }
7616 : : }
7617 : : }
7618 : : break;
7619 : : }
7620 : : default:;
7621 : : }
7622 : : break;
7623 : : }
7624 : 11570 : case NE_EXPR:
7625 : 11570 : {
7626 : 11570 : tree _q20 = TREE_OPERAND (_p0, 0);
7627 : 11570 : tree _q21 = TREE_OPERAND (_p0, 1);
7628 : 11570 : switch (TREE_CODE (_p1))
7629 : : {
7630 : 3 : case LT_EXPR:
7631 : 3 : {
7632 : 3 : tree _q50 = TREE_OPERAND (_p1, 0);
7633 : 3 : tree _q51 = TREE_OPERAND (_p1, 1);
7634 : 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7635 : : {
7636 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7637 : : {
7638 : 0 : {
7639 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7640 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
7641 : 0 : if (res) return res;
7642 : : }
7643 : : }
7644 : : }
7645 : : break;
7646 : : }
7647 : 0 : case LE_EXPR:
7648 : 0 : {
7649 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7650 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7651 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7652 : : {
7653 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7654 : : {
7655 : 0 : {
7656 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7657 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
7658 : 0 : if (res) return res;
7659 : : }
7660 : : }
7661 : : }
7662 : : break;
7663 : : }
7664 : 21 : case GT_EXPR:
7665 : 21 : {
7666 : 21 : tree _q50 = TREE_OPERAND (_p1, 0);
7667 : 21 : tree _q51 = TREE_OPERAND (_p1, 1);
7668 : 21 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7669 : : {
7670 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7671 : : {
7672 : 0 : {
7673 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7674 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
7675 : 0 : if (res) return res;
7676 : : }
7677 : : }
7678 : : }
7679 : : break;
7680 : : }
7681 : 2 : case GE_EXPR:
7682 : 2 : {
7683 : 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7684 : 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7685 : 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7686 : : {
7687 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7688 : : {
7689 : 0 : {
7690 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7691 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
7692 : 0 : if (res) return res;
7693 : : }
7694 : : }
7695 : : }
7696 : : break;
7697 : : }
7698 : : default:;
7699 : : }
7700 : : break;
7701 : : }
7702 : 14563 : case MIN_EXPR:
7703 : 14563 : {
7704 : 14563 : tree _q20 = TREE_OPERAND (_p0, 0);
7705 : 14563 : tree _q21 = TREE_OPERAND (_p0, 1);
7706 : 14563 : switch (TREE_CODE (_p1))
7707 : : {
7708 : 0 : case MAX_EXPR:
7709 : 0 : {
7710 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7711 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7712 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7713 : : {
7714 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7715 : : {
7716 : 0 : {
7717 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7718 : 0 : if (!HONOR_NANS (captures[0])
7719 : : )
7720 : : {
7721 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1636;
7722 : 0 : {
7723 : 0 : tree res_op0;
7724 : 0 : res_op0 = captures[0];
7725 : 0 : tree res_op1;
7726 : 0 : res_op1 = captures[1];
7727 : 0 : tree _r;
7728 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7729 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
7730 : 0 : return _r;
7731 : : }
7732 : 0 : next_after_fail1636:;
7733 : : }
7734 : : }
7735 : : }
7736 : : }
7737 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7738 : : {
7739 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7740 : : {
7741 : 0 : {
7742 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7743 : 0 : if (!HONOR_NANS (captures[0])
7744 : : )
7745 : : {
7746 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1637;
7747 : 0 : {
7748 : 0 : tree res_op0;
7749 : 0 : res_op0 = captures[0];
7750 : 0 : tree res_op1;
7751 : 0 : res_op1 = captures[1];
7752 : 0 : tree _r;
7753 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7754 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
7755 : 0 : return _r;
7756 : : }
7757 : 0 : next_after_fail1637:;
7758 : : }
7759 : : }
7760 : : }
7761 : : }
7762 : : break;
7763 : : }
7764 : 14563 : default:;
7765 : : }
7766 : 14563 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7767 : : {
7768 : 0 : {
7769 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7770 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7771 : 0 : if (res) return res;
7772 : : }
7773 : : }
7774 : 14563 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7775 : : {
7776 : 0 : {
7777 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7778 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7779 : 0 : if (res) return res;
7780 : : }
7781 : : }
7782 : : break;
7783 : : }
7784 : 581 : case MAX_EXPR:
7785 : 581 : {
7786 : 581 : tree _q20 = TREE_OPERAND (_p0, 0);
7787 : 581 : tree _q21 = TREE_OPERAND (_p0, 1);
7788 : 581 : switch (TREE_CODE (_p1))
7789 : : {
7790 : 0 : case MIN_EXPR:
7791 : 0 : {
7792 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7793 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7794 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7795 : : {
7796 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7797 : : {
7798 : 0 : {
7799 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7800 : 0 : if (!HONOR_NANS (captures[0])
7801 : : )
7802 : : {
7803 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1638;
7804 : 0 : {
7805 : 0 : tree res_op0;
7806 : 0 : res_op0 = captures[0];
7807 : 0 : tree res_op1;
7808 : 0 : res_op1 = captures[1];
7809 : 0 : tree _r;
7810 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7811 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
7812 : 0 : return _r;
7813 : : }
7814 : 0 : next_after_fail1638:;
7815 : : }
7816 : : }
7817 : : }
7818 : : }
7819 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7820 : : {
7821 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7822 : : {
7823 : 0 : {
7824 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7825 : 0 : if (!HONOR_NANS (captures[0])
7826 : : )
7827 : : {
7828 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1639;
7829 : 0 : {
7830 : 0 : tree res_op0;
7831 : 0 : res_op0 = captures[0];
7832 : 0 : tree res_op1;
7833 : 0 : res_op1 = captures[1];
7834 : 0 : tree _r;
7835 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7836 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
7837 : 0 : return _r;
7838 : : }
7839 : 0 : next_after_fail1639:;
7840 : : }
7841 : : }
7842 : : }
7843 : : }
7844 : : break;
7845 : : }
7846 : 581 : default:;
7847 : : }
7848 : 581 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7849 : : {
7850 : 0 : {
7851 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7852 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7853 : 0 : if (res) return res;
7854 : : }
7855 : : }
7856 : 581 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7857 : : {
7858 : 1 : {
7859 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7860 : 1 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7861 : 1 : if (res) return res;
7862 : : }
7863 : : }
7864 : : break;
7865 : : }
7866 : 25716912 : default:;
7867 : : }
7868 : 25716912 : if (tree_with_possible_nonzero_bits (_p0))
7869 : : {
7870 : 9767939 : if (tree_with_known_nonzero_bits (_p1))
7871 : : {
7872 : 8359553 : {
7873 : 8359553 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7874 : 8359553 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
7875 : 8359553 : if (res) return res;
7876 : : }
7877 : : }
7878 : : }
7879 : 25698440 : if (tree_with_known_nonzero_bits (_p0))
7880 : : {
7881 : 6365648 : if (tree_with_possible_nonzero_bits (_p1))
7882 : : {
7883 : 6329040 : {
7884 : 6329040 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7885 : 6329040 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
7886 : 6329040 : if (res) return res;
7887 : : }
7888 : : }
7889 : : }
7890 : 25698008 : switch (TREE_CODE (_p1))
7891 : : {
7892 : 115 : case MIN_EXPR:
7893 : 115 : {
7894 : 115 : tree _q30 = TREE_OPERAND (_p1, 0);
7895 : 115 : tree _q31 = TREE_OPERAND (_p1, 1);
7896 : 115 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7897 : : {
7898 : 0 : {
7899 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7900 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7901 : 0 : if (res) return res;
7902 : : }
7903 : : }
7904 : 115 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7905 : : {
7906 : 0 : {
7907 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7908 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7909 : 0 : if (res) return res;
7910 : : }
7911 : : }
7912 : : break;
7913 : : }
7914 : 40 : case MAX_EXPR:
7915 : 40 : {
7916 : 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7917 : 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7918 : 40 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7919 : : {
7920 : 0 : {
7921 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7922 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7923 : 0 : if (res) return res;
7924 : : }
7925 : : }
7926 : 40 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7927 : : {
7928 : 0 : {
7929 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7930 : 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7931 : 0 : if (res) return res;
7932 : : }
7933 : : }
7934 : : break;
7935 : : }
7936 : 25698008 : default:;
7937 : : }
7938 : 25698008 : switch (TREE_CODE (_p0))
7939 : : {
7940 : 14563 : case MIN_EXPR:
7941 : 14563 : {
7942 : 14563 : tree _q20 = TREE_OPERAND (_p0, 0);
7943 : 14563 : tree _q21 = TREE_OPERAND (_p0, 1);
7944 : 14563 : switch (TREE_CODE (_q21))
7945 : : {
7946 : 88 : case INTEGER_CST:
7947 : 88 : {
7948 : 88 : switch (TREE_CODE (_p1))
7949 : : {
7950 : 0 : case INTEGER_CST:
7951 : 0 : {
7952 : 0 : {
7953 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7954 : 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, EQ_EXPR);
7955 : 0 : if (res) return res;
7956 : : }
7957 : 0 : break;
7958 : : }
7959 : : default:;
7960 : : }
7961 : : break;
7962 : : }
7963 : : default:;
7964 : : }
7965 : : break;
7966 : : }
7967 : 581 : case MAX_EXPR:
7968 : 581 : {
7969 : 581 : tree _q20 = TREE_OPERAND (_p0, 0);
7970 : 581 : tree _q21 = TREE_OPERAND (_p0, 1);
7971 : 581 : switch (TREE_CODE (_q21))
7972 : : {
7973 : 381 : case INTEGER_CST:
7974 : 381 : {
7975 : 381 : switch (TREE_CODE (_p1))
7976 : : {
7977 : 42 : case INTEGER_CST:
7978 : 42 : {
7979 : 42 : {
7980 : 42 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7981 : 42 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
7982 : 42 : if (res) return res;
7983 : : }
7984 : 0 : break;
7985 : : }
7986 : : default:;
7987 : : }
7988 : : break;
7989 : : }
7990 : 539 : default:;
7991 : : }
7992 : 539 : if (integer_zerop (_p1))
7993 : : {
7994 : 11 : {
7995 : 11 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7996 : 11 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, EQ_EXPR);
7997 : 11 : if (res) return res;
7998 : : }
7999 : : }
8000 : : break;
8001 : : }
8002 : 896457 : case BIT_AND_EXPR:
8003 : 896457 : {
8004 : 896457 : tree _q20 = TREE_OPERAND (_p0, 0);
8005 : 896457 : tree _q21 = TREE_OPERAND (_p0, 1);
8006 : 896457 : switch (TREE_CODE (_q20))
8007 : : {
8008 : 748 : case LSHIFT_EXPR:
8009 : 748 : {
8010 : 748 : tree _q30 = TREE_OPERAND (_q20, 0);
8011 : 748 : tree _q31 = TREE_OPERAND (_q20, 1);
8012 : 748 : if (integer_pow2p (_q30))
8013 : : {
8014 : 740 : if (integer_pow2p (_q21))
8015 : : {
8016 : 1 : if (integer_zerop (_p1))
8017 : : {
8018 : 1 : {
8019 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8020 : 1 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
8021 : 1 : if (res) return res;
8022 : : }
8023 : : }
8024 : : }
8025 : : }
8026 : 747 : switch (TREE_CODE (_q31))
8027 : : {
8028 : 0 : case INTEGER_CST:
8029 : 0 : {
8030 : 0 : switch (TREE_CODE (_q21))
8031 : : {
8032 : 0 : case INTEGER_CST:
8033 : 0 : {
8034 : 0 : switch (TREE_CODE (_p1))
8035 : : {
8036 : 0 : case INTEGER_CST:
8037 : 0 : {
8038 : 0 : {
8039 : 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8040 : 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, EQ_EXPR);
8041 : 0 : if (res) return res;
8042 : : }
8043 : 0 : break;
8044 : : }
8045 : : default:;
8046 : : }
8047 : : break;
8048 : : }
8049 : : default:;
8050 : : }
8051 : : break;
8052 : : }
8053 : 747 : default:;
8054 : : }
8055 : 747 : if (integer_onep (_q30))
8056 : : {
8057 : 739 : if (integer_pow2p (_q21))
8058 : : {
8059 : 0 : if (integer_zerop (_p1))
8060 : : {
8061 : 0 : {
8062 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
8063 : 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
8064 : 0 : if (res) return res;
8065 : : }
8066 : : }
8067 : : }
8068 : : }
8069 : : break;
8070 : : }
8071 : 2545 : case RSHIFT_EXPR:
8072 : 2545 : {
8073 : 2545 : tree _q30 = TREE_OPERAND (_q20, 0);
8074 : 2545 : tree _q31 = TREE_OPERAND (_q20, 1);
8075 : 2545 : if (integer_pow2p (_q30))
8076 : : {
8077 : 1 : if (integer_pow2p (_q21))
8078 : : {
8079 : 1 : if (integer_zerop (_p1))
8080 : : {
8081 : 1 : {
8082 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8083 : 1 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
8084 : 1 : if (res) return res;
8085 : : }
8086 : : }
8087 : : }
8088 : : }
8089 : 2544 : switch (TREE_CODE (_q31))
8090 : : {
8091 : 383 : case INTEGER_CST:
8092 : 383 : {
8093 : 383 : switch (TREE_CODE (_q21))
8094 : : {
8095 : 383 : case INTEGER_CST:
8096 : 383 : {
8097 : 383 : switch (TREE_CODE (_p1))
8098 : : {
8099 : 383 : case INTEGER_CST:
8100 : 383 : {
8101 : 383 : {
8102 : 383 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8103 : 383 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
8104 : 383 : if (res) return res;
8105 : : }
8106 : 0 : break;
8107 : : }
8108 : : default:;
8109 : : }
8110 : : break;
8111 : : }
8112 : : default:;
8113 : : }
8114 : : break;
8115 : : }
8116 : : default:;
8117 : : }
8118 : : break;
8119 : : }
8120 : 896072 : default:;
8121 : : }
8122 : 896072 : {
8123 : 896072 : tree _q20_pops[1];
8124 : 896072 : if (tree_nop_convert (_q20, _q20_pops))
8125 : : {
8126 : 26489 : tree _q30 = _q20_pops[0];
8127 : 26489 : switch (TREE_CODE (_q30))
8128 : : {
8129 : 0 : case LSHIFT_EXPR:
8130 : 0 : {
8131 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8132 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8133 : 0 : if (integer_onep (_q40))
8134 : : {
8135 : 0 : if (integer_pow2p (_q21))
8136 : : {
8137 : 0 : if (integer_zerop (_p1))
8138 : : {
8139 : 0 : {
8140 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
8141 : 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
8142 : 0 : if (res) return res;
8143 : : }
8144 : : }
8145 : : }
8146 : : }
8147 : : break;
8148 : : }
8149 : : default:;
8150 : : }
8151 : : }
8152 : : }
8153 : 896072 : break;
8154 : : }
8155 : 1424 : case LSHIFT_EXPR:
8156 : 1424 : {
8157 : 1424 : tree _q20 = TREE_OPERAND (_p0, 0);
8158 : 1424 : tree _q21 = TREE_OPERAND (_p0, 1);
8159 : 1424 : switch (TREE_CODE (_q20))
8160 : : {
8161 : 277 : case INTEGER_CST:
8162 : 277 : {
8163 : 277 : switch (TREE_CODE (_p1))
8164 : : {
8165 : 20 : case INTEGER_CST:
8166 : 20 : {
8167 : 20 : {
8168 : 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8169 : 20 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, EQ_EXPR);
8170 : 20 : if (res) return res;
8171 : : }
8172 : 3 : break;
8173 : : }
8174 : : default:;
8175 : : }
8176 : : break;
8177 : : }
8178 : : default:;
8179 : : }
8180 : : break;
8181 : : }
8182 : 0 : case LROTATE_EXPR:
8183 : 0 : {
8184 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8185 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8186 : 0 : switch (TREE_CODE (_p1))
8187 : : {
8188 : 0 : case LROTATE_EXPR:
8189 : 0 : {
8190 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8191 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8192 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8193 : : {
8194 : 0 : {
8195 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8196 : 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
8197 : 0 : if (res) return res;
8198 : : }
8199 : : }
8200 : : break;
8201 : : }
8202 : 0 : default:;
8203 : : }
8204 : 0 : switch (TREE_CODE (_q21))
8205 : : {
8206 : 0 : case INTEGER_CST:
8207 : 0 : {
8208 : 0 : switch (TREE_CODE (_p1))
8209 : : {
8210 : 0 : case INTEGER_CST:
8211 : 0 : {
8212 : 0 : {
8213 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8214 : 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
8215 : 0 : if (res) return res;
8216 : : }
8217 : 0 : break;
8218 : : }
8219 : : default:;
8220 : : }
8221 : : break;
8222 : : }
8223 : 0 : default:;
8224 : : }
8225 : 0 : switch (TREE_CODE (_p1))
8226 : : {
8227 : 0 : case INTEGER_CST:
8228 : 0 : {
8229 : 0 : {
8230 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8231 : 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
8232 : 0 : if (res) return res;
8233 : : }
8234 : 0 : break;
8235 : : }
8236 : : default:;
8237 : : }
8238 : : break;
8239 : : }
8240 : 6 : case RROTATE_EXPR:
8241 : 6 : {
8242 : 6 : tree _q20 = TREE_OPERAND (_p0, 0);
8243 : 6 : tree _q21 = TREE_OPERAND (_p0, 1);
8244 : 6 : switch (TREE_CODE (_p1))
8245 : : {
8246 : 0 : case RROTATE_EXPR:
8247 : 0 : {
8248 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8249 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8250 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8251 : : {
8252 : 0 : {
8253 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8254 : 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
8255 : 0 : if (res) return res;
8256 : : }
8257 : : }
8258 : : break;
8259 : : }
8260 : 6 : default:;
8261 : : }
8262 : 6 : switch (TREE_CODE (_q21))
8263 : : {
8264 : 6 : case INTEGER_CST:
8265 : 6 : {
8266 : 6 : switch (TREE_CODE (_p1))
8267 : : {
8268 : 0 : case INTEGER_CST:
8269 : 0 : {
8270 : 0 : {
8271 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8272 : 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
8273 : 0 : if (res) return res;
8274 : : }
8275 : 0 : break;
8276 : : }
8277 : : default:;
8278 : : }
8279 : : break;
8280 : : }
8281 : 6 : default:;
8282 : : }
8283 : 6 : switch (TREE_CODE (_p1))
8284 : : {
8285 : 0 : case INTEGER_CST:
8286 : 0 : {
8287 : 0 : {
8288 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8289 : 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
8290 : 0 : if (res) return res;
8291 : : }
8292 : 0 : break;
8293 : : }
8294 : : default:;
8295 : : }
8296 : : break;
8297 : : }
8298 : 63391 : case MULT_EXPR:
8299 : 63391 : {
8300 : 63391 : tree _q20 = TREE_OPERAND (_p0, 0);
8301 : 63391 : tree _q21 = TREE_OPERAND (_p0, 1);
8302 : 63391 : switch (TREE_CODE (_q20))
8303 : : {
8304 : 66 : case TRUNC_DIV_EXPR:
8305 : 66 : {
8306 : 66 : tree _q30 = TREE_OPERAND (_q20, 0);
8307 : 66 : tree _q31 = TREE_OPERAND (_q20, 1);
8308 : 66 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
8309 : : {
8310 : 47 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
8311 : : {
8312 : 47 : {
8313 : 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
8314 : 47 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures);
8315 : 47 : if (res) return res;
8316 : : }
8317 : : }
8318 : : }
8319 : : break;
8320 : : }
8321 : 63344 : default:;
8322 : : }
8323 : 63344 : switch (TREE_CODE (_q21))
8324 : : {
8325 : 0 : case TRUNC_DIV_EXPR:
8326 : 0 : {
8327 : 0 : tree _q40 = TREE_OPERAND (_q21, 0);
8328 : 0 : tree _q41 = TREE_OPERAND (_q21, 1);
8329 : 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
8330 : : {
8331 : 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
8332 : : {
8333 : 0 : {
8334 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
8335 : 0 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures);
8336 : 0 : if (res) return res;
8337 : : }
8338 : : }
8339 : : }
8340 : : break;
8341 : : }
8342 : : default:;
8343 : : }
8344 : : break;
8345 : : }
8346 : 25697517 : default:;
8347 : : }
8348 : 25697517 : switch (TREE_CODE (_p1))
8349 : : {
8350 : 13617 : case MULT_EXPR:
8351 : 13617 : {
8352 : 13617 : tree _q30 = TREE_OPERAND (_p1, 0);
8353 : 13617 : tree _q31 = TREE_OPERAND (_p1, 1);
8354 : 13617 : switch (TREE_CODE (_q30))
8355 : : {
8356 : 0 : case TRUNC_DIV_EXPR:
8357 : 0 : {
8358 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8359 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8360 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
8361 : : {
8362 : 0 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q41, 0) && types_match (_q31, _q41)))
8363 : : {
8364 : 0 : {
8365 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
8366 : 0 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures);
8367 : 0 : if (res) return res;
8368 : : }
8369 : : }
8370 : : }
8371 : : break;
8372 : : }
8373 : 13617 : default:;
8374 : : }
8375 : 13617 : switch (TREE_CODE (_q31))
8376 : : {
8377 : 0 : case TRUNC_DIV_EXPR:
8378 : 0 : {
8379 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
8380 : 0 : tree _q51 = TREE_OPERAND (_q31, 1);
8381 : 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
8382 : : {
8383 : 0 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q30, 0) && types_match (_q51, _q30)))
8384 : : {
8385 : 0 : {
8386 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _p0, _q30 };
8387 : 0 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures);
8388 : 0 : if (res) return res;
8389 : : }
8390 : : }
8391 : : }
8392 : : break;
8393 : : }
8394 : : default:;
8395 : : }
8396 : : break;
8397 : : }
8398 : 25697517 : default:;
8399 : : }
8400 : 25697517 : switch (TREE_CODE (_p0))
8401 : : {
8402 : 130 : case VEC_COND_EXPR:
8403 : 130 : {
8404 : 130 : tree _q20 = TREE_OPERAND (_p0, 0);
8405 : 130 : tree _q21 = TREE_OPERAND (_p0, 1);
8406 : 130 : tree _q22 = TREE_OPERAND (_p0, 2);
8407 : 130 : switch (TREE_CODE (_p1))
8408 : : {
8409 : 27 : case VEC_COND_EXPR:
8410 : 27 : {
8411 : 27 : tree _q60 = TREE_OPERAND (_p1, 0);
8412 : 27 : tree _q61 = TREE_OPERAND (_p1, 1);
8413 : 27 : tree _q62 = TREE_OPERAND (_p1, 2);
8414 : 27 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8415 : : {
8416 : 0 : {
8417 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8418 : 0 : if (VECTOR_TYPE_P (type)
8419 : 0 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
8420 : 0 : || types_match (type, TREE_TYPE (captures[2]))
8421 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8422 : : || (optimize_vectors_before_lowering_p ()
8423 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8424 : : )
8425 : : {
8426 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1640;
8427 : 0 : {
8428 : 0 : tree res_op0;
8429 : 0 : res_op0 = captures[1];
8430 : 0 : tree res_op1;
8431 : 0 : {
8432 : 0 : tree _o1[2], _r1;
8433 : 0 : _o1[0] = captures[2];
8434 : 0 : _o1[1] = captures[5];
8435 : 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8436 : 0 : if (EXPR_P (_r1))
8437 : 0 : goto next_after_fail1640;
8438 : 0 : res_op1 = _r1;
8439 : : }
8440 : 0 : tree res_op2;
8441 : 0 : {
8442 : 0 : tree _o1[2], _r1;
8443 : 0 : _o1[0] = captures[3];
8444 : 0 : _o1[1] = captures[6];
8445 : 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8446 : 0 : if (EXPR_P (_r1))
8447 : 0 : goto next_after_fail1640;
8448 : 0 : res_op2 = _r1;
8449 : : }
8450 : 0 : tree _r;
8451 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8452 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
8453 : 0 : return _r;
8454 : : }
8455 : 0 : next_after_fail1640:;
8456 : : }
8457 : : }
8458 : : }
8459 : : break;
8460 : : }
8461 : 130 : default:;
8462 : : }
8463 : 130 : {
8464 : 130 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8465 : 130 : if (VECTOR_TYPE_P (type)
8466 : 130 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
8467 : 130 : || types_match (type, TREE_TYPE (captures[2]))
8468 : 130 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8469 : : || (optimize_vectors_before_lowering_p ()
8470 : 79 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8471 : : )
8472 : : {
8473 : 130 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1641;
8474 : 130 : {
8475 : 130 : if (! tree_invariant_p (captures[4])) goto next_after_fail1641;
8476 : 22 : tree res_op0;
8477 : 22 : res_op0 = captures[1];
8478 : 22 : tree res_op1;
8479 : 22 : {
8480 : 22 : tree _o1[2], _r1;
8481 : 22 : _o1[0] = captures[2];
8482 : 22 : _o1[1] = unshare_expr (captures[4]);
8483 : 22 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8484 : 22 : if (EXPR_P (_r1))
8485 : 0 : goto next_after_fail1641;
8486 : 22 : res_op1 = _r1;
8487 : : }
8488 : 22 : tree res_op2;
8489 : 22 : {
8490 : 22 : tree _o1[2], _r1;
8491 : 22 : _o1[0] = captures[3];
8492 : 22 : _o1[1] = captures[4];
8493 : 22 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8494 : 22 : if (EXPR_P (_r1))
8495 : 1 : goto next_after_fail1641;
8496 : 21 : res_op2 = _r1;
8497 : : }
8498 : 21 : tree _r;
8499 : 21 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8500 : 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
8501 : 21 : return _r;
8502 : : }
8503 : 109 : next_after_fail1641:;
8504 : : }
8505 : : }
8506 : 109 : break;
8507 : : }
8508 : 1812411 : case CALL_EXPR:
8509 : 1812411 : switch (get_call_combined_fn (_p0))
8510 : : {
8511 : 0 : case CFN_BUILT_IN_BSWAP128:
8512 : 0 : if (call_expr_nargs (_p0) == 1)
8513 : : {
8514 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8515 : 0 : switch (TREE_CODE (_p1))
8516 : : {
8517 : 0 : case INTEGER_CST:
8518 : 0 : {
8519 : 0 : {
8520 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8521 : 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
8522 : 0 : if (res) return res;
8523 : : }
8524 : 0 : break;
8525 : : }
8526 : 0 : case CALL_EXPR:
8527 : 0 : switch (get_call_combined_fn (_p1))
8528 : : {
8529 : 0 : case CFN_BUILT_IN_BSWAP128:
8530 : 0 : if (call_expr_nargs (_p1) == 1)
8531 : : {
8532 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8533 : 0 : {
8534 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8535 : 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
8536 : 0 : if (res) return res;
8537 : : }
8538 : : }
8539 : : break;
8540 : : default:;
8541 : : }
8542 : : break;
8543 : : default:;
8544 : : }
8545 : : }
8546 : : break;
8547 : 2 : case CFN_BUILT_IN_BSWAP16:
8548 : 2 : if (call_expr_nargs (_p0) == 1)
8549 : : {
8550 : 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8551 : 2 : switch (TREE_CODE (_p1))
8552 : : {
8553 : 1 : case INTEGER_CST:
8554 : 1 : {
8555 : 1 : {
8556 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8557 : 1 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
8558 : 1 : if (res) return res;
8559 : : }
8560 : 1 : break;
8561 : : }
8562 : 1 : case CALL_EXPR:
8563 : 1 : switch (get_call_combined_fn (_p1))
8564 : : {
8565 : 1 : case CFN_BUILT_IN_BSWAP16:
8566 : 1 : if (call_expr_nargs (_p1) == 1)
8567 : : {
8568 : 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8569 : 1 : {
8570 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8571 : 1 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
8572 : 1 : if (res) return res;
8573 : : }
8574 : : }
8575 : : break;
8576 : : default:;
8577 : : }
8578 : : break;
8579 : : default:;
8580 : : }
8581 : : }
8582 : : break;
8583 : 6 : case CFN_BUILT_IN_BSWAP32:
8584 : 6 : if (call_expr_nargs (_p0) == 1)
8585 : : {
8586 : 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8587 : 6 : switch (TREE_CODE (_p1))
8588 : : {
8589 : 3 : case INTEGER_CST:
8590 : 3 : {
8591 : 3 : {
8592 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8593 : 3 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
8594 : 3 : if (res) return res;
8595 : : }
8596 : 3 : break;
8597 : : }
8598 : 3 : case CALL_EXPR:
8599 : 3 : switch (get_call_combined_fn (_p1))
8600 : : {
8601 : 3 : case CFN_BUILT_IN_BSWAP32:
8602 : 3 : if (call_expr_nargs (_p1) == 1)
8603 : : {
8604 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8605 : 3 : {
8606 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8607 : 3 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
8608 : 3 : if (res) return res;
8609 : : }
8610 : : }
8611 : : break;
8612 : : default:;
8613 : : }
8614 : : break;
8615 : : default:;
8616 : : }
8617 : : }
8618 : : break;
8619 : 6 : case CFN_BUILT_IN_BSWAP64:
8620 : 6 : if (call_expr_nargs (_p0) == 1)
8621 : : {
8622 : 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8623 : 6 : switch (TREE_CODE (_p1))
8624 : : {
8625 : 3 : case INTEGER_CST:
8626 : 3 : {
8627 : 3 : {
8628 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8629 : 3 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
8630 : 3 : if (res) return res;
8631 : : }
8632 : 3 : break;
8633 : : }
8634 : 3 : case CALL_EXPR:
8635 : 3 : switch (get_call_combined_fn (_p1))
8636 : : {
8637 : 3 : case CFN_BUILT_IN_BSWAP64:
8638 : 3 : if (call_expr_nargs (_p1) == 1)
8639 : : {
8640 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8641 : 3 : {
8642 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8643 : 3 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
8644 : 3 : if (res) return res;
8645 : : }
8646 : : }
8647 : : break;
8648 : : default:;
8649 : : }
8650 : : break;
8651 : : default:;
8652 : : }
8653 : : }
8654 : : break;
8655 : : default:;
8656 : : }
8657 : : break;
8658 : 25697489 : default:;
8659 : : }
8660 : 25697489 : switch (TREE_CODE (_p1))
8661 : : {
8662 : 29 : case VEC_COND_EXPR:
8663 : 29 : {
8664 : 29 : tree _q30 = TREE_OPERAND (_p1, 0);
8665 : 29 : tree _q31 = TREE_OPERAND (_p1, 1);
8666 : 29 : tree _q32 = TREE_OPERAND (_p1, 2);
8667 : 29 : {
8668 : 29 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8669 : 29 : if (VECTOR_TYPE_P (type)
8670 : 29 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
8671 : 29 : || types_match (type, TREE_TYPE (captures[3]))
8672 : 29 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8673 : : || (optimize_vectors_before_lowering_p ()
8674 : 21 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8675 : : )
8676 : : {
8677 : 29 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1642;
8678 : 29 : {
8679 : 29 : if (! tree_invariant_p (captures[0])) goto next_after_fail1642;
8680 : 0 : tree res_op0;
8681 : 0 : res_op0 = captures[2];
8682 : 0 : tree res_op1;
8683 : 0 : {
8684 : 0 : tree _o1[2], _r1;
8685 : 0 : _o1[0] = unshare_expr (captures[0]);
8686 : 0 : _o1[1] = captures[3];
8687 : 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8688 : 0 : if (EXPR_P (_r1))
8689 : 0 : goto next_after_fail1642;
8690 : 0 : res_op1 = _r1;
8691 : : }
8692 : 0 : tree res_op2;
8693 : 0 : {
8694 : 0 : tree _o1[2], _r1;
8695 : 0 : _o1[0] = captures[0];
8696 : 0 : _o1[1] = captures[4];
8697 : 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8698 : 0 : if (EXPR_P (_r1))
8699 : 0 : goto next_after_fail1642;
8700 : 0 : res_op2 = _r1;
8701 : : }
8702 : 0 : tree _r;
8703 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8704 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
8705 : 0 : return _r;
8706 : : }
8707 : 29 : next_after_fail1642:;
8708 : : }
8709 : : }
8710 : 29 : break;
8711 : : }
8712 : 25697489 : default:;
8713 : : }
8714 : 25697489 : switch (TREE_CODE (_p0))
8715 : : {
8716 : 41054 : case COND_EXPR:
8717 : 41054 : {
8718 : 41054 : tree _q20 = TREE_OPERAND (_p0, 0);
8719 : 41054 : tree _q21 = TREE_OPERAND (_p0, 1);
8720 : 41054 : tree _q22 = TREE_OPERAND (_p0, 2);
8721 : 41054 : switch (TREE_CODE (_p1))
8722 : : {
8723 : 37 : case COND_EXPR:
8724 : 37 : {
8725 : 37 : tree _q60 = TREE_OPERAND (_p1, 0);
8726 : 37 : tree _q61 = TREE_OPERAND (_p1, 1);
8727 : 37 : tree _q62 = TREE_OPERAND (_p1, 2);
8728 : 37 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8729 : : {
8730 : 3 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8731 : : {
8732 : 3 : {
8733 : 3 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8734 : 3 : const enum tree_code eqne = EQ_EXPR;
8735 : 3 : if (!HONOR_NANS (captures[1])
8736 : 3 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8737 : 6 : && types_match (type, TREE_TYPE (captures[0]))
8738 : : )
8739 : : {
8740 : 3 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1643;
8741 : 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1643;
8742 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1643;
8743 : 3 : {
8744 : 3 : tree res_op0;
8745 : 3 : {
8746 : 3 : tree _o1[2], _r1;
8747 : 3 : {
8748 : 3 : tree _o2[2], _r2;
8749 : 3 : _o2[0] = captures[0];
8750 : 3 : _o2[1] = captures[3];
8751 : 3 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8752 : 3 : _o1[0] = _r2;
8753 : : }
8754 : 3 : {
8755 : 3 : tree _o2[2], _r2;
8756 : 3 : _o2[0] = captures[1];
8757 : 3 : _o2[1] = captures[2];
8758 : 3 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8759 : 3 : _o1[1] = _r2;
8760 : : }
8761 : 3 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8762 : 3 : res_op0 = _r1;
8763 : : }
8764 : 3 : tree res_op1;
8765 : 3 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8766 : 3 : tree res_op2;
8767 : 3 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8768 : 3 : tree _r;
8769 : 3 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8770 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
8771 : 3 : return _r;
8772 : : }
8773 : 0 : next_after_fail1643:;
8774 : : }
8775 : : }
8776 : : }
8777 : : }
8778 : 34 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8779 : : {
8780 : 7 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8781 : : {
8782 : 7 : {
8783 : 7 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8784 : 7 : const enum tree_code eqne = EQ_EXPR;
8785 : 7 : if (!HONOR_NANS (captures[1])
8786 : 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8787 : 7 : && types_match (type, TREE_TYPE (captures[0]))
8788 : : )
8789 : : {
8790 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1644;
8791 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1644;
8792 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1644;
8793 : 0 : {
8794 : 0 : tree res_op0;
8795 : 0 : {
8796 : 0 : tree _o1[2], _r1;
8797 : 0 : {
8798 : 0 : tree _o2[2], _r2;
8799 : 0 : _o2[0] = captures[0];
8800 : 0 : _o2[1] = captures[3];
8801 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8802 : 0 : _o1[0] = _r2;
8803 : : }
8804 : 0 : {
8805 : 0 : tree _o2[2], _r2;
8806 : 0 : _o2[0] = captures[1];
8807 : 0 : _o2[1] = captures[2];
8808 : 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8809 : 0 : _o1[1] = _r2;
8810 : : }
8811 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8812 : 0 : res_op0 = _r1;
8813 : : }
8814 : 0 : tree res_op1;
8815 : 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8816 : 0 : tree res_op2;
8817 : 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8818 : 0 : tree _r;
8819 : 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8820 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1008, __FILE__, __LINE__, true);
8821 : 0 : return _r;
8822 : : }
8823 : 7 : next_after_fail1644:;
8824 : : }
8825 : : }
8826 : : }
8827 : : }
8828 : : break;
8829 : : }
8830 : : default:;
8831 : : }
8832 : : break;
8833 : : }
8834 : 109 : case VEC_COND_EXPR:
8835 : 109 : {
8836 : 109 : tree _q20 = TREE_OPERAND (_p0, 0);
8837 : 109 : tree _q21 = TREE_OPERAND (_p0, 1);
8838 : 109 : tree _q22 = TREE_OPERAND (_p0, 2);
8839 : 109 : switch (TREE_CODE (_p1))
8840 : : {
8841 : 27 : case VEC_COND_EXPR:
8842 : 27 : {
8843 : 27 : tree _q60 = TREE_OPERAND (_p1, 0);
8844 : 27 : tree _q61 = TREE_OPERAND (_p1, 1);
8845 : 27 : tree _q62 = TREE_OPERAND (_p1, 2);
8846 : 27 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8847 : : {
8848 : 6 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8849 : : {
8850 : 6 : {
8851 : 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8852 : 6 : const enum tree_code eqne = EQ_EXPR;
8853 : 6 : if (!HONOR_NANS (captures[1])
8854 : 6 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8855 : 12 : && types_match (type, TREE_TYPE (captures[0]))
8856 : : )
8857 : : {
8858 : 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1645;
8859 : 6 : {
8860 : 6 : tree res_op0;
8861 : 6 : {
8862 : 6 : tree _o1[2], _r1;
8863 : 6 : {
8864 : 6 : tree _o2[2], _r2;
8865 : 6 : _o2[0] = captures[0];
8866 : 6 : _o2[1] = captures[3];
8867 : 6 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8868 : 6 : _o1[0] = _r2;
8869 : : }
8870 : 6 : {
8871 : 6 : tree _o2[2], _r2;
8872 : 6 : _o2[0] = captures[1];
8873 : 6 : _o2[1] = captures[2];
8874 : 6 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8875 : 6 : _o1[1] = _r2;
8876 : : }
8877 : 6 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8878 : 6 : res_op0 = _r1;
8879 : : }
8880 : 6 : tree res_op1;
8881 : 6 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8882 : 6 : tree res_op2;
8883 : 6 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8884 : 6 : tree _r;
8885 : 6 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8886 : 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
8887 : 6 : return _r;
8888 : : }
8889 : 0 : next_after_fail1645:;
8890 : : }
8891 : : }
8892 : : }
8893 : : }
8894 : 21 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8895 : : {
8896 : 21 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8897 : : {
8898 : 21 : {
8899 : 21 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8900 : 21 : const enum tree_code eqne = EQ_EXPR;
8901 : 21 : if (!HONOR_NANS (captures[1])
8902 : 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8903 : 21 : && types_match (type, TREE_TYPE (captures[0]))
8904 : : )
8905 : : {
8906 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1646;
8907 : 0 : {
8908 : 0 : tree res_op0;
8909 : 0 : {
8910 : 0 : tree _o1[2], _r1;
8911 : 0 : {
8912 : 0 : tree _o2[2], _r2;
8913 : 0 : _o2[0] = captures[0];
8914 : 0 : _o2[1] = captures[3];
8915 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8916 : 0 : _o1[0] = _r2;
8917 : : }
8918 : 0 : {
8919 : 0 : tree _o2[2], _r2;
8920 : 0 : _o2[0] = captures[1];
8921 : 0 : _o2[1] = captures[2];
8922 : 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8923 : 0 : _o1[1] = _r2;
8924 : : }
8925 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8926 : 0 : res_op0 = _r1;
8927 : : }
8928 : 0 : tree res_op1;
8929 : 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8930 : 0 : tree res_op2;
8931 : 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8932 : 0 : tree _r;
8933 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8934 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1008, __FILE__, __LINE__, true);
8935 : 0 : return _r;
8936 : : }
8937 : 0 : next_after_fail1646:;
8938 : : }
8939 : : }
8940 : : }
8941 : : }
8942 : : break;
8943 : : }
8944 : : default:;
8945 : : }
8946 : : break;
8947 : : }
8948 : 1194 : case LT_EXPR:
8949 : 1194 : {
8950 : 1194 : tree _q20 = TREE_OPERAND (_p0, 0);
8951 : 1194 : tree _q21 = TREE_OPERAND (_p0, 1);
8952 : 1194 : if (integer_truep (_p1))
8953 : : {
8954 : 5 : {
8955 : 5 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8956 : 5 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8957 : 5 : if (res) return res;
8958 : : }
8959 : : }
8960 : 1194 : if (integer_zerop (_p1))
8961 : : {
8962 : 424 : {
8963 : 424 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8964 : 424 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8965 : 424 : if (res) return res;
8966 : : }
8967 : : }
8968 : : break;
8969 : : }
8970 : 1611 : case LE_EXPR:
8971 : 1611 : {
8972 : 1611 : tree _q20 = TREE_OPERAND (_p0, 0);
8973 : 1611 : tree _q21 = TREE_OPERAND (_p0, 1);
8974 : 1611 : if (integer_truep (_p1))
8975 : : {
8976 : 0 : {
8977 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8978 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8979 : 0 : if (res) return res;
8980 : : }
8981 : : }
8982 : 1611 : if (integer_zerop (_p1))
8983 : : {
8984 : 693 : {
8985 : 693 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8986 : 693 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8987 : 693 : if (res) return res;
8988 : : }
8989 : : }
8990 : : break;
8991 : : }
8992 : 31628 : case EQ_EXPR:
8993 : 31628 : {
8994 : 31628 : tree _q20 = TREE_OPERAND (_p0, 0);
8995 : 31628 : tree _q21 = TREE_OPERAND (_p0, 1);
8996 : 31628 : if (integer_truep (_p1))
8997 : : {
8998 : 46 : {
8999 : 46 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9000 : 46 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9001 : 46 : if (res) return res;
9002 : : }
9003 : : }
9004 : 31623 : if (integer_zerop (_p1))
9005 : : {
9006 : 7753 : {
9007 : 7753 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9008 : 7753 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9009 : 7753 : if (res) return res;
9010 : : }
9011 : : }
9012 : : break;
9013 : : }
9014 : 11570 : case NE_EXPR:
9015 : 11570 : {
9016 : 11570 : tree _q20 = TREE_OPERAND (_p0, 0);
9017 : 11570 : tree _q21 = TREE_OPERAND (_p0, 1);
9018 : 11570 : if (integer_truep (_p1))
9019 : : {
9020 : 126 : {
9021 : 126 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9022 : 126 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9023 : 126 : if (res) return res;
9024 : : }
9025 : : }
9026 : 11450 : if (integer_zerop (_p1))
9027 : : {
9028 : 9810 : {
9029 : 9810 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9030 : 9810 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9031 : 9810 : if (res) return res;
9032 : : }
9033 : : }
9034 : : break;
9035 : : }
9036 : 6757 : case GE_EXPR:
9037 : 6757 : {
9038 : 6757 : tree _q20 = TREE_OPERAND (_p0, 0);
9039 : 6757 : tree _q21 = TREE_OPERAND (_p0, 1);
9040 : 6757 : if (integer_truep (_p1))
9041 : : {
9042 : 0 : {
9043 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9044 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9045 : 0 : if (res) return res;
9046 : : }
9047 : : }
9048 : 6757 : if (integer_zerop (_p1))
9049 : : {
9050 : 5584 : {
9051 : 5584 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9052 : 5584 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9053 : 5584 : if (res) return res;
9054 : : }
9055 : : }
9056 : : break;
9057 : : }
9058 : 31305 : case GT_EXPR:
9059 : 31305 : {
9060 : 31305 : tree _q20 = TREE_OPERAND (_p0, 0);
9061 : 31305 : tree _q21 = TREE_OPERAND (_p0, 1);
9062 : 31305 : if (integer_truep (_p1))
9063 : : {
9064 : 0 : {
9065 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9066 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9067 : 0 : if (res) return res;
9068 : : }
9069 : : }
9070 : 31305 : if (integer_zerop (_p1))
9071 : : {
9072 : 446 : {
9073 : 446 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9074 : 446 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9075 : 446 : if (res) return res;
9076 : : }
9077 : : }
9078 : : break;
9079 : : }
9080 : 1023 : case UNORDERED_EXPR:
9081 : 1023 : {
9082 : 1023 : tree _q20 = TREE_OPERAND (_p0, 0);
9083 : 1023 : tree _q21 = TREE_OPERAND (_p0, 1);
9084 : 1023 : if (integer_truep (_p1))
9085 : : {
9086 : 0 : {
9087 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9088 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9089 : 0 : if (res) return res;
9090 : : }
9091 : : }
9092 : 1023 : if (integer_zerop (_p1))
9093 : : {
9094 : 1017 : {
9095 : 1017 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9096 : 1017 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9097 : 1017 : if (res) return res;
9098 : : }
9099 : : }
9100 : : break;
9101 : : }
9102 : 0 : case ORDERED_EXPR:
9103 : 0 : {
9104 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9105 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9106 : 0 : if (integer_truep (_p1))
9107 : : {
9108 : 0 : {
9109 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9110 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9111 : 0 : if (res) return res;
9112 : : }
9113 : : }
9114 : 0 : if (integer_zerop (_p1))
9115 : : {
9116 : 0 : {
9117 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9118 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9119 : 0 : if (res) return res;
9120 : : }
9121 : : }
9122 : : break;
9123 : : }
9124 : 0 : case UNLT_EXPR:
9125 : 0 : {
9126 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9127 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9128 : 0 : if (integer_truep (_p1))
9129 : : {
9130 : 0 : {
9131 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9132 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9133 : 0 : if (res) return res;
9134 : : }
9135 : : }
9136 : 0 : if (integer_zerop (_p1))
9137 : : {
9138 : 0 : {
9139 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9140 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9141 : 0 : if (res) return res;
9142 : : }
9143 : : }
9144 : : break;
9145 : : }
9146 : 0 : case UNLE_EXPR:
9147 : 0 : {
9148 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9149 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9150 : 0 : if (integer_truep (_p1))
9151 : : {
9152 : 0 : {
9153 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9154 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9155 : 0 : if (res) return res;
9156 : : }
9157 : : }
9158 : 0 : if (integer_zerop (_p1))
9159 : : {
9160 : 0 : {
9161 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9162 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9163 : 0 : if (res) return res;
9164 : : }
9165 : : }
9166 : : break;
9167 : : }
9168 : 0 : case UNGT_EXPR:
9169 : 0 : {
9170 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9171 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9172 : 0 : if (integer_truep (_p1))
9173 : : {
9174 : 0 : {
9175 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9176 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9177 : 0 : if (res) return res;
9178 : : }
9179 : : }
9180 : 0 : if (integer_zerop (_p1))
9181 : : {
9182 : 0 : {
9183 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9184 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9185 : 0 : if (res) return res;
9186 : : }
9187 : : }
9188 : : break;
9189 : : }
9190 : 0 : case UNGE_EXPR:
9191 : 0 : {
9192 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9193 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9194 : 0 : if (integer_truep (_p1))
9195 : : {
9196 : 0 : {
9197 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9198 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9199 : 0 : if (res) return res;
9200 : : }
9201 : : }
9202 : 0 : if (integer_zerop (_p1))
9203 : : {
9204 : 0 : {
9205 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9206 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9207 : 0 : if (res) return res;
9208 : : }
9209 : : }
9210 : : break;
9211 : : }
9212 : 0 : case UNEQ_EXPR:
9213 : 0 : {
9214 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9215 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9216 : 0 : if (integer_truep (_p1))
9217 : : {
9218 : 0 : {
9219 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9220 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9221 : 0 : if (res) return res;
9222 : : }
9223 : : }
9224 : 0 : if (integer_zerop (_p1))
9225 : : {
9226 : 0 : {
9227 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9228 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9229 : 0 : if (res) return res;
9230 : : }
9231 : : }
9232 : : break;
9233 : : }
9234 : 0 : case LTGT_EXPR:
9235 : 0 : {
9236 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9237 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9238 : 0 : if (integer_truep (_p1))
9239 : : {
9240 : 0 : {
9241 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9242 : 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9243 : 0 : if (res) return res;
9244 : : }
9245 : : }
9246 : 0 : if (integer_zerop (_p1))
9247 : : {
9248 : 0 : {
9249 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9250 : 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9251 : 0 : if (res) return res;
9252 : : }
9253 : : }
9254 : : break;
9255 : : }
9256 : 130540 : case MINUS_EXPR:
9257 : 130540 : {
9258 : 130540 : tree _q20 = TREE_OPERAND (_p0, 0);
9259 : 130540 : tree _q21 = TREE_OPERAND (_p0, 1);
9260 : 130540 : if (integer_zerop (_p1))
9261 : : {
9262 : 36866 : {
9263 : 36866 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9264 : 36866 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, EQ_EXPR);
9265 : 36866 : if (res) return res;
9266 : : }
9267 : : }
9268 : : break;
9269 : : }
9270 : 38912 : case POINTER_DIFF_EXPR:
9271 : 38912 : {
9272 : 38912 : tree _q20 = TREE_OPERAND (_p0, 0);
9273 : 38912 : tree _q21 = TREE_OPERAND (_p0, 1);
9274 : 38912 : if (integer_zerop (_p1))
9275 : : {
9276 : 1435 : {
9277 : 1435 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9278 : 1435 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, EQ_EXPR);
9279 : 1435 : if (res) return res;
9280 : : }
9281 : : }
9282 : : break;
9283 : : }
9284 : 63344 : case MULT_EXPR:
9285 : 63344 : {
9286 : 63344 : tree _q20 = TREE_OPERAND (_p0, 0);
9287 : 63344 : tree _q21 = TREE_OPERAND (_p0, 1);
9288 : 63344 : switch (TREE_CODE (_q21))
9289 : : {
9290 : 55805 : case INTEGER_CST:
9291 : 55805 : {
9292 : 55805 : switch (TREE_CODE (_p1))
9293 : : {
9294 : 11081 : case INTEGER_CST:
9295 : 11081 : {
9296 : 11081 : {
9297 : 11081 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9298 : 11081 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, EQ_EXPR);
9299 : 11081 : if (res) return res;
9300 : : }
9301 : 10115 : break;
9302 : : }
9303 : 54839 : default:;
9304 : : }
9305 : 54839 : if (integer_zerop (_p1))
9306 : : {
9307 : 4931 : {
9308 : 4931 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9309 : 4931 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9310 : 4931 : if (res) return res;
9311 : : }
9312 : : }
9313 : : break;
9314 : : }
9315 : : default:;
9316 : : }
9317 : : break;
9318 : : }
9319 : 25633260 : default:;
9320 : : }
9321 : 25633260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9322 : : {
9323 : 85130 : {
9324 : 85130 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9325 : 85130 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, EQ_EXPR);
9326 : 85130 : if (res) return res;
9327 : : }
9328 : : }
9329 : 25552835 : switch (TREE_CODE (_p0))
9330 : : {
9331 : 4465479 : CASE_CONVERT:
9332 : 4465479 : {
9333 : 4465479 : tree _q20 = TREE_OPERAND (_p0, 0);
9334 : 4465479 : switch (TREE_CODE (_p1))
9335 : : {
9336 : 1042394 : CASE_CONVERT:
9337 : 1042394 : {
9338 : 1042394 : tree _q40 = TREE_OPERAND (_p1, 0);
9339 : 1042394 : {
9340 : 1042394 : tree _q40_pops[1];
9341 : 1042394 : if (tree_maybe_bit_not (_q40, _q40_pops))
9342 : : {
9343 : 0 : tree _q50 = _q40_pops[0];
9344 : 0 : {
9345 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
9346 : 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR);
9347 : 0 : if (res) return res;
9348 : : }
9349 : : }
9350 : : }
9351 : 1042394 : break;
9352 : : }
9353 : 4465479 : default:;
9354 : : }
9355 : 4465479 : {
9356 : 4465479 : tree _q20_pops[1];
9357 : 4465479 : if (tree_maybe_bit_not (_q20, _q20_pops))
9358 : : {
9359 : 232 : tree _q30 = _q20_pops[0];
9360 : 232 : switch (TREE_CODE (_p1))
9361 : : {
9362 : 74 : CASE_CONVERT:
9363 : 74 : {
9364 : 74 : tree _q50 = TREE_OPERAND (_p1, 0);
9365 : 74 : {
9366 : 74 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
9367 : 74 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR);
9368 : 74 : if (res) return res;
9369 : : }
9370 : 74 : break;
9371 : : }
9372 : : default:;
9373 : : }
9374 : : }
9375 : : }
9376 : 4465479 : break;
9377 : : }
9378 : 25552835 : default:;
9379 : : }
9380 : 25552835 : {
9381 : 25552835 : tree _p1_pops[1];
9382 : 25552835 : if (tree_maybe_bit_not (_p1, _p1_pops))
9383 : : {
9384 : 18594908 : tree _q30 = _p1_pops[0];
9385 : 18594908 : {
9386 : 18594908 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9387 : 18594908 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR);
9388 : 18594908 : if (res) return res;
9389 : : }
9390 : : }
9391 : : }
9392 : 25552833 : switch (TREE_CODE (_p0))
9393 : : {
9394 : 412 : case BIT_NOT_EXPR:
9395 : 412 : {
9396 : 412 : tree _q20 = TREE_OPERAND (_p0, 0);
9397 : 412 : switch (TREE_CODE (_p1))
9398 : : {
9399 : 1 : case BIT_NOT_EXPR:
9400 : 1 : {
9401 : 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9402 : 1 : {
9403 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
9404 : 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR);
9405 : 1 : if (res) return res;
9406 : : }
9407 : 0 : break;
9408 : : }
9409 : 411 : default:;
9410 : : }
9411 : 411 : {
9412 : 411 : tree _p1_pops[1];
9413 : 411 : if (tree_nop_convert (_p1, _p1_pops))
9414 : : {
9415 : 6 : tree _q40 = _p1_pops[0];
9416 : 6 : switch (TREE_CODE (_q40))
9417 : : {
9418 : 0 : case BIT_NOT_EXPR:
9419 : 0 : {
9420 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9421 : 0 : {
9422 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
9423 : 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR);
9424 : 0 : if (res) return res;
9425 : : }
9426 : 0 : break;
9427 : : }
9428 : : default:;
9429 : : }
9430 : : }
9431 : : }
9432 : 411 : if (CONSTANT_CLASS_P (_p1))
9433 : : {
9434 : 194 : {
9435 : 194 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9436 : 194 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9437 : 194 : if (res) return res;
9438 : : }
9439 : : }
9440 : : break;
9441 : : }
9442 : 25552638 : default:;
9443 : : }
9444 : 25552638 : {
9445 : 25552638 : tree _p0_pops[1];
9446 : 25552638 : if (tree_maybe_bit_not (_p0, _p0_pops))
9447 : : {
9448 : 59998 : tree _q20 = _p0_pops[0];
9449 : 59998 : {
9450 : 59998 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9451 : 59998 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR);
9452 : 59998 : if (res) return res;
9453 : : }
9454 : : }
9455 : : }
9456 : 25552637 : {
9457 : 25552637 : tree _p0_pops[1];
9458 : 25552637 : if (tree_nop_convert (_p0, _p0_pops))
9459 : : {
9460 : 2707728 : tree _q20 = _p0_pops[0];
9461 : 2707728 : switch (TREE_CODE (_q20))
9462 : : {
9463 : 41 : case BIT_NOT_EXPR:
9464 : 41 : {
9465 : 41 : tree _q30 = TREE_OPERAND (_q20, 0);
9466 : 41 : switch (TREE_CODE (_p1))
9467 : : {
9468 : 0 : case BIT_NOT_EXPR:
9469 : 0 : {
9470 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9471 : 0 : {
9472 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9473 : 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR);
9474 : 0 : if (res) return res;
9475 : : }
9476 : 0 : break;
9477 : : }
9478 : 41 : default:;
9479 : : }
9480 : 41 : {
9481 : 41 : tree _p1_pops[1];
9482 : 41 : if (tree_nop_convert (_p1, _p1_pops))
9483 : : {
9484 : 0 : tree _q50 = _p1_pops[0];
9485 : 0 : switch (TREE_CODE (_q50))
9486 : : {
9487 : 0 : case BIT_NOT_EXPR:
9488 : 0 : {
9489 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9490 : 0 : {
9491 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9492 : 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR);
9493 : 0 : if (res) return res;
9494 : : }
9495 : 0 : break;
9496 : : }
9497 : : default:;
9498 : : }
9499 : : }
9500 : : }
9501 : 41 : if (CONSTANT_CLASS_P (_p1))
9502 : : {
9503 : 41 : {
9504 : 41 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9505 : 41 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9506 : 41 : if (res) return res;
9507 : : }
9508 : : }
9509 : : break;
9510 : : }
9511 : : default:;
9512 : : }
9513 : : }
9514 : : }
9515 : 25552596 : switch (TREE_CODE (_p1))
9516 : : {
9517 : 998138 : case REAL_CST:
9518 : 998138 : {
9519 : 998138 : {
9520 : 998138 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9521 : 998138 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, EQ_EXPR);
9522 : 998138 : if (res) return res;
9523 : : }
9524 : 997146 : break;
9525 : : }
9526 : 25551604 : default:;
9527 : : }
9528 : 25551604 : switch (TREE_CODE (_p0))
9529 : : {
9530 : 655683 : case PLUS_EXPR:
9531 : 655683 : {
9532 : 655683 : tree _q20 = TREE_OPERAND (_p0, 0);
9533 : 655683 : tree _q21 = TREE_OPERAND (_p0, 1);
9534 : 655683 : switch (TREE_CODE (_q21))
9535 : : {
9536 : 590 : case REAL_CST:
9537 : 590 : {
9538 : 590 : switch (TREE_CODE (_p1))
9539 : : {
9540 : 409 : case REAL_CST:
9541 : 409 : {
9542 : 409 : {
9543 : 409 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9544 : 409 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR);
9545 : 409 : if (res) return res;
9546 : : }
9547 : 409 : break;
9548 : : }
9549 : : default:;
9550 : : }
9551 : : break;
9552 : : }
9553 : : default:;
9554 : : }
9555 : : break;
9556 : : }
9557 : 93674 : case MINUS_EXPR:
9558 : 93674 : {
9559 : 93674 : tree _q20 = TREE_OPERAND (_p0, 0);
9560 : 93674 : tree _q21 = TREE_OPERAND (_p0, 1);
9561 : 93674 : switch (TREE_CODE (_q21))
9562 : : {
9563 : 60 : case REAL_CST:
9564 : 60 : {
9565 : 60 : switch (TREE_CODE (_p1))
9566 : : {
9567 : 60 : case REAL_CST:
9568 : 60 : {
9569 : 60 : {
9570 : 60 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9571 : 60 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, MINUS_EXPR, EQ_EXPR);
9572 : 60 : if (res) return res;
9573 : : }
9574 : 60 : break;
9575 : : }
9576 : : default:;
9577 : : }
9578 : : break;
9579 : : }
9580 : 93674 : default:;
9581 : : }
9582 : 93674 : switch (TREE_CODE (_q20))
9583 : : {
9584 : 273 : case REAL_CST:
9585 : 273 : {
9586 : 273 : switch (TREE_CODE (_p1))
9587 : : {
9588 : 245 : case REAL_CST:
9589 : 245 : {
9590 : 245 : {
9591 : 245 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9592 : 245 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, EQ_EXPR);
9593 : 245 : if (res) return res;
9594 : : }
9595 : 244 : break;
9596 : : }
9597 : : default:;
9598 : : }
9599 : : break;
9600 : : }
9601 : : default:;
9602 : : }
9603 : : break;
9604 : : }
9605 : 2614 : case FLOAT_EXPR:
9606 : 2614 : {
9607 : 2614 : tree _q20 = TREE_OPERAND (_p0, 0);
9608 : 2614 : switch (TREE_CODE (_p1))
9609 : : {
9610 : 1 : case FLOAT_EXPR:
9611 : 1 : {
9612 : 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9613 : 1 : {
9614 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9615 : 1 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9616 : 1 : if (res) return res;
9617 : : }
9618 : 0 : break;
9619 : : }
9620 : 180 : case REAL_CST:
9621 : 180 : {
9622 : 180 : {
9623 : 180 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9624 : 180 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9625 : 180 : if (res) return res;
9626 : : }
9627 : 149 : break;
9628 : : }
9629 : : default:;
9630 : : }
9631 : : break;
9632 : : }
9633 : 9524 : case EXACT_DIV_EXPR:
9634 : 9524 : {
9635 : 9524 : tree _q20 = TREE_OPERAND (_p0, 0);
9636 : 9524 : tree _q21 = TREE_OPERAND (_p0, 1);
9637 : 9524 : switch (TREE_CODE (_p1))
9638 : : {
9639 : 33 : case INTEGER_CST:
9640 : 33 : {
9641 : 33 : {
9642 : 33 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9643 : 33 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR);
9644 : 33 : if (res) return res;
9645 : : }
9646 : 0 : break;
9647 : : }
9648 : : default:;
9649 : : }
9650 : : break;
9651 : : }
9652 : 925 : case NEGATE_EXPR:
9653 : 925 : {
9654 : 925 : tree _q20 = TREE_OPERAND (_p0, 0);
9655 : 925 : switch (TREE_CODE (_p1))
9656 : : {
9657 : 1 : case NEGATE_EXPR:
9658 : 1 : {
9659 : 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9660 : 1 : {
9661 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9662 : 1 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9663 : 1 : if (res) return res;
9664 : : }
9665 : 0 : break;
9666 : : }
9667 : 924 : default:;
9668 : : }
9669 : 924 : if (CONSTANT_CLASS_P (_p1))
9670 : : {
9671 : 208 : {
9672 : 208 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9673 : 208 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9674 : 208 : if (res) return res;
9675 : : }
9676 : : }
9677 : : break;
9678 : : }
9679 : 1314 : case ABS_EXPR:
9680 : 1314 : {
9681 : 1314 : tree _q20 = TREE_OPERAND (_p0, 0);
9682 : 1314 : if (zerop (_p1))
9683 : : {
9684 : 72 : {
9685 : 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9686 : 72 : const enum tree_code eqne = EQ_EXPR;
9687 : 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1647;
9688 : 72 : {
9689 : 72 : tree res_op0;
9690 : 72 : res_op0 = captures[0];
9691 : 72 : tree res_op1;
9692 : 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9693 : 72 : tree _r;
9694 : 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9695 : 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9696 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9697 : 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
9698 : 72 : return _r;
9699 : : }
9700 : 0 : next_after_fail1647:;
9701 : : }
9702 : : }
9703 : : break;
9704 : : }
9705 : 1 : case ABSU_EXPR:
9706 : 1 : {
9707 : 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9708 : 1 : if (zerop (_p1))
9709 : : {
9710 : 0 : {
9711 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9712 : 0 : const enum tree_code eqne = EQ_EXPR;
9713 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1648;
9714 : 0 : {
9715 : 0 : tree res_op0;
9716 : 0 : res_op0 = captures[0];
9717 : 0 : tree res_op1;
9718 : 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9719 : 0 : tree _r;
9720 : 0 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9721 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
9722 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9723 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
9724 : 0 : return _r;
9725 : : }
9726 : 0 : next_after_fail1648:;
9727 : : }
9728 : : }
9729 : : break;
9730 : : }
9731 : 4465400 : CASE_CONVERT:
9732 : 4465400 : {
9733 : 4465400 : tree _q20 = TREE_OPERAND (_p0, 0);
9734 : 4465400 : switch (TREE_CODE (_p1))
9735 : : {
9736 : 1042394 : CASE_CONVERT:
9737 : 1042394 : {
9738 : 1042394 : tree _q40 = TREE_OPERAND (_p1, 0);
9739 : 1042394 : {
9740 : 1042394 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9741 : 1042394 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, EQ_EXPR);
9742 : 1042394 : if (res) return res;
9743 : : }
9744 : 539861 : break;
9745 : : }
9746 : 3962867 : default:;
9747 : : }
9748 : 3962867 : {
9749 : 3962867 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9750 : 3962867 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, EQ_EXPR);
9751 : 3962867 : if (res) return res;
9752 : : }
9753 : 1966536 : switch (TREE_CODE (_q20))
9754 : : {
9755 : 3 : case BIT_IOR_EXPR:
9756 : 3 : {
9757 : 3 : tree _q30 = TREE_OPERAND (_q20, 0);
9758 : 3 : tree _q31 = TREE_OPERAND (_q20, 1);
9759 : 3 : switch (TREE_CODE (_q31))
9760 : : {
9761 : 0 : case INTEGER_CST:
9762 : 0 : {
9763 : 0 : switch (TREE_CODE (_p1))
9764 : : {
9765 : 0 : case INTEGER_CST:
9766 : 0 : {
9767 : 0 : {
9768 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9769 : 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, EQ_EXPR);
9770 : 0 : if (res) return res;
9771 : : }
9772 : 0 : break;
9773 : : }
9774 : : default:;
9775 : : }
9776 : : break;
9777 : : }
9778 : : default:;
9779 : : }
9780 : : break;
9781 : : }
9782 : : default:;
9783 : : }
9784 : : break;
9785 : : }
9786 : 8947824 : case SSA_NAME:
9787 : 8947824 : {
9788 : 8947824 : switch (TREE_CODE (_p1))
9789 : : {
9790 : 759242 : case ADDR_EXPR:
9791 : 759242 : {
9792 : 759242 : {
9793 : 759242 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9794 : 759242 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, EQ_EXPR);
9795 : 759242 : if (res) return res;
9796 : : }
9797 : 759242 : break;
9798 : : }
9799 : : default:;
9800 : : }
9801 : : break;
9802 : : }
9803 : 33416 : case BIT_IOR_EXPR:
9804 : 33416 : {
9805 : 33416 : tree _q20 = TREE_OPERAND (_p0, 0);
9806 : 33416 : tree _q21 = TREE_OPERAND (_p0, 1);
9807 : 33416 : switch (TREE_CODE (_q21))
9808 : : {
9809 : 1666 : case INTEGER_CST:
9810 : 1666 : {
9811 : 1666 : switch (TREE_CODE (_p1))
9812 : : {
9813 : 464 : case INTEGER_CST:
9814 : 464 : {
9815 : 464 : {
9816 : 464 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9817 : 464 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, EQ_EXPR);
9818 : 464 : if (res) return res;
9819 : : }
9820 : 464 : break;
9821 : : }
9822 : : default:;
9823 : : }
9824 : : break;
9825 : : }
9826 : : default:;
9827 : : }
9828 : : break;
9829 : : }
9830 : 588 : case BIT_XOR_EXPR:
9831 : 588 : {
9832 : 588 : tree _q20 = TREE_OPERAND (_p0, 0);
9833 : 588 : tree _q21 = TREE_OPERAND (_p0, 1);
9834 : 588 : if (integer_zerop (_p1))
9835 : : {
9836 : 163 : {
9837 : 163 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9838 : 163 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, EQ_EXPR);
9839 : 163 : if (res) return res;
9840 : : }
9841 : : }
9842 : 425 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9843 : : {
9844 : 29 : {
9845 : 29 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9846 : 29 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, EQ_EXPR);
9847 : 29 : if (res) return res;
9848 : : }
9849 : : }
9850 : 396 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9851 : : {
9852 : 30 : {
9853 : 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9854 : 30 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, EQ_EXPR);
9855 : 30 : if (res) return res;
9856 : : }
9857 : : }
9858 : : break;
9859 : : }
9860 : 1812401 : case CALL_EXPR:
9861 : 1812401 : switch (get_call_combined_fn (_p0))
9862 : : {
9863 : 3 : case CFN_BUILT_IN_SQRTF:
9864 : 3 : if (call_expr_nargs (_p0) == 1)
9865 : : {
9866 : 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9867 : 3 : switch (TREE_CODE (_p1))
9868 : : {
9869 : 0 : case REAL_CST:
9870 : 0 : {
9871 : 0 : {
9872 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9873 : 0 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9874 : 0 : if (res) return res;
9875 : : }
9876 : 0 : break;
9877 : : }
9878 : 3 : case CALL_EXPR:
9879 : 3 : switch (get_call_combined_fn (_p1))
9880 : : {
9881 : 3 : case CFN_BUILT_IN_SQRTF:
9882 : 3 : if (call_expr_nargs (_p1) == 1)
9883 : : {
9884 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9885 : 3 : {
9886 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9887 : 3 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9888 : 3 : if (res) return res;
9889 : : }
9890 : : }
9891 : : break;
9892 : : default:;
9893 : : }
9894 : : break;
9895 : : default:;
9896 : : }
9897 : : }
9898 : : break;
9899 : 3 : case CFN_BUILT_IN_SQRTL:
9900 : 3 : if (call_expr_nargs (_p0) == 1)
9901 : : {
9902 : 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9903 : 3 : switch (TREE_CODE (_p1))
9904 : : {
9905 : 0 : case REAL_CST:
9906 : 0 : {
9907 : 0 : {
9908 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9909 : 0 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9910 : 0 : if (res) return res;
9911 : : }
9912 : 0 : break;
9913 : : }
9914 : 3 : case CALL_EXPR:
9915 : 3 : switch (get_call_combined_fn (_p1))
9916 : : {
9917 : 3 : case CFN_BUILT_IN_SQRTL:
9918 : 3 : if (call_expr_nargs (_p1) == 1)
9919 : : {
9920 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9921 : 3 : {
9922 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9923 : 3 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9924 : 3 : if (res) return res;
9925 : : }
9926 : : }
9927 : : break;
9928 : : default:;
9929 : : }
9930 : : break;
9931 : : default:;
9932 : : }
9933 : : }
9934 : : break;
9935 : 0 : case CFN_BUILT_IN_SQRT:
9936 : 0 : if (call_expr_nargs (_p0) == 1)
9937 : : {
9938 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9939 : 0 : switch (TREE_CODE (_p1))
9940 : : {
9941 : 0 : case REAL_CST:
9942 : 0 : {
9943 : 0 : {
9944 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9945 : 0 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9946 : 0 : if (res) return res;
9947 : : }
9948 : 0 : break;
9949 : : }
9950 : 0 : case CALL_EXPR:
9951 : 0 : switch (get_call_combined_fn (_p1))
9952 : : {
9953 : 0 : case CFN_BUILT_IN_SQRT:
9954 : 0 : if (call_expr_nargs (_p1) == 1)
9955 : : {
9956 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9957 : 0 : {
9958 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9959 : 0 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9960 : 0 : if (res) return res;
9961 : : }
9962 : : }
9963 : : break;
9964 : : default:;
9965 : : }
9966 : : break;
9967 : : default:;
9968 : : }
9969 : : }
9970 : : break;
9971 : 0 : case CFN_SQRT:
9972 : 0 : if (call_expr_nargs (_p0) == 1)
9973 : : {
9974 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9975 : 0 : switch (TREE_CODE (_p1))
9976 : : {
9977 : 0 : case REAL_CST:
9978 : 0 : {
9979 : 0 : {
9980 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9981 : 0 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9982 : 0 : if (res) return res;
9983 : : }
9984 : 0 : break;
9985 : : }
9986 : 0 : case CALL_EXPR:
9987 : 0 : switch (get_call_combined_fn (_p1))
9988 : : {
9989 : 0 : case CFN_SQRT:
9990 : 0 : if (call_expr_nargs (_p1) == 1)
9991 : : {
9992 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9993 : 0 : {
9994 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9995 : 0 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9996 : 0 : if (res) return res;
9997 : : }
9998 : : }
9999 : : break;
10000 : : default:;
10001 : : }
10002 : : break;
10003 : : default:;
10004 : : }
10005 : : }
10006 : : break;
10007 : : default:;
10008 : : }
10009 : : break;
10010 : 23052181 : default:;
10011 : : }
10012 : 23052181 : switch (TREE_CODE (_p1))
10013 : : {
10014 : 22 : case BIT_XOR_EXPR:
10015 : 22 : {
10016 : 22 : tree _q30 = TREE_OPERAND (_p1, 0);
10017 : 22 : tree _q31 = TREE_OPERAND (_p1, 1);
10018 : 22 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10019 : : {
10020 : 0 : {
10021 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10022 : 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, EQ_EXPR);
10023 : 0 : if (res) return res;
10024 : : }
10025 : : }
10026 : 22 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10027 : : {
10028 : 0 : {
10029 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10030 : 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, EQ_EXPR);
10031 : 0 : if (res) return res;
10032 : : }
10033 : : }
10034 : : break;
10035 : : }
10036 : 23052181 : default:;
10037 : : }
10038 : 23052181 : switch (TREE_CODE (_p0))
10039 : : {
10040 : 896072 : case BIT_AND_EXPR:
10041 : 896072 : {
10042 : 896072 : tree _q20 = TREE_OPERAND (_p0, 0);
10043 : 896072 : tree _q21 = TREE_OPERAND (_p0, 1);
10044 : 896072 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10045 : : {
10046 : 195 : {
10047 : 195 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10048 : 195 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR);
10049 : 195 : if (res) return res;
10050 : : }
10051 : : }
10052 : 896071 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10053 : : {
10054 : 151567 : {
10055 : 151567 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10056 : 151567 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR);
10057 : 151567 : if (res) return res;
10058 : : }
10059 : : }
10060 : : break;
10061 : : }
10062 : 23052180 : default:;
10063 : : }
10064 : 23052180 : switch (TREE_CODE (_p1))
10065 : : {
10066 : 8004 : case BIT_AND_EXPR:
10067 : 8004 : {
10068 : 8004 : tree _q30 = TREE_OPERAND (_p1, 0);
10069 : 8004 : tree _q31 = TREE_OPERAND (_p1, 1);
10070 : 8004 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10071 : : {
10072 : 0 : {
10073 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10074 : 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR);
10075 : 0 : if (res) return res;
10076 : : }
10077 : : }
10078 : 8004 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10079 : : {
10080 : 0 : {
10081 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10082 : 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR);
10083 : 0 : if (res) return res;
10084 : : }
10085 : : }
10086 : : break;
10087 : : }
10088 : 23052180 : default:;
10089 : : }
10090 : 23052180 : switch (TREE_CODE (_p0))
10091 : : {
10092 : 1966536 : CASE_CONVERT:
10093 : 1966536 : {
10094 : 1966536 : tree _q20 = TREE_OPERAND (_p0, 0);
10095 : 1966536 : switch (TREE_CODE (_q20))
10096 : : {
10097 : 2 : case BIT_AND_EXPR:
10098 : 2 : {
10099 : 2 : tree _q30 = TREE_OPERAND (_q20, 0);
10100 : 2 : tree _q31 = TREE_OPERAND (_q20, 1);
10101 : 2 : switch (TREE_CODE (_q30))
10102 : : {
10103 : 0 : CASE_CONVERT:
10104 : 0 : {
10105 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10106 : 0 : switch (TREE_CODE (_q31))
10107 : : {
10108 : 0 : case INTEGER_CST:
10109 : 0 : {
10110 : 0 : switch (TREE_CODE (_p1))
10111 : : {
10112 : 0 : CASE_CONVERT:
10113 : 0 : {
10114 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
10115 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
10116 : : {
10117 : 0 : {
10118 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
10119 : 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, EQ_EXPR);
10120 : 0 : if (res) return res;
10121 : : }
10122 : : }
10123 : : break;
10124 : : }
10125 : : default:;
10126 : : }
10127 : : break;
10128 : : }
10129 : : default:;
10130 : : }
10131 : : break;
10132 : : }
10133 : : default:;
10134 : : }
10135 : : break;
10136 : : }
10137 : 1966536 : default:;
10138 : : }
10139 : 1966536 : switch (TREE_CODE (_p1))
10140 : : {
10141 : 539861 : CASE_CONVERT:
10142 : 539861 : {
10143 : 539861 : tree _q40 = TREE_OPERAND (_p1, 0);
10144 : 539861 : switch (TREE_CODE (_q40))
10145 : : {
10146 : 7 : case BIT_AND_EXPR:
10147 : 7 : {
10148 : 7 : tree _q50 = TREE_OPERAND (_q40, 0);
10149 : 7 : tree _q51 = TREE_OPERAND (_q40, 1);
10150 : 7 : switch (TREE_CODE (_q50))
10151 : : {
10152 : 7 : CASE_CONVERT:
10153 : 7 : {
10154 : 7 : tree _q60 = TREE_OPERAND (_q50, 0);
10155 : 7 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10156 : : {
10157 : 0 : switch (TREE_CODE (_q51))
10158 : : {
10159 : 0 : case INTEGER_CST:
10160 : 0 : {
10161 : 0 : {
10162 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
10163 : 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, EQ_EXPR);
10164 : 0 : if (res) return res;
10165 : : }
10166 : 0 : break;
10167 : : }
10168 : : default:;
10169 : : }
10170 : : }
10171 : : break;
10172 : : }
10173 : : default:;
10174 : : }
10175 : : break;
10176 : : }
10177 : : default:;
10178 : : }
10179 : : break;
10180 : : }
10181 : : default:;
10182 : : }
10183 : : break;
10184 : : }
10185 : 33416 : case BIT_IOR_EXPR:
10186 : 33416 : {
10187 : 33416 : tree _q20 = TREE_OPERAND (_p0, 0);
10188 : 33416 : tree _q21 = TREE_OPERAND (_p0, 1);
10189 : 33416 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10190 : : {
10191 : 24 : {
10192 : 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10193 : 24 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR);
10194 : 24 : if (res) return res;
10195 : : }
10196 : : }
10197 : 33416 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10198 : : {
10199 : 46 : {
10200 : 46 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10201 : 46 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR);
10202 : 46 : if (res) return res;
10203 : : }
10204 : : }
10205 : : break;
10206 : : }
10207 : 23052180 : default:;
10208 : : }
10209 : 23052180 : switch (TREE_CODE (_p1))
10210 : : {
10211 : 679 : case BIT_IOR_EXPR:
10212 : 679 : {
10213 : 679 : tree _q30 = TREE_OPERAND (_p1, 0);
10214 : 679 : tree _q31 = TREE_OPERAND (_p1, 1);
10215 : 679 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10216 : : {
10217 : 0 : {
10218 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10219 : 0 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR);
10220 : 0 : if (res) return res;
10221 : : }
10222 : : }
10223 : 679 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10224 : : {
10225 : 0 : {
10226 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10227 : 0 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR);
10228 : 0 : if (res) return res;
10229 : : }
10230 : : }
10231 : : break;
10232 : : }
10233 : 23052180 : default:;
10234 : : }
10235 : 23052180 : switch (TREE_CODE (_p0))
10236 : : {
10237 : 1966536 : CASE_CONVERT:
10238 : 1966536 : {
10239 : 1966536 : tree _q20 = TREE_OPERAND (_p0, 0);
10240 : 1966536 : switch (TREE_CODE (_q20))
10241 : : {
10242 : 9 : case BIT_XOR_EXPR:
10243 : 9 : {
10244 : 9 : tree _q30 = TREE_OPERAND (_q20, 0);
10245 : 9 : tree _q31 = TREE_OPERAND (_q20, 1);
10246 : 9 : switch (TREE_CODE (_q31))
10247 : : {
10248 : 7 : case INTEGER_CST:
10249 : 7 : {
10250 : 7 : switch (TREE_CODE (_p1))
10251 : : {
10252 : 0 : case INTEGER_CST:
10253 : 0 : {
10254 : 0 : {
10255 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
10256 : 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, EQ_EXPR);
10257 : 0 : if (res) return res;
10258 : : }
10259 : 0 : break;
10260 : : }
10261 : : default:;
10262 : : }
10263 : : break;
10264 : : }
10265 : : default:;
10266 : : }
10267 : : break;
10268 : : }
10269 : : default:;
10270 : : }
10271 : : break;
10272 : : }
10273 : 366 : case BIT_XOR_EXPR:
10274 : 366 : {
10275 : 366 : tree _q20 = TREE_OPERAND (_p0, 0);
10276 : 366 : tree _q21 = TREE_OPERAND (_p0, 1);
10277 : 366 : switch (TREE_CODE (_q21))
10278 : : {
10279 : 103 : case INTEGER_CST:
10280 : 103 : {
10281 : 103 : switch (TREE_CODE (_p1))
10282 : : {
10283 : 16 : case INTEGER_CST:
10284 : 16 : {
10285 : 16 : {
10286 : 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10287 : 16 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, EQ_EXPR);
10288 : 16 : if (res) return res;
10289 : : }
10290 : 0 : break;
10291 : : }
10292 : : default:;
10293 : : }
10294 : : break;
10295 : : }
10296 : : default:;
10297 : : }
10298 : : break;
10299 : : }
10300 : 23052164 : default:;
10301 : : }
10302 : 23052164 : {
10303 : 23052164 : tree _p0_pops[1];
10304 : 23052164 : if (tree_nop_convert (_p0, _p0_pops))
10305 : : {
10306 : 1640267 : tree _q20 = _p0_pops[0];
10307 : 1640267 : if (integer_zerop (_p1))
10308 : : {
10309 : 537823 : {
10310 : 537823 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10311 : 537823 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, EQ_EXPR);
10312 : 537823 : if (res) return res;
10313 : : }
10314 : : }
10315 : : }
10316 : : }
10317 : 22657420 : if (integer_zerop (_p1))
10318 : : {
10319 : 9218700 : {
10320 : 9218700 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10321 : 9218700 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, EQ_EXPR);
10322 : 9218700 : if (res) return res;
10323 : : }
10324 : : }
10325 : 22579059 : switch (TREE_CODE (_p0))
10326 : : {
10327 : 896071 : case BIT_AND_EXPR:
10328 : 896071 : {
10329 : 896071 : tree _q20 = TREE_OPERAND (_p0, 0);
10330 : 896071 : tree _q21 = TREE_OPERAND (_p0, 1);
10331 : 896071 : switch (TREE_CODE (_p1))
10332 : : {
10333 : 7746 : case BIT_AND_EXPR:
10334 : 7746 : {
10335 : 7746 : tree _q50 = TREE_OPERAND (_p1, 0);
10336 : 7746 : tree _q51 = TREE_OPERAND (_p1, 1);
10337 : 7746 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10338 : : {
10339 : 7221 : {
10340 : 7221 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10341 : 7221 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
10342 : 7221 : if (res) return res;
10343 : : }
10344 : : }
10345 : 525 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10346 : : {
10347 : 28 : {
10348 : 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10349 : 28 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
10350 : 28 : if (res) return res;
10351 : : }
10352 : : }
10353 : 497 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10354 : : {
10355 : 28 : {
10356 : 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10357 : 28 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
10358 : 28 : if (res) return res;
10359 : : }
10360 : : }
10361 : 469 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10362 : : {
10363 : 28 : {
10364 : 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
10365 : 28 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
10366 : 28 : if (res) return res;
10367 : : }
10368 : : }
10369 : : break;
10370 : : }
10371 : 888766 : default:;
10372 : : }
10373 : 888766 : if (integer_pow2p (_q21))
10374 : : {
10375 : 304415 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10376 : : {
10377 : 115007 : {
10378 : 115007 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10379 : 115007 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10380 : 115007 : if (res) return res;
10381 : : }
10382 : : }
10383 : : }
10384 : 773777 : switch (TREE_CODE (_q20))
10385 : : {
10386 : 45551 : CASE_CONVERT:
10387 : 45551 : {
10388 : 45551 : tree _q30 = TREE_OPERAND (_q20, 0);
10389 : 45551 : if (integer_pow2p (_q21))
10390 : : {
10391 : 20996 : if (integer_zerop (_p1))
10392 : : {
10393 : 20994 : {
10394 : 20994 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
10395 : 20994 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
10396 : 20994 : if (res) return res;
10397 : : }
10398 : : }
10399 : : }
10400 : : break;
10401 : : }
10402 : 772808 : default:;
10403 : : }
10404 : 772808 : if (integer_pow2p (_q21))
10405 : : {
10406 : 188457 : if (integer_zerop (_p1))
10407 : : {
10408 : 188328 : {
10409 : 188328 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
10410 : 188328 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
10411 : 188328 : if (res) return res;
10412 : : }
10413 : : }
10414 : : }
10415 : : break;
10416 : : }
10417 : 1265 : case GE_EXPR:
10418 : 1265 : {
10419 : 1265 : tree _q20 = TREE_OPERAND (_p0, 0);
10420 : 1265 : tree _q21 = TREE_OPERAND (_p0, 1);
10421 : 1265 : if (integer_zerop (_q21))
10422 : : {
10423 : 120 : switch (TREE_CODE (_p1))
10424 : : {
10425 : 5 : case GE_EXPR:
10426 : 5 : {
10427 : 5 : tree _q50 = TREE_OPERAND (_p1, 0);
10428 : 5 : tree _q51 = TREE_OPERAND (_p1, 1);
10429 : 5 : if (integer_zerop (_q51))
10430 : : {
10431 : 5 : {
10432 : 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10433 : 5 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, GE_EXPR);
10434 : 5 : if (res) return res;
10435 : : }
10436 : : }
10437 : : break;
10438 : : }
10439 : 1 : case LT_EXPR:
10440 : 1 : {
10441 : 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10442 : 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10443 : 1 : if (integer_zerop (_q51))
10444 : : {
10445 : 1 : {
10446 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10447 : 1 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
10448 : 1 : if (res) return res;
10449 : : }
10450 : : }
10451 : : break;
10452 : : }
10453 : : default:;
10454 : : }
10455 : : }
10456 : : break;
10457 : : }
10458 : 890 : case LT_EXPR:
10459 : 890 : {
10460 : 890 : tree _q20 = TREE_OPERAND (_p0, 0);
10461 : 890 : tree _q21 = TREE_OPERAND (_p0, 1);
10462 : 890 : if (integer_zerop (_q21))
10463 : : {
10464 : 154 : switch (TREE_CODE (_p1))
10465 : : {
10466 : 11 : case LT_EXPR:
10467 : 11 : {
10468 : 11 : tree _q50 = TREE_OPERAND (_p1, 0);
10469 : 11 : tree _q51 = TREE_OPERAND (_p1, 1);
10470 : 11 : if (integer_zerop (_q51))
10471 : : {
10472 : 9 : {
10473 : 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10474 : 9 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GE_EXPR);
10475 : 9 : if (res) return res;
10476 : : }
10477 : : }
10478 : : break;
10479 : : }
10480 : 1 : case GE_EXPR:
10481 : 1 : {
10482 : 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10483 : 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10484 : 1 : if (integer_zerop (_q51))
10485 : : {
10486 : 1 : {
10487 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10488 : 1 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
10489 : 1 : if (res) return res;
10490 : : }
10491 : : }
10492 : : break;
10493 : : }
10494 : : default:;
10495 : : }
10496 : : }
10497 : : break;
10498 : : }
10499 : 1571789 : CASE_CONVERT:
10500 : 1571789 : {
10501 : 1571789 : tree _q20 = TREE_OPERAND (_p0, 0);
10502 : 1571789 : switch (TREE_CODE (_q20))
10503 : : {
10504 : 190316 : case ADDR_EXPR:
10505 : 190316 : {
10506 : 190316 : switch (TREE_CODE (_p1))
10507 : : {
10508 : 163065 : CASE_CONVERT:
10509 : 163065 : {
10510 : 163065 : tree _q40 = TREE_OPERAND (_p1, 0);
10511 : 163065 : switch (TREE_CODE (_q40))
10512 : : {
10513 : 163065 : case ADDR_EXPR:
10514 : 163065 : {
10515 : 163065 : {
10516 : 163065 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10517 : 163065 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
10518 : 163065 : if (res) return res;
10519 : : }
10520 : 30 : break;
10521 : : }
10522 : : default:;
10523 : : }
10524 : : break;
10525 : : }
10526 : 20494 : case ADDR_EXPR:
10527 : 20494 : {
10528 : 20494 : {
10529 : 20494 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10530 : 20494 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
10531 : 20494 : if (res) return res;
10532 : : }
10533 : 7824 : break;
10534 : : }
10535 : : default:;
10536 : : }
10537 : : break;
10538 : : }
10539 : : default:;
10540 : : }
10541 : : break;
10542 : : }
10543 : 16734 : case ADDR_EXPR:
10544 : 16734 : {
10545 : 16734 : switch (TREE_CODE (_p1))
10546 : : {
10547 : 110 : CASE_CONVERT:
10548 : 110 : {
10549 : 110 : tree _q30 = TREE_OPERAND (_p1, 0);
10550 : 110 : switch (TREE_CODE (_q30))
10551 : : {
10552 : 110 : case ADDR_EXPR:
10553 : 110 : {
10554 : 110 : {
10555 : 110 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10556 : 110 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
10557 : 110 : if (res) return res;
10558 : : }
10559 : 0 : break;
10560 : : }
10561 : : default:;
10562 : : }
10563 : : break;
10564 : : }
10565 : 14237 : case ADDR_EXPR:
10566 : 14237 : {
10567 : 14237 : {
10568 : 14237 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10569 : 14237 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
10570 : 14237 : if (res) return res;
10571 : : }
10572 : 5674 : break;
10573 : : }
10574 : : default:;
10575 : : }
10576 : : break;
10577 : : }
10578 : 22271106 : default:;
10579 : : }
10580 : 22271106 : {
10581 : 22271106 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10582 : 22271106 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
10583 : 22271106 : if (res) return res;
10584 : : }
10585 : 22268485 : switch (TREE_CODE (_p0))
10586 : : {
10587 : 1396084 : CASE_CONVERT:
10588 : 1396084 : {
10589 : 1396084 : tree _q20 = TREE_OPERAND (_p0, 0);
10590 : 1396084 : switch (TREE_CODE (_p1))
10591 : : {
10592 : 243136 : case INTEGER_CST:
10593 : 243136 : {
10594 : 243136 : {
10595 : 243136 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10596 : 243136 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, EQ_EXPR);
10597 : 243136 : if (res) return res;
10598 : : }
10599 : 241974 : break;
10600 : : }
10601 : 1394922 : default:;
10602 : : }
10603 : 1394922 : switch (TREE_CODE (_q20))
10604 : : {
10605 : 0 : case NE_EXPR:
10606 : 0 : {
10607 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10608 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10609 : 0 : switch (TREE_CODE (_q31))
10610 : : {
10611 : 0 : case INTEGER_CST:
10612 : 0 : {
10613 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10614 : : {
10615 : 0 : {
10616 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10617 : 0 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10618 : 0 : if (res) return res;
10619 : : }
10620 : : }
10621 : : break;
10622 : : }
10623 : : default:;
10624 : : }
10625 : : break;
10626 : : }
10627 : 0 : case EQ_EXPR:
10628 : 0 : {
10629 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10630 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10631 : 0 : switch (TREE_CODE (_q31))
10632 : : {
10633 : 0 : case INTEGER_CST:
10634 : 0 : {
10635 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10636 : : {
10637 : 0 : {
10638 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10639 : 0 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10640 : 0 : if (res) return res;
10641 : : }
10642 : : }
10643 : : break;
10644 : : }
10645 : : default:;
10646 : : }
10647 : : break;
10648 : : }
10649 : : default:;
10650 : : }
10651 : : break;
10652 : : }
10653 : 22267323 : default:;
10654 : : }
10655 : 22267323 : switch (TREE_CODE (_p1))
10656 : : {
10657 : 670379 : CASE_CONVERT:
10658 : 670379 : {
10659 : 670379 : tree _q30 = TREE_OPERAND (_p1, 0);
10660 : 670379 : switch (TREE_CODE (_q30))
10661 : : {
10662 : 0 : case NE_EXPR:
10663 : 0 : {
10664 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10665 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10666 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10667 : : {
10668 : 0 : switch (TREE_CODE (_q41))
10669 : : {
10670 : 0 : case INTEGER_CST:
10671 : 0 : {
10672 : 0 : {
10673 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10674 : 0 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10675 : 0 : if (res) return res;
10676 : : }
10677 : 0 : break;
10678 : : }
10679 : : default:;
10680 : : }
10681 : : }
10682 : : break;
10683 : : }
10684 : 0 : case EQ_EXPR:
10685 : 0 : {
10686 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10687 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10688 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10689 : : {
10690 : 0 : switch (TREE_CODE (_q41))
10691 : : {
10692 : 0 : case INTEGER_CST:
10693 : 0 : {
10694 : 0 : {
10695 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10696 : 0 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10697 : 0 : if (res) return res;
10698 : : }
10699 : 0 : break;
10700 : : }
10701 : : default:;
10702 : : }
10703 : : }
10704 : : break;
10705 : : }
10706 : : default:;
10707 : : }
10708 : : break;
10709 : : }
10710 : 22267323 : default:;
10711 : : }
10712 : 22267323 : if (integer_onep (_p1))
10713 : : {
10714 : 1731217 : {
10715 : 1731217 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10716 : 1731217 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10717 : 1731217 : && types_match (type, TREE_TYPE (captures[0]))
10718 : : )
10719 : : {
10720 : 88431 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1649;
10721 : 88431 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
10722 : 88431 : {
10723 : 88431 : tree res_op0;
10724 : 88431 : res_op0 = captures[0];
10725 : 88431 : tree _r;
10726 : 88431 : _r = non_lvalue_loc (loc, res_op0);
10727 : 88431 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
10728 : 88431 : return _r;
10729 : : }
10730 : : next_after_fail1649:;
10731 : : }
10732 : : }
10733 : : }
10734 : 22178892 : switch (TREE_CODE (_p0))
10735 : : {
10736 : 772512 : case BIT_AND_EXPR:
10737 : 772512 : {
10738 : 772512 : tree _q20 = TREE_OPERAND (_p0, 0);
10739 : 772512 : tree _q21 = TREE_OPERAND (_p0, 1);
10740 : 772512 : switch (TREE_CODE (_q21))
10741 : : {
10742 : 399 : case VECTOR_CST:
10743 : 399 : {
10744 : 399 : if (integer_zerop (_p1))
10745 : : {
10746 : 393 : {
10747 : 393 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10748 : 393 : const enum tree_code cmp = EQ_EXPR;
10749 : 393 : const enum tree_code icmp = LE_EXPR;
10750 : 393 : {
10751 : 393 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10752 : 393 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10753 : : )
10754 : : {
10755 : 2 : {
10756 : 2 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10757 : 2 : ? optab_vector : optab_default;
10758 : 2 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10759 : 2 : if (target_supports_op_p (utype, icmp, optab)
10760 : 2 : || (optimize_vectors_before_lowering_p ()
10761 : 2 : && (!target_supports_op_p (type, cmp, optab)
10762 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10763 : : )
10764 : : {
10765 : 2 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10766 : : )
10767 : : {
10768 : 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1650;
10769 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1650;
10770 : 2 : {
10771 : 2 : tree res_op0;
10772 : 2 : res_op0 = captures[1];
10773 : 2 : tree res_op1;
10774 : 2 : res_op1 = csts;
10775 : 2 : tree _r;
10776 : 2 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10777 : 2 : if (TREE_SIDE_EFFECTS (captures[2]))
10778 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10779 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
10780 : 2 : return _r;
10781 : : }
10782 : 391 : next_after_fail1650:;
10783 : : }
10784 : : else
10785 : : {
10786 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1651;
10787 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
10788 : 0 : {
10789 : 0 : tree res_op0;
10790 : 0 : {
10791 : 0 : tree _o1[1], _r1;
10792 : 0 : _o1[0] = captures[1];
10793 : 0 : if (TREE_TYPE (_o1[0]) != utype)
10794 : : {
10795 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10796 : : }
10797 : : else
10798 : : _r1 = _o1[0];
10799 : 0 : res_op0 = _r1;
10800 : : }
10801 : 0 : tree res_op1;
10802 : 0 : res_op1 = csts;
10803 : 0 : tree _r;
10804 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10805 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10806 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10807 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
10808 : 0 : return _r;
10809 : : }
10810 : 391 : next_after_fail1651:;
10811 : : }
10812 : : }
10813 : : }
10814 : : }
10815 : : }
10816 : : }
10817 : : }
10818 : : break;
10819 : : }
10820 : 723574 : case INTEGER_CST:
10821 : 723574 : {
10822 : 723574 : if (integer_zerop (_p1))
10823 : : {
10824 : 571700 : {
10825 : 571700 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10826 : 571700 : const enum tree_code cmp = EQ_EXPR;
10827 : 571700 : const enum tree_code icmp = LE_EXPR;
10828 : 571700 : {
10829 : 571700 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10830 : 571700 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10831 : : )
10832 : : {
10833 : 1051 : {
10834 : 1051 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10835 : 1051 : ? optab_vector : optab_default;
10836 : 1051 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10837 : 1051 : if (target_supports_op_p (utype, icmp, optab)
10838 : 1051 : || (optimize_vectors_before_lowering_p ()
10839 : 904 : && (!target_supports_op_p (type, cmp, optab)
10840 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10841 : : )
10842 : : {
10843 : 904 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10844 : : )
10845 : : {
10846 : 615 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1652;
10847 : 615 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
10848 : 615 : {
10849 : 615 : tree res_op0;
10850 : 615 : res_op0 = captures[1];
10851 : 615 : tree res_op1;
10852 : 615 : res_op1 = csts;
10853 : 615 : tree _r;
10854 : 615 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10855 : 615 : if (TREE_SIDE_EFFECTS (captures[2]))
10856 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10857 : 615 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
10858 : 615 : return _r;
10859 : : }
10860 : 570796 : next_after_fail1652:;
10861 : : }
10862 : : else
10863 : : {
10864 : 289 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1653;
10865 : 289 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
10866 : 289 : {
10867 : 289 : tree res_op0;
10868 : 289 : {
10869 : 289 : tree _o1[1], _r1;
10870 : 289 : _o1[0] = captures[1];
10871 : 289 : if (TREE_TYPE (_o1[0]) != utype)
10872 : : {
10873 : 289 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10874 : : }
10875 : : else
10876 : : _r1 = _o1[0];
10877 : 289 : res_op0 = _r1;
10878 : : }
10879 : 289 : tree res_op1;
10880 : 289 : res_op1 = csts;
10881 : 289 : tree _r;
10882 : 289 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10883 : 289 : if (TREE_SIDE_EFFECTS (captures[2]))
10884 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10885 : 289 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
10886 : 289 : return _r;
10887 : : }
10888 : 570796 : next_after_fail1653:;
10889 : : }
10890 : : }
10891 : : }
10892 : : }
10893 : : }
10894 : : }
10895 : : }
10896 : : break;
10897 : : }
10898 : 771606 : default:;
10899 : : }
10900 : 771606 : switch (TREE_CODE (_q20))
10901 : : {
10902 : 0 : case VECTOR_CST:
10903 : 0 : {
10904 : 0 : if (integer_zerop (_p1))
10905 : : {
10906 : 0 : {
10907 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10908 : 0 : const enum tree_code cmp = EQ_EXPR;
10909 : 0 : const enum tree_code icmp = LE_EXPR;
10910 : 0 : {
10911 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10912 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10913 : : )
10914 : : {
10915 : 0 : {
10916 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10917 : 0 : ? optab_vector : optab_default;
10918 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10919 : 0 : if (target_supports_op_p (utype, icmp, optab)
10920 : 0 : || (optimize_vectors_before_lowering_p ()
10921 : 0 : && (!target_supports_op_p (type, cmp, optab)
10922 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10923 : : )
10924 : : {
10925 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10926 : : )
10927 : : {
10928 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1654;
10929 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1654;
10930 : 0 : {
10931 : 0 : tree res_op0;
10932 : 0 : res_op0 = captures[1];
10933 : 0 : tree res_op1;
10934 : 0 : res_op1 = csts;
10935 : 0 : tree _r;
10936 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10937 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10938 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10939 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
10940 : 0 : return _r;
10941 : : }
10942 : 0 : next_after_fail1654:;
10943 : : }
10944 : : else
10945 : : {
10946 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1655;
10947 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1655;
10948 : 0 : {
10949 : 0 : tree res_op0;
10950 : 0 : {
10951 : 0 : tree _o1[1], _r1;
10952 : 0 : _o1[0] = captures[1];
10953 : 0 : if (TREE_TYPE (_o1[0]) != utype)
10954 : : {
10955 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10956 : : }
10957 : : else
10958 : : _r1 = _o1[0];
10959 : 0 : res_op0 = _r1;
10960 : : }
10961 : 0 : tree res_op1;
10962 : 0 : res_op1 = csts;
10963 : 0 : tree _r;
10964 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10965 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10966 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10967 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
10968 : 0 : return _r;
10969 : : }
10970 : 0 : next_after_fail1655:;
10971 : : }
10972 : : }
10973 : : }
10974 : : }
10975 : : }
10976 : : }
10977 : : }
10978 : : break;
10979 : : }
10980 : 0 : case INTEGER_CST:
10981 : 0 : {
10982 : 0 : if (integer_zerop (_p1))
10983 : : {
10984 : 0 : {
10985 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10986 : 0 : const enum tree_code cmp = EQ_EXPR;
10987 : 0 : const enum tree_code icmp = LE_EXPR;
10988 : 0 : {
10989 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10990 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10991 : : )
10992 : : {
10993 : 0 : {
10994 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10995 : 0 : ? optab_vector : optab_default;
10996 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10997 : 0 : if (target_supports_op_p (utype, icmp, optab)
10998 : 0 : || (optimize_vectors_before_lowering_p ()
10999 : 0 : && (!target_supports_op_p (type, cmp, optab)
11000 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11001 : : )
11002 : : {
11003 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11004 : : )
11005 : : {
11006 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1656;
11007 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1656;
11008 : 0 : {
11009 : 0 : tree res_op0;
11010 : 0 : res_op0 = captures[1];
11011 : 0 : tree res_op1;
11012 : 0 : res_op1 = csts;
11013 : 0 : tree _r;
11014 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11015 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11016 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11017 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
11018 : 0 : return _r;
11019 : : }
11020 : 0 : next_after_fail1656:;
11021 : : }
11022 : : else
11023 : : {
11024 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1657;
11025 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1657;
11026 : 0 : {
11027 : 0 : tree res_op0;
11028 : 0 : {
11029 : 0 : tree _o1[1], _r1;
11030 : 0 : _o1[0] = captures[1];
11031 : 0 : if (TREE_TYPE (_o1[0]) != utype)
11032 : : {
11033 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11034 : : }
11035 : : else
11036 : : _r1 = _o1[0];
11037 : 0 : res_op0 = _r1;
11038 : : }
11039 : 0 : tree res_op1;
11040 : 0 : res_op1 = csts;
11041 : 0 : tree _r;
11042 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11043 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11044 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11045 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
11046 : 0 : return _r;
11047 : : }
11048 : 0 : next_after_fail1657:;
11049 : : }
11050 : : }
11051 : : }
11052 : : }
11053 : : }
11054 : : }
11055 : : }
11056 : : break;
11057 : : }
11058 : : default:;
11059 : : }
11060 : : break;
11061 : : }
11062 : 17106 : case RSHIFT_EXPR:
11063 : 17106 : {
11064 : 17106 : tree _q20 = TREE_OPERAND (_p0, 0);
11065 : 17106 : tree _q21 = TREE_OPERAND (_p0, 1);
11066 : 17106 : switch (TREE_CODE (_q20))
11067 : : {
11068 : 1 : case MULT_EXPR:
11069 : 1 : {
11070 : 1 : tree _q30 = TREE_OPERAND (_q20, 0);
11071 : 1 : tree _q31 = TREE_OPERAND (_q20, 1);
11072 : 1 : switch (TREE_CODE (_q30))
11073 : : {
11074 : 1 : CASE_CONVERT:
11075 : 1 : {
11076 : 1 : tree _q40 = TREE_OPERAND (_q30, 0);
11077 : 1 : switch (TREE_CODE (_q31))
11078 : : {
11079 : 1 : CASE_CONVERT:
11080 : 1 : {
11081 : 1 : tree _q60 = TREE_OPERAND (_q31, 0);
11082 : 1 : switch (TREE_CODE (_q21))
11083 : : {
11084 : 1 : case INTEGER_CST:
11085 : 1 : {
11086 : 1 : if (integer_zerop (_p1))
11087 : : {
11088 : 1 : {
11089 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
11090 : 1 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, EQ_EXPR);
11091 : 1 : if (res) return res;
11092 : : }
11093 : : }
11094 : : break;
11095 : : }
11096 : : default:;
11097 : : }
11098 : : break;
11099 : : }
11100 : : default:;
11101 : : }
11102 : : break;
11103 : : }
11104 : : default:;
11105 : : }
11106 : : break;
11107 : : }
11108 : : default:;
11109 : : }
11110 : : break;
11111 : : }
11112 : 655671 : case PLUS_EXPR:
11113 : 655671 : {
11114 : 655671 : tree _q20 = TREE_OPERAND (_p0, 0);
11115 : 655671 : tree _q21 = TREE_OPERAND (_p0, 1);
11116 : 655671 : switch (TREE_CODE (_q21))
11117 : : {
11118 : 608546 : case INTEGER_CST:
11119 : 608546 : {
11120 : 608546 : switch (TREE_CODE (_p1))
11121 : : {
11122 : 340227 : case INTEGER_CST:
11123 : 340227 : {
11124 : 340227 : {
11125 : 340227 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11126 : 340227 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, EQ_EXPR);
11127 : 340227 : if (res) return res;
11128 : : }
11129 : 14 : break;
11130 : : }
11131 : : default:;
11132 : : }
11133 : : break;
11134 : : }
11135 : : default:;
11136 : : }
11137 : : break;
11138 : : }
11139 : 93673 : case MINUS_EXPR:
11140 : 93673 : {
11141 : 93673 : tree _q20 = TREE_OPERAND (_p0, 0);
11142 : 93673 : tree _q21 = TREE_OPERAND (_p0, 1);
11143 : 93673 : switch (TREE_CODE (_q21))
11144 : : {
11145 : 19 : case INTEGER_CST:
11146 : 19 : {
11147 : 19 : switch (TREE_CODE (_p1))
11148 : : {
11149 : 16 : case INTEGER_CST:
11150 : 16 : {
11151 : 16 : {
11152 : 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11153 : 16 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, EQ_EXPR);
11154 : 16 : if (res) return res;
11155 : : }
11156 : 16 : break;
11157 : : }
11158 : : default:;
11159 : : }
11160 : : break;
11161 : : }
11162 : 93673 : default:;
11163 : : }
11164 : 93673 : switch (TREE_CODE (_q20))
11165 : : {
11166 : 40668 : case INTEGER_CST:
11167 : 40668 : {
11168 : 40668 : switch (TREE_CODE (_p1))
11169 : : {
11170 : 39722 : case INTEGER_CST:
11171 : 39722 : {
11172 : 39722 : {
11173 : 39722 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
11174 : 39722 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
11175 : 39722 : if (res) return res;
11176 : : }
11177 : 0 : break;
11178 : : }
11179 : : default:;
11180 : : }
11181 : : break;
11182 : : }
11183 : : default:;
11184 : : }
11185 : : break;
11186 : : }
11187 : 1808073 : case CALL_EXPR:
11188 : 1808073 : switch (get_call_combined_fn (_p0))
11189 : : {
11190 : 19 : case CFN_BUILT_IN_CLZ:
11191 : 19 : if (call_expr_nargs (_p0) == 1)
11192 : : {
11193 : 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11194 : 19 : switch (TREE_CODE (_p1))
11195 : : {
11196 : 19 : case INTEGER_CST:
11197 : 19 : {
11198 : 19 : {
11199 : 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11200 : 19 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZ);
11201 : 19 : if (res) return res;
11202 : : }
11203 : 16 : break;
11204 : : }
11205 : : default:;
11206 : : }
11207 : : }
11208 : : break;
11209 : 17 : case CFN_BUILT_IN_CTZ:
11210 : 17 : if (call_expr_nargs (_p0) == 1)
11211 : : {
11212 : 17 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11213 : 17 : switch (TREE_CODE (_p1))
11214 : : {
11215 : 17 : case INTEGER_CST:
11216 : 17 : {
11217 : 17 : {
11218 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11219 : 17 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZ);
11220 : 17 : if (res) return res;
11221 : : }
11222 : 16 : break;
11223 : : }
11224 : : default:;
11225 : : }
11226 : : }
11227 : : break;
11228 : 4 : case CFN_BUILT_IN_FFS:
11229 : 4 : if (call_expr_nargs (_p0) == 1)
11230 : : {
11231 : 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11232 : 4 : switch (TREE_CODE (_p1))
11233 : : {
11234 : 4 : case INTEGER_CST:
11235 : 4 : {
11236 : 4 : {
11237 : 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11238 : 4 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFS);
11239 : 4 : if (res) return res;
11240 : : }
11241 : 0 : break;
11242 : : }
11243 : : default:;
11244 : : }
11245 : : }
11246 : : break;
11247 : 0 : case CFN_REDUC_IOR:
11248 : 0 : if (call_expr_nargs (_p0) == 1)
11249 : : {
11250 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11251 : 0 : if (integer_zerop (_p1))
11252 : : {
11253 : 0 : {
11254 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11255 : 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR);
11256 : 0 : if (res) return res;
11257 : : }
11258 : : }
11259 : : }
11260 : : break;
11261 : 0 : case CFN_BUILT_IN_FFSIMAX:
11262 : 0 : if (call_expr_nargs (_p0) == 1)
11263 : : {
11264 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11265 : 0 : switch (TREE_CODE (_p1))
11266 : : {
11267 : 0 : case INTEGER_CST:
11268 : 0 : {
11269 : 0 : {
11270 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11271 : 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSIMAX);
11272 : 0 : if (res) return res;
11273 : : }
11274 : 0 : break;
11275 : : }
11276 : : default:;
11277 : : }
11278 : : }
11279 : : break;
11280 : 15 : case CFN_BUILT_IN_POPCOUNT:
11281 : 15 : if (call_expr_nargs (_p0) == 1)
11282 : : {
11283 : 15 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11284 : 15 : if (integer_zerop (_p1))
11285 : : {
11286 : 1 : {
11287 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11288 : 1 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
11289 : 1 : if (res) return res;
11290 : : }
11291 : : }
11292 : : }
11293 : : break;
11294 : 0 : case CFN_BUILT_IN_CLZL:
11295 : 0 : if (call_expr_nargs (_p0) == 1)
11296 : : {
11297 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11298 : 0 : switch (TREE_CODE (_p1))
11299 : : {
11300 : 0 : case INTEGER_CST:
11301 : 0 : {
11302 : 0 : {
11303 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11304 : 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZL);
11305 : 0 : if (res) return res;
11306 : : }
11307 : 0 : break;
11308 : : }
11309 : : default:;
11310 : : }
11311 : : }
11312 : : break;
11313 : 16 : case CFN_BUILT_IN_CTZL:
11314 : 16 : if (call_expr_nargs (_p0) == 1)
11315 : : {
11316 : 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11317 : 16 : switch (TREE_CODE (_p1))
11318 : : {
11319 : 16 : case INTEGER_CST:
11320 : 16 : {
11321 : 16 : {
11322 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11323 : 16 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZL);
11324 : 16 : if (res) return res;
11325 : : }
11326 : 16 : break;
11327 : : }
11328 : : default:;
11329 : : }
11330 : : }
11331 : : break;
11332 : 1 : case CFN_BUILT_IN_FFSL:
11333 : 1 : if (call_expr_nargs (_p0) == 1)
11334 : : {
11335 : 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11336 : 1 : switch (TREE_CODE (_p1))
11337 : : {
11338 : 1 : case INTEGER_CST:
11339 : 1 : {
11340 : 1 : {
11341 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11342 : 1 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSL);
11343 : 1 : if (res) return res;
11344 : : }
11345 : 0 : break;
11346 : : }
11347 : : default:;
11348 : : }
11349 : : }
11350 : : break;
11351 : 7 : case CFN_BUILT_IN_POPCOUNTLL:
11352 : 7 : if (call_expr_nargs (_p0) == 1)
11353 : : {
11354 : 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11355 : 7 : if (integer_zerop (_p1))
11356 : : {
11357 : 1 : {
11358 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11359 : 1 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11360 : 1 : if (res) return res;
11361 : : }
11362 : : }
11363 : : }
11364 : : break;
11365 : 0 : case CFN_BUILT_IN_CTZIMAX:
11366 : 0 : if (call_expr_nargs (_p0) == 1)
11367 : : {
11368 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11369 : 0 : switch (TREE_CODE (_p1))
11370 : : {
11371 : 0 : case INTEGER_CST:
11372 : 0 : {
11373 : 0 : {
11374 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11375 : 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZIMAX);
11376 : 0 : if (res) return res;
11377 : : }
11378 : 0 : break;
11379 : : }
11380 : : default:;
11381 : : }
11382 : : }
11383 : : break;
11384 : 0 : case CFN_POPCOUNT:
11385 : 0 : if (call_expr_nargs (_p0) == 1)
11386 : : {
11387 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11388 : 0 : if (integer_zerop (_p1))
11389 : : {
11390 : 0 : {
11391 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11392 : 0 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_POPCOUNT);
11393 : 0 : if (res) return res;
11394 : : }
11395 : : }
11396 : : }
11397 : : break;
11398 : 0 : case CFN_CLZ:
11399 : 0 : if (call_expr_nargs (_p0) == 1)
11400 : : {
11401 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11402 : 0 : switch (TREE_CODE (_p1))
11403 : : {
11404 : 0 : case INTEGER_CST:
11405 : 0 : {
11406 : 0 : {
11407 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11408 : 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_CLZ);
11409 : 0 : if (res) return res;
11410 : : }
11411 : 0 : break;
11412 : : }
11413 : : default:;
11414 : : }
11415 : : }
11416 : 0 : if (call_expr_nargs (_p0) == 2)
11417 : : {
11418 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11419 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11420 : 0 : switch (TREE_CODE (_p1))
11421 : : {
11422 : 0 : case INTEGER_CST:
11423 : 0 : {
11424 : 0 : {
11425 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11426 : 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
11427 : 0 : if (res) return res;
11428 : : }
11429 : 0 : break;
11430 : : }
11431 : : default:;
11432 : : }
11433 : : }
11434 : : break;
11435 : 0 : case CFN_CTZ:
11436 : 0 : if (call_expr_nargs (_p0) == 1)
11437 : : {
11438 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11439 : 0 : switch (TREE_CODE (_p1))
11440 : : {
11441 : 0 : case INTEGER_CST:
11442 : 0 : {
11443 : 0 : {
11444 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11445 : 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_CTZ);
11446 : 0 : if (res) return res;
11447 : : }
11448 : 0 : break;
11449 : : }
11450 : : default:;
11451 : : }
11452 : : }
11453 : 0 : if (call_expr_nargs (_p0) == 2)
11454 : : {
11455 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11456 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11457 : 0 : switch (TREE_CODE (_p1))
11458 : : {
11459 : 0 : case INTEGER_CST:
11460 : 0 : {
11461 : 0 : {
11462 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11463 : 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
11464 : 0 : if (res) return res;
11465 : : }
11466 : 0 : break;
11467 : : }
11468 : : default:;
11469 : : }
11470 : : }
11471 : : break;
11472 : 0 : case CFN_FFS:
11473 : 0 : if (call_expr_nargs (_p0) == 1)
11474 : : {
11475 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11476 : 0 : switch (TREE_CODE (_p1))
11477 : : {
11478 : 0 : case INTEGER_CST:
11479 : 0 : {
11480 : 0 : {
11481 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11482 : 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_FFS);
11483 : 0 : if (res) return res;
11484 : : }
11485 : 0 : break;
11486 : : }
11487 : : default:;
11488 : : }
11489 : : }
11490 : : break;
11491 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11492 : 0 : if (call_expr_nargs (_p0) == 1)
11493 : : {
11494 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11495 : 0 : if (integer_zerop (_p1))
11496 : : {
11497 : 0 : {
11498 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11499 : 0 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11500 : 0 : if (res) return res;
11501 : : }
11502 : : }
11503 : : }
11504 : : break;
11505 : 0 : case CFN_BUILT_IN_CLZIMAX:
11506 : 0 : if (call_expr_nargs (_p0) == 1)
11507 : : {
11508 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11509 : 0 : switch (TREE_CODE (_p1))
11510 : : {
11511 : 0 : case INTEGER_CST:
11512 : 0 : {
11513 : 0 : {
11514 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11515 : 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZIMAX);
11516 : 0 : if (res) return res;
11517 : : }
11518 : 0 : break;
11519 : : }
11520 : : default:;
11521 : : }
11522 : : }
11523 : : break;
11524 : 7 : case CFN_BUILT_IN_POPCOUNTL:
11525 : 7 : if (call_expr_nargs (_p0) == 1)
11526 : : {
11527 : 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11528 : 7 : if (integer_zerop (_p1))
11529 : : {
11530 : 1 : {
11531 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11532 : 1 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
11533 : 1 : if (res) return res;
11534 : : }
11535 : : }
11536 : : }
11537 : : break;
11538 : 16 : case CFN_BUILT_IN_CLZLL:
11539 : 16 : if (call_expr_nargs (_p0) == 1)
11540 : : {
11541 : 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11542 : 16 : switch (TREE_CODE (_p1))
11543 : : {
11544 : 16 : case INTEGER_CST:
11545 : 16 : {
11546 : 16 : {
11547 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11548 : 16 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZLL);
11549 : 16 : if (res) return res;
11550 : : }
11551 : 16 : break;
11552 : : }
11553 : : default:;
11554 : : }
11555 : : }
11556 : : break;
11557 : 0 : case CFN_BUILT_IN_CTZLL:
11558 : 0 : if (call_expr_nargs (_p0) == 1)
11559 : : {
11560 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11561 : 0 : switch (TREE_CODE (_p1))
11562 : : {
11563 : 0 : case INTEGER_CST:
11564 : 0 : {
11565 : 0 : {
11566 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11567 : 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZLL);
11568 : 0 : if (res) return res;
11569 : : }
11570 : 0 : break;
11571 : : }
11572 : : default:;
11573 : : }
11574 : : }
11575 : : break;
11576 : 0 : case CFN_BUILT_IN_FFSLL:
11577 : 0 : if (call_expr_nargs (_p0) == 1)
11578 : : {
11579 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11580 : 0 : switch (TREE_CODE (_p1))
11581 : : {
11582 : 0 : case INTEGER_CST:
11583 : 0 : {
11584 : 0 : {
11585 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11586 : 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSLL);
11587 : 0 : if (res) return res;
11588 : : }
11589 : 0 : break;
11590 : : }
11591 : : default:;
11592 : : }
11593 : : }
11594 : : break;
11595 : : default:;
11596 : : }
11597 : : break;
11598 : : default:;
11599 : : }
11600 : : return NULL_TREE;
11601 : : }
11602 : :
11603 : : tree
11604 : 837879 : generic_simplify_UNLT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11605 : : {
11606 : 837879 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11607 : 837879 : switch (TREE_CODE (_p0))
11608 : : {
11609 : 0 : case VEC_COND_EXPR:
11610 : 0 : {
11611 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11612 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11613 : 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11614 : 0 : switch (TREE_CODE (_p1))
11615 : : {
11616 : 0 : case VEC_COND_EXPR:
11617 : 0 : {
11618 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11619 : 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11620 : 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11621 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11622 : : {
11623 : 0 : {
11624 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11625 : 0 : if (VECTOR_TYPE_P (type)
11626 : 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11627 : 0 : || types_match (type, TREE_TYPE (captures[2]))
11628 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11629 : : || (optimize_vectors_before_lowering_p ()
11630 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11631 : : )
11632 : : {
11633 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1904;
11634 : 0 : {
11635 : 0 : tree res_op0;
11636 : 0 : res_op0 = captures[1];
11637 : 0 : tree res_op1;
11638 : 0 : {
11639 : 0 : tree _o1[2], _r1;
11640 : 0 : _o1[0] = captures[2];
11641 : 0 : _o1[1] = captures[5];
11642 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11643 : 0 : if (EXPR_P (_r1))
11644 : 0 : goto next_after_fail1904;
11645 : 0 : res_op1 = _r1;
11646 : : }
11647 : 0 : tree res_op2;
11648 : 0 : {
11649 : 0 : tree _o1[2], _r1;
11650 : 0 : _o1[0] = captures[3];
11651 : 0 : _o1[1] = captures[6];
11652 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11653 : 0 : if (EXPR_P (_r1))
11654 : 0 : goto next_after_fail1904;
11655 : 0 : res_op2 = _r1;
11656 : : }
11657 : 0 : tree _r;
11658 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11659 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
11660 : 0 : return _r;
11661 : : }
11662 : 0 : next_after_fail1904:;
11663 : : }
11664 : : }
11665 : : }
11666 : : break;
11667 : : }
11668 : 0 : default:;
11669 : : }
11670 : 0 : {
11671 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11672 : 0 : if (VECTOR_TYPE_P (type)
11673 : 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11674 : 0 : || types_match (type, TREE_TYPE (captures[2]))
11675 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11676 : : || (optimize_vectors_before_lowering_p ()
11677 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11678 : : )
11679 : : {
11680 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1905;
11681 : 0 : {
11682 : 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1905;
11683 : 0 : tree res_op0;
11684 : 0 : res_op0 = captures[1];
11685 : 0 : tree res_op1;
11686 : 0 : {
11687 : 0 : tree _o1[2], _r1;
11688 : 0 : _o1[0] = captures[2];
11689 : 0 : _o1[1] = unshare_expr (captures[4]);
11690 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11691 : 0 : if (EXPR_P (_r1))
11692 : 0 : goto next_after_fail1905;
11693 : 0 : res_op1 = _r1;
11694 : : }
11695 : 0 : tree res_op2;
11696 : 0 : {
11697 : 0 : tree _o1[2], _r1;
11698 : 0 : _o1[0] = captures[3];
11699 : 0 : _o1[1] = captures[4];
11700 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11701 : 0 : if (EXPR_P (_r1))
11702 : 0 : goto next_after_fail1905;
11703 : 0 : res_op2 = _r1;
11704 : : }
11705 : 0 : tree _r;
11706 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11707 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
11708 : 0 : return _r;
11709 : : }
11710 : 0 : next_after_fail1905:;
11711 : : }
11712 : : }
11713 : 0 : break;
11714 : : }
11715 : 837879 : default:;
11716 : : }
11717 : 837879 : switch (TREE_CODE (_p1))
11718 : : {
11719 : 0 : case VEC_COND_EXPR:
11720 : 0 : {
11721 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11722 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11723 : 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11724 : 0 : {
11725 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11726 : 0 : if (VECTOR_TYPE_P (type)
11727 : 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11728 : 0 : || types_match (type, TREE_TYPE (captures[3]))
11729 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11730 : : || (optimize_vectors_before_lowering_p ()
11731 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11732 : : )
11733 : : {
11734 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1906;
11735 : 0 : {
11736 : 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1906;
11737 : 0 : tree res_op0;
11738 : 0 : res_op0 = captures[2];
11739 : 0 : tree res_op1;
11740 : 0 : {
11741 : 0 : tree _o1[2], _r1;
11742 : 0 : _o1[0] = unshare_expr (captures[0]);
11743 : 0 : _o1[1] = captures[3];
11744 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11745 : 0 : if (EXPR_P (_r1))
11746 : 0 : goto next_after_fail1906;
11747 : 0 : res_op1 = _r1;
11748 : : }
11749 : 0 : tree res_op2;
11750 : 0 : {
11751 : 0 : tree _o1[2], _r1;
11752 : 0 : _o1[0] = captures[0];
11753 : 0 : _o1[1] = captures[4];
11754 : 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11755 : 0 : if (EXPR_P (_r1))
11756 : 0 : goto next_after_fail1906;
11757 : 0 : res_op2 = _r1;
11758 : : }
11759 : 0 : tree _r;
11760 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11761 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
11762 : 0 : return _r;
11763 : : }
11764 : 0 : next_after_fail1906:;
11765 : : }
11766 : : }
11767 : 0 : break;
11768 : : }
11769 : 837879 : default:;
11770 : : }
11771 : 837879 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11772 : : {
11773 : 0 : {
11774 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11775 : 0 : tree res = generic_simplify_546 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11776 : 0 : if (res) return res;
11777 : : }
11778 : : }
11779 : 837879 : switch (TREE_CODE (_p0))
11780 : : {
11781 : 283 : case FLOAT_EXPR:
11782 : 283 : {
11783 : 283 : tree _q20 = TREE_OPERAND (_p0, 0);
11784 : 283 : switch (TREE_CODE (_p1))
11785 : : {
11786 : 0 : case FLOAT_EXPR:
11787 : 0 : {
11788 : 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11789 : 0 : {
11790 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11791 : 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, UNLT_EXPR, LT_EXPR);
11792 : 0 : if (res) return res;
11793 : : }
11794 : 0 : break;
11795 : : }
11796 : : default:;
11797 : : }
11798 : : break;
11799 : : }
11800 : 0 : case NEGATE_EXPR:
11801 : 0 : {
11802 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11803 : 0 : switch (TREE_CODE (_p1))
11804 : : {
11805 : 0 : case NEGATE_EXPR:
11806 : 0 : {
11807 : 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11808 : 0 : {
11809 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11810 : 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11811 : 0 : if (res) return res;
11812 : : }
11813 : 0 : break;
11814 : : }
11815 : 0 : default:;
11816 : : }
11817 : 0 : if (CONSTANT_CLASS_P (_p1))
11818 : : {
11819 : 0 : {
11820 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11821 : 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11822 : 0 : if (res) return res;
11823 : : }
11824 : : }
11825 : : break;
11826 : : }
11827 : 837879 : default:;
11828 : : }
11829 : 837879 : switch (TREE_CODE (_p1))
11830 : : {
11831 : 420337 : case REAL_CST:
11832 : 420337 : {
11833 : 420337 : {
11834 : 420337 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11835 : 420337 : tree res = generic_simplify_545 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11836 : 420337 : if (res) return res;
11837 : : }
11838 : 420335 : break;
11839 : : }
11840 : : default:;
11841 : : }
11842 : : return NULL_TREE;
11843 : : }
11844 : :
11845 : : tree
11846 : 1811604 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11847 : : {
11848 : 1811604 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11849 : 1811604 : switch (TREE_CODE (_p0))
11850 : : {
11851 : 0 : case VEC_COND_EXPR:
11852 : 0 : {
11853 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11854 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11855 : 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11856 : 0 : switch (TREE_CODE (_p1))
11857 : : {
11858 : 0 : case VEC_COND_EXPR:
11859 : 0 : {
11860 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11861 : 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11862 : 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11863 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11864 : : {
11865 : 0 : {
11866 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11867 : 0 : if (VECTOR_TYPE_P (type)
11868 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11869 : 0 : || types_match (type, TREE_TYPE (captures[2]))
11870 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11871 : : || (optimize_vectors_before_lowering_p ()
11872 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11873 : : )
11874 : : {
11875 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1910;
11876 : 0 : {
11877 : 0 : tree res_op0;
11878 : 0 : res_op0 = captures[1];
11879 : 0 : tree res_op1;
11880 : 0 : {
11881 : 0 : tree _o1[2], _r1;
11882 : 0 : _o1[0] = captures[2];
11883 : 0 : _o1[1] = captures[5];
11884 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11885 : 0 : if (EXPR_P (_r1))
11886 : 0 : goto next_after_fail1910;
11887 : 0 : res_op1 = _r1;
11888 : : }
11889 : 0 : tree res_op2;
11890 : 0 : {
11891 : 0 : tree _o1[2], _r1;
11892 : 0 : _o1[0] = captures[3];
11893 : 0 : _o1[1] = captures[6];
11894 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11895 : 0 : if (EXPR_P (_r1))
11896 : 0 : goto next_after_fail1910;
11897 : 0 : res_op2 = _r1;
11898 : : }
11899 : 0 : tree _r;
11900 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11901 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
11902 : 0 : return _r;
11903 : : }
11904 : 0 : next_after_fail1910:;
11905 : : }
11906 : : }
11907 : : }
11908 : : break;
11909 : : }
11910 : 0 : default:;
11911 : : }
11912 : 0 : {
11913 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11914 : 0 : if (VECTOR_TYPE_P (type)
11915 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11916 : 0 : || types_match (type, TREE_TYPE (captures[2]))
11917 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11918 : : || (optimize_vectors_before_lowering_p ()
11919 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11920 : : )
11921 : : {
11922 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1911;
11923 : 0 : {
11924 : 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1911;
11925 : 0 : tree res_op0;
11926 : 0 : res_op0 = captures[1];
11927 : 0 : tree res_op1;
11928 : 0 : {
11929 : 0 : tree _o1[2], _r1;
11930 : 0 : _o1[0] = captures[2];
11931 : 0 : _o1[1] = unshare_expr (captures[4]);
11932 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11933 : 0 : if (EXPR_P (_r1))
11934 : 0 : goto next_after_fail1911;
11935 : 0 : res_op1 = _r1;
11936 : : }
11937 : 0 : tree res_op2;
11938 : 0 : {
11939 : 0 : tree _o1[2], _r1;
11940 : 0 : _o1[0] = captures[3];
11941 : 0 : _o1[1] = captures[4];
11942 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11943 : 0 : if (EXPR_P (_r1))
11944 : 0 : goto next_after_fail1911;
11945 : 0 : res_op2 = _r1;
11946 : : }
11947 : 0 : tree _r;
11948 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11949 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
11950 : 0 : return _r;
11951 : : }
11952 : 0 : next_after_fail1911:;
11953 : : }
11954 : : }
11955 : 0 : break;
11956 : : }
11957 : 1811604 : default:;
11958 : : }
11959 : 1811604 : switch (TREE_CODE (_p1))
11960 : : {
11961 : 0 : case VEC_COND_EXPR:
11962 : 0 : {
11963 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11964 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11965 : 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11966 : 0 : {
11967 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11968 : 0 : if (VECTOR_TYPE_P (type)
11969 : 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11970 : 0 : || types_match (type, TREE_TYPE (captures[3]))
11971 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11972 : : || (optimize_vectors_before_lowering_p ()
11973 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11974 : : )
11975 : : {
11976 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1912;
11977 : 0 : {
11978 : 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1912;
11979 : 0 : tree res_op0;
11980 : 0 : res_op0 = captures[2];
11981 : 0 : tree res_op1;
11982 : 0 : {
11983 : 0 : tree _o1[2], _r1;
11984 : 0 : _o1[0] = unshare_expr (captures[0]);
11985 : 0 : _o1[1] = captures[3];
11986 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11987 : 0 : if (EXPR_P (_r1))
11988 : 0 : goto next_after_fail1912;
11989 : 0 : res_op1 = _r1;
11990 : : }
11991 : 0 : tree res_op2;
11992 : 0 : {
11993 : 0 : tree _o1[2], _r1;
11994 : 0 : _o1[0] = captures[0];
11995 : 0 : _o1[1] = captures[4];
11996 : 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11997 : 0 : if (EXPR_P (_r1))
11998 : 0 : goto next_after_fail1912;
11999 : 0 : res_op2 = _r1;
12000 : : }
12001 : 0 : tree _r;
12002 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
12003 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
12004 : 0 : return _r;
12005 : : }
12006 : 0 : next_after_fail1912:;
12007 : : }
12008 : : }
12009 : 0 : break;
12010 : : }
12011 : 1811604 : default:;
12012 : : }
12013 : 1811604 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
12014 : : {
12015 : 0 : {
12016 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
12017 : 0 : tree res = generic_simplify_546 (loc, type, _p0, _p1, captures, UNGT_EXPR);
12018 : 0 : if (res) return res;
12019 : : }
12020 : : }
12021 : 1811604 : switch (TREE_CODE (_p0))
12022 : : {
12023 : 339 : case FLOAT_EXPR:
12024 : 339 : {
12025 : 339 : tree _q20 = TREE_OPERAND (_p0, 0);
12026 : 339 : switch (TREE_CODE (_p1))
12027 : : {
12028 : 0 : case FLOAT_EXPR:
12029 : 0 : {
12030 : 0 : tree _q40 = TREE_OPERAND (_p1, 0);
12031 : 0 : {
12032 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
12033 : 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
12034 : 0 : if (res) return res;
12035 : : }
12036 : 0 : break;
12037 : : }
12038 : : default:;
12039 : : }
12040 : : break;
12041 : : }
12042 : 0 : case NEGATE_EXPR:
12043 : 0 : {
12044 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12045 : 0 : switch (TREE_CODE (_p1))
12046 : : {
12047 : 0 : case NEGATE_EXPR:
12048 : 0 : {
12049 : 0 : tree _q40 = TREE_OPERAND (_p1, 0);
12050 : 0 : {
12051 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
12052 : 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
12053 : 0 : if (res) return res;
12054 : : }
12055 : 0 : break;
12056 : : }
12057 : 0 : default:;
12058 : : }
12059 : 0 : if (CONSTANT_CLASS_P (_p1))
12060 : : {
12061 : 0 : {
12062 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12063 : 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
12064 : 0 : if (res) return res;
12065 : : }
12066 : : }
12067 : : break;
12068 : : }
12069 : 1811604 : default:;
12070 : : }
12071 : 1811604 : switch (TREE_CODE (_p1))
12072 : : {
12073 : 1394119 : case REAL_CST:
12074 : 1394119 : {
12075 : 1394119 : {
12076 : 1394119 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
12077 : 1394119 : tree res = generic_simplify_545 (loc, type, _p0, _p1, captures, UNGT_EXPR);
12078 : 1394119 : if (res) return res;
12079 : : }
12080 : 1394117 : break;
12081 : : }
12082 : : default:;
12083 : : }
12084 : : return NULL_TREE;
12085 : : }
12086 : :
12087 : : tree
12088 : 9349661 : generic_simplify_TRUTH_OR_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
12089 : : {
12090 : 9349661 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
12091 : 9349661 : switch (TREE_CODE (_p0))
12092 : : {
12093 : 1326073 : case LE_EXPR:
12094 : 1326073 : {
12095 : 1326073 : tree _q20 = TREE_OPERAND (_p0, 0);
12096 : 1326073 : tree _q21 = TREE_OPERAND (_p0, 1);
12097 : 1326073 : switch (TREE_CODE (_q20))
12098 : : {
12099 : 4117 : case POINTER_PLUS_EXPR:
12100 : 4117 : {
12101 : 4117 : tree _q30 = TREE_OPERAND (_q20, 0);
12102 : 4117 : tree _q31 = TREE_OPERAND (_q20, 1);
12103 : 4117 : switch (TREE_CODE (_q31))
12104 : : {
12105 : 3885 : case INTEGER_CST:
12106 : 3885 : {
12107 : 3885 : switch (TREE_CODE (_p1))
12108 : : {
12109 : 1285 : case LE_EXPR:
12110 : 1285 : {
12111 : 1285 : tree _q70 = TREE_OPERAND (_p1, 0);
12112 : 1285 : tree _q71 = TREE_OPERAND (_p1, 1);
12113 : 1285 : switch (TREE_CODE (_q70))
12114 : : {
12115 : 806 : case POINTER_PLUS_EXPR:
12116 : 806 : {
12117 : 806 : tree _q80 = TREE_OPERAND (_q70, 0);
12118 : 806 : tree _q81 = TREE_OPERAND (_q70, 1);
12119 : 806 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
12120 : : {
12121 : 517 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
12122 : : {
12123 : 395 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
12124 : : {
12125 : 395 : {
12126 : 395 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
12127 : 395 : const enum tree_code cmp = LE_EXPR;
12128 : 395 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12129 : 394 : && TYPE_OVERFLOW_WRAPS (sizetype)
12130 : 789 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12131 : : )
12132 : : {
12133 : 394 : {
12134 : 394 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12135 : 394 : offset_int rhs = off * 2;
12136 : 394 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12137 : : )
12138 : : {
12139 : 394 : {
12140 : 394 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12141 : 394 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12142 : 394 : if (cmp == LT_EXPR
12143 : : )
12144 : : {
12145 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1939;
12146 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1939;
12147 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1939;
12148 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1939;
12149 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1939;
12150 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1939;
12151 : : {
12152 : : tree res_op0;
12153 : : {
12154 : : tree _o1[1], _r1;
12155 : : {
12156 : : tree _o2[2], _r2;
12157 : : _o2[0] = swap_p ? captures[6] : captures[1];
12158 : : _o2[1] = swap_p ? captures[2] : captures[4];
12159 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12160 : : _o1[0] = _r2;
12161 : : }
12162 : : if (TREE_TYPE (_o1[0]) != sizetype)
12163 : : {
12164 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12165 : : }
12166 : : else
12167 : : _r1 = _o1[0];
12168 : : res_op0 = _r1;
12169 : : }
12170 : : tree res_op1;
12171 : : res_op1 = rhs_tree;
12172 : : tree _r;
12173 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12174 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12175 : 394 : return _r;
12176 : : }
12177 : : next_after_fail1939:;
12178 : : }
12179 : : else
12180 : : {
12181 : 394 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1940;
12182 : 394 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1940;
12183 : 394 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1940;
12184 : 394 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1940;
12185 : 394 : {
12186 : 394 : tree res_op0;
12187 : 394 : {
12188 : 394 : tree _o1[1], _r1;
12189 : 394 : {
12190 : 394 : tree _o2[2], _r2;
12191 : 394 : {
12192 : 394 : tree _o3[2], _r3;
12193 : 394 : _o3[0] = swap_p ? captures[4] : captures[2];
12194 : 394 : _o3[1] = wide_int_to_tree (sizetype, off);
12195 : 394 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12196 : 394 : _o2[0] = _r3;
12197 : : }
12198 : 394 : _o2[1] = swap_p ? captures[2] : captures[4];
12199 : 394 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12200 : 394 : _o1[0] = _r2;
12201 : : }
12202 : 394 : if (TREE_TYPE (_o1[0]) != sizetype)
12203 : : {
12204 : 394 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12205 : : }
12206 : : else
12207 : : _r1 = _o1[0];
12208 : 394 : res_op0 = _r1;
12209 : : }
12210 : 394 : tree res_op1;
12211 : 394 : res_op1 = rhs_tree;
12212 : 394 : tree _r;
12213 : 394 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12214 : 394 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12215 : 394 : return _r;
12216 : : }
12217 : 0 : next_after_fail1940:;
12218 : : }
12219 : : }
12220 : : }
12221 : : }
12222 : : }
12223 : : }
12224 : : }
12225 : : }
12226 : : }
12227 : : break;
12228 : : }
12229 : : default:;
12230 : : }
12231 : : break;
12232 : : }
12233 : 88 : case GE_EXPR:
12234 : 88 : {
12235 : 88 : tree _q70 = TREE_OPERAND (_p1, 0);
12236 : 88 : tree _q71 = TREE_OPERAND (_p1, 1);
12237 : 88 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
12238 : : {
12239 : 16 : switch (TREE_CODE (_q71))
12240 : : {
12241 : 16 : case POINTER_PLUS_EXPR:
12242 : 16 : {
12243 : 16 : tree _q90 = TREE_OPERAND (_q71, 0);
12244 : 16 : tree _q91 = TREE_OPERAND (_q71, 1);
12245 : 16 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
12246 : : {
12247 : 14 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
12248 : : {
12249 : 9 : {
12250 : 9 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
12251 : 9 : const enum tree_code cmp = LE_EXPR;
12252 : 9 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12253 : 9 : && TYPE_OVERFLOW_WRAPS (sizetype)
12254 : 18 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12255 : : )
12256 : : {
12257 : 9 : {
12258 : 9 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12259 : 9 : offset_int rhs = off * 2;
12260 : 9 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12261 : : )
12262 : : {
12263 : 9 : {
12264 : 9 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12265 : 9 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12266 : 9 : if (cmp == LT_EXPR
12267 : : )
12268 : : {
12269 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1941;
12270 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1941;
12271 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1941;
12272 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1941;
12273 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1941;
12274 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1941;
12275 : : {
12276 : : tree res_op0;
12277 : : {
12278 : : tree _o1[1], _r1;
12279 : : {
12280 : : tree _o2[2], _r2;
12281 : : _o2[0] = swap_p ? captures[6] : captures[1];
12282 : : _o2[1] = swap_p ? captures[2] : captures[4];
12283 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12284 : : _o1[0] = _r2;
12285 : : }
12286 : : if (TREE_TYPE (_o1[0]) != sizetype)
12287 : : {
12288 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12289 : : }
12290 : : else
12291 : : _r1 = _o1[0];
12292 : : res_op0 = _r1;
12293 : : }
12294 : : tree res_op1;
12295 : : res_op1 = rhs_tree;
12296 : : tree _r;
12297 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12298 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12299 : 9 : return _r;
12300 : : }
12301 : : next_after_fail1941:;
12302 : : }
12303 : : else
12304 : : {
12305 : 9 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1942;
12306 : 9 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1942;
12307 : 9 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1942;
12308 : 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1942;
12309 : 9 : {
12310 : 9 : tree res_op0;
12311 : 9 : {
12312 : 9 : tree _o1[1], _r1;
12313 : 9 : {
12314 : 9 : tree _o2[2], _r2;
12315 : 9 : {
12316 : 9 : tree _o3[2], _r3;
12317 : 9 : _o3[0] = swap_p ? captures[4] : captures[2];
12318 : 9 : _o3[1] = wide_int_to_tree (sizetype, off);
12319 : 9 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12320 : 9 : _o2[0] = _r3;
12321 : : }
12322 : 9 : _o2[1] = swap_p ? captures[2] : captures[4];
12323 : 9 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12324 : 9 : _o1[0] = _r2;
12325 : : }
12326 : 9 : if (TREE_TYPE (_o1[0]) != sizetype)
12327 : : {
12328 : 9 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12329 : : }
12330 : : else
12331 : : _r1 = _o1[0];
12332 : 9 : res_op0 = _r1;
12333 : : }
12334 : 9 : tree res_op1;
12335 : 9 : res_op1 = rhs_tree;
12336 : 9 : tree _r;
12337 : 9 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12338 : 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12339 : 9 : return _r;
12340 : : }
12341 : 0 : next_after_fail1942:;
12342 : : }
12343 : : }
12344 : : }
12345 : : }
12346 : : }
12347 : : }
12348 : : }
12349 : : }
12350 : : break;
12351 : : }
12352 : : default:;
12353 : : }
12354 : : }
12355 : : break;
12356 : : }
12357 : : default:;
12358 : : }
12359 : : break;
12360 : : }
12361 : : default:;
12362 : : }
12363 : : break;
12364 : : }
12365 : : default:;
12366 : : }
12367 : : break;
12368 : : }
12369 : 1025940 : case LT_EXPR:
12370 : 1025940 : {
12371 : 1025940 : tree _q20 = TREE_OPERAND (_p0, 0);
12372 : 1025940 : tree _q21 = TREE_OPERAND (_p0, 1);
12373 : 1025940 : switch (TREE_CODE (_q20))
12374 : : {
12375 : 1509 : case POINTER_PLUS_EXPR:
12376 : 1509 : {
12377 : 1509 : tree _q30 = TREE_OPERAND (_q20, 0);
12378 : 1509 : tree _q31 = TREE_OPERAND (_q20, 1);
12379 : 1509 : switch (TREE_CODE (_q31))
12380 : : {
12381 : 1313 : case INTEGER_CST:
12382 : 1313 : {
12383 : 1313 : switch (TREE_CODE (_p1))
12384 : : {
12385 : 135 : case LT_EXPR:
12386 : 135 : {
12387 : 135 : tree _q70 = TREE_OPERAND (_p1, 0);
12388 : 135 : tree _q71 = TREE_OPERAND (_p1, 1);
12389 : 135 : switch (TREE_CODE (_q70))
12390 : : {
12391 : 10 : case POINTER_PLUS_EXPR:
12392 : 10 : {
12393 : 10 : tree _q80 = TREE_OPERAND (_q70, 0);
12394 : 10 : tree _q81 = TREE_OPERAND (_q70, 1);
12395 : 10 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
12396 : : {
12397 : 1 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
12398 : : {
12399 : 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
12400 : : {
12401 : 1 : {
12402 : 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
12403 : 1 : const enum tree_code cmp = LT_EXPR;
12404 : 1 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12405 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12406 : 1 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12407 : : )
12408 : : {
12409 : 0 : {
12410 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12411 : 0 : offset_int rhs = off * 2;
12412 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12413 : : )
12414 : : {
12415 : 0 : {
12416 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12417 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12418 : 0 : if (cmp == LT_EXPR
12419 : : )
12420 : : {
12421 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1943;
12422 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1943;
12423 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1943;
12424 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1943;
12425 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1943;
12426 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1943;
12427 : 0 : {
12428 : 0 : tree res_op0;
12429 : 0 : {
12430 : 0 : tree _o1[1], _r1;
12431 : 0 : {
12432 : 0 : tree _o2[2], _r2;
12433 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12434 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12435 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12436 : 0 : _o1[0] = _r2;
12437 : : }
12438 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12439 : : {
12440 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12441 : : }
12442 : : else
12443 : : _r1 = _o1[0];
12444 : 0 : res_op0 = _r1;
12445 : : }
12446 : 0 : tree res_op1;
12447 : 0 : res_op1 = rhs_tree;
12448 : 0 : tree _r;
12449 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12450 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12451 : 0 : return _r;
12452 : : }
12453 : 0 : next_after_fail1943:;
12454 : : }
12455 : : else
12456 : : {
12457 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1944;
12458 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1944;
12459 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1944;
12460 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1944;
12461 : : {
12462 : : tree res_op0;
12463 : : {
12464 : : tree _o1[1], _r1;
12465 : : {
12466 : : tree _o2[2], _r2;
12467 : : {
12468 : : tree _o3[2], _r3;
12469 : : _o3[0] = swap_p ? captures[4] : captures[2];
12470 : : _o3[1] = wide_int_to_tree (sizetype, off);
12471 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12472 : : _o2[0] = _r3;
12473 : : }
12474 : : _o2[1] = swap_p ? captures[2] : captures[4];
12475 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12476 : : _o1[0] = _r2;
12477 : : }
12478 : : if (TREE_TYPE (_o1[0]) != sizetype)
12479 : : {
12480 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12481 : : }
12482 : : else
12483 : : _r1 = _o1[0];
12484 : : res_op0 = _r1;
12485 : : }
12486 : : tree res_op1;
12487 : : res_op1 = rhs_tree;
12488 : : tree _r;
12489 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12490 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12491 : : return _r;
12492 : : }
12493 : : next_after_fail1944:;
12494 : : }
12495 : : }
12496 : : }
12497 : : }
12498 : : }
12499 : : }
12500 : : }
12501 : : }
12502 : : }
12503 : : break;
12504 : : }
12505 : : default:;
12506 : : }
12507 : : break;
12508 : : }
12509 : 525 : case GT_EXPR:
12510 : 525 : {
12511 : 525 : tree _q70 = TREE_OPERAND (_p1, 0);
12512 : 525 : tree _q71 = TREE_OPERAND (_p1, 1);
12513 : 525 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
12514 : : {
12515 : 0 : switch (TREE_CODE (_q71))
12516 : : {
12517 : 0 : case POINTER_PLUS_EXPR:
12518 : 0 : {
12519 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12520 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12521 : 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
12522 : : {
12523 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
12524 : : {
12525 : 0 : {
12526 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
12527 : 0 : const enum tree_code cmp = LT_EXPR;
12528 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12529 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12530 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12531 : : )
12532 : : {
12533 : 0 : {
12534 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12535 : 0 : offset_int rhs = off * 2;
12536 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12537 : : )
12538 : : {
12539 : 0 : {
12540 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12541 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12542 : 0 : if (cmp == LT_EXPR
12543 : : )
12544 : : {
12545 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1945;
12546 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1945;
12547 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1945;
12548 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1945;
12549 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1945;
12550 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1945;
12551 : 0 : {
12552 : 0 : tree res_op0;
12553 : 0 : {
12554 : 0 : tree _o1[1], _r1;
12555 : 0 : {
12556 : 0 : tree _o2[2], _r2;
12557 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12558 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12559 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12560 : 0 : _o1[0] = _r2;
12561 : : }
12562 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12563 : : {
12564 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12565 : : }
12566 : : else
12567 : : _r1 = _o1[0];
12568 : 0 : res_op0 = _r1;
12569 : : }
12570 : 0 : tree res_op1;
12571 : 0 : res_op1 = rhs_tree;
12572 : 0 : tree _r;
12573 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12574 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12575 : 0 : return _r;
12576 : : }
12577 : 0 : next_after_fail1945:;
12578 : : }
12579 : : else
12580 : : {
12581 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1946;
12582 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1946;
12583 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1946;
12584 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1946;
12585 : : {
12586 : : tree res_op0;
12587 : : {
12588 : : tree _o1[1], _r1;
12589 : : {
12590 : : tree _o2[2], _r2;
12591 : : {
12592 : : tree _o3[2], _r3;
12593 : : _o3[0] = swap_p ? captures[4] : captures[2];
12594 : : _o3[1] = wide_int_to_tree (sizetype, off);
12595 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12596 : : _o2[0] = _r3;
12597 : : }
12598 : : _o2[1] = swap_p ? captures[2] : captures[4];
12599 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12600 : : _o1[0] = _r2;
12601 : : }
12602 : : if (TREE_TYPE (_o1[0]) != sizetype)
12603 : : {
12604 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12605 : : }
12606 : : else
12607 : : _r1 = _o1[0];
12608 : : res_op0 = _r1;
12609 : : }
12610 : : tree res_op1;
12611 : : res_op1 = rhs_tree;
12612 : : tree _r;
12613 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12614 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12615 : : return _r;
12616 : : }
12617 : : next_after_fail1946:;
12618 : : }
12619 : : }
12620 : : }
12621 : : }
12622 : : }
12623 : : }
12624 : : }
12625 : : }
12626 : : break;
12627 : : }
12628 : : default:;
12629 : : }
12630 : : }
12631 : : break;
12632 : : }
12633 : : default:;
12634 : : }
12635 : : break;
12636 : : }
12637 : : default:;
12638 : : }
12639 : : break;
12640 : : }
12641 : : default:;
12642 : : }
12643 : : break;
12644 : : }
12645 : 784835 : case GE_EXPR:
12646 : 784835 : {
12647 : 784835 : tree _q20 = TREE_OPERAND (_p0, 0);
12648 : 784835 : tree _q21 = TREE_OPERAND (_p0, 1);
12649 : 784835 : switch (TREE_CODE (_q21))
12650 : : {
12651 : 52 : case POINTER_PLUS_EXPR:
12652 : 52 : {
12653 : 52 : tree _q40 = TREE_OPERAND (_q21, 0);
12654 : 52 : tree _q41 = TREE_OPERAND (_q21, 1);
12655 : 52 : switch (TREE_CODE (_q41))
12656 : : {
12657 : 52 : case INTEGER_CST:
12658 : 52 : {
12659 : 52 : switch (TREE_CODE (_p1))
12660 : : {
12661 : 52 : case LE_EXPR:
12662 : 52 : {
12663 : 52 : tree _q70 = TREE_OPERAND (_p1, 0);
12664 : 52 : tree _q71 = TREE_OPERAND (_p1, 1);
12665 : 52 : switch (TREE_CODE (_q70))
12666 : : {
12667 : 42 : case POINTER_PLUS_EXPR:
12668 : 42 : {
12669 : 42 : tree _q80 = TREE_OPERAND (_q70, 0);
12670 : 42 : tree _q81 = TREE_OPERAND (_q70, 1);
12671 : 42 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12672 : : {
12673 : 27 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12674 : : {
12675 : 3 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12676 : : {
12677 : 3 : {
12678 : 3 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12679 : 3 : const enum tree_code cmp = LE_EXPR;
12680 : 3 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12681 : 3 : && TYPE_OVERFLOW_WRAPS (sizetype)
12682 : 6 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12683 : : )
12684 : : {
12685 : 3 : {
12686 : 3 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12687 : 3 : offset_int rhs = off * 2;
12688 : 3 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12689 : : )
12690 : : {
12691 : 3 : {
12692 : 3 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12693 : 3 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12694 : 3 : if (cmp == LT_EXPR
12695 : : )
12696 : : {
12697 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1947;
12698 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1947;
12699 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1947;
12700 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1947;
12701 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1947;
12702 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1947;
12703 : : {
12704 : : tree res_op0;
12705 : : {
12706 : : tree _o1[1], _r1;
12707 : : {
12708 : : tree _o2[2], _r2;
12709 : : _o2[0] = swap_p ? captures[6] : captures[1];
12710 : : _o2[1] = swap_p ? captures[2] : captures[4];
12711 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12712 : : _o1[0] = _r2;
12713 : : }
12714 : : if (TREE_TYPE (_o1[0]) != sizetype)
12715 : : {
12716 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12717 : : }
12718 : : else
12719 : : _r1 = _o1[0];
12720 : : res_op0 = _r1;
12721 : : }
12722 : : tree res_op1;
12723 : : res_op1 = rhs_tree;
12724 : : tree _r;
12725 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12726 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12727 : 3 : return _r;
12728 : : }
12729 : : next_after_fail1947:;
12730 : : }
12731 : : else
12732 : : {
12733 : 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1948;
12734 : 3 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1948;
12735 : 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1948;
12736 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1948;
12737 : 3 : {
12738 : 3 : tree res_op0;
12739 : 3 : {
12740 : 3 : tree _o1[1], _r1;
12741 : 3 : {
12742 : 3 : tree _o2[2], _r2;
12743 : 3 : {
12744 : 3 : tree _o3[2], _r3;
12745 : 3 : _o3[0] = swap_p ? captures[4] : captures[2];
12746 : 3 : _o3[1] = wide_int_to_tree (sizetype, off);
12747 : 3 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12748 : 3 : _o2[0] = _r3;
12749 : : }
12750 : 3 : _o2[1] = swap_p ? captures[2] : captures[4];
12751 : 3 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12752 : 3 : _o1[0] = _r2;
12753 : : }
12754 : 3 : if (TREE_TYPE (_o1[0]) != sizetype)
12755 : : {
12756 : 3 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12757 : : }
12758 : : else
12759 : : _r1 = _o1[0];
12760 : 3 : res_op0 = _r1;
12761 : : }
12762 : 3 : tree res_op1;
12763 : 3 : res_op1 = rhs_tree;
12764 : 3 : tree _r;
12765 : 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12766 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12767 : 3 : return _r;
12768 : : }
12769 : 0 : next_after_fail1948:;
12770 : : }
12771 : : }
12772 : : }
12773 : : }
12774 : : }
12775 : : }
12776 : : }
12777 : : }
12778 : : }
12779 : : break;
12780 : : }
12781 : : default:;
12782 : : }
12783 : : break;
12784 : : }
12785 : 0 : case GE_EXPR:
12786 : 0 : {
12787 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12788 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12789 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12790 : : {
12791 : 0 : switch (TREE_CODE (_q71))
12792 : : {
12793 : 0 : case POINTER_PLUS_EXPR:
12794 : 0 : {
12795 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12796 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12797 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12798 : : {
12799 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12800 : : {
12801 : 0 : {
12802 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12803 : 0 : const enum tree_code cmp = LE_EXPR;
12804 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12805 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12806 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12807 : : )
12808 : : {
12809 : 0 : {
12810 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12811 : 0 : offset_int rhs = off * 2;
12812 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12813 : : )
12814 : : {
12815 : 0 : {
12816 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12817 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12818 : 0 : if (cmp == LT_EXPR
12819 : : )
12820 : : {
12821 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1949;
12822 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1949;
12823 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1949;
12824 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1949;
12825 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1949;
12826 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1949;
12827 : : {
12828 : : tree res_op0;
12829 : : {
12830 : : tree _o1[1], _r1;
12831 : : {
12832 : : tree _o2[2], _r2;
12833 : : _o2[0] = swap_p ? captures[6] : captures[1];
12834 : : _o2[1] = swap_p ? captures[2] : captures[4];
12835 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12836 : : _o1[0] = _r2;
12837 : : }
12838 : : if (TREE_TYPE (_o1[0]) != sizetype)
12839 : : {
12840 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12841 : : }
12842 : : else
12843 : : _r1 = _o1[0];
12844 : : res_op0 = _r1;
12845 : : }
12846 : : tree res_op1;
12847 : : res_op1 = rhs_tree;
12848 : : tree _r;
12849 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12850 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
12851 : 0 : return _r;
12852 : : }
12853 : : next_after_fail1949:;
12854 : : }
12855 : : else
12856 : : {
12857 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1950;
12858 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1950;
12859 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1950;
12860 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1950;
12861 : 0 : {
12862 : 0 : tree res_op0;
12863 : 0 : {
12864 : 0 : tree _o1[1], _r1;
12865 : 0 : {
12866 : 0 : tree _o2[2], _r2;
12867 : 0 : {
12868 : 0 : tree _o3[2], _r3;
12869 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12870 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12871 : 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12872 : 0 : _o2[0] = _r3;
12873 : : }
12874 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12875 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12876 : 0 : _o1[0] = _r2;
12877 : : }
12878 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12879 : : {
12880 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12881 : : }
12882 : : else
12883 : : _r1 = _o1[0];
12884 : 0 : res_op0 = _r1;
12885 : : }
12886 : 0 : tree res_op1;
12887 : 0 : res_op1 = rhs_tree;
12888 : 0 : tree _r;
12889 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12890 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
12891 : 0 : return _r;
12892 : : }
12893 : 0 : next_after_fail1950:;
12894 : : }
12895 : : }
12896 : : }
12897 : : }
12898 : : }
12899 : : }
12900 : : }
12901 : : }
12902 : : break;
12903 : : }
12904 : : default:;
12905 : : }
12906 : : }
12907 : : break;
12908 : : }
12909 : : default:;
12910 : : }
12911 : : break;
12912 : : }
12913 : : default:;
12914 : : }
12915 : : break;
12916 : : }
12917 : : default:;
12918 : : }
12919 : : break;
12920 : : }
12921 : 1216269 : case GT_EXPR:
12922 : 1216269 : {
12923 : 1216269 : tree _q20 = TREE_OPERAND (_p0, 0);
12924 : 1216269 : tree _q21 = TREE_OPERAND (_p0, 1);
12925 : 1216269 : switch (TREE_CODE (_q21))
12926 : : {
12927 : 52 : case POINTER_PLUS_EXPR:
12928 : 52 : {
12929 : 52 : tree _q40 = TREE_OPERAND (_q21, 0);
12930 : 52 : tree _q41 = TREE_OPERAND (_q21, 1);
12931 : 52 : switch (TREE_CODE (_q41))
12932 : : {
12933 : 52 : case INTEGER_CST:
12934 : 52 : {
12935 : 52 : switch (TREE_CODE (_p1))
12936 : : {
12937 : 0 : case LT_EXPR:
12938 : 0 : {
12939 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12940 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12941 : 0 : switch (TREE_CODE (_q70))
12942 : : {
12943 : 0 : case POINTER_PLUS_EXPR:
12944 : 0 : {
12945 : 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12946 : 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12947 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12948 : : {
12949 : 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12950 : : {
12951 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12952 : : {
12953 : 0 : {
12954 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12955 : 0 : const enum tree_code cmp = LT_EXPR;
12956 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12957 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12958 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12959 : : )
12960 : : {
12961 : 0 : {
12962 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12963 : 0 : offset_int rhs = off * 2;
12964 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12965 : : )
12966 : : {
12967 : 0 : {
12968 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12969 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12970 : 0 : if (cmp == LT_EXPR
12971 : : )
12972 : : {
12973 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1951;
12974 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1951;
12975 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1951;
12976 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1951;
12977 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1951;
12978 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1951;
12979 : 0 : {
12980 : 0 : tree res_op0;
12981 : 0 : {
12982 : 0 : tree _o1[1], _r1;
12983 : 0 : {
12984 : 0 : tree _o2[2], _r2;
12985 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12986 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12987 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12988 : 0 : _o1[0] = _r2;
12989 : : }
12990 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12991 : : {
12992 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12993 : : }
12994 : : else
12995 : : _r1 = _o1[0];
12996 : 0 : res_op0 = _r1;
12997 : : }
12998 : 0 : tree res_op1;
12999 : 0 : res_op1 = rhs_tree;
13000 : 0 : tree _r;
13001 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
13002 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
13003 : 0 : return _r;
13004 : : }
13005 : 0 : next_after_fail1951:;
13006 : : }
13007 : : else
13008 : : {
13009 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1952;
13010 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1952;
13011 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1952;
13012 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1952;
13013 : : {
13014 : : tree res_op0;
13015 : : {
13016 : : tree _o1[1], _r1;
13017 : : {
13018 : : tree _o2[2], _r2;
13019 : : {
13020 : : tree _o3[2], _r3;
13021 : : _o3[0] = swap_p ? captures[4] : captures[2];
13022 : : _o3[1] = wide_int_to_tree (sizetype, off);
13023 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
13024 : : _o2[0] = _r3;
13025 : : }
13026 : : _o2[1] = swap_p ? captures[2] : captures[4];
13027 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
13028 : : _o1[0] = _r2;
13029 : : }
13030 : : if (TREE_TYPE (_o1[0]) != sizetype)
13031 : : {
13032 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
13033 : : }
13034 : : else
13035 : : _r1 = _o1[0];
13036 : : res_op0 = _r1;
13037 : : }
13038 : : tree res_op1;
13039 : : res_op1 = rhs_tree;
13040 : : tree _r;
13041 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
13042 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
13043 : : return _r;
13044 : : }
13045 : : next_after_fail1952:;
13046 : : }
13047 : : }
13048 : : }
13049 : : }
13050 : : }
13051 : : }
13052 : : }
13053 : : }
13054 : : }
13055 : : break;
13056 : : }
13057 : : default:;
13058 : : }
13059 : : break;
13060 : : }
13061 : 20 : case GT_EXPR:
13062 : 20 : {
13063 : 20 : tree _q70 = TREE_OPERAND (_p1, 0);
13064 : 20 : tree _q71 = TREE_OPERAND (_p1, 1);
13065 : 20 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
13066 : : {
13067 : 0 : switch (TREE_CODE (_q71))
13068 : : {
13069 : 0 : case POINTER_PLUS_EXPR:
13070 : 0 : {
13071 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
13072 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
13073 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
13074 : : {
13075 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
13076 : : {
13077 : 0 : {
13078 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
13079 : 0 : const enum tree_code cmp = LT_EXPR;
13080 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
13081 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
13082 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
13083 : : )
13084 : : {
13085 : 0 : {
13086 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
13087 : 0 : offset_int rhs = off * 2;
13088 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
13089 : : )
13090 : : {
13091 : 0 : {
13092 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
13093 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
13094 : 0 : if (cmp == LT_EXPR
13095 : : )
13096 : : {
13097 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1953;
13098 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1953;
13099 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1953;
13100 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1953;
13101 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1953;
13102 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1953;
13103 : 0 : {
13104 : 0 : tree res_op0;
13105 : 0 : {
13106 : 0 : tree _o1[1], _r1;
13107 : 0 : {
13108 : 0 : tree _o2[2], _r2;
13109 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
13110 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
13111 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
13112 : 0 : _o1[0] = _r2;
13113 : : }
13114 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
13115 : : {
13116 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
13117 : : }
13118 : : else
13119 : : _r1 = _o1[0];
13120 : 0 : res_op0 = _r1;
13121 : : }
13122 : 0 : tree res_op1;
13123 : 0 : res_op1 = rhs_tree;
13124 : 0 : tree _r;
13125 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
13126 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
13127 : 0 : return _r;
13128 : : }
13129 : 0 : next_after_fail1953:;
13130 : : }
13131 : : else
13132 : : {
13133 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1954;
13134 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1954;
13135 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1954;
13136 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1954;
13137 : : {
13138 : : tree res_op0;
13139 : : {
13140 : : tree _o1[1], _r1;
13141 : : {
13142 : : tree _o2[2], _r2;
13143 : : {
13144 : : tree _o3[2], _r3;
13145 : : _o3[0] = swap_p ? captures[4] : captures[2];
13146 : : _o3[1] = wide_int_to_tree (sizetype, off);
13147 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
13148 : : _o2[0] = _r3;
13149 : : }
13150 : : _o2[1] = swap_p ? captures[2] : captures[4];
13151 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
13152 : : _o1[0] = _r2;
13153 : : }
13154 : : if (TREE_TYPE (_o1[0]) != sizetype)
13155 : : {
13156 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
13157 : : }
13158 : : else
13159 : : _r1 = _o1[0];
13160 : : res_op0 = _r1;
13161 : : }
13162 : : tree res_op1;
13163 : : res_op1 = rhs_tree;
13164 : : tree _r;
13165 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
13166 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
13167 : : return _r;
13168 : : }
13169 : : next_after_fail1954:;
13170 : : }
13171 : : }
13172 : : }
13173 : : }
13174 : : }
13175 : : }
13176 : : }
13177 : : }
13178 : : break;
13179 : : }
13180 : : default:;
13181 : : }
13182 : : }
13183 : : break;
13184 : : }
13185 : : default:;
13186 : : }
13187 : : break;
13188 : : }
13189 : : default:;
13190 : : }
13191 : : break;
13192 : : }
13193 : : default:;
13194 : : }
13195 : : break;
13196 : : }
13197 : : default:;
13198 : : }
13199 : : return NULL_TREE;
13200 : : }
13201 : : #pragma GCC diagnostic pop
|