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 : 1628261 : tree_power_of_two_cand (tree t, tree *res_ops)
11 : : {
12 : 1628261 : const tree type = TREE_TYPE (t);
13 : 1628261 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 : 1628261 : if (TREE_SIDE_EFFECTS (t)) return false;
15 : 1627555 : switch (TREE_CODE (t))
16 : : {
17 : 1365661 : case INTEGER_CST:
18 : 1365661 : {
19 : 1365661 : {
20 : 1365661 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 : 1365661 : {
22 : 1365661 : res_ops[0] = captures[0];
23 : 1365661 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
24 : : return true;
25 : : }
26 : : }
27 : 16 : break;
28 : : }
29 : 16 : case LSHIFT_EXPR:
30 : 16 : {
31 : 16 : tree _p0 = TREE_OPERAND (t, 0);
32 : 16 : tree _p1 = TREE_OPERAND (t, 1);
33 : 16 : switch (TREE_CODE (_p0))
34 : : {
35 : 16 : case INTEGER_CST:
36 : 16 : {
37 : 16 : {
38 : 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
39 : 16 : {
40 : 16 : res_ops[0] = captures[0];
41 : 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 13, __FILE__, __LINE__, false);
42 : 16 : return true;
43 : : }
44 : : }
45 : : break;
46 : : }
47 : : default:;
48 : : }
49 : : break;
50 : : }
51 : : default:;
52 : : }
53 : : return false;
54 : : }
55 : :
56 : : bool
57 : 76937655 : tree_with_possible_nonzero_bits (tree t)
58 : : {
59 : 76937655 : const tree type = TREE_TYPE (t);
60 : 76937655 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
61 : 76937655 : if (TREE_SIDE_EFFECTS (t)) return false;
62 : 72102088 : switch (TREE_CODE (t))
63 : : {
64 : 2039733 : case BIT_AND_EXPR:
65 : 2039733 : {
66 : 2039733 : tree _p0 = TREE_OPERAND (t, 0);
67 : 2039733 : tree _p1 = TREE_OPERAND (t, 1);
68 : 2039733 : if (tree_with_possible_nonzero_bits_1 (_p0))
69 : : {
70 : 983001 : {
71 : 983001 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
72 : 983001 : {
73 : 983001 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
74 : 983001 : return true;
75 : : }
76 : : }
77 : : }
78 : 1056732 : if (tree_with_possible_nonzero_bits_1 (_p1))
79 : : {
80 : 909663 : {
81 : 909663 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
82 : 909663 : {
83 : 909663 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
84 : 909663 : return true;
85 : : }
86 : : }
87 : : }
88 : : break;
89 : : }
90 : 70209424 : default:;
91 : : }
92 : 70209424 : if (tree_with_possible_nonzero_bits_1 (t))
93 : : {
94 : 41650578 : {
95 : 41650578 : tree captures[1] ATTRIBUTE_UNUSED = { t };
96 : 41650578 : {
97 : 41650578 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 36, __FILE__, __LINE__, false);
98 : 41650578 : return true;
99 : : }
100 : : }
101 : : }
102 : : return false;
103 : : }
104 : :
105 : : bool
106 : 0 : tree_unsigned_integer_narrow_clip (tree t, tree *res_ops)
107 : : {
108 : 0 : const tree type = TREE_TYPE (t);
109 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
110 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
111 : 0 : switch (TREE_CODE (t))
112 : : {
113 : 0 : CASE_CONVERT:
114 : 0 : {
115 : 0 : tree _p0 = TREE_OPERAND (t, 0);
116 : 0 : switch (TREE_CODE (_p0))
117 : : {
118 : 0 : case COND_EXPR:
119 : 0 : {
120 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
121 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
122 : 0 : tree _q22 = TREE_OPERAND (_p0, 2);
123 : 0 : switch (TREE_CODE (_q20))
124 : : {
125 : 0 : case GT_EXPR:
126 : 0 : {
127 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
128 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
129 : 0 : {
130 : 0 : tree _q30_pops[1];
131 : 0 : if (tree_nop_convert (_q30, _q30_pops))
132 : : {
133 : 0 : tree _q40 = _q30_pops[0];
134 : 0 : switch (TREE_CODE (_q31))
135 : : {
136 : 0 : case INTEGER_CST:
137 : 0 : {
138 : 0 : switch (TREE_CODE (_q21))
139 : : {
140 : 0 : case RSHIFT_EXPR:
141 : 0 : {
142 : 0 : tree _q70 = TREE_OPERAND (_q21, 0);
143 : 0 : tree _q71 = TREE_OPERAND (_q21, 1);
144 : 0 : {
145 : 0 : tree _q70_pops[1];
146 : 0 : if (tree_nop_convert (_q70, _q70_pops))
147 : : {
148 : 0 : tree _q80 = _q70_pops[0];
149 : 0 : switch (TREE_CODE (_q80))
150 : : {
151 : 0 : case NEGATE_EXPR:
152 : 0 : {
153 : 0 : tree _q90 = TREE_OPERAND (_q80, 0);
154 : 0 : {
155 : 0 : tree _q90_pops[1];
156 : 0 : if (tree_nop_convert (_q90, _q90_pops))
157 : : {
158 : 0 : tree _q100 = _q90_pops[0];
159 : 0 : if ((_q100 == _q40 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q40, 0) && types_match (_q100, _q40)))
160 : : {
161 : 0 : switch (TREE_CODE (_q71))
162 : : {
163 : 0 : case INTEGER_CST:
164 : 0 : {
165 : 0 : if ((_q22 == _q40 && ! TREE_SIDE_EFFECTS (_q22)) || (operand_equal_p (_q22, _q40, 0) && types_match (_q22, _q40)))
166 : : {
167 : 0 : {
168 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q31, _q21, _q71 };
169 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
170 : : )
171 : : {
172 : 0 : if (! TYPE_UNSIGNED (TREE_TYPE (captures[0]))
173 : : )
174 : : {
175 : 0 : {
176 : 0 : unsigned itype_precision = TYPE_PRECISION (TREE_TYPE (captures[0]));
177 : 0 : unsigned otype_precision = TYPE_PRECISION (type);
178 : 0 : wide_int trunc_max = wi::mask (otype_precision, false, itype_precision);
179 : 0 : wide_int int_cst_1 = wi::to_wide (captures[1], itype_precision);
180 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3], itype_precision);
181 : 0 : wide_int shift_amount = wi::uhwi (itype_precision - 1,
182 : 0 : itype_precision);
183 : 0 : int cmp = 0;
184 : 0 : cmp = wi::cmp (int_cst_2, shift_amount, TYPE_SIGN (TREE_TYPE (captures[0])));
185 : 0 : if (otype_precision < itype_precision && wi::eq_p (trunc_max,
186 : 0 : int_cst_1) && (cmp >= 0)
187 : : )
188 : : {
189 : 0 : {
190 : 0 : res_ops[0] = captures[0];
191 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 69, __FILE__, __LINE__, false);
192 : 0 : return true;
193 : : }
194 : : }
195 : 0 : }
196 : : }
197 : : }
198 : : }
199 : : }
200 : : break;
201 : : }
202 : : default:;
203 : : }
204 : : }
205 : : }
206 : : }
207 : 0 : break;
208 : : }
209 : : default:;
210 : : }
211 : : }
212 : : }
213 : 0 : break;
214 : : }
215 : : default:;
216 : : }
217 : : break;
218 : : }
219 : : default:;
220 : : }
221 : : }
222 : : }
223 : 0 : switch (TREE_CODE (_q31))
224 : : {
225 : 0 : case INTEGER_CST:
226 : 0 : {
227 : 0 : switch (TREE_CODE (_q21))
228 : : {
229 : 0 : case RSHIFT_EXPR:
230 : 0 : {
231 : 0 : tree _q60 = TREE_OPERAND (_q21, 0);
232 : 0 : tree _q61 = TREE_OPERAND (_q21, 1);
233 : 0 : switch (TREE_CODE (_q60))
234 : : {
235 : 0 : case NEGATE_EXPR:
236 : 0 : {
237 : 0 : tree _q70 = TREE_OPERAND (_q60, 0);
238 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
239 : : {
240 : 0 : switch (TREE_CODE (_q61))
241 : : {
242 : 0 : case INTEGER_CST:
243 : 0 : {
244 : 0 : if ((_q22 == _q30 && ! TREE_SIDE_EFFECTS (_q22)) || (operand_equal_p (_q22, _q30, 0) && types_match (_q22, _q30)))
245 : : {
246 : 0 : {
247 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _q61 };
248 : 0 : if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)
249 : : )
250 : : {
251 : 0 : if (! TYPE_UNSIGNED (TREE_TYPE (captures[0]))
252 : : )
253 : : {
254 : 0 : {
255 : 0 : unsigned itype_precision = TYPE_PRECISION (TREE_TYPE (captures[0]));
256 : 0 : unsigned otype_precision = TYPE_PRECISION (type);
257 : 0 : wide_int trunc_max = wi::mask (otype_precision, false, itype_precision);
258 : 0 : wide_int int_cst_1 = wi::to_wide (captures[1], itype_precision);
259 : 0 : wide_int int_cst_2 = wi::to_wide (captures[3], itype_precision);
260 : 0 : wide_int shift_amount = wi::uhwi (itype_precision - 1,
261 : 0 : itype_precision);
262 : 0 : int cmp = 0;
263 : 0 : cmp = wi::cmp (int_cst_2, shift_amount, TYPE_SIGN (TREE_TYPE (captures[0])));
264 : 0 : if (otype_precision < itype_precision && wi::eq_p (trunc_max,
265 : 0 : int_cst_1) && (cmp >= 0)
266 : : )
267 : : {
268 : 0 : {
269 : 0 : res_ops[0] = captures[0];
270 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 69, __FILE__, __LINE__, false);
271 : 0 : return true;
272 : : }
273 : : }
274 : 0 : }
275 : : }
276 : : }
277 : : }
278 : : }
279 : : break;
280 : : }
281 : : default:;
282 : : }
283 : : }
284 : : break;
285 : : }
286 : : default:;
287 : : }
288 : : break;
289 : : }
290 : : default:;
291 : : }
292 : : break;
293 : : }
294 : : default:;
295 : : }
296 : : break;
297 : : }
298 : : default:;
299 : : }
300 : : break;
301 : : }
302 : : default:;
303 : : }
304 : : break;
305 : : }
306 : : default:;
307 : : }
308 : : return false;
309 : : }
310 : :
311 : : bool
312 : 0 : tree_ctz_table_index (tree t, tree *res_ops)
313 : : {
314 : 0 : const tree type = TREE_TYPE (t);
315 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
316 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
317 : 0 : switch (TREE_CODE (t))
318 : : {
319 : 0 : case RSHIFT_EXPR:
320 : 0 : {
321 : 0 : tree _p0 = TREE_OPERAND (t, 0);
322 : 0 : tree _p1 = TREE_OPERAND (t, 1);
323 : 0 : switch (TREE_CODE (_p0))
324 : : {
325 : 0 : case MULT_EXPR:
326 : 0 : {
327 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
328 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
329 : 0 : switch (TREE_CODE (_q20))
330 : : {
331 : 0 : case BIT_AND_EXPR:
332 : 0 : {
333 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
334 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
335 : 0 : switch (TREE_CODE (_q30))
336 : : {
337 : 0 : case NEGATE_EXPR:
338 : 0 : {
339 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
340 : 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
341 : : {
342 : 0 : switch (TREE_CODE (_q21))
343 : : {
344 : 0 : case INTEGER_CST:
345 : 0 : {
346 : 0 : switch (TREE_CODE (_p1))
347 : : {
348 : 0 : case INTEGER_CST:
349 : 0 : {
350 : 0 : {
351 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q21, _p1 };
352 : 0 : {
353 : 0 : res_ops[0] = captures[0];
354 : 0 : res_ops[1] = captures[1];
355 : 0 : res_ops[2] = captures[2];
356 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, false);
357 : 0 : return true;
358 : : }
359 : : }
360 : : break;
361 : : }
362 : : default:;
363 : : }
364 : : break;
365 : : }
366 : : default:;
367 : : }
368 : : }
369 : : break;
370 : : }
371 : 0 : default:;
372 : : }
373 : 0 : switch (TREE_CODE (_q31))
374 : : {
375 : 0 : case NEGATE_EXPR:
376 : 0 : {
377 : 0 : tree _q50 = TREE_OPERAND (_q31, 0);
378 : 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
379 : : {
380 : 0 : switch (TREE_CODE (_q21))
381 : : {
382 : 0 : case INTEGER_CST:
383 : 0 : {
384 : 0 : switch (TREE_CODE (_p1))
385 : : {
386 : 0 : case INTEGER_CST:
387 : 0 : {
388 : 0 : {
389 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p1 };
390 : 0 : {
391 : 0 : res_ops[0] = captures[0];
392 : 0 : res_ops[1] = captures[1];
393 : 0 : res_ops[2] = captures[2];
394 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, false);
395 : 0 : return true;
396 : : }
397 : : }
398 : : break;
399 : : }
400 : : default:;
401 : : }
402 : : break;
403 : : }
404 : : default:;
405 : : }
406 : : }
407 : : break;
408 : : }
409 : : default:;
410 : : }
411 : : break;
412 : : }
413 : : default:;
414 : : }
415 : : break;
416 : : }
417 : : default:;
418 : : }
419 : : break;
420 : : }
421 : : default:;
422 : : }
423 : : return false;
424 : : }
425 : :
426 : : bool
427 : 0 : tree_bitwise_induction_p (tree t, tree *res_ops)
428 : : {
429 : 0 : const tree type = TREE_TYPE (t);
430 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
431 : 0 : if (TREE_SIDE_EFFECTS (t)) return false;
432 : 0 : switch (TREE_CODE (t))
433 : : {
434 : 0 : case BIT_AND_EXPR:
435 : 0 : case BIT_IOR_EXPR:
436 : 0 : case BIT_XOR_EXPR:
437 : 0 : {
438 : 0 : tree _p0 = TREE_OPERAND (t, 0);
439 : 0 : tree _p1 = TREE_OPERAND (t, 1);
440 : 0 : {
441 : 0 : tree _p0_pops[1];
442 : 0 : if (tree_nop_convert (_p0, _p0_pops))
443 : : {
444 : 0 : tree _q20 = _p0_pops[0];
445 : 0 : switch (TREE_CODE (_q20))
446 : : {
447 : 0 : case BIT_NOT_EXPR:
448 : 0 : {
449 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
450 : 0 : switch (TREE_CODE (_q30))
451 : : {
452 : 0 : CASE_CONVERT:
453 : 0 : {
454 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
455 : 0 : switch (TREE_CODE (_q40))
456 : : {
457 : 0 : case LSHIFT_EXPR:
458 : 0 : {
459 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
460 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
461 : 0 : if (integer_onep (_q50))
462 : : {
463 : 0 : {
464 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q51, _p1, _q50 };
465 : 0 : {
466 : 0 : res_ops[0] = captures[0];
467 : 0 : res_ops[1] = captures[1];
468 : 0 : res_ops[2] = captures[2];
469 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
470 : 0 : return true;
471 : : }
472 : : }
473 : : }
474 : : break;
475 : : }
476 : : default:;
477 : : }
478 : : break;
479 : : }
480 : 0 : case LSHIFT_EXPR:
481 : 0 : {
482 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
483 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
484 : 0 : if (integer_onep (_q40))
485 : : {
486 : 0 : {
487 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _p1, _q40 };
488 : 0 : {
489 : 0 : res_ops[0] = captures[0];
490 : 0 : res_ops[1] = captures[1];
491 : 0 : res_ops[2] = captures[2];
492 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
493 : 0 : return true;
494 : : }
495 : : }
496 : : }
497 : : break;
498 : : }
499 : : default:;
500 : : }
501 : : break;
502 : : }
503 : 0 : CASE_CONVERT:
504 : 0 : {
505 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
506 : 0 : switch (TREE_CODE (_q30))
507 : : {
508 : 0 : case LSHIFT_EXPR:
509 : 0 : {
510 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
511 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
512 : 0 : if (integer_onep (_q40))
513 : : {
514 : 0 : {
515 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _p1, _q40 };
516 : 0 : {
517 : 0 : res_ops[0] = captures[0];
518 : 0 : res_ops[1] = captures[1];
519 : 0 : res_ops[2] = captures[2];
520 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
521 : 0 : return true;
522 : : }
523 : : }
524 : : }
525 : : break;
526 : : }
527 : : default:;
528 : : }
529 : : break;
530 : : }
531 : 0 : case LSHIFT_EXPR:
532 : 0 : {
533 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
534 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
535 : 0 : if (integer_onep (_q30))
536 : : {
537 : 0 : {
538 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q31, _p1, _q30 };
539 : 0 : {
540 : 0 : res_ops[0] = captures[0];
541 : 0 : res_ops[1] = captures[1];
542 : 0 : res_ops[2] = captures[2];
543 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
544 : 0 : return true;
545 : : }
546 : : }
547 : : }
548 : : break;
549 : : }
550 : : default:;
551 : : }
552 : : }
553 : : }
554 : 0 : {
555 : 0 : tree _p1_pops[1];
556 : 0 : if (tree_nop_convert (_p1, _p1_pops))
557 : : {
558 : 0 : tree _q30 = _p1_pops[0];
559 : 0 : switch (TREE_CODE (_q30))
560 : : {
561 : 0 : case BIT_NOT_EXPR:
562 : 0 : {
563 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
564 : 0 : switch (TREE_CODE (_q40))
565 : : {
566 : 0 : CASE_CONVERT:
567 : 0 : {
568 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
569 : 0 : switch (TREE_CODE (_q50))
570 : : {
571 : 0 : case LSHIFT_EXPR:
572 : 0 : {
573 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
574 : 0 : tree _q61 = TREE_OPERAND (_q50, 1);
575 : 0 : if (integer_onep (_q60))
576 : : {
577 : 0 : {
578 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q61, _p0, _q60 };
579 : 0 : {
580 : 0 : res_ops[0] = captures[0];
581 : 0 : res_ops[1] = captures[1];
582 : 0 : res_ops[2] = captures[2];
583 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
584 : 0 : return true;
585 : : }
586 : : }
587 : : }
588 : : break;
589 : : }
590 : : default:;
591 : : }
592 : : break;
593 : : }
594 : 0 : case LSHIFT_EXPR:
595 : 0 : {
596 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
597 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
598 : 0 : if (integer_onep (_q50))
599 : : {
600 : 0 : {
601 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q51, _p0, _q50 };
602 : 0 : {
603 : 0 : res_ops[0] = captures[0];
604 : 0 : res_ops[1] = captures[1];
605 : 0 : res_ops[2] = captures[2];
606 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
607 : 0 : return true;
608 : : }
609 : : }
610 : : }
611 : : break;
612 : : }
613 : : default:;
614 : : }
615 : : break;
616 : : }
617 : 0 : CASE_CONVERT:
618 : 0 : {
619 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
620 : 0 : switch (TREE_CODE (_q40))
621 : : {
622 : 0 : case LSHIFT_EXPR:
623 : 0 : {
624 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
625 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
626 : 0 : if (integer_onep (_q50))
627 : : {
628 : 0 : {
629 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q51, _p0, _q50 };
630 : 0 : {
631 : 0 : res_ops[0] = captures[0];
632 : 0 : res_ops[1] = captures[1];
633 : 0 : res_ops[2] = captures[2];
634 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
635 : 0 : return true;
636 : : }
637 : : }
638 : : }
639 : : break;
640 : : }
641 : : default:;
642 : : }
643 : : break;
644 : : }
645 : 0 : case LSHIFT_EXPR:
646 : 0 : {
647 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
648 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
649 : 0 : if (integer_onep (_q40))
650 : : {
651 : 0 : {
652 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q41, _p0, _q40 };
653 : 0 : {
654 : 0 : res_ops[0] = captures[0];
655 : 0 : res_ops[1] = captures[1];
656 : 0 : res_ops[2] = captures[2];
657 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
658 : 0 : return true;
659 : : }
660 : : }
661 : : }
662 : : break;
663 : : }
664 : : default:;
665 : : }
666 : : }
667 : : }
668 : 0 : switch (TREE_CODE (_p0))
669 : : {
670 : 0 : case BIT_NOT_EXPR:
671 : 0 : {
672 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
673 : 0 : switch (TREE_CODE (_q20))
674 : : {
675 : 0 : CASE_CONVERT:
676 : 0 : {
677 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
678 : 0 : switch (TREE_CODE (_q30))
679 : : {
680 : 0 : case LSHIFT_EXPR:
681 : 0 : {
682 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
683 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
684 : 0 : if (integer_onep (_q40))
685 : : {
686 : 0 : {
687 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q41, _p1, _q40 };
688 : 0 : {
689 : 0 : res_ops[0] = captures[0];
690 : 0 : res_ops[1] = captures[1];
691 : 0 : res_ops[2] = captures[2];
692 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
693 : 0 : return true;
694 : : }
695 : : }
696 : : }
697 : : break;
698 : : }
699 : : default:;
700 : : }
701 : : break;
702 : : }
703 : 0 : case LSHIFT_EXPR:
704 : 0 : {
705 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
706 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
707 : 0 : if (integer_onep (_q30))
708 : : {
709 : 0 : {
710 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _p1, _q30 };
711 : 0 : {
712 : 0 : res_ops[0] = captures[0];
713 : 0 : res_ops[1] = captures[1];
714 : 0 : res_ops[2] = captures[2];
715 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
716 : 0 : return true;
717 : : }
718 : : }
719 : : }
720 : : break;
721 : : }
722 : : default:;
723 : : }
724 : : break;
725 : : }
726 : 0 : default:;
727 : : }
728 : 0 : switch (TREE_CODE (_p1))
729 : : {
730 : 0 : case BIT_NOT_EXPR:
731 : 0 : {
732 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
733 : 0 : switch (TREE_CODE (_q30))
734 : : {
735 : 0 : CASE_CONVERT:
736 : 0 : {
737 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
738 : 0 : switch (TREE_CODE (_q40))
739 : : {
740 : 0 : case LSHIFT_EXPR:
741 : 0 : {
742 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
743 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
744 : 0 : if (integer_onep (_q50))
745 : : {
746 : 0 : {
747 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q51, _p0, _q50 };
748 : 0 : {
749 : 0 : res_ops[0] = captures[0];
750 : 0 : res_ops[1] = captures[1];
751 : 0 : res_ops[2] = captures[2];
752 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
753 : 0 : return true;
754 : : }
755 : : }
756 : : }
757 : : break;
758 : : }
759 : : default:;
760 : : }
761 : : break;
762 : : }
763 : 0 : case LSHIFT_EXPR:
764 : 0 : {
765 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
766 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
767 : 0 : if (integer_onep (_q40))
768 : : {
769 : 0 : {
770 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _p0, _q40 };
771 : 0 : {
772 : 0 : res_ops[0] = captures[0];
773 : 0 : res_ops[1] = captures[1];
774 : 0 : res_ops[2] = captures[2];
775 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
776 : 0 : return true;
777 : : }
778 : : }
779 : : }
780 : : break;
781 : : }
782 : : default:;
783 : : }
784 : : break;
785 : : }
786 : 0 : default:;
787 : : }
788 : 0 : switch (TREE_CODE (_p0))
789 : : {
790 : 0 : CASE_CONVERT:
791 : 0 : {
792 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
793 : 0 : switch (TREE_CODE (_q20))
794 : : {
795 : 0 : case LSHIFT_EXPR:
796 : 0 : {
797 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
798 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
799 : 0 : if (integer_onep (_q30))
800 : : {
801 : 0 : {
802 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _p1, _q30 };
803 : 0 : {
804 : 0 : res_ops[0] = captures[0];
805 : 0 : res_ops[1] = captures[1];
806 : 0 : res_ops[2] = captures[2];
807 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
808 : 0 : return true;
809 : : }
810 : : }
811 : : }
812 : : break;
813 : : }
814 : : default:;
815 : : }
816 : : break;
817 : : }
818 : 0 : default:;
819 : : }
820 : 0 : switch (TREE_CODE (_p1))
821 : : {
822 : 0 : CASE_CONVERT:
823 : 0 : {
824 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
825 : 0 : switch (TREE_CODE (_q30))
826 : : {
827 : 0 : case LSHIFT_EXPR:
828 : 0 : {
829 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
830 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
831 : 0 : if (integer_onep (_q40))
832 : : {
833 : 0 : {
834 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q41, _p0, _q40 };
835 : 0 : {
836 : 0 : res_ops[0] = captures[0];
837 : 0 : res_ops[1] = captures[1];
838 : 0 : res_ops[2] = captures[2];
839 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
840 : 0 : return true;
841 : : }
842 : : }
843 : : }
844 : : break;
845 : : }
846 : : default:;
847 : : }
848 : : break;
849 : : }
850 : 0 : default:;
851 : : }
852 : 0 : switch (TREE_CODE (_p0))
853 : : {
854 : 0 : case LSHIFT_EXPR:
855 : 0 : {
856 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
857 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
858 : 0 : if (integer_onep (_q20))
859 : : {
860 : 0 : {
861 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _p1, _q20 };
862 : 0 : {
863 : 0 : res_ops[0] = captures[0];
864 : 0 : res_ops[1] = captures[1];
865 : 0 : res_ops[2] = captures[2];
866 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
867 : 0 : return true;
868 : : }
869 : : }
870 : : }
871 : : break;
872 : : }
873 : 0 : default:;
874 : : }
875 : 0 : switch (TREE_CODE (_p1))
876 : : {
877 : 0 : case LSHIFT_EXPR:
878 : 0 : {
879 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
880 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
881 : 0 : if (integer_onep (_q30))
882 : : {
883 : 0 : {
884 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q31, _p0, _q30 };
885 : 0 : {
886 : 0 : res_ops[0] = captures[0];
887 : 0 : res_ops[1] = captures[1];
888 : 0 : res_ops[2] = captures[2];
889 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, false);
890 : 0 : return true;
891 : : }
892 : : }
893 : : }
894 : : break;
895 : : }
896 : : default:;
897 : : }
898 : : break;
899 : : }
900 : 0 : case BIT_NOT_EXPR:
901 : 0 : {
902 : 0 : tree _p0 = TREE_OPERAND (t, 0);
903 : 0 : switch (TREE_CODE (_p0))
904 : : {
905 : 0 : case BIT_XOR_EXPR:
906 : 0 : {
907 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
908 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
909 : 0 : switch (TREE_CODE (_q20))
910 : : {
911 : 0 : CASE_CONVERT:
912 : 0 : {
913 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
914 : 0 : switch (TREE_CODE (_q30))
915 : : {
916 : 0 : case LSHIFT_EXPR:
917 : 0 : {
918 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
919 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
920 : 0 : if (integer_onep (_q40))
921 : : {
922 : 0 : {
923 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q41, _q21, _q40 };
924 : 0 : {
925 : 0 : res_ops[0] = captures[0];
926 : 0 : res_ops[1] = captures[1];
927 : 0 : res_ops[2] = captures[2];
928 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
929 : 0 : return true;
930 : : }
931 : : }
932 : : }
933 : : break;
934 : : }
935 : : default:;
936 : : }
937 : : break;
938 : : }
939 : 0 : case LSHIFT_EXPR:
940 : 0 : {
941 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
942 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
943 : 0 : if (integer_onep (_q30))
944 : : {
945 : 0 : {
946 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q21, _q30 };
947 : 0 : {
948 : 0 : res_ops[0] = captures[0];
949 : 0 : res_ops[1] = captures[1];
950 : 0 : res_ops[2] = captures[2];
951 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
952 : 0 : return true;
953 : : }
954 : : }
955 : : }
956 : : break;
957 : : }
958 : : default:;
959 : : }
960 : : break;
961 : : }
962 : 0 : default:;
963 : : }
964 : 0 : {
965 : 0 : tree _p0_pops[1];
966 : 0 : if (tree_nop_convert (_p0, _p0_pops))
967 : : {
968 : 0 : tree _q20 = _p0_pops[0];
969 : 0 : switch (TREE_CODE (_q20))
970 : : {
971 : 0 : case BIT_XOR_EXPR:
972 : 0 : {
973 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
974 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
975 : 0 : switch (TREE_CODE (_q30))
976 : : {
977 : 0 : CASE_CONVERT:
978 : 0 : {
979 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
980 : 0 : switch (TREE_CODE (_q40))
981 : : {
982 : 0 : case LSHIFT_EXPR:
983 : 0 : {
984 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
985 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
986 : 0 : if (integer_onep (_q50))
987 : : {
988 : 0 : {
989 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q51, _q31, _q50 };
990 : 0 : {
991 : 0 : res_ops[0] = captures[0];
992 : 0 : res_ops[1] = captures[1];
993 : 0 : res_ops[2] = captures[2];
994 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
995 : 0 : return true;
996 : : }
997 : : }
998 : : }
999 : : break;
1000 : : }
1001 : : default:;
1002 : : }
1003 : : break;
1004 : : }
1005 : 0 : case LSHIFT_EXPR:
1006 : 0 : {
1007 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
1008 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
1009 : 0 : if (integer_onep (_q40))
1010 : : {
1011 : 0 : {
1012 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q41, _q31, _q40 };
1013 : 0 : {
1014 : 0 : res_ops[0] = captures[0];
1015 : 0 : res_ops[1] = captures[1];
1016 : 0 : res_ops[2] = captures[2];
1017 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 109, __FILE__, __LINE__, false);
1018 : 0 : return true;
1019 : : }
1020 : : }
1021 : : }
1022 : : break;
1023 : : }
1024 : : default:;
1025 : : }
1026 : : break;
1027 : : }
1028 : : default:;
1029 : : }
1030 : : }
1031 : : }
1032 : 0 : break;
1033 : : }
1034 : : default:;
1035 : : }
1036 : : return false;
1037 : : }
1038 : :
1039 : : tree
1040 : 557 : generic_simplify_23 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1041 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1042 : : {
1043 : 557 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1044 : 557 : if (!TYPE_SATURATING (type)
1045 : : )
1046 : : {
1047 : 557 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
1048 : 1114 : && !FIXED_POINT_TYPE_P (type)
1049 : : )
1050 : : {
1051 : 557 : if (!TYPE_OVERFLOW_TRAPS (type)
1052 : : )
1053 : : {
1054 : 557 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail317;
1055 : 557 : {
1056 : 557 : tree res_op0;
1057 : 557 : res_op0 = build_all_ones_cst (TREE_TYPE (captures[0]));
1058 : 557 : tree _r;
1059 : 557 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1060 : 557 : if (TREE_SIDE_EFFECTS (captures[0]))
1061 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1062 : 557 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 141, __FILE__, __LINE__, true);
1063 : 557 : return _r;
1064 : : }
1065 : 0 : next_after_fail317:;
1066 : : }
1067 : : }
1068 : : }
1069 : : return NULL_TREE;
1070 : : }
1071 : :
1072 : : tree
1073 : 2280355 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1074 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1075 : : const enum tree_code ARG_UNUSED (plusminus))
1076 : : {
1077 : 2280355 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1078 : 2280355 : if (!TYPE_SATURATING (type)
1079 : 2280355 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
1080 : : )
1081 : : {
1082 : 110 : if (!ANY_INTEGRAL_TYPE_P (type)
1083 : 2280126 : || TYPE_OVERFLOW_WRAPS (type)
1084 : 3993029 : || (INTEGRAL_TYPE_P (type)
1085 : 1712793 : && tree_expr_nonzero_p (captures[1])
1086 : 3197694 : && expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (type))))
1087 : : )
1088 : : {
1089 : 1484597 : if (single_use (captures[0]) || single_use (captures[3])
1090 : : )
1091 : : {
1092 : 1484597 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail319;
1093 : 1484597 : {
1094 : 1484597 : tree res_op0;
1095 : 1484597 : {
1096 : 1484597 : tree _o1[2], _r1;
1097 : 1484597 : _o1[0] = captures[2];
1098 : 1484597 : _o1[1] = captures[4];
1099 : 1484597 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1100 : 1484597 : res_op0 = _r1;
1101 : : }
1102 : 1484597 : tree res_op1;
1103 : 1484597 : res_op1 = captures[1];
1104 : 1484597 : tree _r;
1105 : 1484597 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1106 : 1484597 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 143, __FILE__, __LINE__, true);
1107 : 1484597 : return _r;
1108 : : }
1109 : 0 : next_after_fail319:;
1110 : : }
1111 : : else
1112 : : {
1113 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail320;
1114 : : {
1115 : : tree res_op0;
1116 : : {
1117 : : tree _o1[2], _r1;
1118 : : _o1[0] = captures[2];
1119 : : _o1[1] = captures[4];
1120 : : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1121 : : res_op0 = _r1;
1122 : : }
1123 : : tree res_op1;
1124 : : res_op1 = captures[1];
1125 : : tree _r;
1126 : : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1127 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
1128 : : return _r;
1129 : : }
1130 : : next_after_fail320:;
1131 : : }
1132 : : }
1133 : : }
1134 : : return NULL_TREE;
1135 : : }
1136 : :
1137 : : tree
1138 : 9 : generic_simplify_29 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1139 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1140 : : {
1141 : 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1142 : 9 : if (INTEGRAL_TYPE_P (type)
1143 : 9 : && (
1144 : :
1145 : 9 : || !TREE_SIDE_EFFECTS (captures[1]))
1146 : : )
1147 : : {
1148 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail324;
1149 : 2 : {
1150 : 2 : tree res_op0;
1151 : 2 : {
1152 : 2 : tree _o1[1], _r1;
1153 : 2 : _o1[0] = captures[2];
1154 : 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
1155 : : {
1156 : 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
1157 : : }
1158 : : else
1159 : : _r1 = _o1[0];
1160 : 2 : res_op0 = _r1;
1161 : : }
1162 : 2 : tree res_op1;
1163 : 2 : res_op1 = captures[1];
1164 : 2 : tree res_op2;
1165 : 2 : res_op2 = captures[0];
1166 : 2 : tree _r;
1167 : 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
1168 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 148, __FILE__, __LINE__, true);
1169 : 2 : return _r;
1170 : : }
1171 : 0 : next_after_fail324:;
1172 : : }
1173 : : return NULL_TREE;
1174 : : }
1175 : :
1176 : : tree
1177 : 20150 : generic_simplify_33 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1178 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1179 : : const enum tree_code ARG_UNUSED (op))
1180 : : {
1181 : 20150 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1182 : 20150 : if (flag_unsafe_math_optimizations
1183 : : )
1184 : : {
1185 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail329;
1186 : 12 : {
1187 : 12 : tree res_op0;
1188 : 12 : {
1189 : 12 : tree _o1[2], _r1;
1190 : 12 : _o1[0] = captures[0];
1191 : 12 : _o1[1] = captures[2];
1192 : 12 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1193 : 12 : res_op0 = _r1;
1194 : : }
1195 : 12 : tree res_op1;
1196 : 12 : res_op1 = captures[1];
1197 : 12 : tree _r;
1198 : 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1199 : 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 153, __FILE__, __LINE__, true);
1200 : 12 : return _r;
1201 : : }
1202 : 0 : next_after_fail329:;
1203 : : }
1204 : : return NULL_TREE;
1205 : : }
1206 : :
1207 : : tree
1208 : 4 : generic_simplify_36 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1209 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1210 : : const combined_fn ARG_UNUSED (POPCOUNT))
1211 : : {
1212 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1213 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail332;
1214 : 4 : {
1215 : 4 : tree res_op0;
1216 : 4 : {
1217 : 4 : tree _o1[1], _r1;
1218 : 4 : _o1[0] = captures[2];
1219 : 4 : _r1 = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, _o1[0]);
1220 : 4 : if (!_r1)
1221 : 0 : goto next_after_fail332;
1222 : 4 : res_op0 = _r1;
1223 : : }
1224 : 4 : tree res_op1;
1225 : 4 : {
1226 : 4 : tree _o1[1], _r1;
1227 : 4 : _o1[0] = captures[3];
1228 : 4 : _r1 = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, _o1[0]);
1229 : 4 : if (!_r1)
1230 : 0 : goto next_after_fail332;
1231 : 4 : res_op1 = _r1;
1232 : : }
1233 : 4 : tree _r;
1234 : 4 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
1235 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 156, __FILE__, __LINE__, true);
1236 : : return _r;
1237 : : }
1238 : : next_after_fail332:;
1239 : : return NULL_TREE;
1240 : : }
1241 : :
1242 : : tree
1243 : 1 : generic_simplify_41 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1244 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1245 : : {
1246 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1247 : 1 : if (INTEGRAL_TYPE_P (type)
1248 : : )
1249 : : {
1250 : 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail337;
1251 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail337;
1252 : 1 : {
1253 : 1 : tree res_op0;
1254 : 1 : res_op0 = unshare_expr (captures[1]);
1255 : 1 : tree res_op1;
1256 : 1 : {
1257 : 1 : tree _o1[2], _r1;
1258 : 1 : _o1[0] = captures[4];
1259 : 1 : _o1[1] = captures[1];
1260 : 1 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1261 : 1 : res_op1 = _r1;
1262 : : }
1263 : 1 : tree _r;
1264 : 1 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
1265 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 161, __FILE__, __LINE__, true);
1266 : 1 : return _r;
1267 : : }
1268 : : next_after_fail337:;
1269 : : }
1270 : : return NULL_TREE;
1271 : : }
1272 : :
1273 : : tree
1274 : 5 : generic_simplify_46 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1275 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1276 : : {
1277 : 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1278 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail342;
1279 : 5 : {
1280 : 5 : tree res_op0;
1281 : 5 : res_op0 = captures[1];
1282 : 5 : tree res_op1;
1283 : 5 : {
1284 : 5 : tree _o1[1], _r1;
1285 : 5 : _o1[0] = captures[2];
1286 : 5 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1287 : 5 : res_op1 = _r1;
1288 : : }
1289 : 5 : tree _r;
1290 : 5 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1291 : 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 166, __FILE__, __LINE__, true);
1292 : : return _r;
1293 : : }
1294 : 0 : next_after_fail342:;
1295 : 0 : return NULL_TREE;
1296 : : }
1297 : :
1298 : : tree
1299 : 173 : generic_simplify_51 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1300 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1301 : : {
1302 : 173 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1303 : 173 : if (!TYPE_SATURATING (type)
1304 : : )
1305 : : {
1306 : 173 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
1307 : 346 : && !FIXED_POINT_TYPE_P (type)
1308 : : )
1309 : : {
1310 : 0 : if (!ANY_INTEGRAL_TYPE_P (type)
1311 : 173 : || TYPE_OVERFLOW_WRAPS (type)
1312 : : )
1313 : : {
1314 : 97 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail347;
1315 : 97 : {
1316 : 97 : tree res_op0;
1317 : 97 : {
1318 : 97 : tree _o1[1], _r1;
1319 : 97 : _o1[0] = captures[1];
1320 : 97 : if (TREE_TYPE (_o1[0]) != type)
1321 : : {
1322 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
1323 : : }
1324 : : else
1325 : : _r1 = _o1[0];
1326 : 97 : res_op0 = _r1;
1327 : : }
1328 : 97 : tree _r;
1329 : 97 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
1330 : 97 : if (TREE_SIDE_EFFECTS (captures[0]))
1331 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1332 : 97 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 170, __FILE__, __LINE__, true);
1333 : 97 : return _r;
1334 : : }
1335 : 0 : next_after_fail347:;
1336 : : }
1337 : : else
1338 : : {
1339 : 76 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail348;
1340 : 76 : {
1341 : 76 : tree res_op0;
1342 : 76 : {
1343 : 76 : tree _o1[1], _r1;
1344 : 76 : _o1[0] = captures[1];
1345 : 76 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1346 : 76 : res_op0 = _r1;
1347 : : }
1348 : 76 : tree _r;
1349 : 76 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
1350 : 76 : if (TREE_SIDE_EFFECTS (captures[0]))
1351 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1352 : 76 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 171, __FILE__, __LINE__, true);
1353 : 76 : return _r;
1354 : : }
1355 : 0 : next_after_fail348:;
1356 : : }
1357 : : }
1358 : : }
1359 : : return NULL_TREE;
1360 : : }
1361 : :
1362 : : tree
1363 : 4 : generic_simplify_63 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1364 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1365 : : const enum tree_code ARG_UNUSED (log1),
1366 : : const enum tree_code ARG_UNUSED (log2),
1367 : : const combined_fn ARG_UNUSED (popcount))
1368 : : {
1369 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1370 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail365;
1371 : 4 : {
1372 : 4 : tree res_op0;
1373 : 4 : {
1374 : 4 : tree _o1[2], _r1;
1375 : 4 : _o1[0] = captures[2];
1376 : 4 : _o1[1] = captures[4];
1377 : 4 : _r1 = fold_build2_loc (loc, log2, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1378 : 4 : res_op0 = _r1;
1379 : : }
1380 : 4 : tree _r;
1381 : 4 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
1382 : 4 : if (!_r)
1383 : 0 : goto next_after_fail365;
1384 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
1385 : : return _r;
1386 : : }
1387 : : next_after_fail365:;
1388 : : return NULL_TREE;
1389 : : }
1390 : :
1391 : : tree
1392 : 15 : generic_simplify_66 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1393 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1394 : : const enum tree_code ARG_UNUSED (op))
1395 : : {
1396 : 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1397 : 15 : if (INTEGRAL_TYPE_P (type)
1398 : : )
1399 : : {
1400 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail368;
1401 : 15 : {
1402 : 15 : tree res_op0;
1403 : 15 : {
1404 : 15 : tree _o1[2], _r1;
1405 : 15 : _o1[0] = captures[1];
1406 : 15 : _o1[1] = captures[4];
1407 : 15 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1408 : 15 : res_op0 = _r1;
1409 : : }
1410 : 15 : tree res_op1;
1411 : 15 : res_op1 = captures[2];
1412 : 15 : tree _r;
1413 : 15 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1414 : 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 191, __FILE__, __LINE__, true);
1415 : 15 : return _r;
1416 : : }
1417 : 0 : next_after_fail368:;
1418 : : }
1419 : : return NULL_TREE;
1420 : : }
1421 : :
1422 : : tree
1423 : 0 : generic_simplify_72 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1424 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1425 : : {
1426 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1427 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail374;
1428 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail374;
1429 : 0 : {
1430 : 0 : tree _r;
1431 : 0 : _r = captures[2];
1432 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
1433 : : return _r;
1434 : : }
1435 : : next_after_fail374:;
1436 : : return NULL_TREE;
1437 : : }
1438 : :
1439 : : tree
1440 : 0 : generic_simplify_76 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1441 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1442 : : const enum tree_code ARG_UNUSED (bit_op))
1443 : : {
1444 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1445 : 0 : if (bit_op == BIT_AND_EXPR
1446 : : )
1447 : : {
1448 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail379;
1449 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail379;
1450 : 0 : {
1451 : 0 : tree _r;
1452 : 0 : _r = build_zero_cst (type);
1453 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 199, __FILE__, __LINE__, true);
1454 : 0 : return _r;
1455 : : }
1456 : : next_after_fail379:;
1457 : : }
1458 : : else
1459 : : {
1460 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail380;
1461 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail380;
1462 : 0 : {
1463 : 0 : tree _r;
1464 : 0 : _r = build_minus_one_cst (type);
1465 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 200, __FILE__, __LINE__, true);
1466 : 0 : return _r;
1467 : : }
1468 : : next_after_fail380:;
1469 : : }
1470 : : return NULL_TREE;
1471 : : }
1472 : :
1473 : : tree
1474 : 0 : generic_simplify_87 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1475 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1476 : : {
1477 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1478 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1479 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
1480 : : )
1481 : : {
1482 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail393;
1483 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail393;
1484 : 0 : {
1485 : 0 : tree _r;
1486 : 0 : _r = captures[2];
1487 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
1488 : 0 : return _r;
1489 : : }
1490 : : next_after_fail393:;
1491 : : }
1492 : : return NULL_TREE;
1493 : : }
1494 : :
1495 : : tree
1496 : 390 : generic_simplify_96 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1497 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1498 : : const enum tree_code ARG_UNUSED (op),
1499 : : const enum tree_code ARG_UNUSED (rop))
1500 : : {
1501 : 390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1502 : 390 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
1503 : 390 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
1504 : : )
1505 : : {
1506 : 390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail402;
1507 : 390 : {
1508 : 390 : tree res_op0;
1509 : 390 : {
1510 : 390 : tree _o1[1], _r1;
1511 : 390 : _o1[0] = captures[0];
1512 : 390 : if (TREE_TYPE (_o1[0]) != type)
1513 : : {
1514 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1515 : : }
1516 : : else
1517 : : _r1 = _o1[0];
1518 : 390 : res_op0 = _r1;
1519 : : }
1520 : 390 : tree res_op1;
1521 : 390 : {
1522 : 390 : tree _o1[2], _r1;
1523 : 390 : {
1524 : 390 : tree _o2[1], _r2;
1525 : 390 : _o2[0] = captures[1];
1526 : 390 : if (TREE_TYPE (_o2[0]) != type)
1527 : : {
1528 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1529 : : }
1530 : : else
1531 : : _r2 = _o2[0];
1532 : 390 : _o1[0] = _r2;
1533 : : }
1534 : 390 : {
1535 : 390 : tree _o2[1], _r2;
1536 : 390 : _o2[0] = captures[2];
1537 : 390 : if (TREE_TYPE (_o2[0]) != type)
1538 : : {
1539 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1540 : : }
1541 : : else
1542 : : _r2 = _o2[0];
1543 : 390 : _o1[1] = _r2;
1544 : : }
1545 : 390 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1546 : 390 : res_op1 = _r1;
1547 : : }
1548 : 390 : tree _r;
1549 : 390 : _r = fold_build2_loc (loc, rop, type, res_op0, res_op1);
1550 : 390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
1551 : 390 : return _r;
1552 : : }
1553 : 0 : next_after_fail402:;
1554 : : }
1555 : : return NULL_TREE;
1556 : : }
1557 : :
1558 : : tree
1559 : 375423 : generic_simplify_106 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1560 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1561 : : const enum tree_code ARG_UNUSED (bitop),
1562 : : const enum tree_code ARG_UNUSED (rbitop))
1563 : : {
1564 : 375423 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1565 : 375423 : {
1566 : 375423 : bool wascmp;
1567 : 375423 : if (bitwise_inverted_equal_p (captures[2], captures[0], wascmp)
1568 : 375423 : && (!wascmp || element_precision (type) == 1)
1569 : : )
1570 : : {
1571 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail416;
1572 : 12 : {
1573 : 12 : tree res_op0;
1574 : 12 : res_op0 = captures[2];
1575 : 12 : tree res_op1;
1576 : 12 : res_op1 = captures[1];
1577 : 12 : tree _r;
1578 : 12 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
1579 : 12 : if (TREE_SIDE_EFFECTS (captures[0]))
1580 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1581 : 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 221, __FILE__, __LINE__, true);
1582 : 12 : return _r;
1583 : : }
1584 : 0 : next_after_fail416:;
1585 : : }
1586 : : }
1587 : 375411 : return NULL_TREE;
1588 : : }
1589 : :
1590 : : tree
1591 : 0 : generic_simplify_112 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1592 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1593 : : const enum tree_code ARG_UNUSED (bitop),
1594 : : const enum tree_code ARG_UNUSED (rbitop))
1595 : : {
1596 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1597 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail422;
1598 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1599 : 0 : {
1600 : 0 : tree res_op0;
1601 : 0 : res_op0 = captures[0];
1602 : 0 : tree res_op1;
1603 : 0 : res_op1 = captures[2];
1604 : 0 : tree _r;
1605 : 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
1606 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 223, __FILE__, __LINE__, true);
1607 : : return _r;
1608 : : }
1609 : : next_after_fail422:;
1610 : : return NULL_TREE;
1611 : : }
1612 : :
1613 : : tree
1614 : 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1615 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1616 : : const enum tree_code ARG_UNUSED (op))
1617 : : {
1618 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1619 : 0 : if (INTEGRAL_TYPE_P (type)
1620 : 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
1621 : : )
1622 : : {
1623 : 0 : {
1624 : 0 : tree t = type;
1625 : 0 : if (!TYPE_OVERFLOW_WRAPS (t))
1626 : 0 : t = unsigned_type_for (t);
1627 : 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
1628 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail429;
1629 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail429;
1630 : 0 : {
1631 : 0 : tree res_op0;
1632 : 0 : {
1633 : 0 : tree _o1[2], _r1;
1634 : 0 : {
1635 : 0 : tree _o2[1], _r2;
1636 : 0 : _o2[0] = captures[2];
1637 : 0 : if (TREE_TYPE (_o2[0]) != t)
1638 : : {
1639 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
1640 : : }
1641 : : else
1642 : : _r2 = _o2[0];
1643 : 0 : _o1[0] = _r2;
1644 : : }
1645 : 0 : _o1[1] = wide_int_to_tree (t, c);
1646 : 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
1647 : 0 : res_op0 = _r1;
1648 : : }
1649 : 0 : tree _r;
1650 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1651 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
1652 : 0 : return _r;
1653 : : }
1654 : 0 : next_after_fail429:;
1655 : 0 : }
1656 : : }
1657 : : return NULL_TREE;
1658 : : }
1659 : :
1660 : : tree
1661 : 300 : generic_simplify_123 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1662 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1663 : : {
1664 : 300 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1665 : 300 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail439;
1666 : 300 : {
1667 : 300 : if (! tree_invariant_p (captures[1])) goto next_after_fail439;
1668 : 0 : tree res_op0;
1669 : 0 : {
1670 : 0 : tree _o1[2], _r1;
1671 : 0 : {
1672 : 0 : tree _o2[2], _r2;
1673 : 0 : _o2[0] = unshare_expr (captures[1]);
1674 : 0 : _o2[1] = captures[4];
1675 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1676 : 0 : _o1[0] = _r2;
1677 : : }
1678 : 0 : _o1[1] = captures[2];
1679 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1680 : 0 : res_op0 = _r1;
1681 : : }
1682 : 0 : tree res_op1;
1683 : 0 : res_op1 = captures[1];
1684 : 0 : tree _r;
1685 : 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1686 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 239, __FILE__, __LINE__, true);
1687 : : return _r;
1688 : : }
1689 : : next_after_fail439:;
1690 : : return NULL_TREE;
1691 : : }
1692 : :
1693 : : tree
1694 : 0 : generic_simplify_132 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1695 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1696 : : const enum tree_code ARG_UNUSED (cmp))
1697 : : {
1698 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1699 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail467;
1700 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail467;
1701 : 0 : {
1702 : 0 : tree res_op0;
1703 : 0 : {
1704 : 0 : tree _o1[2], _r1;
1705 : 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
1706 : 0 : _o1[1] = captures[2];
1707 : 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
1708 : 0 : res_op0 = _r1;
1709 : : }
1710 : 0 : tree res_op1;
1711 : 0 : res_op1 = captures[3];
1712 : 0 : tree _r;
1713 : 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
1714 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 260, __FILE__, __LINE__, true);
1715 : : return _r;
1716 : : }
1717 : : next_after_fail467:;
1718 : : return NULL_TREE;
1719 : : }
1720 : :
1721 : : tree
1722 : 0 : generic_simplify_134 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1723 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1724 : : {
1725 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1726 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail469;
1727 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail469;
1728 : 0 : {
1729 : 0 : tree _r;
1730 : 0 : _r = constant_boolean_node (true, type);
1731 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1732 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1733 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 261, __FILE__, __LINE__, true);
1734 : : return _r;
1735 : : }
1736 : : next_after_fail469:;
1737 : : return NULL_TREE;
1738 : : }
1739 : :
1740 : : tree
1741 : 148 : generic_simplify_138 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1742 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1743 : : const enum tree_code ARG_UNUSED (code2),
1744 : : const enum tree_code ARG_UNUSED (code1))
1745 : : {
1746 : 148 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1747 : 148 : if ((TREE_CODE (captures[2]) == INTEGER_CST
1748 : 124 : && TREE_CODE (captures[5]) == INTEGER_CST)
1749 : 148 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1750 : 1 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1751 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
1752 : 24 : && bitwise_equal_p (captures[2], captures[5]))
1753 : : )
1754 : : {
1755 : 124 : {
1756 : 124 : bool one_before = false;
1757 : 124 : bool one_after = false;
1758 : 124 : int cmp = 0;
1759 : 124 : bool allbits = true;
1760 : 124 : if (TREE_CODE (captures[2]) == INTEGER_CST
1761 : 124 : && TREE_CODE (captures[5]) == INTEGER_CST)
1762 : : {
1763 : 124 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
1764 : 124 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
1765 : 124 : auto t2 = wi::to_wide (captures[5]);
1766 : 124 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
1767 : 124 : if (cmp < 0
1768 : 124 : && t1 == t2 - 1)
1769 : : one_before = true;
1770 : 124 : if (cmp > 0
1771 : 124 : && t1 == t2 + 1)
1772 : : one_after = true;
1773 : : }
1774 : 124 : bool val;
1775 : 124 : switch (code2)
1776 : : {
1777 : 115 : case EQ_EXPR: val = (cmp == 0); break;
1778 : 0 : case NE_EXPR: val = (cmp != 0); break;
1779 : 0 : case LT_EXPR: val = (cmp < 0); break;
1780 : 9 : case GT_EXPR: val = (cmp > 0); break;
1781 : 0 : case LE_EXPR: val = (cmp <= 0); break;
1782 : 0 : case GE_EXPR: val = (cmp >= 0); break;
1783 : 0 : default: gcc_unreachable ();
1784 : : }
1785 : 124 : if (code1 == EQ_EXPR && val
1786 : : )
1787 : : {
1788 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail480;
1789 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail480;
1790 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail480;
1791 : 0 : {
1792 : 0 : tree _r;
1793 : 0 : _r = captures[3];
1794 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 245, __FILE__, __LINE__, true);
1795 : 0 : return _r;
1796 : : }
1797 : : next_after_fail480:;
1798 : : }
1799 : : else
1800 : : {
1801 : 124 : if (code1 == NE_EXPR && val && allbits
1802 : : )
1803 : : {
1804 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail481;
1805 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail481;
1806 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail481;
1807 : 0 : {
1808 : 0 : tree _r;
1809 : 0 : _r = constant_boolean_node (true, type);
1810 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1811 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1812 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 246, __FILE__, __LINE__, true);
1813 : 0 : return _r;
1814 : : }
1815 : : next_after_fail481:;
1816 : : }
1817 : : else
1818 : : {
1819 : 124 : if (code1 == NE_EXPR && !val && allbits
1820 : : )
1821 : : {
1822 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail482;
1823 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail482;
1824 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1825 : 0 : {
1826 : 0 : tree _r;
1827 : 0 : _r = captures[0];
1828 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1829 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1830 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 247, __FILE__, __LINE__, true);
1831 : 0 : return _r;
1832 : : }
1833 : : next_after_fail482:;
1834 : : }
1835 : : else
1836 : : {
1837 : 124 : if (code1 == EQ_EXPR
1838 : 124 : && code2 == GT_EXPR
1839 : 9 : && cmp == 0
1840 : 9 : && allbits
1841 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1842 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
1843 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1844 : : )
1845 : : {
1846 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail483;
1847 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail483;
1848 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail483;
1849 : 0 : {
1850 : 0 : tree res_op0;
1851 : 0 : res_op0 = captures[4];
1852 : 0 : tree res_op1;
1853 : 0 : res_op1 = captures[5];
1854 : 0 : tree _r;
1855 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1856 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 248, __FILE__, __LINE__, true);
1857 : 0 : return _r;
1858 : : }
1859 : : next_after_fail483:;
1860 : : }
1861 : : else
1862 : : {
1863 : 124 : if (code1 == EQ_EXPR
1864 : 124 : && code2 == LT_EXPR
1865 : 0 : && cmp == 0
1866 : 0 : && allbits
1867 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1868 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1869 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1870 : : )
1871 : : {
1872 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail484;
1873 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail484;
1874 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1875 : 0 : {
1876 : 0 : tree res_op0;
1877 : 0 : res_op0 = captures[4];
1878 : 0 : tree res_op1;
1879 : 0 : res_op1 = captures[5];
1880 : 0 : tree _r;
1881 : 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1882 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 249, __FILE__, __LINE__, true);
1883 : 0 : return _r;
1884 : : }
1885 : : next_after_fail484:;
1886 : : }
1887 : : else
1888 : : {
1889 : 124 : if (code1 == EQ_EXPR
1890 : 124 : && code2 == GE_EXPR
1891 : : && one_before
1892 : 0 : && allbits
1893 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1894 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
1895 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1896 : : )
1897 : : {
1898 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail485;
1899 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail485;
1900 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1901 : 0 : {
1902 : 0 : tree res_op0;
1903 : 0 : res_op0 = captures[4];
1904 : 0 : tree res_op1;
1905 : 0 : {
1906 : 0 : tree _o1[1], _r1;
1907 : 0 : _o1[0] = captures[2];
1908 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1909 : : {
1910 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1911 : : }
1912 : : else
1913 : : _r1 = _o1[0];
1914 : 0 : res_op1 = _r1;
1915 : : }
1916 : 0 : tree _r;
1917 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1918 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 250, __FILE__, __LINE__, true);
1919 : 0 : return _r;
1920 : : }
1921 : : next_after_fail485:;
1922 : : }
1923 : : else
1924 : : {
1925 : 124 : if (code1 == EQ_EXPR
1926 : 124 : && code2 == LE_EXPR
1927 : : && one_after
1928 : 0 : && allbits
1929 : 124 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1930 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1931 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1932 : : )
1933 : : {
1934 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail486;
1935 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail486;
1936 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail486;
1937 : 0 : {
1938 : 0 : tree res_op0;
1939 : 0 : res_op0 = captures[4];
1940 : 0 : tree res_op1;
1941 : 0 : {
1942 : 0 : tree _o1[1], _r1;
1943 : 0 : _o1[0] = captures[2];
1944 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1945 : : {
1946 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1947 : : }
1948 : : else
1949 : : _r1 = _o1[0];
1950 : 0 : res_op1 = _r1;
1951 : : }
1952 : 0 : tree _r;
1953 : 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1954 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 251, __FILE__, __LINE__, true);
1955 : 0 : return _r;
1956 : : }
1957 : : next_after_fail486:;
1958 : : }
1959 : : }
1960 : : }
1961 : : }
1962 : : }
1963 : : }
1964 : : }
1965 : : }
1966 : : }
1967 : : return NULL_TREE;
1968 : : }
1969 : :
1970 : : tree
1971 : 5 : generic_simplify_172 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1972 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1973 : : {
1974 : 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1975 : 10 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1976 : 5 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1977 : 10 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
1978 : : )
1979 : : {
1980 : 5 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail522;
1981 : 5 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail522;
1982 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail522;
1983 : 5 : {
1984 : 5 : tree res_op0;
1985 : 5 : {
1986 : 5 : tree _o1[2], _r1;
1987 : 5 : _o1[0] = captures[1];
1988 : 5 : _o1[1] = captures[3];
1989 : 5 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1990 : 5 : res_op0 = _r1;
1991 : : }
1992 : 5 : tree res_op1;
1993 : 5 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1994 : 5 : tree _r;
1995 : 5 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1996 : 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 290, __FILE__, __LINE__, true);
1997 : 5 : return _r;
1998 : : }
1999 : : next_after_fail522:;
2000 : : }
2001 : : return NULL_TREE;
2002 : : }
2003 : :
2004 : : tree
2005 : 0 : generic_simplify_179 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2006 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2007 : : const combined_fn ARG_UNUSED (copysigns))
2008 : : {
2009 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2010 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail530;
2011 : 0 : {
2012 : 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail530;
2013 : 0 : tree res_op0;
2014 : 0 : res_op0 = unshare_expr (captures[1]);
2015 : 0 : tree res_op1;
2016 : 0 : res_op1 = captures[1];
2017 : 0 : tree _r;
2018 : 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2019 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2020 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2021 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 296, __FILE__, __LINE__, true);
2022 : : return _r;
2023 : : }
2024 : : next_after_fail530:;
2025 : : return NULL_TREE;
2026 : : }
2027 : :
2028 : : tree
2029 : 35994 : generic_simplify_189 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2030 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2031 : : {
2032 : 35994 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2033 : 35994 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail542;
2034 : 35994 : {
2035 : 35994 : tree res_op0;
2036 : 35994 : res_op0 = captures[0];
2037 : 35994 : tree _r;
2038 : 35994 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2039 : 35994 : if (TREE_SIDE_EFFECTS (captures[2]))
2040 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2041 : 35994 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 304, __FILE__, __LINE__, true);
2042 : : return _r;
2043 : : }
2044 : 0 : next_after_fail542:;
2045 : 0 : return NULL_TREE;
2046 : : }
2047 : :
2048 : : tree
2049 : 117865 : generic_simplify_192 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2050 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2051 : : {
2052 : 117865 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2053 : 117865 : if (TREE_CODE (captures[3]) != INTEGER_CST
2054 : : && single_use (captures[0])
2055 : 117865 : && !integer_zerop (captures[2]) && !integer_minus_onep (captures[2])
2056 : : )
2057 : : {
2058 : 117835 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail546;
2059 : 117835 : {
2060 : 117835 : tree res_op0;
2061 : 117835 : {
2062 : 117835 : tree _o1[2], _r1;
2063 : 117835 : _o1[0] = captures[1];
2064 : 117835 : _o1[1] = captures[3];
2065 : 117835 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2066 : 117835 : res_op0 = _r1;
2067 : : }
2068 : 117835 : tree res_op1;
2069 : 117835 : res_op1 = captures[2];
2070 : 117835 : tree _r;
2071 : 117835 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2072 : 117835 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 308, __FILE__, __LINE__, true);
2073 : 117835 : return _r;
2074 : : }
2075 : 0 : next_after_fail546:;
2076 : : }
2077 : : return NULL_TREE;
2078 : : }
2079 : :
2080 : : tree
2081 : 2 : generic_simplify_199 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2082 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2083 : : const combined_fn ARG_UNUSED (POW))
2084 : : {
2085 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2086 : 2 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
2087 : : )
2088 : : {
2089 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail553;
2090 : 2 : {
2091 : 2 : tree res_op0;
2092 : 2 : {
2093 : 2 : tree _o1[2], _r1;
2094 : 2 : _o1[0] = captures[1];
2095 : 2 : _o1[1] = captures[4];
2096 : 2 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2097 : 2 : res_op0 = _r1;
2098 : : }
2099 : 2 : tree res_op1;
2100 : 2 : res_op1 = captures[2];
2101 : 2 : tree _r;
2102 : 2 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
2103 : 2 : if (!_r)
2104 : 0 : goto next_after_fail553;
2105 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 315, __FILE__, __LINE__, true);
2106 : 2 : return _r;
2107 : : }
2108 : : next_after_fail553:;
2109 : : }
2110 : : return NULL_TREE;
2111 : : }
2112 : :
2113 : : tree
2114 : 124 : generic_simplify_207 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2115 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2116 : : const enum tree_code ARG_UNUSED (op))
2117 : : {
2118 : 124 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2119 : 248 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2120 : 248 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
2121 : 124 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
2122 : : && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0])))
2123 : 124 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2124 : 372 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
2125 : : )
2126 : : {
2127 : 124 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail564;
2128 : 124 : {
2129 : 124 : tree res_op0;
2130 : 124 : res_op0 = captures[2];
2131 : 124 : tree res_op1;
2132 : 124 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
2133 : 124 : tree _r;
2134 : 124 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2135 : 124 : if (TREE_SIDE_EFFECTS (captures[3]))
2136 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
2137 : 124 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 326, __FILE__, __LINE__, true);
2138 : 124 : return _r;
2139 : : }
2140 : 0 : next_after_fail564:;
2141 : : }
2142 : : return NULL_TREE;
2143 : : }
2144 : :
2145 : : tree
2146 : 43 : generic_simplify_213 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2147 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2148 : : const enum tree_code ARG_UNUSED (op))
2149 : : {
2150 : 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2151 : 43 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
2152 : : )
2153 : : {
2154 : 43 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail583;
2155 : 43 : {
2156 : 43 : tree res_op0;
2157 : 43 : res_op0 = captures[1];
2158 : 43 : tree res_op1;
2159 : 43 : res_op1 = captures[3];
2160 : 43 : tree _r;
2161 : 43 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2162 : 43 : if (TREE_SIDE_EFFECTS (captures[2]))
2163 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2164 : 43 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 344, __FILE__, __LINE__, true);
2165 : 43 : return _r;
2166 : : }
2167 : 0 : next_after_fail583:;
2168 : : }
2169 : : return NULL_TREE;
2170 : : }
2171 : :
2172 : : tree
2173 : 3 : generic_simplify_219 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2174 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2175 : : const enum tree_code ARG_UNUSED (cmp))
2176 : : {
2177 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2178 : 3 : if (TREE_INT_CST_LOW (captures[1]) & 1
2179 : : )
2180 : : {
2181 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail589;
2182 : 2 : {
2183 : 2 : tree _r;
2184 : 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
2185 : 2 : if (TREE_SIDE_EFFECTS (captures[0]))
2186 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2187 : 2 : if (TREE_SIDE_EFFECTS (captures[1]))
2188 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2189 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 349, __FILE__, __LINE__, true);
2190 : 2 : return _r;
2191 : : }
2192 : 0 : next_after_fail589:;
2193 : : }
2194 : : return NULL_TREE;
2195 : : }
2196 : :
2197 : : tree
2198 : 725 : generic_simplify_224 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2199 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2200 : : const enum tree_code ARG_UNUSED (cmp))
2201 : : {
2202 : 725 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2203 : 725 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
2204 : 725 : TYPE_SIGN (TREE_TYPE (captures[0])))
2205 : : )
2206 : : {
2207 : 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail595;
2208 : 42 : {
2209 : 42 : tree _r;
2210 : 42 : _r = constant_boolean_node (cmp == NE_EXPR, type);
2211 : 42 : if (TREE_SIDE_EFFECTS (captures[0]))
2212 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2213 : 42 : if (TREE_SIDE_EFFECTS (captures[1]))
2214 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2215 : 42 : if (TREE_SIDE_EFFECTS (captures[2]))
2216 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2217 : 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 355, __FILE__, __LINE__, true);
2218 : 42 : return _r;
2219 : : }
2220 : 0 : next_after_fail595:;
2221 : : }
2222 : : else
2223 : : {
2224 : 683 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
2225 : 683 : TYPE_SIGN (TREE_TYPE (captures[0])))
2226 : : )
2227 : : {
2228 : 683 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail596;
2229 : 683 : {
2230 : 683 : tree res_op0;
2231 : 683 : res_op0 = captures[0];
2232 : 683 : tree res_op1;
2233 : 683 : res_op1 = captures[2];
2234 : 683 : tree _r;
2235 : 683 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2236 : 683 : if (TREE_SIDE_EFFECTS (captures[1]))
2237 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2238 : 683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 356, __FILE__, __LINE__, true);
2239 : 683 : return _r;
2240 : : }
2241 : 0 : next_after_fail596:;
2242 : : }
2243 : : }
2244 : : return NULL_TREE;
2245 : : }
2246 : :
2247 : : tree
2248 : 0 : generic_simplify_232 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2249 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2250 : : const enum tree_code ARG_UNUSED (rotate),
2251 : : const enum tree_code ARG_UNUSED (invrot),
2252 : : const enum tree_code ARG_UNUSED (cmp))
2253 : : {
2254 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2255 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail614;
2256 : 0 : {
2257 : 0 : tree res_op0;
2258 : 0 : res_op0 = captures[0];
2259 : 0 : tree res_op1;
2260 : 0 : res_op1 = captures[2];
2261 : 0 : tree _r;
2262 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2263 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2264 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2265 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 374, __FILE__, __LINE__, true);
2266 : : return _r;
2267 : : }
2268 : 0 : next_after_fail614:;
2269 : 0 : return NULL_TREE;
2270 : : }
2271 : :
2272 : : tree
2273 : 47 : generic_simplify_235 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2274 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2275 : : {
2276 : 47 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2277 : 47 : if (TREE_CODE (TREE_TYPE (captures[1])) != COMPLEX_TYPE
2278 : 47 : && (!VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[1])))
2279 : 7 : || !target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_DIV_EXPR,
2280 : : optab_vector)
2281 : 0 : || target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_MOD_EXPR,
2282 : : optab_vector))
2283 : : )
2284 : : {
2285 : 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail617;
2286 : 47 : {
2287 : 47 : tree res_op0;
2288 : 47 : {
2289 : 47 : tree _o1[2], _r1;
2290 : 47 : _o1[0] = captures[1];
2291 : 47 : _o1[1] = captures[2];
2292 : 47 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2293 : 47 : res_op0 = _r1;
2294 : : }
2295 : 47 : tree res_op1;
2296 : 47 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2297 : 47 : tree _r;
2298 : 47 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2299 : 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 377, __FILE__, __LINE__, true);
2300 : 47 : return _r;
2301 : : }
2302 : 0 : next_after_fail617:;
2303 : : }
2304 : : return NULL_TREE;
2305 : : }
2306 : :
2307 : : tree
2308 : 34097 : generic_simplify_242 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2309 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2310 : : const enum tree_code ARG_UNUSED (cmp),
2311 : : const enum tree_code ARG_UNUSED (scmp))
2312 : : {
2313 : 34097 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2314 : 34097 : if (integer_zerop (captures[2])
2315 : : )
2316 : : {
2317 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
2318 : 7 : {
2319 : 7 : tree res_op0;
2320 : 7 : res_op0 = captures[2];
2321 : 7 : tree res_op1;
2322 : 7 : res_op1 = captures[3];
2323 : 7 : tree _r;
2324 : 7 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2325 : 7 : if (TREE_SIDE_EFFECTS (captures[1]))
2326 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2327 : 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 384, __FILE__, __LINE__, true);
2328 : 7 : return _r;
2329 : : }
2330 : 0 : next_after_fail625:;
2331 : : }
2332 : : else
2333 : : {
2334 : 68180 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2335 : 68180 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2336 : 68180 : && single_use (captures[0])
2337 : : )
2338 : : {
2339 : 6411 : if (tree_int_cst_sgn (captures[2]) < 0
2340 : : )
2341 : : {
2342 : 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
2343 : 15 : {
2344 : 15 : tree res_op0;
2345 : 15 : res_op0 = captures[1];
2346 : 15 : tree res_op1;
2347 : 15 : res_op1 = captures[3];
2348 : 15 : tree _r;
2349 : 15 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
2350 : 15 : if (TREE_SIDE_EFFECTS (captures[2]))
2351 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2352 : 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 385, __FILE__, __LINE__, true);
2353 : 15 : return _r;
2354 : : }
2355 : 0 : next_after_fail626:;
2356 : : }
2357 : : else
2358 : : {
2359 : 6396 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail627;
2360 : 6396 : {
2361 : 6396 : tree res_op0;
2362 : 6396 : res_op0 = captures[1];
2363 : 6396 : tree res_op1;
2364 : 6396 : res_op1 = captures[3];
2365 : 6396 : tree _r;
2366 : 6396 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2367 : 6396 : if (TREE_SIDE_EFFECTS (captures[2]))
2368 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2369 : 6396 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 386, __FILE__, __LINE__, true);
2370 : 6396 : return _r;
2371 : : }
2372 : 0 : next_after_fail627:;
2373 : : }
2374 : : }
2375 : : }
2376 : : return NULL_TREE;
2377 : : }
2378 : :
2379 : : tree
2380 : 22 : generic_simplify_252 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2381 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2382 : : const combined_fn ARG_UNUSED (sq),
2383 : : const enum tree_code ARG_UNUSED (cmp))
2384 : : {
2385 : 22 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2386 : 22 : if (flag_unsafe_math_optimizations && ! flag_errno_math
2387 : : )
2388 : : {
2389 : 20 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
2390 : : )
2391 : : {
2392 : 2 : if (cmp == EQ_EXPR || cmp == LT_EXPR || cmp == LE_EXPR
2393 : : )
2394 : : {
2395 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail654;
2396 : 1 : {
2397 : 1 : tree _r;
2398 : 1 : _r = constant_boolean_node (false, type);
2399 : 1 : if (TREE_SIDE_EFFECTS (captures[0]))
2400 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2401 : 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2402 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2403 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 412, __FILE__, __LINE__, true);
2404 : 1 : return _r;
2405 : : }
2406 : 0 : next_after_fail654:;
2407 : 0 : }
2408 : : else
2409 : : {
2410 : 1 : if (cmp == NE_EXPR || !HONOR_NANS (captures[0])
2411 : : )
2412 : : {
2413 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail655;
2414 : 1 : {
2415 : 1 : tree _r;
2416 : 1 : _r = constant_boolean_node (true, type);
2417 : 1 : if (TREE_SIDE_EFFECTS (captures[0]))
2418 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2419 : 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2420 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2421 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 413, __FILE__, __LINE__, true);
2422 : 1 : return _r;
2423 : : }
2424 : 0 : next_after_fail655:;
2425 : : }
2426 : : else
2427 : : {
2428 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail656;
2429 : 0 : {
2430 : 0 : tree res_op0;
2431 : 0 : res_op0 = captures[0];
2432 : 0 : tree res_op1;
2433 : 0 : res_op1 = build_real (TREE_TYPE (captures[0]), dconst0);
2434 : 0 : tree _r;
2435 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2436 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2437 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2438 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 414, __FILE__, __LINE__, true);
2439 : 0 : return _r;
2440 : : }
2441 : 0 : next_after_fail656:;
2442 : : }
2443 : : }
2444 : : }
2445 : : else
2446 : : {
2447 : 18 : if (real_equal (TREE_REAL_CST_PTR (captures[1]), &dconst0)
2448 : : )
2449 : : {
2450 : 0 : if (cmp == LT_EXPR
2451 : : )
2452 : : {
2453 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail657;
2454 : 0 : {
2455 : 0 : tree _r;
2456 : 0 : _r = constant_boolean_node (false, type);
2457 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2458 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2459 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2460 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2461 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 415, __FILE__, __LINE__, true);
2462 : 0 : return _r;
2463 : : }
2464 : 0 : next_after_fail657:;
2465 : : }
2466 : : else
2467 : : {
2468 : 0 : if (cmp == GE_EXPR && !HONOR_NANS (captures[0])
2469 : : )
2470 : : {
2471 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail658;
2472 : 0 : {
2473 : 0 : tree _r;
2474 : 0 : _r = constant_boolean_node (true, type);
2475 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2476 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2477 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2478 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2479 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
2480 : 0 : return _r;
2481 : : }
2482 : 0 : next_after_fail658:;
2483 : : }
2484 : : else
2485 : : {
2486 : 0 : if (cmp == LE_EXPR
2487 : : )
2488 : : {
2489 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail659;
2490 : 0 : {
2491 : 0 : tree res_op0;
2492 : 0 : res_op0 = captures[0];
2493 : 0 : tree res_op1;
2494 : 0 : res_op1 = captures[1];
2495 : 0 : tree _r;
2496 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2497 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
2498 : 0 : return _r;
2499 : : }
2500 : 0 : next_after_fail659:;
2501 : : }
2502 : : else
2503 : : {
2504 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail660;
2505 : 0 : {
2506 : 0 : tree res_op0;
2507 : 0 : res_op0 = captures[0];
2508 : 0 : tree res_op1;
2509 : 0 : res_op1 = captures[1];
2510 : 0 : tree _r;
2511 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2512 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 418, __FILE__, __LINE__, true);
2513 : 0 : return _r;
2514 : : }
2515 : 0 : next_after_fail660:;
2516 : : }
2517 : : }
2518 : : }
2519 : : }
2520 : : else
2521 : : {
2522 : 18 : if ((cmp == LT_EXPR
2523 : : || cmp == LE_EXPR
2524 : : || cmp == GT_EXPR
2525 : 18 : || cmp == GE_EXPR)
2526 : 16 : && !REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
2527 : 34 : && !HONOR_SIGN_DEPENDENT_ROUNDING (TREE_TYPE (captures[0]))
2528 : : )
2529 : : {
2530 : 16 : {
2531 : 16 : REAL_VALUE_TYPE c2;
2532 : 16 : enum tree_code ncmp = cmp;
2533 : 16 : const real_format *fmt
2534 : 16 : = REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[0])));
2535 : 32 : real_arithmetic (&c2, MULT_EXPR,
2536 : 16 : &TREE_REAL_CST (captures[1]), &TREE_REAL_CST (captures[1]));
2537 : 16 : real_convert (&c2, fmt, &c2);
2538 : 16 : if (!REAL_VALUE_ISINF (c2))
2539 : : {
2540 : 13 : tree c3 = fold_const_call (CFN_SQRT, TREE_TYPE (captures[0]),
2541 : 13 : build_real (TREE_TYPE (captures[0]), c2));
2542 : 13 : if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST)
2543 : : ncmp = ERROR_MARK;
2544 : 13 : else if ((cmp == LT_EXPR || cmp == GE_EXPR)
2545 : 13 : && real_less (&TREE_REAL_CST (c3), &TREE_REAL_CST (captures[1])))
2546 : 4 : ncmp = cmp == LT_EXPR ? LE_EXPR : GT_EXPR;
2547 : 9 : else if ((cmp == LE_EXPR || cmp == GT_EXPR)
2548 : 13 : && real_less (&TREE_REAL_CST (captures[1]), &TREE_REAL_CST (c3)))
2549 : 1 : ncmp = cmp == LE_EXPR ? LT_EXPR : GE_EXPR;
2550 : : else
2551 : : {
2552 : 8 : REAL_VALUE_TYPE c2alt, tow;
2553 : 8 : if (cmp == LT_EXPR || cmp == GE_EXPR)
2554 : 5 : tow = dconst0;
2555 : : else
2556 : 3 : tow = dconstinf;
2557 : 8 : real_nextafter (&c2alt, fmt, &c2, &tow);
2558 : 8 : real_convert (&c2alt, fmt, &c2alt);
2559 : 8 : if (REAL_VALUE_ISINF (c2alt))
2560 : : ncmp = ERROR_MARK;
2561 : : else
2562 : : {
2563 : 8 : c3 = fold_const_call (CFN_SQRT, TREE_TYPE (captures[0]),
2564 : 8 : build_real (TREE_TYPE (captures[0]), c2alt));
2565 : 8 : if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST)
2566 : : ncmp = ERROR_MARK;
2567 : 8 : else if (real_equal (&TREE_REAL_CST (c3),
2568 : 8 : &TREE_REAL_CST (captures[1])))
2569 : 8 : c2 = c2alt;
2570 : : }
2571 : : }
2572 : : }
2573 : 12 : if (cmp == GT_EXPR || cmp == GE_EXPR
2574 : : )
2575 : : {
2576 : 5 : if (REAL_VALUE_ISINF (c2)
2577 : : )
2578 : : {
2579 : 1 : if (HONOR_INFINITIES (captures[0])
2580 : : )
2581 : : {
2582 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail661;
2583 : 0 : {
2584 : 0 : tree res_op0;
2585 : 0 : res_op0 = captures[0];
2586 : 0 : tree res_op1;
2587 : 0 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2588 : 0 : tree _r;
2589 : 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2590 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2591 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2592 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 419, __FILE__, __LINE__, true);
2593 : 14 : return _r;
2594 : : }
2595 : 0 : next_after_fail661:;
2596 : : }
2597 : : else
2598 : : {
2599 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail662;
2600 : 1 : {
2601 : 1 : tree _r;
2602 : 1 : _r = constant_boolean_node (false, type);
2603 : 1 : if (TREE_SIDE_EFFECTS (captures[0]))
2604 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2605 : 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2606 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2607 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 420, __FILE__, __LINE__, true);
2608 : 1 : return _r;
2609 : : }
2610 : 0 : next_after_fail662:;
2611 : : }
2612 : : }
2613 : : else
2614 : : {
2615 : 4 : if (ncmp != ERROR_MARK
2616 : : )
2617 : : {
2618 : 4 : if (ncmp == GE_EXPR
2619 : : )
2620 : : {
2621 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
2622 : 1 : {
2623 : 1 : tree res_op0;
2624 : 1 : res_op0 = captures[0];
2625 : 1 : tree res_op1;
2626 : 1 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2627 : 1 : tree _r;
2628 : 1 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2629 : 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2630 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2631 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
2632 : 1 : return _r;
2633 : : }
2634 : 0 : next_after_fail663:;
2635 : : }
2636 : : else
2637 : : {
2638 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail664;
2639 : 3 : {
2640 : 3 : tree res_op0;
2641 : 3 : res_op0 = captures[0];
2642 : 3 : tree res_op1;
2643 : 3 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2644 : 3 : tree _r;
2645 : 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2646 : 3 : if (TREE_SIDE_EFFECTS (captures[1]))
2647 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2648 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
2649 : 3 : return _r;
2650 : : }
2651 : 0 : next_after_fail664:;
2652 : : }
2653 : : }
2654 : : }
2655 : : }
2656 : : else
2657 : : {
2658 : 11 : if (REAL_VALUE_ISINF (c2)
2659 : : )
2660 : : {
2661 : 2 : if (! HONOR_NANS (captures[0]) && ! HONOR_INFINITIES (captures[0])
2662 : : )
2663 : : {
2664 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail665;
2665 : 1 : {
2666 : 1 : tree _r;
2667 : 1 : _r = constant_boolean_node (true, type);
2668 : 1 : if (TREE_SIDE_EFFECTS (captures[0]))
2669 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2670 : 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2671 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2672 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
2673 : 1 : return _r;
2674 : : }
2675 : 0 : next_after_fail665:;
2676 : : }
2677 : : else
2678 : : {
2679 : 1 : if (! HONOR_NANS (captures[0])
2680 : : )
2681 : : {
2682 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail666;
2683 : 0 : {
2684 : 0 : tree res_op0;
2685 : 0 : res_op0 = captures[0];
2686 : 0 : tree res_op1;
2687 : 0 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2688 : 0 : tree _r;
2689 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
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", 424, __FILE__, __LINE__, true);
2693 : 0 : return _r;
2694 : : }
2695 : 0 : next_after_fail666:;
2696 : : }
2697 : : else
2698 : : {
2699 : 1 : if (! HONOR_INFINITIES (captures[0])
2700 : : )
2701 : : {
2702 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail667;
2703 : 0 : {
2704 : 0 : tree res_op0;
2705 : 0 : res_op0 = captures[0];
2706 : 0 : tree res_op1;
2707 : 0 : res_op1 = build_real (TREE_TYPE (captures[0]), dconst0);
2708 : 0 : tree _r;
2709 : 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2710 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2711 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2712 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
2713 : 0 : return _r;
2714 : : }
2715 : 0 : next_after_fail667:;
2716 : : }
2717 : : else
2718 : : {
2719 : 1 : if (1
2720 : : )
2721 : : {
2722 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail668;
2723 : 1 : {
2724 : 1 : if (! tree_invariant_p (captures[0])) goto next_after_fail668;
2725 : 0 : tree res_op0;
2726 : 0 : {
2727 : 0 : tree _o1[2], _r1;
2728 : 0 : _o1[0] = unshare_expr (captures[0]);
2729 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
2730 : 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
2731 : 0 : res_op0 = _r1;
2732 : : }
2733 : 0 : tree res_op1;
2734 : 0 : {
2735 : 0 : tree _o1[2], _r1;
2736 : 0 : _o1[0] = captures[0];
2737 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), c2);
2738 : 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
2739 : 0 : res_op1 = _r1;
2740 : : }
2741 : 0 : tree _r;
2742 : 0 : _r = fold_build2_loc (loc, TRUTH_ANDIF_EXPR, type, res_op0, res_op1);
2743 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2744 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2745 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
2746 : 0 : return _r;
2747 : : }
2748 : 2 : next_after_fail668:;
2749 : : }
2750 : : }
2751 : : }
2752 : : }
2753 : : }
2754 : : else
2755 : : {
2756 : 9 : if (ncmp != ERROR_MARK && ! HONOR_NANS (captures[0])
2757 : : )
2758 : : {
2759 : 8 : if (ncmp == LT_EXPR
2760 : : )
2761 : : {
2762 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail669;
2763 : 4 : {
2764 : 4 : tree res_op0;
2765 : 4 : res_op0 = captures[0];
2766 : 4 : tree res_op1;
2767 : 4 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2768 : 4 : tree _r;
2769 : 4 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2770 : 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2771 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2772 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
2773 : 4 : return _r;
2774 : : }
2775 : 0 : next_after_fail669:;
2776 : : }
2777 : : else
2778 : : {
2779 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail670;
2780 : 4 : {
2781 : 4 : tree res_op0;
2782 : 4 : res_op0 = captures[0];
2783 : 4 : tree res_op1;
2784 : 4 : res_op1 = build_real (TREE_TYPE (captures[0]), c2);
2785 : 4 : tree _r;
2786 : 4 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
2787 : 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2788 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2789 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
2790 : 4 : return _r;
2791 : : }
2792 : 0 : next_after_fail670:;
2793 : : }
2794 : : }
2795 : : else
2796 : : {
2797 : 1 : if (ncmp != ERROR_MARK &&
2798 : : 1
2799 : : )
2800 : : {
2801 : 1 : if (ncmp == LT_EXPR
2802 : : )
2803 : : {
2804 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail671;
2805 : 1 : {
2806 : 1 : if (! tree_invariant_p (captures[0])) goto next_after_fail671;
2807 : 0 : tree res_op0;
2808 : 0 : {
2809 : 0 : tree _o1[2], _r1;
2810 : 0 : _o1[0] = unshare_expr (captures[0]);
2811 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
2812 : 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
2813 : 0 : res_op0 = _r1;
2814 : : }
2815 : 0 : tree res_op1;
2816 : 0 : {
2817 : 0 : tree _o1[2], _r1;
2818 : 0 : _o1[0] = captures[0];
2819 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), c2);
2820 : 0 : _r1 = fold_build2_loc (loc, LT_EXPR, type, _o1[0], _o1[1]);
2821 : 0 : res_op1 = _r1;
2822 : : }
2823 : 0 : tree _r;
2824 : 0 : _r = fold_build2_loc (loc, TRUTH_ANDIF_EXPR, type, res_op0, res_op1);
2825 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2826 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2827 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 429, __FILE__, __LINE__, true);
2828 : 0 : return _r;
2829 : : }
2830 : 2 : next_after_fail671:;
2831 : : }
2832 : : else
2833 : : {
2834 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail672;
2835 : 0 : {
2836 : 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail672;
2837 : 0 : tree res_op0;
2838 : 0 : {
2839 : 0 : tree _o1[2], _r1;
2840 : 0 : _o1[0] = unshare_expr (captures[0]);
2841 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
2842 : 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
2843 : 0 : res_op0 = _r1;
2844 : : }
2845 : 0 : tree res_op1;
2846 : 0 : {
2847 : 0 : tree _o1[2], _r1;
2848 : 0 : _o1[0] = captures[0];
2849 : 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), c2);
2850 : 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
2851 : 0 : res_op1 = _r1;
2852 : : }
2853 : 0 : tree _r;
2854 : 0 : _r = fold_build2_loc (loc, TRUTH_ANDIF_EXPR, type, res_op0, res_op1);
2855 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2856 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2857 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 430, __FILE__, __LINE__, true);
2858 : 0 : return _r;
2859 : : }
2860 : 2 : next_after_fail672:;
2861 : : }
2862 : : }
2863 : : }
2864 : : }
2865 : : }
2866 : : }
2867 : : }
2868 : : }
2869 : : }
2870 : : }
2871 : : return NULL_TREE;
2872 : : }
2873 : :
2874 : : tree
2875 : 0 : generic_simplify_299 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2876 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2877 : : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
2878 : : {
2879 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2880 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail777;
2881 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail777;
2882 : 0 : {
2883 : 0 : tree _r;
2884 : 0 : _r = captures[1];
2885 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 518, __FILE__, __LINE__, true);
2886 : : return _r;
2887 : : }
2888 : : next_after_fail777:;
2889 : : return NULL_TREE;
2890 : : }
2891 : :
2892 : : tree
2893 : 893 : generic_simplify_306 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2894 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2895 : : const enum tree_code ARG_UNUSED (div))
2896 : : {
2897 : 893 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2898 : 1786 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
2899 : 893 : && !integer_zerop (captures[0])
2900 : 1160 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
2901 : : )
2902 : : {
2903 : 111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail786;
2904 : 111 : {
2905 : 111 : tree _r;
2906 : 111 : _r = build_one_cst (type);
2907 : 111 : if (TREE_SIDE_EFFECTS (captures[0]))
2908 : 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2909 : 111 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 525, __FILE__, __LINE__, true);
2910 : 111 : return _r;
2911 : : }
2912 : 0 : next_after_fail786:;
2913 : : }
2914 : : return NULL_TREE;
2915 : : }
2916 : :
2917 : : tree
2918 : 22353 : generic_simplify_311 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2919 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2920 : : const enum tree_code ARG_UNUSED (div))
2921 : : {
2922 : 22353 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2923 : 22353 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2924 : : )
2925 : : {
2926 : 22227 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail792;
2927 : 22227 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2928 : 22227 : {
2929 : 22227 : tree res_op0;
2930 : 22227 : res_op0 = captures[0];
2931 : 22227 : tree res_op1;
2932 : 22227 : res_op1 = wide_int_to_tree
2933 : 44454 : (type, wi::mask (TYPE_PRECISION (type)
2934 : 22227 : - wi::exact_log2 (wi::to_wide (captures[1])),
2935 : 22227 : false, TYPE_PRECISION (type)));
2936 : 22227 : tree _r;
2937 : 22227 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2938 : 22227 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 531, __FILE__, __LINE__, true);
2939 : 22227 : return _r;
2940 : : }
2941 : : next_after_fail792:;
2942 : : }
2943 : : return NULL_TREE;
2944 : : }
2945 : :
2946 : : tree
2947 : 2380281 : generic_simplify_314 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2948 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2949 : : const enum tree_code ARG_UNUSED (floor_divmod),
2950 : : const enum tree_code ARG_UNUSED (trunc_divmod))
2951 : : {
2952 : 2380281 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2953 : 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
2954 : 2380281 : && TYPE_UNSIGNED (type)
2955 : : )
2956 : : {
2957 : 2371476 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail795;
2958 : 2371476 : {
2959 : 2371476 : tree res_op0;
2960 : 2371476 : res_op0 = captures[0];
2961 : 2371476 : tree res_op1;
2962 : 2371476 : res_op1 = captures[1];
2963 : 2371476 : tree _r;
2964 : 2371476 : _r = fold_build2_loc (loc, trunc_divmod, type, res_op0, res_op1);
2965 : 2371476 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 534, __FILE__, __LINE__, true);
2966 : 2371476 : return _r;
2967 : : }
2968 : 0 : next_after_fail795:;
2969 : : }
2970 : : return NULL_TREE;
2971 : : }
2972 : :
2973 : : tree
2974 : 2 : generic_simplify_322 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2975 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2976 : : {
2977 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2978 : 0 : if (FLOAT_TYPE_P (type)
2979 : 2 : && ! HONOR_NANS (type)
2980 : 2 : && ! HONOR_INFINITIES (type)
2981 : : )
2982 : : {
2983 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail803;
2984 : 0 : {
2985 : 0 : tree _r;
2986 : 0 : _r = build_minus_one_cst (type);
2987 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2988 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2989 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 542, __FILE__, __LINE__, true);
2990 : 0 : return _r;
2991 : : }
2992 : 0 : next_after_fail803:;
2993 : : }
2994 : : return NULL_TREE;
2995 : : }
2996 : :
2997 : : tree
2998 : 3 : generic_simplify_328 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2999 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3000 : : const combined_fn ARG_UNUSED (TANH),
3001 : : const combined_fn ARG_UNUSED (SINH),
3002 : : const combined_fn ARG_UNUSED (COSH))
3003 : : {
3004 : 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3005 : 3 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
3006 : : )
3007 : : {
3008 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail811;
3009 : 3 : {
3010 : 3 : tree res_op0;
3011 : 3 : res_op0 = build_one_cst (type);
3012 : 3 : tree res_op1;
3013 : 3 : {
3014 : 3 : tree _o1[1], _r1;
3015 : 3 : _o1[0] = captures[1];
3016 : 3 : _r1 = maybe_build_call_expr_loc (loc, COSH, TREE_TYPE (_o1[0]), 1, _o1[0]);
3017 : 3 : if (!_r1)
3018 : 0 : goto next_after_fail811;
3019 : 3 : res_op1 = _r1;
3020 : : }
3021 : 3 : tree _r;
3022 : 3 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3023 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 550, __FILE__, __LINE__, true);
3024 : 3 : return _r;
3025 : : }
3026 : : next_after_fail811:;
3027 : : }
3028 : : return NULL_TREE;
3029 : : }
3030 : :
3031 : : tree
3032 : 83 : generic_simplify_334 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3033 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3034 : : const enum tree_code ARG_UNUSED (cmp))
3035 : : {
3036 : 83 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3037 : 83 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3038 : : )
3039 : : {
3040 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail818;
3041 : 0 : {
3042 : 0 : tree _r;
3043 : 0 : _r = constant_boolean_node (cmp == LT_EXPR, type);
3044 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3045 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3046 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3047 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3048 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
3049 : 0 : return _r;
3050 : : }
3051 : 0 : next_after_fail818:;
3052 : : }
3053 : : return NULL_TREE;
3054 : : }
3055 : :
3056 : : tree
3057 : 437 : generic_simplify_340 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3058 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3059 : : const enum tree_code ARG_UNUSED (op))
3060 : : {
3061 : 437 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3062 : 874 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3063 : 874 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
3064 : : )
3065 : : {
3066 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail825;
3067 : 0 : {
3068 : 0 : tree res_op0;
3069 : 0 : res_op0 = captures[2];
3070 : 0 : tree res_op1;
3071 : 0 : res_op1 = captures[1];
3072 : 0 : tree _r;
3073 : 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
3074 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3075 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3076 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 564, __FILE__, __LINE__, true);
3077 : 0 : return _r;
3078 : : }
3079 : 0 : next_after_fail825:;
3080 : : }
3081 : : return NULL_TREE;
3082 : : }
3083 : :
3084 : : tree
3085 : 0 : generic_simplify_347 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3086 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3087 : : const enum tree_code ARG_UNUSED (cmp),
3088 : : const enum tree_code ARG_UNUSED (cmp2))
3089 : : {
3090 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3091 : 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
3092 : 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3093 : 0 : && wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
3094 : : )
3095 : : {
3096 : 0 : {
3097 : 0 : tree utype = TREE_TYPE (captures[2]);
3098 : 0 : wide_int denom = wi::to_wide (captures[1]);
3099 : 0 : wide_int right = wi::to_wide (captures[2]);
3100 : 0 : wide_int smax = wi::sdiv_trunc (wi::max_value (TREE_TYPE (captures[0])), denom);
3101 : 0 : wide_int smin = wi::sdiv_trunc (wi::min_value (TREE_TYPE (captures[0])), denom);
3102 : 0 : bool small = wi::leu_p (right, smax);
3103 : 0 : bool large = wi::geu_p (right, smin);
3104 : 0 : if (small || large
3105 : : )
3106 : : {
3107 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail834;
3108 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail834;
3109 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail834;
3110 : 0 : {
3111 : 0 : tree res_op0;
3112 : 0 : {
3113 : 0 : tree _o1[1], _r1;
3114 : 0 : _o1[0] = captures[0];
3115 : 0 : if (TREE_TYPE (_o1[0]) != utype)
3116 : : {
3117 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
3118 : : }
3119 : : else
3120 : : _r1 = _o1[0];
3121 : 0 : res_op0 = _r1;
3122 : : }
3123 : 0 : tree res_op1;
3124 : 0 : {
3125 : 0 : tree _o1[2], _r1;
3126 : 0 : _o1[0] = captures[2];
3127 : 0 : {
3128 : 0 : tree _o2[1], _r2;
3129 : 0 : _o2[0] = captures[1];
3130 : 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
3131 : : {
3132 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
3133 : : }
3134 : : else
3135 : : _r2 = _o2[0];
3136 : 0 : _o1[1] = _r2;
3137 : : }
3138 : 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3139 : 0 : res_op1 = _r1;
3140 : : }
3141 : 0 : tree _r;
3142 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
3143 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 573, __FILE__, __LINE__, true);
3144 : 0 : return _r;
3145 : : }
3146 : 0 : next_after_fail834:;
3147 : : }
3148 : : else
3149 : : {
3150 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail835;
3151 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail835;
3152 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail835;
3153 : 0 : {
3154 : 0 : tree res_op0;
3155 : 0 : res_op0 = captures[0];
3156 : 0 : tree res_op1;
3157 : 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
3158 : 0 : tree _r;
3159 : 0 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
3160 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 574, __FILE__, __LINE__, true);
3161 : 0 : return _r;
3162 : : }
3163 : 0 : next_after_fail835:;
3164 : : }
3165 : 0 : }
3166 : : }
3167 : : return NULL_TREE;
3168 : : }
3169 : :
3170 : : tree
3171 : 748376 : generic_simplify_360 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3172 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3173 : : const enum tree_code ARG_UNUSED (cmp),
3174 : : const enum tree_code ARG_UNUSED (icmp))
3175 : : {
3176 : 748376 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3177 : 1494954 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3178 : 748376 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3179 : 342818 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
3180 : 1839570 : && (wi::to_wide (captures[2])
3181 : 1776830 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
3182 : : )
3183 : : {
3184 : 4872 : {
3185 : 4872 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
3186 : 4872 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail885;
3187 : 4872 : {
3188 : 4872 : tree res_op0;
3189 : 4872 : {
3190 : 4872 : tree _o1[1], _r1;
3191 : 4872 : _o1[0] = captures[0];
3192 : 4872 : if (TREE_TYPE (_o1[0]) != stype)
3193 : : {
3194 : 4872 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
3195 : : }
3196 : : else
3197 : : _r1 = _o1[0];
3198 : 4872 : res_op0 = _r1;
3199 : : }
3200 : 4872 : tree res_op1;
3201 : 4872 : res_op1 = build_int_cst (stype, 0);
3202 : 4872 : tree _r;
3203 : 4872 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
3204 : 4872 : if (TREE_SIDE_EFFECTS (captures[1]))
3205 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3206 : 4872 : if (TREE_SIDE_EFFECTS (captures[2]))
3207 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3208 : 4872 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 607, __FILE__, __LINE__, true);
3209 : 4872 : return _r;
3210 : : }
3211 : 0 : next_after_fail885:;
3212 : : }
3213 : : }
3214 : : return NULL_TREE;
3215 : : }
3216 : :
3217 : : tree
3218 : 0 : generic_simplify_364 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3219 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3220 : : const enum tree_code ARG_UNUSED (cmp),
3221 : : const enum tree_code ARG_UNUSED (out))
3222 : : {
3223 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3224 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3225 : 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
3226 : : )
3227 : : {
3228 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail889;
3229 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail889;
3230 : 0 : {
3231 : 0 : tree res_op0;
3232 : 0 : {
3233 : 0 : tree _o1[1], _r1;
3234 : 0 : _o1[0] = captures[0];
3235 : 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
3236 : 0 : res_op0 = _r1;
3237 : : }
3238 : 0 : tree res_op1;
3239 : 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
3240 : 0 : tree _r;
3241 : 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
3242 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 593, __FILE__, __LINE__, true);
3243 : 0 : return _r;
3244 : : }
3245 : : next_after_fail889:;
3246 : : }
3247 : : return NULL_TREE;
3248 : : }
3249 : :
3250 : : tree
3251 : 1 : generic_simplify_368 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3252 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3253 : : const combined_fn ARG_UNUSED (logs),
3254 : : const combined_fn ARG_UNUSED (exps),
3255 : : const enum tree_code ARG_UNUSED (cmp))
3256 : : {
3257 : 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3258 : 1 : if (flag_unsafe_math_optimizations
3259 : : )
3260 : : {
3261 : 1 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3262 : 1 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
3263 : 1 : && ! flag_trapping_math
3264 : 2 : && ! flag_errno_math
3265 : : )
3266 : : {
3267 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail893;
3268 : 1 : {
3269 : 1 : tree res_op0;
3270 : 1 : res_op0 = captures[1];
3271 : 1 : tree res_op1;
3272 : 1 : {
3273 : 1 : tree _o1[1], _r1;
3274 : 1 : _o1[0] = captures[2];
3275 : 1 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3276 : 1 : if (!_r1)
3277 : 0 : goto next_after_fail893;
3278 : 1 : if (EXPR_P (_r1))
3279 : 1 : goto next_after_fail893;
3280 : 0 : res_op1 = _r1;
3281 : : }
3282 : 0 : tree _r;
3283 : 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
3284 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
3285 : 0 : return _r;
3286 : : }
3287 : : next_after_fail893:;
3288 : : }
3289 : : }
3290 : : return NULL_TREE;
3291 : : }
3292 : :
3293 : : tree
3294 : 316 : generic_simplify_375 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3295 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3296 : : const enum tree_code ARG_UNUSED (shiftrotate))
3297 : : {
3298 : 316 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3299 : 316 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail904;
3300 : 316 : {
3301 : 316 : tree _r;
3302 : 316 : _r = captures[0];
3303 : 316 : if (TREE_SIDE_EFFECTS (captures[1]))
3304 : 44 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3305 : 316 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 622, __FILE__, __LINE__, true);
3306 : : return _r;
3307 : : }
3308 : 0 : next_after_fail904:;
3309 : 0 : return NULL_TREE;
3310 : : }
3311 : :
3312 : : tree
3313 : 19 : generic_simplify_379 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3314 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3315 : : const enum tree_code ARG_UNUSED (bit_op),
3316 : : const enum tree_code ARG_UNUSED (shift))
3317 : : {
3318 : 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3319 : 19 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
3320 : : )
3321 : : {
3322 : 16 : {
3323 : 16 : tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]);
3324 : 16 : if (mask
3325 : : )
3326 : : {
3327 : 16 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail911;
3328 : 16 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail911;
3329 : 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail911;
3330 : 16 : {
3331 : 16 : tree res_op0;
3332 : 16 : {
3333 : 16 : tree _o1[2], _r1;
3334 : 16 : {
3335 : 16 : tree _o2[1], _r2;
3336 : 16 : _o2[0] = captures[2];
3337 : 16 : if (TREE_TYPE (_o2[0]) != type)
3338 : : {
3339 : 16 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
3340 : : }
3341 : : else
3342 : : _r2 = _o2[0];
3343 : 16 : _o1[0] = _r2;
3344 : : }
3345 : 16 : _o1[1] = captures[4];
3346 : 16 : _r1 = fold_build2_loc (loc, shift, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3347 : 16 : res_op0 = _r1;
3348 : : }
3349 : 16 : tree res_op1;
3350 : 16 : res_op1 = mask;
3351 : 16 : tree _r;
3352 : 16 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
3353 : 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 628, __FILE__, __LINE__, true);
3354 : 16 : return _r;
3355 : : }
3356 : : next_after_fail911:;
3357 : : }
3358 : : }
3359 : : }
3360 : : return NULL_TREE;
3361 : : }
3362 : :
3363 : : tree
3364 : 2062 : generic_simplify_384 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3365 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3366 : : const enum tree_code ARG_UNUSED (eqne))
3367 : : {
3368 : 2062 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3369 : 2062 : if ((integer_zerop (captures[1]) || integer_onep (captures[1]))
3370 : : )
3371 : : {
3372 : 2060 : if ((eqne == EQ_EXPR) ^ integer_zerop (captures[1])
3373 : : )
3374 : : {
3375 : 1501 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail920;
3376 : 1501 : {
3377 : 1501 : tree res_op0;
3378 : 1501 : res_op0 = captures[0];
3379 : 1501 : tree _r;
3380 : 1501 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3381 : 1501 : if (TREE_SIDE_EFFECTS (captures[1]))
3382 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3383 : 1501 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
3384 : 1501 : return _r;
3385 : : }
3386 : 0 : next_after_fail920:;
3387 : : }
3388 : : else
3389 : : {
3390 : 559 : if (types_match (type, TREE_TYPE (captures[0]))
3391 : : )
3392 : : {
3393 : 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail921;
3394 : 33 : {
3395 : 33 : tree res_op0;
3396 : 33 : res_op0 = captures[0];
3397 : 33 : tree res_op1;
3398 : 33 : res_op1 = build_one_cst (type);
3399 : 33 : tree _r;
3400 : 33 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
3401 : 33 : if (TREE_SIDE_EFFECTS (captures[1]))
3402 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3403 : 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
3404 : 33 : return _r;
3405 : : }
3406 : 0 : next_after_fail921:;
3407 : : }
3408 : : }
3409 : : }
3410 : : return NULL_TREE;
3411 : : }
3412 : :
3413 : : tree
3414 : 4121104 : generic_simplify_390 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3415 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
3416 : : {
3417 : 4121104 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3418 : 4121104 : if (INTEGRAL_TYPE_P (type)
3419 : 1869034 : && TYPE_PRECISION (type) == 1
3420 : 4135748 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
3421 : : )
3422 : : {
3423 : 14644 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail939;
3424 : 14644 : {
3425 : 14644 : tree res_op0;
3426 : 14644 : res_op0 = captures[0];
3427 : 14644 : tree _r;
3428 : 14644 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3429 : 14644 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
3430 : 14644 : return _r;
3431 : : }
3432 : 0 : next_after_fail939:;
3433 : : }
3434 : : return NULL_TREE;
3435 : : }
3436 : :
3437 : : tree
3438 : 0 : generic_simplify_392 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3439 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3440 : : const combined_fn ARG_UNUSED (coss),
3441 : : const combined_fn ARG_UNUSED (atans),
3442 : : const combined_fn ARG_UNUSED (sqrts),
3443 : : const combined_fn ARG_UNUSED (copysigns))
3444 : : {
3445 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3446 : 0 : {
3447 : 0 : REAL_VALUE_TYPE r_cst;
3448 : 0 : build_sinatan_real (&r_cst, type);
3449 : 0 : tree t_cst = build_real (type, r_cst);
3450 : 0 : tree t_one = build_one_cst (type);
3451 : 0 : tree t_zero = build_zero_cst (type);
3452 : 0 : if (SCALAR_FLOAT_TYPE_P (type)
3453 : : )
3454 : : {
3455 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail941;
3456 : 0 : {
3457 : 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail941;
3458 : 0 : tree res_op0;
3459 : 0 : {
3460 : 0 : tree _o1[2], _r1;
3461 : 0 : {
3462 : 0 : tree _o2[1], _r2;
3463 : 0 : _o2[0] = unshare_expr (captures[1]);
3464 : 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3465 : 0 : _o1[0] = _r2;
3466 : : }
3467 : 0 : _o1[1] = t_cst;
3468 : 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3469 : 0 : res_op0 = _r1;
3470 : : }
3471 : 0 : tree res_op1;
3472 : 0 : {
3473 : 0 : tree _o1[2], _r1;
3474 : 0 : _o1[0] = t_one;
3475 : 0 : {
3476 : 0 : tree _o2[1], _r2;
3477 : 0 : {
3478 : 0 : tree _o3[2], _r3;
3479 : 0 : {
3480 : 0 : tree _o4[2], _r4;
3481 : 0 : _o4[0] = unshare_expr (captures[1]);
3482 : 0 : _o4[1] = unshare_expr (captures[1]);
3483 : 0 : _r4 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
3484 : 0 : _o3[0] = _r4;
3485 : : }
3486 : 0 : _o3[1] = t_one;
3487 : 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3488 : 0 : _o2[0] = _r3;
3489 : : }
3490 : 0 : _r2 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o2[0]), 1, _o2[0]);
3491 : 0 : if (!_r2)
3492 : 0 : goto next_after_fail941;
3493 : 0 : _o1[1] = _r2;
3494 : : }
3495 : 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3496 : 0 : res_op1 = _r1;
3497 : : }
3498 : 0 : tree res_op2;
3499 : 0 : {
3500 : 0 : tree _o1[2], _r1;
3501 : 0 : _o1[0] = t_zero;
3502 : 0 : _o1[1] = captures[1];
3503 : 0 : _r1 = maybe_build_call_expr_loc (loc, copysigns, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
3504 : 0 : if (!_r1)
3505 : 0 : goto next_after_fail941;
3506 : 0 : res_op2 = _r1;
3507 : : }
3508 : 0 : tree _r;
3509 : 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
3510 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 645, __FILE__, __LINE__, true);
3511 : 0 : return _r;
3512 : : }
3513 : 0 : next_after_fail941:;
3514 : : }
3515 : : }
3516 : 0 : return NULL_TREE;
3517 : : }
3518 : :
3519 : : tree
3520 : 0 : generic_simplify_399 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3521 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3522 : : const combined_fn ARG_UNUSED (copysigns),
3523 : : const combined_fn ARG_UNUSED (hypots))
3524 : : {
3525 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3526 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail948;
3527 : 0 : {
3528 : 0 : tree res_op0;
3529 : 0 : res_op0 = captures[0];
3530 : 0 : tree res_op1;
3531 : 0 : res_op1 = captures[2];
3532 : 0 : tree _r;
3533 : 0 : _r = maybe_build_call_expr_loc (loc, hypots, type, 2, res_op0, res_op1);
3534 : 0 : if (!_r)
3535 : 0 : goto next_after_fail948;
3536 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3537 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3538 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 652, __FILE__, __LINE__, true);
3539 : : return _r;
3540 : : }
3541 : : next_after_fail948:;
3542 : : return NULL_TREE;
3543 : : }
3544 : :
3545 : : tree
3546 : 8 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3547 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3548 : : {
3549 : 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3550 : 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3551 : 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
3552 : : )
3553 : : {
3554 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail953;
3555 : 0 : {
3556 : 0 : tree res_op0;
3557 : 0 : res_op0 = captures[0];
3558 : 0 : tree res_op1;
3559 : 0 : res_op1 = captures[1];
3560 : 0 : tree _r;
3561 : 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3562 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 657, __FILE__, __LINE__, true);
3563 : 0 : return _r;
3564 : : }
3565 : 0 : next_after_fail953:;
3566 : : }
3567 : : return NULL_TREE;
3568 : : }
3569 : :
3570 : : tree
3571 : 2 : generic_simplify_409 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3572 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3573 : : {
3574 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3575 : 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail958;
3576 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail958;
3577 : 2 : {
3578 : 2 : tree res_op0;
3579 : 2 : res_op0 = captures[0];
3580 : 2 : tree res_op1;
3581 : 2 : {
3582 : 2 : tree _o1[1], _r1;
3583 : 2 : _o1[0] = captures[5];
3584 : 2 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3585 : 2 : res_op1 = _r1;
3586 : : }
3587 : 2 : tree _r;
3588 : 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
3589 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 662, __FILE__, __LINE__, true);
3590 : : return _r;
3591 : : }
3592 : : next_after_fail958:;
3593 : : return NULL_TREE;
3594 : : }
3595 : :
3596 : : tree
3597 : 63 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3598 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3599 : : {
3600 : 63 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3601 : 63 : if (INTEGRAL_TYPE_P (type)
3602 : 63 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3603 : 63 : && TREE_CODE (TREE_TYPE (captures[0])) != BOOLEAN_TYPE
3604 : 126 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3605 : 17 : || TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])))
3606 : : )
3607 : : {
3608 : 63 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail964;
3609 : 63 : {
3610 : 63 : tree res_op0;
3611 : 63 : {
3612 : 63 : tree _o1[1], _r1;
3613 : 63 : _o1[0] = captures[0];
3614 : 63 : if (TREE_TYPE (_o1[0]) != type)
3615 : : {
3616 : 20 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3617 : : }
3618 : : else
3619 : : _r1 = _o1[0];
3620 : 63 : res_op0 = _r1;
3621 : : }
3622 : 63 : tree res_op1;
3623 : 63 : res_op1 = captures[1];
3624 : 63 : tree _r;
3625 : 63 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3626 : 63 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 667, __FILE__, __LINE__, true);
3627 : 63 : return _r;
3628 : : }
3629 : 0 : next_after_fail964:;
3630 : : }
3631 : : return NULL_TREE;
3632 : : }
3633 : :
3634 : : tree
3635 : 0 : generic_simplify_422 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3636 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3637 : : const enum tree_code ARG_UNUSED (cmp))
3638 : : {
3639 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3640 : 0 : if (!canonicalize_math_p ()
3641 : : )
3642 : : {
3643 : 0 : if (INTEGRAL_TYPE_P (type)
3644 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3645 : : )
3646 : : {
3647 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail971;
3648 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail971;
3649 : 0 : {
3650 : 0 : tree res_op0;
3651 : 0 : res_op0 = captures[0];
3652 : 0 : tree res_op1;
3653 : 0 : res_op1 = captures[3];
3654 : 0 : tree res_op2;
3655 : 0 : res_op2 = build_zero_cst (type);
3656 : 0 : tree _r;
3657 : 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
3658 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
3659 : 0 : return _r;
3660 : : }
3661 : : next_after_fail971:;
3662 : : }
3663 : : }
3664 : : return NULL_TREE;
3665 : : }
3666 : :
3667 : : tree
3668 : 201 : generic_simplify_431 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3669 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3670 : : const enum tree_code ARG_UNUSED (code2),
3671 : : const enum tree_code ARG_UNUSED (code1))
3672 : : {
3673 : 201 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3674 : 201 : if ((TREE_CODE (captures[2]) == INTEGER_CST
3675 : 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
3676 : 201 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
3677 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3678 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
3679 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
3680 : 199 : && bitwise_equal_p (captures[2], captures[5]))
3681 : : )
3682 : : {
3683 : 2 : {
3684 : 2 : bool one_before = false;
3685 : 2 : bool one_after = false;
3686 : 2 : int cmp = 0;
3687 : 2 : bool allbits = true;
3688 : 2 : if (TREE_CODE (captures[2]) == INTEGER_CST
3689 : 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
3690 : : {
3691 : 2 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
3692 : 2 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
3693 : 2 : auto t2 = wi::to_wide (captures[5]);
3694 : 2 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
3695 : 2 : if (cmp < 0
3696 : 2 : && t1 == t2 - 1)
3697 : : one_before = true;
3698 : 2 : if (cmp > 0
3699 : 2 : && t1 == t2 + 1)
3700 : : one_after = true;
3701 : : }
3702 : 2 : bool val;
3703 : 2 : switch (code2)
3704 : : {
3705 : 0 : case EQ_EXPR: val = (cmp == 0); break;
3706 : 2 : case NE_EXPR: val = (cmp != 0); break;
3707 : 0 : case LT_EXPR: val = (cmp < 0); break;
3708 : 0 : case GT_EXPR: val = (cmp > 0); break;
3709 : 0 : case LE_EXPR: val = (cmp <= 0); break;
3710 : 0 : case GE_EXPR: val = (cmp >= 0); break;
3711 : 0 : default: gcc_unreachable ();
3712 : : }
3713 : 2 : if (code1 == EQ_EXPR && val
3714 : : )
3715 : : {
3716 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail993;
3717 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail993;
3718 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail993;
3719 : 0 : {
3720 : 0 : tree _r;
3721 : 0 : _r = captures[0];
3722 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3723 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3724 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 685, __FILE__, __LINE__, true);
3725 : 0 : return _r;
3726 : : }
3727 : : next_after_fail993:;
3728 : : }
3729 : : else
3730 : : {
3731 : 2 : if (code1 == EQ_EXPR && !val
3732 : : )
3733 : : {
3734 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail994;
3735 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail994;
3736 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail994;
3737 : 0 : {
3738 : 0 : tree _r;
3739 : 0 : _r = constant_boolean_node (false, type);
3740 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3741 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3742 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
3743 : 0 : return _r;
3744 : : }
3745 : : next_after_fail994:;
3746 : : }
3747 : : else
3748 : : {
3749 : 2 : if (code1 == NE_EXPR && !val && allbits
3750 : : )
3751 : : {
3752 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail995;
3753 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail995;
3754 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail995;
3755 : 0 : {
3756 : 0 : tree _r;
3757 : 0 : _r = captures[3];
3758 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
3759 : 0 : return _r;
3760 : : }
3761 : : next_after_fail995:;
3762 : : }
3763 : : else
3764 : : {
3765 : 2 : if ((code1 == NE_EXPR
3766 : 2 : && code2 == GE_EXPR
3767 : 0 : && cmp == 0
3768 : 0 : && allbits)
3769 : 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
3770 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
3771 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
3772 : : )
3773 : : {
3774 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail996;
3775 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail996;
3776 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail996;
3777 : 0 : {
3778 : 0 : tree res_op0;
3779 : 0 : res_op0 = captures[4];
3780 : 0 : tree res_op1;
3781 : 0 : {
3782 : 0 : tree _o1[1], _r1;
3783 : 0 : _o1[0] = captures[2];
3784 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
3785 : : {
3786 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
3787 : : }
3788 : : else
3789 : : _r1 = _o1[0];
3790 : 0 : res_op1 = _r1;
3791 : : }
3792 : 0 : tree _r;
3793 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
3794 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 688, __FILE__, __LINE__, true);
3795 : 0 : return _r;
3796 : : }
3797 : : next_after_fail996:;
3798 : : }
3799 : : else
3800 : : {
3801 : 2 : if ((code1 == NE_EXPR
3802 : 2 : && code2 == LE_EXPR
3803 : 0 : && cmp == 0
3804 : 0 : && allbits)
3805 : 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
3806 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
3807 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
3808 : : )
3809 : : {
3810 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail997;
3811 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail997;
3812 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail997;
3813 : 0 : {
3814 : 0 : tree res_op0;
3815 : 0 : res_op0 = captures[4];
3816 : 0 : tree res_op1;
3817 : 0 : {
3818 : 0 : tree _o1[1], _r1;
3819 : 0 : _o1[0] = captures[2];
3820 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
3821 : : {
3822 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
3823 : : }
3824 : : else
3825 : : _r1 = _o1[0];
3826 : 0 : res_op1 = _r1;
3827 : : }
3828 : 0 : tree _r;
3829 : 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
3830 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 689, __FILE__, __LINE__, true);
3831 : 0 : return _r;
3832 : : }
3833 : : next_after_fail997:;
3834 : : }
3835 : : else
3836 : : {
3837 : 2 : if ((code1 == NE_EXPR
3838 : 2 : && code2 == GT_EXPR
3839 : : && one_after
3840 : 0 : && allbits)
3841 : 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
3842 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
3843 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
3844 : : )
3845 : : {
3846 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail998;
3847 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail998;
3848 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail998;
3849 : 0 : {
3850 : 0 : tree res_op0;
3851 : 0 : res_op0 = captures[4];
3852 : 0 : tree res_op1;
3853 : 0 : {
3854 : 0 : tree _o1[1], _r1;
3855 : 0 : _o1[0] = captures[2];
3856 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
3857 : : {
3858 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
3859 : : }
3860 : : else
3861 : : _r1 = _o1[0];
3862 : 0 : res_op1 = _r1;
3863 : : }
3864 : 0 : tree _r;
3865 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
3866 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
3867 : 0 : return _r;
3868 : : }
3869 : : next_after_fail998:;
3870 : : }
3871 : : else
3872 : : {
3873 : 2 : if ((code1 == NE_EXPR
3874 : 2 : && code2 == LT_EXPR
3875 : : && one_before
3876 : 0 : && allbits)
3877 : 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
3878 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
3879 : 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
3880 : : )
3881 : : {
3882 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail999;
3883 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail999;
3884 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail999;
3885 : 0 : {
3886 : 0 : tree res_op0;
3887 : 0 : res_op0 = captures[4];
3888 : 0 : tree res_op1;
3889 : 0 : {
3890 : 0 : tree _o1[1], _r1;
3891 : 0 : _o1[0] = captures[2];
3892 : 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
3893 : : {
3894 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
3895 : : }
3896 : : else
3897 : : _r1 = _o1[0];
3898 : 0 : res_op1 = _r1;
3899 : : }
3900 : 0 : tree _r;
3901 : 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
3902 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
3903 : 0 : return _r;
3904 : : }
3905 : : next_after_fail999:;
3906 : : }
3907 : : }
3908 : : }
3909 : : }
3910 : : }
3911 : : }
3912 : : }
3913 : : }
3914 : : }
3915 : : return NULL_TREE;
3916 : : }
3917 : :
3918 : : tree
3919 : 29 : generic_simplify_457 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3920 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
3921 : : {
3922 : 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3923 : 29 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
3924 : : )
3925 : : {
3926 : 29 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1050;
3927 : 29 : {
3928 : 29 : tree res_op0;
3929 : 29 : {
3930 : 29 : tree _o1[2], _r1;
3931 : 29 : _o1[0] = captures[0];
3932 : 29 : {
3933 : 29 : tree _o2[1], _r2;
3934 : 29 : _o2[0] = captures[1];
3935 : 29 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3936 : 29 : _o1[1] = _r2;
3937 : : }
3938 : 29 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3939 : 29 : res_op0 = _r1;
3940 : : }
3941 : 29 : tree _r;
3942 : 29 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3943 : 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 714, __FILE__, __LINE__, true);
3944 : 29 : return _r;
3945 : : }
3946 : 0 : next_after_fail1050:;
3947 : : }
3948 : : return NULL_TREE;
3949 : : }
3950 : :
3951 : : tree
3952 : 2 : generic_simplify_462 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3953 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3954 : : const enum tree_code ARG_UNUSED (rotate))
3955 : : {
3956 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3957 : 2 : if ((element_precision (TREE_TYPE (captures[2]))
3958 : 2 : <= element_precision (TREE_TYPE (captures[3]))
3959 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
3960 : 2 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
3961 : 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
3962 : : )
3963 : : {
3964 : 2 : {
3965 : 2 : tree rotate_type = TREE_TYPE (captures[2]);
3966 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1055;
3967 : 2 : {
3968 : 2 : tree res_op0;
3969 : 2 : {
3970 : 2 : tree _o1[2], _r1;
3971 : 2 : {
3972 : 2 : tree _o2[1], _r2;
3973 : 2 : _o2[0] = captures[3];
3974 : 2 : if (TREE_TYPE (_o2[0]) != rotate_type)
3975 : : {
3976 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, rotate_type, _o2[0]);
3977 : : }
3978 : : else
3979 : : _r2 = _o2[0];
3980 : 2 : _o1[0] = _r2;
3981 : : }
3982 : 2 : _o1[1] = captures[4];
3983 : 2 : _r1 = fold_build2_loc (loc, rotate, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3984 : 2 : res_op0 = _r1;
3985 : : }
3986 : 2 : tree _r;
3987 : 2 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3988 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 716, __FILE__, __LINE__, true);
3989 : 2 : return _r;
3990 : : }
3991 : 0 : next_after_fail1055:;
3992 : : }
3993 : : }
3994 : : return NULL_TREE;
3995 : : }
3996 : :
3997 : : tree
3998 : 18959 : generic_simplify_472 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3999 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
4000 : : {
4001 : 18959 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4002 : 18959 : if (INTEGRAL_TYPE_P (type)
4003 : : )
4004 : : {
4005 : 18959 : {
4006 : 18959 : tree itype = TREE_TYPE (captures[2]);
4007 : 18959 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1067;
4008 : 18959 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1067;
4009 : 18959 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1067;
4010 : 18959 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1067;
4011 : 18959 : {
4012 : 18959 : tree res_op0;
4013 : 18959 : {
4014 : 18959 : tree _o1[2], _r1;
4015 : 18959 : _o1[0] = captures[2];
4016 : 18959 : {
4017 : 18959 : tree _o2[1], _r2;
4018 : 18959 : _o2[0] = captures[0];
4019 : 18959 : if (TREE_TYPE (_o2[0]) != itype)
4020 : : {
4021 : 18959 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
4022 : : }
4023 : : else
4024 : : _r2 = _o2[0];
4025 : 18959 : _o1[1] = _r2;
4026 : : }
4027 : 18959 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4028 : 18959 : res_op0 = _r1;
4029 : : }
4030 : 18959 : tree _r;
4031 : 18959 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4032 : 18959 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 728, __FILE__, __LINE__, true);
4033 : 18959 : return _r;
4034 : : }
4035 : : next_after_fail1067:;
4036 : : }
4037 : : }
4038 : : return NULL_TREE;
4039 : : }
4040 : :
4041 : : tree
4042 : 0 : generic_simplify_483 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4043 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
4044 : : const enum tree_code ARG_UNUSED (cmp))
4045 : : {
4046 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4047 : 0 : if (INTEGRAL_TYPE_P (type)
4048 : : )
4049 : : {
4050 : 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1083;
4051 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1083;
4052 : 0 : {
4053 : 0 : tree _r;
4054 : 0 : _r = captures[2];
4055 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4056 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4057 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
4058 : 0 : return _r;
4059 : : }
4060 : : next_after_fail1083:;
4061 : : }
4062 : : return NULL_TREE;
4063 : : }
4064 : :
4065 : : tree
4066 : 0 : generic_simplify_489 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4067 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
4068 : : const enum tree_code ARG_UNUSED (op))
4069 : : {
4070 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4071 : 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1089;
4072 : 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1089;
4073 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1089;
4074 : 0 : {
4075 : 0 : tree _r;
4076 : 0 : _r = captures[2];
4077 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 750, __FILE__, __LINE__, true);
4078 : : return _r;
4079 : : }
4080 : : next_after_fail1089:;
4081 : : return NULL_TREE;
4082 : : }
4083 : :
4084 : : tree
4085 : 0 : generic_simplify_495 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4086 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
4087 : : const combined_fn ARG_UNUSED (func))
4088 : : {
4089 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4090 : 0 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
4091 : : )
4092 : : {
4093 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1096;
4094 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1096;
4095 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
4096 : 0 : {
4097 : 0 : tree _r;
4098 : 0 : _r = captures[2];
4099 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4100 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4101 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 757, __FILE__, __LINE__, true);
4102 : 0 : return _r;
4103 : : }
4104 : : next_after_fail1096:;
4105 : : }
4106 : : return NULL_TREE;
4107 : : }
4108 : :
4109 : : tree
4110 : 4 : generic_simplify_502 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4111 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
4112 : : {
4113 : 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4114 : 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1105;
4115 : 4 : {
4116 : 4 : tree _r;
4117 : 4 : _r = captures[1];
4118 : 4 : if (TREE_SIDE_EFFECTS (captures[0]))
4119 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4120 : 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
4121 : : return _r;
4122 : : }
4123 : 0 : next_after_fail1105:;
4124 : 0 : return NULL_TREE;
4125 : : }
4126 : :
4127 : : tree
4128 : 0 : generic_simplify_508 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4129 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
4130 : : const enum tree_code ARG_UNUSED (minmax),
4131 : : const enum tree_code ARG_UNUSED (maxmin))
4132 : : {
4133 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4134 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1123;
4135 : 0 : {
4136 : 0 : tree res_op0;
4137 : 0 : {
4138 : 0 : tree _o1[2], _r1;
4139 : 0 : _o1[0] = captures[1];
4140 : 0 : _o1[1] = captures[3];
4141 : 0 : _r1 = fold_build2_loc (loc, maxmin, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4142 : 0 : res_op0 = _r1;
4143 : : }
4144 : 0 : tree _r;
4145 : 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4146 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 770, __FILE__, __LINE__, true);
4147 : : return _r;
4148 : : }
4149 : 0 : next_after_fail1123:;
4150 : 0 : return NULL_TREE;
4151 : : }
4152 : :
4153 : : tree
4154 : 2 : generic_simplify_511 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4155 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
4156 : : {
4157 : 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4158 : 2 : if (TREE_CODE (type) != COMPLEX_TYPE
4159 : 2 : && (! ANY_INTEGRAL_TYPE_P (type)
4160 : 1 : || TYPE_OVERFLOW_UNDEFINED (type))
4161 : : )
4162 : : {
4163 : 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1126;
4164 : 2 : {
4165 : 2 : tree res_op0;
4166 : 2 : res_op0 = captures[0];
4167 : 2 : tree _r;
4168 : 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
4169 : 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 773, __FILE__, __LINE__, true);
4170 : 2 : return _r;
4171 : : }
4172 : 0 : next_after_fail1126:;
4173 : : }
4174 : : return NULL_TREE;
4175 : : }
4176 : :
4177 : : tree
4178 : 5779 : generic_simplify_518 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4179 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
4180 : : {
4181 : 5779 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4182 : 11558 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
4183 : 5779 : && TYPE_MAX_VALUE (TREE_TYPE (captures[1]))
4184 : 5779 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (TREE_TYPE (captures[0])))
4185 : 8068 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
4186 : : )
4187 : : {
4188 : 1897 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
4189 : : )
4190 : : {
4191 : 929 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1134;
4192 : 929 : {
4193 : 929 : tree res_op0;
4194 : 929 : {
4195 : 929 : tree _o1[2], _r1;
4196 : 929 : _o1[0] = captures[1];
4197 : 929 : {
4198 : 929 : tree _o2[2], _r2;
4199 : 929 : _o2[0] = TYPE_MAX_VALUE (TREE_TYPE (captures[1]));
4200 : 929 : _o2[1] = captures[2];
4201 : 929 : _r2 = fold_build2_loc (loc, TRUNC_DIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4202 : 929 : if (EXPR_P (_r2))
4203 : 0 : goto next_after_fail1134;
4204 : 929 : _o1[1] = _r2;
4205 : : }
4206 : 929 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
4207 : 929 : res_op0 = _r1;
4208 : : }
4209 : 929 : tree _r;
4210 : 929 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4211 : 929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 781, __FILE__, __LINE__, true);
4212 : 929 : return _r;
4213 : : }
4214 : : next_after_fail1134:;
4215 : : }
4216 : : else
4217 : : {
4218 : 968 : if (TYPE_MIN_VALUE (TREE_TYPE (captures[1]))
4219 : : )
4220 : : {
4221 : 968 : if (integer_minus_onep (captures[2])
4222 : : )
4223 : : {
4224 : 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1135;
4225 : 56 : {
4226 : 56 : tree res_op0;
4227 : 56 : {
4228 : 56 : tree _o1[2], _r1;
4229 : 56 : _o1[0] = captures[1];
4230 : 56 : _o1[1] = TYPE_MIN_VALUE (TREE_TYPE (captures[1]));
4231 : 56 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
4232 : 56 : res_op0 = _r1;
4233 : : }
4234 : 56 : tree _r;
4235 : 56 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4236 : 56 : if (TREE_SIDE_EFFECTS (captures[2]))
4237 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4238 : 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 782, __FILE__, __LINE__, true);
4239 : 56 : return _r;
4240 : : }
4241 : 0 : next_after_fail1135:;
4242 : : }
4243 : : else
4244 : : {
4245 : 912 : {
4246 : 912 : tree div = fold_convert (TREE_TYPE (captures[1]), captures[2]);
4247 : 1824 : tree lo = int_const_binop (TRUNC_DIV_EXPR,
4248 : 912 : TYPE_MIN_VALUE (TREE_TYPE (captures[1])), div);
4249 : 1824 : tree hi = int_const_binop (TRUNC_DIV_EXPR,
4250 : 912 : TYPE_MAX_VALUE (TREE_TYPE (captures[1])), div);
4251 : 912 : tree etype = range_check_type (TREE_TYPE (captures[1]));
4252 : 912 : if (etype)
4253 : : {
4254 : 912 : if (wi::neg_p (wi::to_wide (div)))
4255 : 88 : std::swap (lo, hi);
4256 : 912 : lo = fold_convert (etype, lo);
4257 : 912 : hi = fold_convert (etype, hi);
4258 : 912 : hi = int_const_binop (MINUS_EXPR, hi, lo);
4259 : : }
4260 : 912 : if (etype
4261 : : )
4262 : : {
4263 : 912 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1136;
4264 : 912 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1136;
4265 : 912 : {
4266 : 912 : tree res_op0;
4267 : 912 : {
4268 : 912 : tree _o1[2], _r1;
4269 : 912 : {
4270 : 912 : tree _o2[2], _r2;
4271 : 912 : {
4272 : 912 : tree _o3[1], _r3;
4273 : 912 : _o3[0] = captures[1];
4274 : 912 : if (TREE_TYPE (_o3[0]) != etype)
4275 : : {
4276 : 912 : _r3 = fold_build1_loc (loc, NOP_EXPR, etype, _o3[0]);
4277 : : }
4278 : : else
4279 : : _r3 = _o3[0];
4280 : 912 : _o2[0] = _r3;
4281 : : }
4282 : 912 : _o2[1] = lo;
4283 : 912 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4284 : 912 : _o1[0] = _r2;
4285 : : }
4286 : 912 : _o1[1] = hi;
4287 : 912 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
4288 : 912 : res_op0 = _r1;
4289 : : }
4290 : 912 : tree _r;
4291 : 912 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4292 : 912 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
4293 : 912 : return _r;
4294 : : }
4295 : : next_after_fail1136:;
4296 : : }
4297 : : }
4298 : : }
4299 : : }
4300 : : }
4301 : : }
4302 : : return NULL_TREE;
4303 : : }
4304 : :
4305 : : tree
4306 : 0 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4307 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4308 : : const combined_fn ARG_UNUSED (fns))
4309 : : {
4310 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4311 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1168;
4312 : 0 : {
4313 : 0 : tree _r;
4314 : 0 : _r = captures[0];
4315 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
4316 : : return _r;
4317 : : }
4318 : 0 : next_after_fail1168:;
4319 : 0 : return NULL_TREE;
4320 : : }
4321 : :
4322 : : tree
4323 : 0 : generic_simplify_555 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4324 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
4325 : : {
4326 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4327 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1173;
4328 : 0 : {
4329 : 0 : tree _r;
4330 : 0 : _r = captures[0];
4331 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4332 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4333 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
4334 : : return _r;
4335 : : }
4336 : 0 : next_after_fail1173:;
4337 : 0 : return NULL_TREE;
4338 : : }
4339 : :
4340 : : tree
4341 : 0 : generic_simplify_562 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4342 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4343 : : const combined_fn ARG_UNUSED (rints))
4344 : : {
4345 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4346 : 0 : if (canonicalize_math_p ()
4347 : : )
4348 : : {
4349 : 0 : if (!flag_errno_math
4350 : : )
4351 : : {
4352 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1180;
4353 : 0 : {
4354 : 0 : tree res_op0;
4355 : 0 : res_op0 = captures[0];
4356 : 0 : tree _r;
4357 : 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
4358 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
4359 : 0 : return _r;
4360 : : }
4361 : 0 : next_after_fail1180:;
4362 : : }
4363 : : }
4364 : : return NULL_TREE;
4365 : : }
4366 : :
4367 : : tree
4368 : 0 : generic_simplify_570 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4369 : : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
4370 : : {
4371 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4372 : 0 : if (canonicalize_math_after_vectorization_p ()
4373 : : )
4374 : : {
4375 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1188;
4376 : : {
4377 : : tree res_op0;
4378 : : res_op0 = captures[0];
4379 : : tree res_op1;
4380 : : res_op1 = captures[1];
4381 : : tree res_op2;
4382 : : res_op2 = captures[2];
4383 : : tree _r;
4384 : : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
4385 : : if (!_r)
4386 : : goto next_after_fail1188;
4387 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
4388 : : return _r;
4389 : : }
4390 : 0 : next_after_fail1188:;
4391 : : }
4392 : 0 : return NULL_TREE;
4393 : : }
4394 : :
4395 : : tree
4396 : 0 : generic_simplify_580 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
4397 : : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
4398 : : const combined_fn ARG_UNUSED (bswap),
4399 : : const combined_fn ARG_UNUSED (popcount))
4400 : : {
4401 : 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4402 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4403 : 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
4404 : : )
4405 : : {
4406 : 0 : {
4407 : 0 : tree type0 = TREE_TYPE (captures[0]);
4408 : 0 : tree type1 = TREE_TYPE (captures[1]);
4409 : 0 : unsigned int prec0 = TYPE_PRECISION (type0);
4410 : 0 : unsigned int prec1 = TYPE_PRECISION (type1);
4411 : 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
4412 : : )
4413 : : {
4414 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1198;
4415 : 0 : {
4416 : 0 : tree res_op0;
4417 : 0 : {
4418 : 0 : tree _o1[1], _r1;
4419 : 0 : {
4420 : 0 : tree _o2[1], _r2;
4421 : 0 : _o2[0] = captures[2];
4422 : 0 : if (TREE_TYPE (_o2[0]) != type1)
4423 : : {
4424 : 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
4425 : : }
4426 : : else
4427 : : _r2 = _o2[0];
4428 : 0 : _o1[0] = _r2;
4429 : : }
4430 : 0 : if (TREE_TYPE (_o1[0]) != type0)
4431 : : {
4432 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
4433 : : }
4434 : : else
4435 : : _r1 = _o1[0];
4436 : 0 : res_op0 = _r1;
4437 : : }
4438 : 0 : tree _r;
4439 : 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
4440 : 0 : if (!_r)
4441 : 0 : goto next_after_fail1198;
4442 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
4443 : 0 : return _r;
4444 : : }
4445 : : next_after_fail1198:;
4446 : : }
4447 : : }
4448 : : }
4449 : : return NULL_TREE;
4450 : : }
4451 : :
4452 : : tree
4453 : 2712765 : generic_simplify_ABS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
4454 : : {
4455 : 2712765 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4456 : 2712765 : switch (TREE_CODE (_p0))
4457 : : {
4458 : 205417 : CASE_CONVERT:
4459 : 205417 : {
4460 : 205417 : tree _q20 = TREE_OPERAND (_p0, 0);
4461 : 205417 : {
4462 : 205417 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4463 : 410832 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4464 : 891 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
4465 : 206254 : && element_precision (type) > element_precision (TREE_TYPE (captures[0]))
4466 : : )
4467 : : {
4468 : 222 : {
4469 : 222 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
4470 : 222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1211;
4471 : 222 : {
4472 : 222 : tree res_op0;
4473 : 222 : {
4474 : 222 : tree _o1[1], _r1;
4475 : 222 : _o1[0] = captures[0];
4476 : 222 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
4477 : 222 : res_op0 = _r1;
4478 : : }
4479 : 222 : tree _r;
4480 : 222 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4481 : 222 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
4482 : 222 : return _r;
4483 : : }
4484 : 0 : next_after_fail1211:;
4485 : : }
4486 : : }
4487 : : }
4488 : : break;
4489 : : }
4490 : 12 : case ABS_EXPR:
4491 : 12 : {
4492 : 12 : tree _q20 = TREE_OPERAND (_p0, 0);
4493 : 12 : {
4494 : 12 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4495 : 12 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1212;
4496 : 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1212;
4497 : 12 : {
4498 : 12 : tree _r;
4499 : 12 : _r = captures[0];
4500 : 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
4501 : 12 : return _r;
4502 : : }
4503 : 0 : next_after_fail1212:;
4504 : : }
4505 : 0 : break;
4506 : : }
4507 : 57 : case NEGATE_EXPR:
4508 : 57 : {
4509 : 57 : tree _q20 = TREE_OPERAND (_p0, 0);
4510 : 57 : {
4511 : 57 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4512 : 57 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1213;
4513 : 57 : {
4514 : 57 : tree res_op0;
4515 : 57 : res_op0 = captures[0];
4516 : 57 : tree _r;
4517 : 57 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
4518 : 57 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
4519 : 2712765 : return _r;
4520 : : }
4521 : 0 : next_after_fail1213:;
4522 : : }
4523 : 0 : break;
4524 : : }
4525 : 317 : case PLUS_EXPR:
4526 : 317 : {
4527 : 317 : tree _q20 = TREE_OPERAND (_p0, 0);
4528 : 317 : tree _q21 = TREE_OPERAND (_p0, 1);
4529 : 317 : if (real_zerop (_q21))
4530 : : {
4531 : 3 : {
4532 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4533 : 3 : tree res = generic_simplify_1 (loc, type, _p0, captures, PLUS_EXPR);
4534 : 3 : if (res) return res;
4535 : : }
4536 : : }
4537 : : break;
4538 : : }
4539 : 7264 : case MINUS_EXPR:
4540 : 7264 : {
4541 : 7264 : tree _q20 = TREE_OPERAND (_p0, 0);
4542 : 7264 : tree _q21 = TREE_OPERAND (_p0, 1);
4543 : 7264 : if (real_zerop (_q21))
4544 : : {
4545 : 0 : {
4546 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4547 : 0 : tree res = generic_simplify_1 (loc, type, _p0, captures, MINUS_EXPR);
4548 : 0 : if (res) return res;
4549 : : }
4550 : : }
4551 : : break;
4552 : : }
4553 : 0 : case VEC_COND_EXPR:
4554 : 0 : {
4555 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4556 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4557 : 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4558 : 0 : {
4559 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4560 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1214;
4561 : 0 : {
4562 : 0 : tree res_op0;
4563 : 0 : res_op0 = captures[1];
4564 : 0 : tree res_op1;
4565 : 0 : {
4566 : 0 : tree _o1[1], _r1;
4567 : 0 : _o1[0] = captures[2];
4568 : 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4569 : 0 : if (EXPR_P (_r1))
4570 : 0 : goto next_after_fail1214;
4571 : 0 : res_op1 = _r1;
4572 : : }
4573 : 0 : tree res_op2;
4574 : 0 : {
4575 : 0 : tree _o1[1], _r1;
4576 : 0 : _o1[0] = captures[3];
4577 : 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4578 : 0 : if (EXPR_P (_r1))
4579 : 0 : goto next_after_fail1214;
4580 : 0 : res_op2 = _r1;
4581 : : }
4582 : 0 : tree _r;
4583 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4584 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
4585 : 0 : return _r;
4586 : : }
4587 : 0 : next_after_fail1214:;
4588 : : }
4589 : 0 : break;
4590 : : }
4591 : 1088 : case CALL_EXPR:
4592 : 1088 : switch (get_call_combined_fn (_p0))
4593 : : {
4594 : 0 : case CFN_BUILT_IN_COPYSIGNF16:
4595 : 0 : if (call_expr_nargs (_p0) == 2)
4596 : : {
4597 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4598 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4599 : 0 : {
4600 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4601 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF16);
4602 : 0 : if (res) return res;
4603 : : }
4604 : : }
4605 : : break;
4606 : 0 : case CFN_BUILT_IN_COPYSIGNF32:
4607 : 0 : if (call_expr_nargs (_p0) == 2)
4608 : : {
4609 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4610 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4611 : 0 : {
4612 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4613 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF32);
4614 : 0 : if (res) return res;
4615 : : }
4616 : : }
4617 : : break;
4618 : 0 : case CFN_BUILT_IN_COPYSIGNF64:
4619 : 0 : if (call_expr_nargs (_p0) == 2)
4620 : : {
4621 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4622 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4623 : 0 : {
4624 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4625 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF64);
4626 : 0 : if (res) return res;
4627 : : }
4628 : : }
4629 : : break;
4630 : 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4631 : 0 : if (call_expr_nargs (_p0) == 2)
4632 : : {
4633 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4634 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4635 : 0 : {
4636 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4637 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF128X);
4638 : 0 : if (res) return res;
4639 : : }
4640 : : }
4641 : : break;
4642 : 0 : case CFN_BUILT_IN_COPYSIGNF128:
4643 : 0 : if (call_expr_nargs (_p0) == 2)
4644 : : {
4645 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4646 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4647 : 0 : {
4648 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4649 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF128);
4650 : 0 : if (res) return res;
4651 : : }
4652 : : }
4653 : : break;
4654 : 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4655 : 0 : if (call_expr_nargs (_p0) == 2)
4656 : : {
4657 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4658 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4659 : 0 : {
4660 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4661 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF32X);
4662 : 0 : if (res) return res;
4663 : : }
4664 : : }
4665 : : break;
4666 : 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4667 : 0 : if (call_expr_nargs (_p0) == 2)
4668 : : {
4669 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4670 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4671 : 0 : {
4672 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4673 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF64X);
4674 : 0 : if (res) return res;
4675 : : }
4676 : : }
4677 : : break;
4678 : 0 : case CFN_BUILT_IN_COPYSIGN:
4679 : 0 : if (call_expr_nargs (_p0) == 2)
4680 : : {
4681 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4682 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4683 : 0 : {
4684 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4685 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGN);
4686 : 0 : if (res) return res;
4687 : : }
4688 : : }
4689 : : break;
4690 : 1 : case CFN_BUILT_IN_COPYSIGNF:
4691 : 1 : if (call_expr_nargs (_p0) == 2)
4692 : : {
4693 : 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4694 : 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4695 : 1 : {
4696 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4697 : 1 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF);
4698 : 1 : if (res) return res;
4699 : : }
4700 : : }
4701 : : break;
4702 : 0 : case CFN_BUILT_IN_COPYSIGNL:
4703 : 0 : if (call_expr_nargs (_p0) == 2)
4704 : : {
4705 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4706 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4707 : 0 : {
4708 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4709 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNL);
4710 : 0 : if (res) return res;
4711 : : }
4712 : : }
4713 : : break;
4714 : 0 : case CFN_COPYSIGN:
4715 : 0 : if (call_expr_nargs (_p0) == 2)
4716 : : {
4717 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4718 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4719 : 0 : {
4720 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4721 : 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_COPYSIGN);
4722 : 0 : if (res) return res;
4723 : : }
4724 : : }
4725 : : break;
4726 : : default:;
4727 : : }
4728 : : break;
4729 : 2712471 : default:;
4730 : : }
4731 : 2712471 : if (tree_expr_nonnegative_p (_p0))
4732 : : {
4733 : 549 : {
4734 : 549 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4735 : 549 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1215;
4736 : 549 : {
4737 : 549 : tree _r;
4738 : 549 : _r = captures[0];
4739 : 549 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
4740 : 549 : return _r;
4741 : : }
4742 : 0 : next_after_fail1215:;
4743 : : }
4744 : : }
4745 : : return NULL_TREE;
4746 : : }
4747 : :
4748 : : tree
4749 : 36164555 : generic_simplify_POINTER_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4750 : : {
4751 : 36164555 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4752 : 36164555 : if (integer_zerop (_p1))
4753 : : {
4754 : 1982937 : {
4755 : 1982937 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4756 : 1982937 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1346;
4757 : 1982937 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1346;
4758 : 1982937 : {
4759 : 1982937 : tree res_op0;
4760 : 1982937 : res_op0 = captures[0];
4761 : 1982937 : tree _r;
4762 : 1982937 : _r = non_lvalue_loc (loc, res_op0);
4763 : 1982937 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
4764 : 1982937 : return _r;
4765 : : }
4766 : : next_after_fail1346:;
4767 : : }
4768 : : }
4769 : 34181618 : switch (TREE_CODE (_p0))
4770 : : {
4771 : 1994254 : case POINTER_PLUS_EXPR:
4772 : 1994254 : {
4773 : 1994254 : tree _q20 = TREE_OPERAND (_p0, 0);
4774 : 1994254 : tree _q21 = TREE_OPERAND (_p0, 1);
4775 : 1994254 : {
4776 : 1994254 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4777 : 1994254 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1347;
4778 : 1994254 : {
4779 : 1994254 : tree res_op0;
4780 : 1994254 : res_op0 = captures[1];
4781 : 1994254 : tree res_op1;
4782 : 1994254 : {
4783 : 1994254 : tree _o1[2], _r1;
4784 : 1994254 : _o1[0] = captures[2];
4785 : 1994254 : _o1[1] = captures[3];
4786 : 1994254 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4787 : 1994254 : res_op1 = _r1;
4788 : : }
4789 : 1994254 : tree _r;
4790 : 1994254 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
4791 : 1994254 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
4792 : 1994254 : return _r;
4793 : : }
4794 : 0 : next_after_fail1347:;
4795 : : }
4796 : 0 : break;
4797 : : }
4798 : 10705711 : CASE_CONVERT:
4799 : 10705711 : {
4800 : 10705711 : tree _q20 = TREE_OPERAND (_p0, 0);
4801 : 10705711 : switch (TREE_CODE (_q20))
4802 : : {
4803 : 20960 : case POINTER_PLUS_EXPR:
4804 : 20960 : {
4805 : 20960 : tree _q30 = TREE_OPERAND (_q20, 0);
4806 : 20960 : tree _q31 = TREE_OPERAND (_q20, 1);
4807 : 20960 : {
4808 : 20960 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
4809 : 20960 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1348;
4810 : 20960 : {
4811 : 20960 : tree res_op0;
4812 : 20960 : {
4813 : 20960 : tree _o1[2], _r1;
4814 : 20960 : _o1[0] = captures[2];
4815 : 20960 : {
4816 : 20960 : tree _o2[2], _r2;
4817 : 20960 : _o2[0] = captures[3];
4818 : 20960 : _o2[1] = captures[4];
4819 : 20960 : _r2 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4820 : 20960 : _o1[1] = _r2;
4821 : : }
4822 : 20960 : _r1 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4823 : 20960 : res_op0 = _r1;
4824 : : }
4825 : 20960 : tree _r;
4826 : 20960 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4827 : 20960 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 914, __FILE__, __LINE__, true);
4828 : 20960 : return _r;
4829 : : }
4830 : 0 : next_after_fail1348:;
4831 : : }
4832 : 0 : break;
4833 : : }
4834 : : default:;
4835 : : }
4836 : : break;
4837 : : }
4838 : 32166404 : default:;
4839 : : }
4840 : 32166404 : if (integer_zerop (_p0))
4841 : : {
4842 : 646 : {
4843 : 646 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
4844 : 646 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1349;
4845 : 646 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1349;
4846 : 646 : {
4847 : 646 : tree res_op0;
4848 : 646 : {
4849 : 646 : tree _o1[1], _r1;
4850 : 646 : _o1[0] = captures[0];
4851 : 646 : if (TREE_TYPE (_o1[0]) != type)
4852 : : {
4853 : 646 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4854 : : }
4855 : : else
4856 : : _r1 = _o1[0];
4857 : 646 : res_op0 = _r1;
4858 : : }
4859 : 646 : tree _r;
4860 : 646 : _r = non_lvalue_loc (loc, res_op0);
4861 : 646 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
4862 : 646 : return _r;
4863 : : }
4864 : : next_after_fail1349:;
4865 : : }
4866 : : }
4867 : 32165758 : switch (TREE_CODE (_p1))
4868 : : {
4869 : 7772629 : CASE_CONVERT:
4870 : 7772629 : {
4871 : 7772629 : tree _q30 = TREE_OPERAND (_p1, 0);
4872 : 7772629 : switch (TREE_CODE (_q30))
4873 : : {
4874 : 202198 : case MINUS_EXPR:
4875 : 202198 : {
4876 : 202198 : tree _q40 = TREE_OPERAND (_q30, 0);
4877 : 202198 : tree _q41 = TREE_OPERAND (_q30, 1);
4878 : 202198 : switch (TREE_CODE (_q40))
4879 : : {
4880 : 95711 : CASE_CONVERT:
4881 : 95711 : {
4882 : 95711 : tree _q50 = TREE_OPERAND (_q40, 0);
4883 : 95711 : switch (TREE_CODE (_q41))
4884 : : {
4885 : 6093 : CASE_CONVERT:
4886 : 6093 : {
4887 : 6093 : tree _q70 = TREE_OPERAND (_q41, 0);
4888 : 6093 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
4889 : : {
4890 : 3783 : {
4891 : 3783 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
4892 : 3783 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
4893 : 3783 : && ((
4894 : :
4895 : : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
4896 : : || (
4897 : : 1
4898 : 3783 : && type == TREE_TYPE (captures[3])))
4899 : : )
4900 : : {
4901 : 2385 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1350;
4902 : 2385 : {
4903 : 2385 : tree _r;
4904 : 2385 : _r = captures[3];
4905 : 2385 : if (TREE_SIDE_EFFECTS (captures[0]))
4906 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4907 : 2385 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 916, __FILE__, __LINE__, true);
4908 : 2385 : return _r;
4909 : : }
4910 : 0 : next_after_fail1350:;
4911 : : }
4912 : : }
4913 : : }
4914 : : break;
4915 : : }
4916 : : default:;
4917 : : }
4918 : : break;
4919 : : }
4920 : : default:;
4921 : : }
4922 : : break;
4923 : : }
4924 : 576 : case POINTER_DIFF_EXPR:
4925 : 576 : {
4926 : 576 : tree _q40 = TREE_OPERAND (_q30, 0);
4927 : 576 : tree _q41 = TREE_OPERAND (_q30, 1);
4928 : 576 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
4929 : : {
4930 : 7 : {
4931 : 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
4932 : 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
4933 : : )
4934 : : {
4935 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1351;
4936 : 7 : {
4937 : 7 : tree res_op0;
4938 : 7 : res_op0 = captures[3];
4939 : 7 : tree _r;
4940 : 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4941 : 7 : if (TREE_SIDE_EFFECTS (captures[4]))
4942 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
4943 : 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 917, __FILE__, __LINE__, true);
4944 : 7 : return _r;
4945 : : }
4946 : 0 : next_after_fail1351:;
4947 : : }
4948 : : }
4949 : : }
4950 : : break;
4951 : : }
4952 : : default:;
4953 : : }
4954 : : break;
4955 : : }
4956 : 27044 : case MINUS_EXPR:
4957 : 27044 : {
4958 : 27044 : tree _q30 = TREE_OPERAND (_p1, 0);
4959 : 27044 : tree _q31 = TREE_OPERAND (_p1, 1);
4960 : 27044 : switch (TREE_CODE (_q30))
4961 : : {
4962 : 23967 : CASE_CONVERT:
4963 : 23967 : {
4964 : 23967 : tree _q40 = TREE_OPERAND (_q30, 0);
4965 : 23967 : switch (TREE_CODE (_q31))
4966 : : {
4967 : 6368 : CASE_CONVERT:
4968 : 6368 : {
4969 : 6368 : tree _q60 = TREE_OPERAND (_q31, 0);
4970 : 6368 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
4971 : : {
4972 : 26 : {
4973 : 26 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
4974 : 26 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
4975 : 26 : && ((
4976 : :
4977 : : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
4978 : : || (
4979 : : 1
4980 : 26 : && type == TREE_TYPE (captures[3])))
4981 : : )
4982 : : {
4983 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1352;
4984 : 0 : {
4985 : 0 : tree _r;
4986 : 0 : _r = captures[3];
4987 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
4988 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4989 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 916, __FILE__, __LINE__, true);
4990 : 0 : return _r;
4991 : : }
4992 : 0 : next_after_fail1352:;
4993 : : }
4994 : : }
4995 : : }
4996 : : break;
4997 : : }
4998 : : default:;
4999 : : }
5000 : : break;
5001 : : }
5002 : 945 : case INTEGER_CST:
5003 : 945 : {
5004 : 945 : switch (TREE_CODE (_q31))
5005 : : {
5006 : 16 : case BIT_AND_EXPR:
5007 : 16 : {
5008 : 16 : tree _q50 = TREE_OPERAND (_q31, 0);
5009 : 16 : tree _q51 = TREE_OPERAND (_q31, 1);
5010 : 16 : switch (TREE_CODE (_q50))
5011 : : {
5012 : 16 : CASE_CONVERT:
5013 : 16 : {
5014 : 16 : tree _q60 = TREE_OPERAND (_q50, 0);
5015 : 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5016 : : {
5017 : 0 : switch (TREE_CODE (_q51))
5018 : : {
5019 : 0 : case INTEGER_CST:
5020 : 0 : {
5021 : 0 : {
5022 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
5023 : 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
5024 : : )
5025 : : {
5026 : 0 : {
5027 : 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
5028 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1353;
5029 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1353;
5030 : 0 : {
5031 : 0 : tree res_op0;
5032 : 0 : {
5033 : 0 : tree _o1[2], _r1;
5034 : 0 : _o1[0] = captures[0];
5035 : 0 : _o1[1] = algn;
5036 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5037 : 0 : res_op0 = _r1;
5038 : : }
5039 : 0 : tree res_op1;
5040 : 0 : res_op1 = captures[2];
5041 : 0 : tree _r;
5042 : 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
5043 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 918, __FILE__, __LINE__, true);
5044 : 0 : return _r;
5045 : : }
5046 : 0 : next_after_fail1353:;
5047 : : }
5048 : : }
5049 : : }
5050 : 0 : break;
5051 : : }
5052 : : default:;
5053 : : }
5054 : : }
5055 : 16 : switch (TREE_CODE (_q60))
5056 : : {
5057 : 0 : case POINTER_PLUS_EXPR:
5058 : 0 : {
5059 : 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5060 : 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5061 : 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
5062 : : {
5063 : 0 : switch (TREE_CODE (_q71))
5064 : : {
5065 : 0 : case INTEGER_CST:
5066 : 0 : {
5067 : 0 : switch (TREE_CODE (_q51))
5068 : : {
5069 : 0 : case INTEGER_CST:
5070 : 0 : {
5071 : 0 : {
5072 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
5073 : 0 : {
5074 : 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
5075 : 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
5076 : : )
5077 : : {
5078 : 0 : {
5079 : 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
5080 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1354;
5081 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1354;
5082 : 0 : {
5083 : 0 : tree res_op0;
5084 : 0 : {
5085 : 0 : tree _o1[2], _r1;
5086 : 0 : _o1[0] = captures[0];
5087 : 0 : _o1[1] = algn;
5088 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5089 : 0 : res_op0 = _r1;
5090 : : }
5091 : 0 : tree res_op1;
5092 : 0 : res_op1 = captures[2];
5093 : 0 : tree _r;
5094 : 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
5095 : 0 : if (TREE_SIDE_EFFECTS (captures[3]))
5096 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
5097 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
5098 : 0 : return _r;
5099 : : }
5100 : 0 : next_after_fail1354:;
5101 : : }
5102 : : }
5103 : : }
5104 : : }
5105 : 0 : break;
5106 : : }
5107 : : default:;
5108 : : }
5109 : : break;
5110 : : }
5111 : : default:;
5112 : : }
5113 : : }
5114 : : break;
5115 : : }
5116 : : default:;
5117 : : }
5118 : : break;
5119 : : }
5120 : : default:;
5121 : : }
5122 : : break;
5123 : : }
5124 : : default:;
5125 : : }
5126 : : break;
5127 : : }
5128 : : default:;
5129 : : }
5130 : : break;
5131 : : }
5132 : 0 : case POINTER_DIFF_EXPR:
5133 : 0 : {
5134 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5135 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5136 : 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
5137 : : {
5138 : 0 : {
5139 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
5140 : 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
5141 : : )
5142 : : {
5143 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1355;
5144 : 0 : {
5145 : 0 : tree res_op0;
5146 : 0 : res_op0 = captures[3];
5147 : 0 : tree _r;
5148 : 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
5149 : 0 : if (TREE_SIDE_EFFECTS (captures[4]))
5150 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
5151 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 917, __FILE__, __LINE__, true);
5152 : 0 : return _r;
5153 : : }
5154 : 0 : next_after_fail1355:;
5155 : : }
5156 : : }
5157 : : }
5158 : : break;
5159 : : }
5160 : 213654 : case NEGATE_EXPR:
5161 : 213654 : {
5162 : 213654 : tree _q30 = TREE_OPERAND (_p1, 0);
5163 : 213654 : switch (TREE_CODE (_q30))
5164 : : {
5165 : 22 : case BIT_AND_EXPR:
5166 : 22 : {
5167 : 22 : tree _q40 = TREE_OPERAND (_q30, 0);
5168 : 22 : tree _q41 = TREE_OPERAND (_q30, 1);
5169 : 22 : switch (TREE_CODE (_q40))
5170 : : {
5171 : 22 : CASE_CONVERT:
5172 : 22 : {
5173 : 22 : tree _q50 = TREE_OPERAND (_q40, 0);
5174 : 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5175 : : {
5176 : 1 : switch (TREE_CODE (_q41))
5177 : : {
5178 : 1 : case INTEGER_CST:
5179 : 1 : {
5180 : 1 : {
5181 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
5182 : 1 : {
5183 : 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
5184 : 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1356;
5185 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1356;
5186 : 1 : {
5187 : 1 : tree res_op0;
5188 : 1 : res_op0 = captures[0];
5189 : 1 : tree res_op1;
5190 : 1 : res_op1 = algn;
5191 : 1 : tree _r;
5192 : 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5193 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
5194 : 1 : return _r;
5195 : : }
5196 : 0 : next_after_fail1356:;
5197 : : }
5198 : : }
5199 : 0 : break;
5200 : : }
5201 : : default:;
5202 : : }
5203 : : }
5204 : 21 : switch (TREE_CODE (_q50))
5205 : : {
5206 : 0 : case POINTER_PLUS_EXPR:
5207 : 0 : {
5208 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5209 : 0 : tree _q61 = TREE_OPERAND (_q50, 1);
5210 : 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5211 : : {
5212 : 0 : switch (TREE_CODE (_q61))
5213 : : {
5214 : 0 : case INTEGER_CST:
5215 : 0 : {
5216 : 0 : switch (TREE_CODE (_q41))
5217 : : {
5218 : 0 : case INTEGER_CST:
5219 : 0 : {
5220 : 0 : {
5221 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
5222 : 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
5223 : : )
5224 : : {
5225 : 0 : {
5226 : 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
5227 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1357;
5228 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1357;
5229 : 0 : {
5230 : 0 : tree res_op0;
5231 : 0 : res_op0 = captures[0];
5232 : 0 : tree res_op1;
5233 : 0 : res_op1 = algn;
5234 : 0 : tree _r;
5235 : 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5236 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5237 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5238 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
5239 : 0 : return _r;
5240 : : }
5241 : 0 : next_after_fail1357:;
5242 : : }
5243 : : }
5244 : : }
5245 : 0 : break;
5246 : : }
5247 : : default:;
5248 : : }
5249 : : break;
5250 : : }
5251 : : default:;
5252 : : }
5253 : : }
5254 : : break;
5255 : : }
5256 : : default:;
5257 : : }
5258 : : break;
5259 : : }
5260 : : default:;
5261 : : }
5262 : : break;
5263 : : }
5264 : : default:;
5265 : : }
5266 : : break;
5267 : : }
5268 : : default:;
5269 : : }
5270 : : return NULL_TREE;
5271 : : }
5272 : :
5273 : : tree
5274 : 33541942 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5275 : : {
5276 : 33541942 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5277 : 33541942 : switch (TREE_CODE (_p1))
5278 : : {
5279 : 2252 : case NEGATE_EXPR:
5280 : 2252 : {
5281 : 2252 : tree _q30 = TREE_OPERAND (_p1, 0);
5282 : 2252 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5283 : : {
5284 : 0 : {
5285 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5286 : 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, NE_EXPR);
5287 : 0 : if (res) return res;
5288 : : }
5289 : : }
5290 : : break;
5291 : : }
5292 : 33541942 : default:;
5293 : : }
5294 : 33541942 : switch (TREE_CODE (_p0))
5295 : : {
5296 : 6135 : case NEGATE_EXPR:
5297 : 6135 : {
5298 : 6135 : tree _q20 = TREE_OPERAND (_p0, 0);
5299 : 6135 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5300 : : {
5301 : 88 : {
5302 : 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5303 : 88 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, NE_EXPR);
5304 : 88 : if (res) return res;
5305 : : }
5306 : : }
5307 : : break;
5308 : : }
5309 : 0 : case CEIL_MOD_EXPR:
5310 : 0 : {
5311 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5312 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5313 : 0 : if (integer_pow2p (_q21))
5314 : : {
5315 : 0 : if (integer_zerop (_p1))
5316 : : {
5317 : 0 : {
5318 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5319 : 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
5320 : 0 : if (res) return res;
5321 : : }
5322 : : }
5323 : : }
5324 : : break;
5325 : : }
5326 : 1624 : case FLOOR_MOD_EXPR:
5327 : 1624 : {
5328 : 1624 : tree _q20 = TREE_OPERAND (_p0, 0);
5329 : 1624 : tree _q21 = TREE_OPERAND (_p0, 1);
5330 : 1624 : if (integer_pow2p (_q21))
5331 : : {
5332 : 20 : if (integer_zerop (_p1))
5333 : : {
5334 : 20 : {
5335 : 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5336 : 20 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
5337 : 20 : if (res) return res;
5338 : : }
5339 : : }
5340 : : }
5341 : : break;
5342 : : }
5343 : 0 : case ROUND_MOD_EXPR:
5344 : 0 : {
5345 : 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5346 : 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5347 : 0 : if (integer_pow2p (_q21))
5348 : : {
5349 : 0 : if (integer_zerop (_p1))
5350 : : {
5351 : 0 : {
5352 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5353 : 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
5354 : 0 : if (res) return res;
5355 : : }
5356 : : }
5357 : : }
5358 : : break;
5359 : : }
5360 : 71193 : case TRUNC_MOD_EXPR:
5361 : 71193 : {
5362 : 71193 : tree _q20 = TREE_OPERAND (_p0, 0);
5363 : 71193 : tree _q21 = TREE_OPERAND (_p0, 1);
5364 : 71193 : if (integer_pow2p (_q21))
5365 : : {
5366 : 7439 : if (integer_zerop (_p1))
5367 : : {
5368 : 5989 : {
5369 : 5989 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5370 : 5989 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
5371 : 5989 : if (res) return res;
5372 : : }
5373 : : }
5374 : : }
5375 : : break;
5376 : : }
5377 : 5159 : case LSHIFT_EXPR:
5378 : 5159 : {
5379 : 5159 : tree _q20 = TREE_OPERAND (_p0, 0);
5380 : 5159 : tree _q21 = TREE_OPERAND (_p0, 1);
5381 : 5159 : if (tree_zero_one_valued_p (_q20))
5382 : : {
5383 : 473 : switch (TREE_CODE (_q21))
5384 : : {
5385 : 114 : case INTEGER_CST:
5386 : 114 : {
5387 : 114 : if (integer_zerop (_p1))
5388 : : {
5389 : 5 : {
5390 : 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5391 : 5 : if (tree_fits_shwi_p (captures[1])
5392 : 5 : && tree_to_shwi (captures[1]) > 0
5393 : 10 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
5394 : : )
5395 : : {
5396 : 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1687;
5397 : 5 : {
5398 : 5 : tree res_op0;
5399 : 5 : res_op0 = captures[0];
5400 : 5 : tree _r;
5401 : 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
5402 : 5 : if (TREE_SIDE_EFFECTS (captures[1]))
5403 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5404 : 5 : if (TREE_SIDE_EFFECTS (captures[2]))
5405 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
5406 : 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
5407 : 5 : return _r;
5408 : : }
5409 : 0 : next_after_fail1687:;
5410 : : }
5411 : : }
5412 : : }
5413 : : break;
5414 : : }
5415 : : default:;
5416 : : }
5417 : : }
5418 : : break;
5419 : : }
5420 : 93425 : case MULT_EXPR:
5421 : 93425 : {
5422 : 93425 : tree _q20 = TREE_OPERAND (_p0, 0);
5423 : 93425 : tree _q21 = TREE_OPERAND (_p0, 1);
5424 : 93425 : switch (TREE_CODE (_p1))
5425 : : {
5426 : 2999 : case MULT_EXPR:
5427 : 2999 : {
5428 : 2999 : tree _q50 = TREE_OPERAND (_p1, 0);
5429 : 2999 : tree _q51 = TREE_OPERAND (_p1, 1);
5430 : 2999 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5431 : : {
5432 : 1761 : {
5433 : 1761 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5434 : 1761 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR);
5435 : 1761 : if (res) return res;
5436 : : }
5437 : : }
5438 : 2995 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5439 : : {
5440 : 53 : {
5441 : 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5442 : 53 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR);
5443 : 53 : if (res) return res;
5444 : : }
5445 : : }
5446 : 2995 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5447 : : {
5448 : 22 : {
5449 : 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5450 : 22 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR);
5451 : 22 : if (res) return res;
5452 : : }
5453 : : }
5454 : 2995 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5455 : : {
5456 : 260 : {
5457 : 260 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5458 : 260 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, NE_EXPR);
5459 : 260 : if (res) return res;
5460 : : }
5461 : : }
5462 : : break;
5463 : : }
5464 : 93421 : default:;
5465 : : }
5466 : 93421 : switch (TREE_CODE (_q21))
5467 : : {
5468 : 75906 : case INTEGER_CST:
5469 : 75906 : {
5470 : 75906 : switch (TREE_CODE (_p1))
5471 : : {
5472 : 2141 : case MULT_EXPR:
5473 : 2141 : {
5474 : 2141 : tree _q50 = TREE_OPERAND (_p1, 0);
5475 : 2141 : tree _q51 = TREE_OPERAND (_p1, 1);
5476 : 2141 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5477 : : {
5478 : 1233 : {
5479 : 1233 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5480 : 1233 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, NE_EXPR);
5481 : 1233 : if (res) return res;
5482 : : }
5483 : : }
5484 : : break;
5485 : : }
5486 : : default:;
5487 : : }
5488 : : break;
5489 : : }
5490 : : default:;
5491 : : }
5492 : : break;
5493 : : }
5494 : 4718460 : CASE_CONVERT:
5495 : 4718460 : {
5496 : 4718460 : tree _q20 = TREE_OPERAND (_p0, 0);
5497 : 4718460 : switch (TREE_CODE (_q20))
5498 : : {
5499 : 0 : case EXACT_DIV_EXPR:
5500 : 0 : {
5501 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5502 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5503 : 0 : switch (TREE_CODE (_q31))
5504 : : {
5505 : 0 : case INTEGER_CST:
5506 : 0 : {
5507 : 0 : switch (TREE_CODE (_p1))
5508 : : {
5509 : 0 : CASE_CONVERT:
5510 : 0 : {
5511 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5512 : 0 : switch (TREE_CODE (_q60))
5513 : : {
5514 : 0 : case EXACT_DIV_EXPR:
5515 : 0 : {
5516 : 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5517 : 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5518 : 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5519 : : {
5520 : 0 : {
5521 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5522 : 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5523 : 0 : if (res) return res;
5524 : : }
5525 : : }
5526 : : break;
5527 : : }
5528 : : default:;
5529 : : }
5530 : : break;
5531 : : }
5532 : : default:;
5533 : : }
5534 : : break;
5535 : : }
5536 : : default:;
5537 : : }
5538 : : break;
5539 : : }
5540 : 4718460 : default:;
5541 : : }
5542 : 4718460 : switch (TREE_CODE (_p1))
5543 : : {
5544 : 20108 : case PLUS_EXPR:
5545 : 20108 : {
5546 : 20108 : tree _q40 = TREE_OPERAND (_p1, 0);
5547 : 20108 : tree _q41 = TREE_OPERAND (_p1, 1);
5548 : 20108 : switch (TREE_CODE (_q41))
5549 : : {
5550 : 203 : CASE_CONVERT:
5551 : 203 : {
5552 : 203 : tree _q60 = TREE_OPERAND (_q41, 0);
5553 : 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5554 : : {
5555 : 0 : {
5556 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
5557 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5558 : 0 : if (res) return res;
5559 : : }
5560 : : }
5561 : : break;
5562 : : }
5563 : 20108 : default:;
5564 : : }
5565 : 20108 : switch (TREE_CODE (_q40))
5566 : : {
5567 : 809 : CASE_CONVERT:
5568 : 809 : {
5569 : 809 : tree _q50 = TREE_OPERAND (_q40, 0);
5570 : 809 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5571 : : {
5572 : 15 : {
5573 : 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
5574 : 15 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5575 : 15 : if (res) return res;
5576 : : }
5577 : : }
5578 : : break;
5579 : : }
5580 : 20101 : default:;
5581 : : }
5582 : 20101 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
5583 : : {
5584 : 0 : {
5585 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
5586 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5587 : 0 : if (res) return res;
5588 : : }
5589 : : }
5590 : 20101 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5591 : : {
5592 : 0 : {
5593 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
5594 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5595 : 0 : if (res) return res;
5596 : : }
5597 : : }
5598 : : break;
5599 : : }
5600 : 4718453 : default:;
5601 : : }
5602 : 4718453 : {
5603 : 4718453 : tree _p1_pops[1];
5604 : 4718453 : if (tree_nop_convert (_p1, _p1_pops))
5605 : : {
5606 : 1080791 : tree _q40 = _p1_pops[0];
5607 : 1080791 : switch (TREE_CODE (_q40))
5608 : : {
5609 : 135 : case PLUS_EXPR:
5610 : 135 : {
5611 : 135 : tree _q50 = TREE_OPERAND (_q40, 0);
5612 : 135 : tree _q51 = TREE_OPERAND (_q40, 1);
5613 : 135 : switch (TREE_CODE (_q51))
5614 : : {
5615 : 0 : CASE_CONVERT:
5616 : 0 : {
5617 : 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5618 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5619 : : {
5620 : 0 : {
5621 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
5622 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
5623 : 0 : if (res) return res;
5624 : : }
5625 : : }
5626 : : break;
5627 : : }
5628 : 135 : default:;
5629 : : }
5630 : 135 : switch (TREE_CODE (_q50))
5631 : : {
5632 : 73 : CASE_CONVERT:
5633 : 73 : {
5634 : 73 : tree _q60 = TREE_OPERAND (_q50, 0);
5635 : 73 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5636 : : {
5637 : 0 : {
5638 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
5639 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
5640 : 0 : if (res) return res;
5641 : : }
5642 : : }
5643 : : break;
5644 : : }
5645 : 135 : default:;
5646 : : }
5647 : 135 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5648 : : {
5649 : 0 : {
5650 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
5651 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
5652 : 0 : if (res) return res;
5653 : : }
5654 : : }
5655 : 135 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5656 : : {
5657 : 0 : {
5658 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
5659 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
5660 : 0 : if (res) return res;
5661 : : }
5662 : : }
5663 : : break;
5664 : : }
5665 : : default:;
5666 : : }
5667 : : }
5668 : : }
5669 : 4718453 : break;
5670 : : }
5671 : 2348 : case EXACT_DIV_EXPR:
5672 : 2348 : {
5673 : 2348 : tree _q20 = TREE_OPERAND (_p0, 0);
5674 : 2348 : tree _q21 = TREE_OPERAND (_p0, 1);
5675 : 2348 : switch (TREE_CODE (_q21))
5676 : : {
5677 : 2348 : case INTEGER_CST:
5678 : 2348 : {
5679 : 2348 : switch (TREE_CODE (_p1))
5680 : : {
5681 : 20 : case EXACT_DIV_EXPR:
5682 : 20 : {
5683 : 20 : tree _q50 = TREE_OPERAND (_p1, 0);
5684 : 20 : tree _q51 = TREE_OPERAND (_p1, 1);
5685 : 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5686 : : {
5687 : 12 : {
5688 : 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5689 : 12 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, NE_EXPR);
5690 : 12 : if (res) return res;
5691 : : }
5692 : : }
5693 : : break;
5694 : : }
5695 : : default:;
5696 : : }
5697 : : break;
5698 : : }
5699 : : default:;
5700 : : }
5701 : : break;
5702 : : }
5703 : 11195 : case TRUNC_DIV_EXPR:
5704 : 11195 : {
5705 : 11195 : tree _q20 = TREE_OPERAND (_p0, 0);
5706 : 11195 : tree _q21 = TREE_OPERAND (_p0, 1);
5707 : 11195 : switch (TREE_CODE (_q21))
5708 : : {
5709 : 8532 : case INTEGER_CST:
5710 : 8532 : {
5711 : 8532 : switch (TREE_CODE (_p1))
5712 : : {
5713 : 2444 : case INTEGER_CST:
5714 : 2444 : {
5715 : 2444 : {
5716 : 2444 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5717 : 2444 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
5718 : 2444 : if (res) return res;
5719 : : }
5720 : 325 : break;
5721 : : }
5722 : : default:;
5723 : : }
5724 : : break;
5725 : : }
5726 : : default:;
5727 : : }
5728 : : break;
5729 : : }
5730 : 1525890 : case PLUS_EXPR:
5731 : 1525890 : {
5732 : 1525890 : tree _q20 = TREE_OPERAND (_p0, 0);
5733 : 1525890 : tree _q21 = TREE_OPERAND (_p0, 1);
5734 : 1525890 : switch (TREE_CODE (_p1))
5735 : : {
5736 : 185673 : case PLUS_EXPR:
5737 : 185673 : {
5738 : 185673 : tree _q50 = TREE_OPERAND (_p1, 0);
5739 : 185673 : tree _q51 = TREE_OPERAND (_p1, 1);
5740 : 185673 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5741 : : {
5742 : 807 : {
5743 : 807 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5744 : 1614 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5745 : 1597 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5746 : 711 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5747 : : )
5748 : : {
5749 : 790 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1688;
5750 : 790 : {
5751 : 790 : tree res_op0;
5752 : 790 : res_op0 = captures[0];
5753 : 790 : tree res_op1;
5754 : 790 : res_op1 = captures[2];
5755 : 790 : tree _r;
5756 : 790 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5757 : 790 : if (TREE_SIDE_EFFECTS (captures[1]))
5758 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5759 : 790 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5760 : 790 : return _r;
5761 : : }
5762 : 0 : next_after_fail1688:;
5763 : : }
5764 : : }
5765 : : }
5766 : 184883 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5767 : : {
5768 : 0 : {
5769 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5770 : 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5771 : 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5772 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5773 : : )
5774 : : {
5775 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1689;
5776 : 0 : {
5777 : 0 : tree res_op0;
5778 : 0 : res_op0 = captures[0];
5779 : 0 : tree res_op1;
5780 : 0 : res_op1 = captures[2];
5781 : 0 : tree _r;
5782 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5783 : 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5784 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5785 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5786 : 0 : return _r;
5787 : : }
5788 : 0 : next_after_fail1689:;
5789 : : }
5790 : : }
5791 : : }
5792 : 184883 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5793 : : {
5794 : 112 : {
5795 : 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5796 : 224 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5797 : 224 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5798 : 112 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5799 : : )
5800 : : {
5801 : 112 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1690;
5802 : 112 : {
5803 : 112 : tree res_op0;
5804 : 112 : res_op0 = captures[0];
5805 : 112 : tree res_op1;
5806 : 112 : res_op1 = captures[2];
5807 : 112 : tree _r;
5808 : 112 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5809 : 112 : if (TREE_SIDE_EFFECTS (captures[1]))
5810 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5811 : 112 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5812 : 112 : return _r;
5813 : : }
5814 : 0 : next_after_fail1690:;
5815 : : }
5816 : : }
5817 : : }
5818 : 184771 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5819 : : {
5820 : 105580 : {
5821 : 105580 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5822 : 211160 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5823 : 211143 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5824 : 105562 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5825 : : )
5826 : : {
5827 : 105563 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1691;
5828 : 105563 : {
5829 : 105563 : tree res_op0;
5830 : 105563 : res_op0 = captures[0];
5831 : 105563 : tree res_op1;
5832 : 105563 : res_op1 = captures[2];
5833 : 105563 : tree _r;
5834 : 105563 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5835 : 105563 : if (TREE_SIDE_EFFECTS (captures[1]))
5836 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5837 : 105563 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5838 : 105563 : return _r;
5839 : : }
5840 : 0 : next_after_fail1691:;
5841 : : }
5842 : : }
5843 : : }
5844 : : break;
5845 : : }
5846 : 1419425 : default:;
5847 : : }
5848 : 1419425 : switch (TREE_CODE (_q21))
5849 : : {
5850 : 525 : CASE_CONVERT:
5851 : 525 : {
5852 : 525 : tree _q40 = TREE_OPERAND (_q21, 0);
5853 : 525 : switch (TREE_CODE (_p1))
5854 : : {
5855 : 80 : CASE_CONVERT:
5856 : 80 : {
5857 : 80 : tree _q60 = TREE_OPERAND (_p1, 0);
5858 : 80 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5859 : : {
5860 : 0 : {
5861 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5862 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5863 : 0 : if (res) return res;
5864 : : }
5865 : : }
5866 : : break;
5867 : : }
5868 : : default:;
5869 : : }
5870 : : break;
5871 : : }
5872 : 1419425 : default:;
5873 : : }
5874 : 1419425 : switch (TREE_CODE (_q20))
5875 : : {
5876 : 142786 : CASE_CONVERT:
5877 : 142786 : {
5878 : 142786 : tree _q30 = TREE_OPERAND (_q20, 0);
5879 : 142786 : switch (TREE_CODE (_p1))
5880 : : {
5881 : 2709 : CASE_CONVERT:
5882 : 2709 : {
5883 : 2709 : tree _q60 = TREE_OPERAND (_p1, 0);
5884 : 2709 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5885 : : {
5886 : 541 : {
5887 : 541 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5888 : 541 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5889 : 541 : if (res) return res;
5890 : : }
5891 : : }
5892 : : break;
5893 : : }
5894 : 142245 : default:;
5895 : : }
5896 : 142245 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5897 : : {
5898 : 0 : {
5899 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5900 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5901 : 0 : if (res) return res;
5902 : : }
5903 : : }
5904 : : break;
5905 : : }
5906 : 1418884 : default:;
5907 : : }
5908 : 1418884 : switch (TREE_CODE (_q21))
5909 : : {
5910 : 525 : CASE_CONVERT:
5911 : 525 : {
5912 : 525 : tree _q40 = TREE_OPERAND (_q21, 0);
5913 : 525 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5914 : : {
5915 : 0 : {
5916 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5917 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5918 : 0 : if (res) return res;
5919 : : }
5920 : : }
5921 : : break;
5922 : : }
5923 : 1418884 : default:;
5924 : : }
5925 : 1418884 : switch (TREE_CODE (_p1))
5926 : : {
5927 : 41845 : CASE_CONVERT:
5928 : 41845 : {
5929 : 41845 : tree _q50 = TREE_OPERAND (_p1, 0);
5930 : 41845 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5931 : : {
5932 : 0 : {
5933 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5934 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5935 : 0 : if (res) return res;
5936 : : }
5937 : : }
5938 : 41845 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5939 : : {
5940 : 0 : {
5941 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5942 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5943 : 0 : if (res) return res;
5944 : : }
5945 : : }
5946 : : break;
5947 : : }
5948 : 1418884 : default:;
5949 : : }
5950 : 1418884 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5951 : : {
5952 : 105918 : {
5953 : 105918 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5954 : 105918 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5955 : 105918 : if (res) return res;
5956 : : }
5957 : : }
5958 : 1313666 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5959 : : {
5960 : 18699 : {
5961 : 18699 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5962 : 18699 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
5963 : 18699 : if (res) return res;
5964 : : }
5965 : : }
5966 : : break;
5967 : : }
5968 : 488897 : case POINTER_PLUS_EXPR:
5969 : 488897 : {
5970 : 488897 : tree _q20 = TREE_OPERAND (_p0, 0);
5971 : 488897 : tree _q21 = TREE_OPERAND (_p0, 1);
5972 : 488897 : switch (TREE_CODE (_p1))
5973 : : {
5974 : 19773 : case POINTER_PLUS_EXPR:
5975 : 19773 : {
5976 : 19773 : tree _q50 = TREE_OPERAND (_p1, 0);
5977 : 19773 : tree _q51 = TREE_OPERAND (_p1, 1);
5978 : 19773 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5979 : : {
5980 : 4572 : {
5981 : 4572 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5982 : 4572 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
5983 : 4572 : if (res) return res;
5984 : : }
5985 : : }
5986 : : break;
5987 : : }
5988 : 484325 : default:;
5989 : : }
5990 : 484325 : switch (TREE_CODE (_q20))
5991 : : {
5992 : 80835 : CASE_CONVERT:
5993 : 80835 : {
5994 : 80835 : tree _q30 = TREE_OPERAND (_q20, 0);
5995 : 80835 : switch (TREE_CODE (_p1))
5996 : : {
5997 : 102 : CASE_CONVERT:
5998 : 102 : {
5999 : 102 : tree _q60 = TREE_OPERAND (_p1, 0);
6000 : 102 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6001 : : {
6002 : 0 : {
6003 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
6004 : 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6005 : 0 : if (res) return res;
6006 : : }
6007 : : }
6008 : : break;
6009 : : }
6010 : 80835 : default:;
6011 : : }
6012 : 80835 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6013 : : {
6014 : 65 : {
6015 : 65 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
6016 : 65 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6017 : 65 : if (res) return res;
6018 : : }
6019 : : }
6020 : : break;
6021 : : }
6022 : 484260 : default:;
6023 : : }
6024 : 484260 : switch (TREE_CODE (_p1))
6025 : : {
6026 : 3346 : CASE_CONVERT:
6027 : 3346 : {
6028 : 3346 : tree _q50 = TREE_OPERAND (_p1, 0);
6029 : 3346 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6030 : : {
6031 : 1 : {
6032 : 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6033 : 1 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6034 : 1 : if (res) return res;
6035 : : }
6036 : : }
6037 : : break;
6038 : : }
6039 : 484259 : default:;
6040 : : }
6041 : 484259 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6042 : : {
6043 : 10742 : {
6044 : 10742 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
6045 : 10742 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6046 : 10742 : if (res) return res;
6047 : : }
6048 : : }
6049 : : break;
6050 : : }
6051 : 100080 : case MINUS_EXPR:
6052 : 100080 : {
6053 : 100080 : tree _q20 = TREE_OPERAND (_p0, 0);
6054 : 100080 : tree _q21 = TREE_OPERAND (_p0, 1);
6055 : 100080 : switch (TREE_CODE (_p1))
6056 : : {
6057 : 5890 : case MINUS_EXPR:
6058 : 5890 : {
6059 : 5890 : tree _q50 = TREE_OPERAND (_p1, 0);
6060 : 5890 : tree _q51 = TREE_OPERAND (_p1, 1);
6061 : 5890 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6062 : : {
6063 : 173 : {
6064 : 173 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6065 : 346 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6066 : 176 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
6067 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
6068 : : )
6069 : : {
6070 : 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1692;
6071 : 3 : {
6072 : 3 : tree res_op0;
6073 : 3 : res_op0 = captures[0];
6074 : 3 : tree res_op1;
6075 : 3 : res_op1 = captures[2];
6076 : 3 : tree _r;
6077 : 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
6078 : 3 : if (TREE_SIDE_EFFECTS (captures[1]))
6079 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
6080 : 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
6081 : 3 : return _r;
6082 : : }
6083 : 0 : next_after_fail1692:;
6084 : : }
6085 : : }
6086 : : }
6087 : 5887 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6088 : : {
6089 : 169 : {
6090 : 169 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
6091 : 338 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
6092 : 169 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
6093 : 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
6094 : : )
6095 : : {
6096 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1693;
6097 : 0 : {
6098 : 0 : tree res_op0;
6099 : 0 : res_op0 = captures[2];
6100 : 0 : tree res_op1;
6101 : 0 : res_op1 = captures[1];
6102 : 0 : tree _r;
6103 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
6104 : 0 : if (TREE_SIDE_EFFECTS (captures[0]))
6105 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
6106 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
6107 : 0 : return _r;
6108 : : }
6109 : 0 : next_after_fail1693:;
6110 : : }
6111 : : }
6112 : : }
6113 : : break;
6114 : : }
6115 : 100077 : default:;
6116 : : }
6117 : 100077 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6118 : : {
6119 : 1740 : {
6120 : 1740 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
6121 : 1740 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
6122 : 1740 : if (res) return res;
6123 : : }
6124 : : }
6125 : : break;
6126 : : }
6127 : 26069 : case POINTER_DIFF_EXPR:
6128 : 26069 : {
6129 : 26069 : tree _q20 = TREE_OPERAND (_p0, 0);
6130 : 26069 : tree _q21 = TREE_OPERAND (_p0, 1);
6131 : 26069 : switch (TREE_CODE (_p1))
6132 : : {
6133 : 2732 : case POINTER_DIFF_EXPR:
6134 : 2732 : {
6135 : 2732 : tree _q50 = TREE_OPERAND (_p1, 0);
6136 : 2732 : tree _q51 = TREE_OPERAND (_p1, 1);
6137 : 2732 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6138 : : {
6139 : 0 : {
6140 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
6141 : 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR);
6142 : 0 : if (res) return res;
6143 : : }
6144 : : }
6145 : 2732 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6146 : : {
6147 : 0 : {
6148 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
6149 : 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
6150 : 0 : if (res) return res;
6151 : : }
6152 : : }
6153 : : break;
6154 : : }
6155 : : default:;
6156 : : }
6157 : : break;
6158 : : }
6159 : 33285773 : default:;
6160 : : }
6161 : 33285773 : {
6162 : 33285773 : tree _p0_pops[1];
6163 : 33285773 : if (tree_logical_inverted_value (_p0, _p0_pops))
6164 : : {
6165 : 655199 : tree _q20 = _p0_pops[0];
6166 : 655199 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6167 : : {
6168 : 24 : if (tree_truth_valued_p (_p1))
6169 : : {
6170 : 0 : {
6171 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6172 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, NE_EXPR);
6173 : 0 : if (res) return res;
6174 : : }
6175 : : }
6176 : : }
6177 : : }
6178 : : }
6179 : 33285773 : {
6180 : 33285773 : tree _p0_pops[1];
6181 : 33285773 : if (tree_nop_convert (_p0, _p0_pops))
6182 : : {
6183 : 2487893 : tree _q20 = _p0_pops[0];
6184 : 2487893 : switch (TREE_CODE (_q20))
6185 : : {
6186 : 36745 : case PLUS_EXPR:
6187 : 36745 : {
6188 : 36745 : tree _q30 = TREE_OPERAND (_q20, 0);
6189 : 36745 : tree _q31 = TREE_OPERAND (_q20, 1);
6190 : 36745 : switch (TREE_CODE (_q31))
6191 : : {
6192 : 35 : CASE_CONVERT:
6193 : 35 : {
6194 : 35 : tree _q50 = TREE_OPERAND (_q31, 0);
6195 : 35 : switch (TREE_CODE (_p1))
6196 : : {
6197 : 0 : CASE_CONVERT:
6198 : 0 : {
6199 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6200 : 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6201 : : {
6202 : 0 : {
6203 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
6204 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6205 : 0 : if (res) return res;
6206 : : }
6207 : : }
6208 : : break;
6209 : : }
6210 : : default:;
6211 : : }
6212 : : break;
6213 : : }
6214 : 36745 : default:;
6215 : : }
6216 : 36745 : switch (TREE_CODE (_q30))
6217 : : {
6218 : 32306 : CASE_CONVERT:
6219 : 32306 : {
6220 : 32306 : tree _q40 = TREE_OPERAND (_q30, 0);
6221 : 32306 : switch (TREE_CODE (_p1))
6222 : : {
6223 : 293 : CASE_CONVERT:
6224 : 293 : {
6225 : 293 : tree _q70 = TREE_OPERAND (_p1, 0);
6226 : 293 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6227 : : {
6228 : 38 : {
6229 : 38 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
6230 : 38 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6231 : 38 : if (res) return res;
6232 : : }
6233 : : }
6234 : : break;
6235 : : }
6236 : 32268 : default:;
6237 : : }
6238 : 32268 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6239 : : {
6240 : 18 : {
6241 : 18 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
6242 : 18 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6243 : 18 : if (res) return res;
6244 : : }
6245 : : }
6246 : : break;
6247 : : }
6248 : 36689 : default:;
6249 : : }
6250 : 36689 : switch (TREE_CODE (_q31))
6251 : : {
6252 : 35 : CASE_CONVERT:
6253 : 35 : {
6254 : 35 : tree _q50 = TREE_OPERAND (_q31, 0);
6255 : 35 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6256 : : {
6257 : 0 : {
6258 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
6259 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6260 : 0 : if (res) return res;
6261 : : }
6262 : : }
6263 : : break;
6264 : : }
6265 : 36689 : default:;
6266 : : }
6267 : 36689 : switch (TREE_CODE (_p1))
6268 : : {
6269 : 325 : CASE_CONVERT:
6270 : 325 : {
6271 : 325 : tree _q60 = TREE_OPERAND (_p1, 0);
6272 : 325 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6273 : : {
6274 : 0 : {
6275 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6276 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6277 : 0 : if (res) return res;
6278 : : }
6279 : : }
6280 : 325 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6281 : : {
6282 : 68 : {
6283 : 68 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
6284 : 68 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6285 : 68 : if (res) return res;
6286 : : }
6287 : : }
6288 : : break;
6289 : : }
6290 : 36621 : default:;
6291 : : }
6292 : 36621 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6293 : : {
6294 : 0 : {
6295 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6296 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6297 : 0 : if (res) return res;
6298 : : }
6299 : : }
6300 : 36621 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6301 : : {
6302 : 0 : {
6303 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
6304 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6305 : 0 : if (res) return res;
6306 : : }
6307 : : }
6308 : : break;
6309 : : }
6310 : 2564 : case POINTER_PLUS_EXPR:
6311 : 2564 : {
6312 : 2564 : tree _q30 = TREE_OPERAND (_q20, 0);
6313 : 2564 : tree _q31 = TREE_OPERAND (_q20, 1);
6314 : 2564 : switch (TREE_CODE (_q30))
6315 : : {
6316 : 52 : CASE_CONVERT:
6317 : 52 : {
6318 : 52 : tree _q40 = TREE_OPERAND (_q30, 0);
6319 : 52 : switch (TREE_CODE (_p1))
6320 : : {
6321 : 36 : CASE_CONVERT:
6322 : 36 : {
6323 : 36 : tree _q70 = TREE_OPERAND (_p1, 0);
6324 : 36 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6325 : : {
6326 : 0 : {
6327 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6328 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6329 : 0 : if (res) return res;
6330 : : }
6331 : : }
6332 : : break;
6333 : : }
6334 : 52 : default:;
6335 : : }
6336 : 52 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6337 : : {
6338 : 0 : {
6339 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6340 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6341 : 0 : if (res) return res;
6342 : : }
6343 : : }
6344 : : break;
6345 : : }
6346 : 2564 : default:;
6347 : : }
6348 : 2564 : switch (TREE_CODE (_p1))
6349 : : {
6350 : 52 : CASE_CONVERT:
6351 : 52 : {
6352 : 52 : tree _q60 = TREE_OPERAND (_p1, 0);
6353 : 52 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6354 : : {
6355 : 0 : {
6356 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6357 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6358 : 0 : if (res) return res;
6359 : : }
6360 : : }
6361 : : break;
6362 : : }
6363 : 2564 : default:;
6364 : : }
6365 : 2564 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6366 : : {
6367 : 3 : {
6368 : 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6369 : 3 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6370 : 3 : if (res) return res;
6371 : : }
6372 : : }
6373 : : break;
6374 : : }
6375 : : default:;
6376 : : }
6377 : : }
6378 : : }
6379 : 33285646 : if (tree_truth_valued_p (_p0))
6380 : : {
6381 : 5608610 : {
6382 : 5608610 : tree _p1_pops[1];
6383 : 5608610 : if (tree_logical_inverted_value (_p1, _p1_pops))
6384 : : {
6385 : 1121 : tree _q30 = _p1_pops[0];
6386 : 1121 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6387 : : {
6388 : 0 : {
6389 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6390 : 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, NE_EXPR);
6391 : 0 : if (res) return res;
6392 : : }
6393 : : }
6394 : : }
6395 : : }
6396 : : }
6397 : 33285646 : switch (TREE_CODE (_p1))
6398 : : {
6399 : 120546 : case PLUS_EXPR:
6400 : 120546 : {
6401 : 120546 : tree _q30 = TREE_OPERAND (_p1, 0);
6402 : 120546 : tree _q31 = TREE_OPERAND (_p1, 1);
6403 : 120546 : switch (TREE_CODE (_q31))
6404 : : {
6405 : 350 : CASE_CONVERT:
6406 : 350 : {
6407 : 350 : tree _q50 = TREE_OPERAND (_q31, 0);
6408 : 350 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6409 : : {
6410 : 0 : {
6411 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
6412 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
6413 : 0 : if (res) return res;
6414 : : }
6415 : : }
6416 : : break;
6417 : : }
6418 : 120546 : default:;
6419 : : }
6420 : 120546 : switch (TREE_CODE (_q30))
6421 : : {
6422 : 5627 : CASE_CONVERT:
6423 : 5627 : {
6424 : 5627 : tree _q40 = TREE_OPERAND (_q30, 0);
6425 : 5627 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6426 : : {
6427 : 0 : {
6428 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
6429 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
6430 : 0 : if (res) return res;
6431 : : }
6432 : : }
6433 : : break;
6434 : : }
6435 : 120546 : default:;
6436 : : }
6437 : 120546 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6438 : : {
6439 : 0 : {
6440 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
6441 : 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
6442 : 0 : if (res) return res;
6443 : : }
6444 : : }
6445 : 120546 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6446 : : {
6447 : 8 : {
6448 : 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
6449 : 8 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR);
6450 : 8 : if (res) return res;
6451 : : }
6452 : : }
6453 : : break;
6454 : : }
6455 : 33285638 : default:;
6456 : : }
6457 : 33285638 : {
6458 : 33285638 : tree _p1_pops[1];
6459 : 33285638 : if (tree_nop_convert (_p1, _p1_pops))
6460 : : {
6461 : 1379741 : tree _q30 = _p1_pops[0];
6462 : 1379741 : switch (TREE_CODE (_q30))
6463 : : {
6464 : 1104 : case PLUS_EXPR:
6465 : 1104 : {
6466 : 1104 : tree _q40 = TREE_OPERAND (_q30, 0);
6467 : 1104 : tree _q41 = TREE_OPERAND (_q30, 1);
6468 : 1104 : switch (TREE_CODE (_q41))
6469 : : {
6470 : 3 : CASE_CONVERT:
6471 : 3 : {
6472 : 3 : tree _q60 = TREE_OPERAND (_q41, 0);
6473 : 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6474 : : {
6475 : 0 : {
6476 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
6477 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6478 : 0 : if (res) return res;
6479 : : }
6480 : : }
6481 : : break;
6482 : : }
6483 : 1104 : default:;
6484 : : }
6485 : 1104 : switch (TREE_CODE (_q40))
6486 : : {
6487 : 553 : CASE_CONVERT:
6488 : 553 : {
6489 : 553 : tree _q50 = TREE_OPERAND (_q40, 0);
6490 : 553 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6491 : : {
6492 : 0 : {
6493 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
6494 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6495 : 0 : if (res) return res;
6496 : : }
6497 : : }
6498 : : break;
6499 : : }
6500 : 1104 : default:;
6501 : : }
6502 : 1104 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6503 : : {
6504 : 0 : {
6505 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
6506 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6507 : 0 : if (res) return res;
6508 : : }
6509 : : }
6510 : 1104 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6511 : : {
6512 : 0 : {
6513 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
6514 : 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
6515 : 0 : if (res) return res;
6516 : : }
6517 : : }
6518 : : break;
6519 : : }
6520 : : default:;
6521 : : }
6522 : : }
6523 : : }
6524 : 33285638 : switch (TREE_CODE (_p0))
6525 : : {
6526 : 4718318 : CASE_CONVERT:
6527 : 4718318 : {
6528 : 4718318 : tree _q20 = TREE_OPERAND (_p0, 0);
6529 : 4718318 : switch (TREE_CODE (_p1))
6530 : : {
6531 : 259 : case POINTER_PLUS_EXPR:
6532 : 259 : {
6533 : 259 : tree _q40 = TREE_OPERAND (_p1, 0);
6534 : 259 : tree _q41 = TREE_OPERAND (_p1, 1);
6535 : 259 : switch (TREE_CODE (_q40))
6536 : : {
6537 : 44 : CASE_CONVERT:
6538 : 44 : {
6539 : 44 : tree _q50 = TREE_OPERAND (_q40, 0);
6540 : 44 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6541 : : {
6542 : 0 : {
6543 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6544 : 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6545 : 0 : if (res) return res;
6546 : : }
6547 : : }
6548 : : break;
6549 : : }
6550 : 259 : default:;
6551 : : }
6552 : 259 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6553 : : {
6554 : 0 : {
6555 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6556 : 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6557 : 0 : if (res) return res;
6558 : : }
6559 : : }
6560 : : break;
6561 : : }
6562 : 4718318 : default:;
6563 : : }
6564 : 4718318 : {
6565 : 4718318 : tree _p1_pops[1];
6566 : 4718318 : if (tree_nop_convert (_p1, _p1_pops))
6567 : : {
6568 : 1080685 : tree _q40 = _p1_pops[0];
6569 : 1080685 : switch (TREE_CODE (_q40))
6570 : : {
6571 : 50 : case POINTER_PLUS_EXPR:
6572 : 50 : {
6573 : 50 : tree _q50 = TREE_OPERAND (_q40, 0);
6574 : 50 : tree _q51 = TREE_OPERAND (_q40, 1);
6575 : 50 : switch (TREE_CODE (_q50))
6576 : : {
6577 : 8 : CASE_CONVERT:
6578 : 8 : {
6579 : 8 : tree _q60 = TREE_OPERAND (_q50, 0);
6580 : 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6581 : : {
6582 : 0 : {
6583 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6584 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6585 : 0 : if (res) return res;
6586 : : }
6587 : : }
6588 : : break;
6589 : : }
6590 : 50 : default:;
6591 : : }
6592 : 50 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6593 : : {
6594 : 0 : {
6595 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6596 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6597 : 0 : if (res) return res;
6598 : : }
6599 : : }
6600 : : break;
6601 : : }
6602 : : default:;
6603 : : }
6604 : : }
6605 : : }
6606 : 4718318 : break;
6607 : : }
6608 : 33285638 : default:;
6609 : : }
6610 : 33285638 : switch (TREE_CODE (_p1))
6611 : : {
6612 : 19352 : case POINTER_PLUS_EXPR:
6613 : 19352 : {
6614 : 19352 : tree _q30 = TREE_OPERAND (_p1, 0);
6615 : 19352 : tree _q31 = TREE_OPERAND (_p1, 1);
6616 : 19352 : switch (TREE_CODE (_q30))
6617 : : {
6618 : 2805 : CASE_CONVERT:
6619 : 2805 : {
6620 : 2805 : tree _q40 = TREE_OPERAND (_q30, 0);
6621 : 2805 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6622 : : {
6623 : 0 : {
6624 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6625 : 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6626 : 0 : if (res) return res;
6627 : : }
6628 : : }
6629 : : break;
6630 : : }
6631 : 19352 : default:;
6632 : : }
6633 : 19352 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6634 : : {
6635 : 0 : {
6636 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6637 : 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
6638 : 0 : if (res) return res;
6639 : : }
6640 : : }
6641 : : break;
6642 : : }
6643 : 33285638 : default:;
6644 : : }
6645 : 33285638 : {
6646 : 33285638 : tree _p1_pops[1];
6647 : 33285638 : if (tree_nop_convert (_p1, _p1_pops))
6648 : : {
6649 : 1379741 : tree _q30 = _p1_pops[0];
6650 : 1379741 : switch (TREE_CODE (_q30))
6651 : : {
6652 : 406 : case POINTER_PLUS_EXPR:
6653 : 406 : {
6654 : 406 : tree _q40 = TREE_OPERAND (_q30, 0);
6655 : 406 : tree _q41 = TREE_OPERAND (_q30, 1);
6656 : 406 : switch (TREE_CODE (_q40))
6657 : : {
6658 : 8 : CASE_CONVERT:
6659 : 8 : {
6660 : 8 : tree _q50 = TREE_OPERAND (_q40, 0);
6661 : 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6662 : : {
6663 : 0 : {
6664 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6665 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6666 : 0 : if (res) return res;
6667 : : }
6668 : : }
6669 : : break;
6670 : : }
6671 : 406 : default:;
6672 : : }
6673 : 406 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6674 : : {
6675 : 0 : {
6676 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6677 : 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
6678 : 0 : if (res) return res;
6679 : : }
6680 : : }
6681 : : break;
6682 : : }
6683 : : default:;
6684 : : }
6685 : : }
6686 : : }
6687 : 33285638 : switch (TREE_CODE (_p0))
6688 : : {
6689 : 473517 : case POINTER_PLUS_EXPR:
6690 : 473517 : {
6691 : 473517 : tree _q20 = TREE_OPERAND (_p0, 0);
6692 : 473517 : tree _q21 = TREE_OPERAND (_p0, 1);
6693 : 473517 : switch (TREE_CODE (_p1))
6694 : : {
6695 : 49421 : case ADDR_EXPR:
6696 : 49421 : {
6697 : 49421 : {
6698 : 49421 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6699 : 49421 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, NE_EXPR);
6700 : 49421 : if (res) return res;
6701 : : }
6702 : 36352 : break;
6703 : : }
6704 : 460448 : default:;
6705 : : }
6706 : 460448 : switch (TREE_CODE (_q20))
6707 : : {
6708 : 4719 : case ADDR_EXPR:
6709 : 4719 : {
6710 : 4719 : switch (TREE_CODE (_p1))
6711 : : {
6712 : 281 : case POINTER_PLUS_EXPR:
6713 : 281 : {
6714 : 281 : tree _q50 = TREE_OPERAND (_p1, 0);
6715 : 281 : tree _q51 = TREE_OPERAND (_p1, 1);
6716 : 281 : switch (TREE_CODE (_q50))
6717 : : {
6718 : 0 : case ADDR_EXPR:
6719 : 0 : {
6720 : 0 : {
6721 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
6722 : 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
6723 : 0 : if (res) return res;
6724 : : }
6725 : 0 : break;
6726 : : }
6727 : : default:;
6728 : : }
6729 : : break;
6730 : : }
6731 : : default:;
6732 : : }
6733 : : break;
6734 : : }
6735 : : default:;
6736 : : }
6737 : : break;
6738 : : }
6739 : 202894 : case ADDR_EXPR:
6740 : 202894 : {
6741 : 202894 : switch (TREE_CODE (_p1))
6742 : : {
6743 : 0 : case POINTER_PLUS_EXPR:
6744 : 0 : {
6745 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6746 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6747 : 0 : {
6748 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6749 : 0 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, NE_EXPR);
6750 : 0 : if (res) return res;
6751 : : }
6752 : 0 : break;
6753 : : }
6754 : : default:;
6755 : : }
6756 : : break;
6757 : : }
6758 : 33272569 : default:;
6759 : : }
6760 : 33272569 : switch (TREE_CODE (_p1))
6761 : : {
6762 : 31162 : case MINUS_EXPR:
6763 : 31162 : {
6764 : 31162 : tree _q30 = TREE_OPERAND (_p1, 0);
6765 : 31162 : tree _q31 = TREE_OPERAND (_p1, 1);
6766 : 31162 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6767 : : {
6768 : 0 : {
6769 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6770 : 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
6771 : 0 : if (res) return res;
6772 : : }
6773 : : }
6774 : : break;
6775 : : }
6776 : 33272569 : default:;
6777 : : }
6778 : 33272569 : switch (TREE_CODE (_p0))
6779 : : {
6780 : 9076 : case TRUNC_DIV_EXPR:
6781 : 9076 : {
6782 : 9076 : tree _q20 = TREE_OPERAND (_p0, 0);
6783 : 9076 : tree _q21 = TREE_OPERAND (_p0, 1);
6784 : 9076 : if (integer_zerop (_p1))
6785 : : {
6786 : 986 : {
6787 : 986 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6788 : 986 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
6789 : 986 : if (res) return res;
6790 : : }
6791 : : }
6792 : : break;
6793 : : }
6794 : 4718318 : CASE_CONVERT:
6795 : 4718318 : {
6796 : 4718318 : tree _q20 = TREE_OPERAND (_p0, 0);
6797 : 4718318 : switch (TREE_CODE (_p1))
6798 : : {
6799 : 1220558 : CASE_CONVERT:
6800 : 1220558 : {
6801 : 1220558 : tree _q40 = TREE_OPERAND (_p1, 0);
6802 : 1220558 : switch (TREE_CODE (_q40))
6803 : : {
6804 : 0 : case MINUS_EXPR:
6805 : 0 : {
6806 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6807 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6808 : 0 : switch (TREE_CODE (_q50))
6809 : : {
6810 : 0 : case INTEGER_CST:
6811 : 0 : {
6812 : 0 : switch (TREE_CODE (_q51))
6813 : : {
6814 : 0 : CASE_CONVERT:
6815 : 0 : {
6816 : 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6817 : 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6818 : : {
6819 : 0 : {
6820 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6821 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6822 : 0 : if (res) return res;
6823 : : }
6824 : : }
6825 : : break;
6826 : : }
6827 : : default:;
6828 : : }
6829 : : break;
6830 : : }
6831 : : default:;
6832 : : }
6833 : : break;
6834 : : }
6835 : : default:;
6836 : : }
6837 : : break;
6838 : : }
6839 : 4718318 : default:;
6840 : : }
6841 : 4718318 : switch (TREE_CODE (_q20))
6842 : : {
6843 : 115 : case MINUS_EXPR:
6844 : 115 : {
6845 : 115 : tree _q30 = TREE_OPERAND (_q20, 0);
6846 : 115 : tree _q31 = TREE_OPERAND (_q20, 1);
6847 : 115 : switch (TREE_CODE (_q30))
6848 : : {
6849 : 50 : case INTEGER_CST:
6850 : 50 : {
6851 : 50 : switch (TREE_CODE (_q31))
6852 : : {
6853 : 1 : CASE_CONVERT:
6854 : 1 : {
6855 : 1 : tree _q50 = TREE_OPERAND (_q31, 0);
6856 : 1 : switch (TREE_CODE (_p1))
6857 : : {
6858 : 0 : CASE_CONVERT:
6859 : 0 : {
6860 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6861 : 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6862 : : {
6863 : 0 : {
6864 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6865 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6866 : 0 : if (res) return res;
6867 : : }
6868 : : }
6869 : : break;
6870 : : }
6871 : 1 : default:;
6872 : : }
6873 : 1 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6874 : : {
6875 : 0 : {
6876 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6877 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6878 : 0 : if (res) return res;
6879 : : }
6880 : : }
6881 : : break;
6882 : : }
6883 : 50 : default:;
6884 : : }
6885 : 50 : switch (TREE_CODE (_p1))
6886 : : {
6887 : 0 : CASE_CONVERT:
6888 : 0 : {
6889 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6890 : 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6891 : : {
6892 : 0 : {
6893 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6894 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6895 : 0 : if (res) return res;
6896 : : }
6897 : : }
6898 : : break;
6899 : : }
6900 : 50 : default:;
6901 : : }
6902 : 50 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6903 : : {
6904 : 0 : {
6905 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6906 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6907 : 0 : if (res) return res;
6908 : : }
6909 : : }
6910 : : break;
6911 : : }
6912 : : default:;
6913 : : }
6914 : : break;
6915 : : }
6916 : 4718318 : default:;
6917 : : }
6918 : 4718318 : switch (TREE_CODE (_p1))
6919 : : {
6920 : 1220558 : CASE_CONVERT:
6921 : 1220558 : {
6922 : 1220558 : tree _q40 = TREE_OPERAND (_p1, 0);
6923 : 1220558 : switch (TREE_CODE (_q40))
6924 : : {
6925 : 0 : case MINUS_EXPR:
6926 : 0 : {
6927 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6928 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6929 : 0 : switch (TREE_CODE (_q50))
6930 : : {
6931 : 0 : case INTEGER_CST:
6932 : 0 : {
6933 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6934 : : {
6935 : 0 : {
6936 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6937 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6938 : 0 : if (res) return res;
6939 : : }
6940 : : }
6941 : : break;
6942 : : }
6943 : : default:;
6944 : : }
6945 : : break;
6946 : : }
6947 : : default:;
6948 : : }
6949 : : break;
6950 : : }
6951 : 21696 : case MINUS_EXPR:
6952 : 21696 : {
6953 : 21696 : tree _q40 = TREE_OPERAND (_p1, 0);
6954 : 21696 : tree _q41 = TREE_OPERAND (_p1, 1);
6955 : 21696 : switch (TREE_CODE (_q40))
6956 : : {
6957 : 400 : case INTEGER_CST:
6958 : 400 : {
6959 : 400 : switch (TREE_CODE (_q41))
6960 : : {
6961 : 20 : CASE_CONVERT:
6962 : 20 : {
6963 : 20 : tree _q60 = TREE_OPERAND (_q41, 0);
6964 : 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6965 : : {
6966 : 0 : {
6967 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6968 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6969 : 0 : if (res) return res;
6970 : : }
6971 : : }
6972 : : break;
6973 : : }
6974 : 400 : default:;
6975 : : }
6976 : 400 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6977 : : {
6978 : 0 : {
6979 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6980 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
6981 : 0 : if (res) return res;
6982 : : }
6983 : : }
6984 : : break;
6985 : : }
6986 : : default:;
6987 : : }
6988 : : break;
6989 : : }
6990 : : default:;
6991 : : }
6992 : : break;
6993 : : }
6994 : 98377 : case MINUS_EXPR:
6995 : 98377 : {
6996 : 98377 : tree _q20 = TREE_OPERAND (_p0, 0);
6997 : 98377 : tree _q21 = TREE_OPERAND (_p0, 1);
6998 : 98377 : switch (TREE_CODE (_q20))
6999 : : {
7000 : 1832 : case INTEGER_CST:
7001 : 1832 : {
7002 : 1832 : switch (TREE_CODE (_q21))
7003 : : {
7004 : 64 : CASE_CONVERT:
7005 : 64 : {
7006 : 64 : tree _q40 = TREE_OPERAND (_q21, 0);
7007 : 64 : switch (TREE_CODE (_p1))
7008 : : {
7009 : 0 : CASE_CONVERT:
7010 : 0 : {
7011 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
7012 : 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
7013 : : {
7014 : 0 : {
7015 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7016 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7017 : 0 : if (res) return res;
7018 : : }
7019 : : }
7020 : : break;
7021 : : }
7022 : 64 : default:;
7023 : : }
7024 : 64 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7025 : : {
7026 : 0 : {
7027 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7028 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7029 : 0 : if (res) return res;
7030 : : }
7031 : : }
7032 : : break;
7033 : : }
7034 : 1832 : default:;
7035 : : }
7036 : 1832 : switch (TREE_CODE (_p1))
7037 : : {
7038 : 308 : CASE_CONVERT:
7039 : 308 : {
7040 : 308 : tree _q50 = TREE_OPERAND (_p1, 0);
7041 : 308 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7042 : : {
7043 : 0 : {
7044 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7045 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7046 : 0 : if (res) return res;
7047 : : }
7048 : : }
7049 : : break;
7050 : : }
7051 : 1832 : default:;
7052 : : }
7053 : 1832 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7054 : : {
7055 : 1 : {
7056 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7057 : 1 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7058 : 1 : if (res) return res;
7059 : : }
7060 : : }
7061 : : break;
7062 : : }
7063 : : default:;
7064 : : }
7065 : : break;
7066 : : }
7067 : 33272453 : default:;
7068 : : }
7069 : 33272453 : switch (TREE_CODE (_p1))
7070 : : {
7071 : 1546487 : CASE_CONVERT:
7072 : 1546487 : {
7073 : 1546487 : tree _q30 = TREE_OPERAND (_p1, 0);
7074 : 1546487 : switch (TREE_CODE (_q30))
7075 : : {
7076 : 556 : case MINUS_EXPR:
7077 : 556 : {
7078 : 556 : tree _q40 = TREE_OPERAND (_q30, 0);
7079 : 556 : tree _q41 = TREE_OPERAND (_q30, 1);
7080 : 556 : switch (TREE_CODE (_q40))
7081 : : {
7082 : 17 : case INTEGER_CST:
7083 : 17 : {
7084 : 17 : switch (TREE_CODE (_q41))
7085 : : {
7086 : 0 : CASE_CONVERT:
7087 : 0 : {
7088 : 0 : tree _q60 = TREE_OPERAND (_q41, 0);
7089 : 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7090 : : {
7091 : 0 : {
7092 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
7093 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7094 : 0 : if (res) return res;
7095 : : }
7096 : : }
7097 : : break;
7098 : : }
7099 : 17 : default:;
7100 : : }
7101 : 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7102 : : {
7103 : 0 : {
7104 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
7105 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7106 : 0 : if (res) return res;
7107 : : }
7108 : : }
7109 : : break;
7110 : : }
7111 : : default:;
7112 : : }
7113 : : break;
7114 : : }
7115 : : default:;
7116 : : }
7117 : : break;
7118 : : }
7119 : 31162 : case MINUS_EXPR:
7120 : 31162 : {
7121 : 31162 : tree _q30 = TREE_OPERAND (_p1, 0);
7122 : 31162 : tree _q31 = TREE_OPERAND (_p1, 1);
7123 : 31162 : switch (TREE_CODE (_q30))
7124 : : {
7125 : 587 : case INTEGER_CST:
7126 : 587 : {
7127 : 587 : switch (TREE_CODE (_q31))
7128 : : {
7129 : 28 : CASE_CONVERT:
7130 : 28 : {
7131 : 28 : tree _q50 = TREE_OPERAND (_q31, 0);
7132 : 28 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7133 : : {
7134 : 0 : {
7135 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7136 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7137 : 0 : if (res) return res;
7138 : : }
7139 : : }
7140 : : break;
7141 : : }
7142 : 587 : default:;
7143 : : }
7144 : 587 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7145 : : {
7146 : 0 : {
7147 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7148 : 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
7149 : 0 : if (res) return res;
7150 : : }
7151 : : }
7152 : : break;
7153 : : }
7154 : : default:;
7155 : : }
7156 : : break;
7157 : : }
7158 : 33272453 : default:;
7159 : : }
7160 : 33272453 : switch (TREE_CODE (_p0))
7161 : : {
7162 : 17817 : case LT_EXPR:
7163 : 17817 : {
7164 : 17817 : tree _q20 = TREE_OPERAND (_p0, 0);
7165 : 17817 : tree _q21 = TREE_OPERAND (_p0, 1);
7166 : 17817 : switch (TREE_CODE (_p1))
7167 : : {
7168 : 16 : case GT_EXPR:
7169 : 16 : {
7170 : 16 : tree _q50 = TREE_OPERAND (_p1, 0);
7171 : 16 : tree _q51 = TREE_OPERAND (_p1, 1);
7172 : 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7173 : : {
7174 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7175 : : {
7176 : 0 : {
7177 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7178 : 0 : const enum tree_code cmp1 = LT_EXPR;
7179 : 0 : const enum tree_code cmp2 = GT_EXPR;
7180 : 0 : const enum tree_code rcmp = NE_EXPR;
7181 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7182 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7183 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7184 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7185 : : )
7186 : : {
7187 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1694;
7188 : 0 : {
7189 : 0 : tree res_op0;
7190 : 0 : res_op0 = captures[0];
7191 : 0 : tree res_op1;
7192 : 0 : res_op1 = captures[1];
7193 : 0 : tree _r;
7194 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7195 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7196 : 0 : return _r;
7197 : : }
7198 : 0 : next_after_fail1694:;
7199 : : }
7200 : : }
7201 : : }
7202 : : }
7203 : : break;
7204 : : }
7205 : 23 : case EQ_EXPR:
7206 : 23 : {
7207 : 23 : tree _q50 = TREE_OPERAND (_p1, 0);
7208 : 23 : tree _q51 = TREE_OPERAND (_p1, 1);
7209 : 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7210 : : {
7211 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7212 : : {
7213 : 0 : {
7214 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7215 : 0 : const enum tree_code cmp1 = LT_EXPR;
7216 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7217 : 0 : const enum tree_code rcmp = LE_EXPR;
7218 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7219 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7220 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7221 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7222 : : )
7223 : : {
7224 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1695;
7225 : 0 : {
7226 : 0 : tree res_op0;
7227 : 0 : res_op0 = captures[0];
7228 : 0 : tree res_op1;
7229 : 0 : res_op1 = captures[1];
7230 : 0 : tree _r;
7231 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7232 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7233 : 0 : return _r;
7234 : : }
7235 : 0 : next_after_fail1695:;
7236 : : }
7237 : : }
7238 : : }
7239 : : }
7240 : : break;
7241 : : }
7242 : 23 : case NE_EXPR:
7243 : 23 : {
7244 : 23 : tree _q50 = TREE_OPERAND (_p1, 0);
7245 : 23 : tree _q51 = TREE_OPERAND (_p1, 1);
7246 : 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7247 : : {
7248 : 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7249 : : {
7250 : 0 : {
7251 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7252 : 0 : const enum tree_code cmp1 = LT_EXPR;
7253 : 0 : const enum tree_code cmp2 = NE_EXPR;
7254 : 0 : const enum tree_code rcmp = GT_EXPR;
7255 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7256 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7257 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7258 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7259 : : )
7260 : : {
7261 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1696;
7262 : 0 : {
7263 : 0 : tree res_op0;
7264 : 0 : res_op0 = captures[0];
7265 : 0 : tree res_op1;
7266 : 0 : res_op1 = captures[1];
7267 : 0 : tree _r;
7268 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7269 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7270 : 0 : return _r;
7271 : : }
7272 : 0 : next_after_fail1696:;
7273 : : }
7274 : : }
7275 : : }
7276 : : }
7277 : : break;
7278 : : }
7279 : : default:;
7280 : : }
7281 : : break;
7282 : : }
7283 : 11718 : case LE_EXPR:
7284 : 11718 : {
7285 : 11718 : tree _q20 = TREE_OPERAND (_p0, 0);
7286 : 11718 : tree _q21 = TREE_OPERAND (_p0, 1);
7287 : 11718 : switch (TREE_CODE (_p1))
7288 : : {
7289 : 23 : case GE_EXPR:
7290 : 23 : {
7291 : 23 : tree _q50 = TREE_OPERAND (_p1, 0);
7292 : 23 : tree _q51 = TREE_OPERAND (_p1, 1);
7293 : 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7294 : : {
7295 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7296 : : {
7297 : 0 : {
7298 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7299 : 0 : const enum tree_code cmp1 = LE_EXPR;
7300 : 0 : const enum tree_code cmp2 = GE_EXPR;
7301 : 0 : const enum tree_code rcmp = NE_EXPR;
7302 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7303 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7304 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7305 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7306 : : )
7307 : : {
7308 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1697;
7309 : 0 : {
7310 : 0 : tree res_op0;
7311 : 0 : res_op0 = captures[0];
7312 : 0 : tree res_op1;
7313 : 0 : res_op1 = captures[1];
7314 : 0 : tree _r;
7315 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7316 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7317 : 0 : return _r;
7318 : : }
7319 : 0 : next_after_fail1697:;
7320 : : }
7321 : : }
7322 : : }
7323 : : }
7324 : : break;
7325 : : }
7326 : 41 : case EQ_EXPR:
7327 : 41 : {
7328 : 41 : tree _q50 = TREE_OPERAND (_p1, 0);
7329 : 41 : tree _q51 = TREE_OPERAND (_p1, 1);
7330 : 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7331 : : {
7332 : 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7333 : : {
7334 : 0 : {
7335 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7336 : 0 : const enum tree_code cmp1 = LE_EXPR;
7337 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7338 : 0 : const enum tree_code rcmp = LT_EXPR;
7339 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7340 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7341 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7342 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7343 : : )
7344 : : {
7345 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1698;
7346 : 0 : {
7347 : 0 : tree res_op0;
7348 : 0 : res_op0 = captures[0];
7349 : 0 : tree res_op1;
7350 : 0 : res_op1 = captures[1];
7351 : 0 : tree _r;
7352 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7353 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7354 : 0 : return _r;
7355 : : }
7356 : 0 : next_after_fail1698:;
7357 : : }
7358 : : }
7359 : : }
7360 : : }
7361 : : break;
7362 : : }
7363 : 15 : case NE_EXPR:
7364 : 15 : {
7365 : 15 : tree _q50 = TREE_OPERAND (_p1, 0);
7366 : 15 : tree _q51 = TREE_OPERAND (_p1, 1);
7367 : 15 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7368 : : {
7369 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7370 : : {
7371 : 0 : {
7372 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7373 : 0 : const enum tree_code cmp1 = LE_EXPR;
7374 : 0 : const enum tree_code cmp2 = NE_EXPR;
7375 : 0 : const enum tree_code rcmp = GE_EXPR;
7376 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7377 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7378 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7379 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7380 : : )
7381 : : {
7382 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1699;
7383 : 0 : {
7384 : 0 : tree res_op0;
7385 : 0 : res_op0 = captures[0];
7386 : 0 : tree res_op1;
7387 : 0 : res_op1 = captures[1];
7388 : 0 : tree _r;
7389 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7390 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7391 : 0 : return _r;
7392 : : }
7393 : 0 : next_after_fail1699:;
7394 : : }
7395 : : }
7396 : : }
7397 : : }
7398 : : break;
7399 : : }
7400 : : default:;
7401 : : }
7402 : : break;
7403 : : }
7404 : 34457 : case GT_EXPR:
7405 : 34457 : {
7406 : 34457 : tree _q20 = TREE_OPERAND (_p0, 0);
7407 : 34457 : tree _q21 = TREE_OPERAND (_p0, 1);
7408 : 34457 : switch (TREE_CODE (_p1))
7409 : : {
7410 : 74 : case GT_EXPR:
7411 : 74 : {
7412 : 74 : tree _q50 = TREE_OPERAND (_p1, 0);
7413 : 74 : tree _q51 = TREE_OPERAND (_p1, 1);
7414 : 74 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7415 : : {
7416 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7417 : : {
7418 : 0 : {
7419 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7420 : 0 : const enum tree_code cmp1 = LT_EXPR;
7421 : 0 : const enum tree_code cmp2 = GT_EXPR;
7422 : 0 : const enum tree_code rcmp = NE_EXPR;
7423 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7424 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7425 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7426 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7427 : : )
7428 : : {
7429 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1700;
7430 : 0 : {
7431 : 0 : tree res_op0;
7432 : 0 : res_op0 = captures[0];
7433 : 0 : tree res_op1;
7434 : 0 : res_op1 = captures[1];
7435 : 0 : tree _r;
7436 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7437 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7438 : 0 : return _r;
7439 : : }
7440 : 0 : next_after_fail1700:;
7441 : : }
7442 : : }
7443 : 0 : {
7444 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7445 : 0 : const enum tree_code cmp1 = LT_EXPR;
7446 : 0 : const enum tree_code cmp2 = GT_EXPR;
7447 : 0 : const enum tree_code rcmp = NE_EXPR;
7448 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7449 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7450 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7451 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7452 : : )
7453 : : {
7454 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1701;
7455 : 0 : {
7456 : 0 : tree res_op0;
7457 : 0 : res_op0 = captures[0];
7458 : 0 : tree res_op1;
7459 : 0 : res_op1 = captures[1];
7460 : 0 : tree _r;
7461 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7462 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7463 : 0 : return _r;
7464 : : }
7465 : 0 : next_after_fail1701:;
7466 : : }
7467 : : }
7468 : : }
7469 : : }
7470 : : break;
7471 : : }
7472 : 29 : case EQ_EXPR:
7473 : 29 : {
7474 : 29 : tree _q50 = TREE_OPERAND (_p1, 0);
7475 : 29 : tree _q51 = TREE_OPERAND (_p1, 1);
7476 : 29 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7477 : : {
7478 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7479 : : {
7480 : 0 : {
7481 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7482 : 0 : const enum tree_code cmp1 = LT_EXPR;
7483 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7484 : 0 : const enum tree_code rcmp = LE_EXPR;
7485 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7486 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7487 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7488 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7489 : : )
7490 : : {
7491 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1702;
7492 : 0 : {
7493 : 0 : tree res_op0;
7494 : 0 : res_op0 = captures[0];
7495 : 0 : tree res_op1;
7496 : 0 : res_op1 = captures[1];
7497 : 0 : tree _r;
7498 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7499 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7500 : 0 : return _r;
7501 : : }
7502 : 0 : next_after_fail1702:;
7503 : : }
7504 : : }
7505 : : }
7506 : : }
7507 : : break;
7508 : : }
7509 : 53 : case NE_EXPR:
7510 : 53 : {
7511 : 53 : tree _q50 = TREE_OPERAND (_p1, 0);
7512 : 53 : tree _q51 = TREE_OPERAND (_p1, 1);
7513 : 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7514 : : {
7515 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7516 : : {
7517 : 0 : {
7518 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7519 : 0 : const enum tree_code cmp1 = LT_EXPR;
7520 : 0 : const enum tree_code cmp2 = NE_EXPR;
7521 : 0 : const enum tree_code rcmp = GT_EXPR;
7522 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7523 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7524 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7525 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7526 : : )
7527 : : {
7528 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1703;
7529 : 0 : {
7530 : 0 : tree res_op0;
7531 : 0 : res_op0 = captures[0];
7532 : 0 : tree res_op1;
7533 : 0 : res_op1 = captures[1];
7534 : 0 : tree _r;
7535 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7536 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7537 : 0 : return _r;
7538 : : }
7539 : 0 : next_after_fail1703:;
7540 : : }
7541 : : }
7542 : : }
7543 : : }
7544 : : break;
7545 : : }
7546 : 30 : case LT_EXPR:
7547 : 30 : {
7548 : 30 : tree _q50 = TREE_OPERAND (_p1, 0);
7549 : 30 : tree _q51 = TREE_OPERAND (_p1, 1);
7550 : 30 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7551 : : {
7552 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7553 : : {
7554 : 0 : {
7555 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7556 : 0 : const enum tree_code cmp1 = LT_EXPR;
7557 : 0 : const enum tree_code cmp2 = GT_EXPR;
7558 : 0 : const enum tree_code rcmp = NE_EXPR;
7559 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7560 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7561 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7562 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7563 : : )
7564 : : {
7565 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1704;
7566 : 0 : {
7567 : 0 : tree res_op0;
7568 : 0 : res_op0 = captures[0];
7569 : 0 : tree res_op1;
7570 : 0 : res_op1 = captures[1];
7571 : 0 : tree _r;
7572 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7573 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7574 : 0 : return _r;
7575 : : }
7576 : 0 : next_after_fail1704:;
7577 : : }
7578 : : }
7579 : : }
7580 : : }
7581 : : break;
7582 : : }
7583 : : default:;
7584 : : }
7585 : : break;
7586 : : }
7587 : 6176 : case GE_EXPR:
7588 : 6176 : {
7589 : 6176 : tree _q20 = TREE_OPERAND (_p0, 0);
7590 : 6176 : tree _q21 = TREE_OPERAND (_p0, 1);
7591 : 6176 : switch (TREE_CODE (_p1))
7592 : : {
7593 : 73 : case GE_EXPR:
7594 : 73 : {
7595 : 73 : tree _q50 = TREE_OPERAND (_p1, 0);
7596 : 73 : tree _q51 = TREE_OPERAND (_p1, 1);
7597 : 73 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7598 : : {
7599 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7600 : : {
7601 : 0 : {
7602 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7603 : 0 : const enum tree_code cmp1 = LE_EXPR;
7604 : 0 : const enum tree_code cmp2 = GE_EXPR;
7605 : 0 : const enum tree_code rcmp = NE_EXPR;
7606 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7607 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7608 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7609 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7610 : : )
7611 : : {
7612 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1705;
7613 : 0 : {
7614 : 0 : tree res_op0;
7615 : 0 : res_op0 = captures[0];
7616 : 0 : tree res_op1;
7617 : 0 : res_op1 = captures[1];
7618 : 0 : tree _r;
7619 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7620 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7621 : 0 : return _r;
7622 : : }
7623 : 0 : next_after_fail1705:;
7624 : : }
7625 : : }
7626 : 0 : {
7627 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7628 : 0 : const enum tree_code cmp1 = LE_EXPR;
7629 : 0 : const enum tree_code cmp2 = GE_EXPR;
7630 : 0 : const enum tree_code rcmp = NE_EXPR;
7631 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7632 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7633 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7634 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7635 : : )
7636 : : {
7637 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1706;
7638 : 0 : {
7639 : 0 : tree res_op0;
7640 : 0 : res_op0 = captures[0];
7641 : 0 : tree res_op1;
7642 : 0 : res_op1 = captures[1];
7643 : 0 : tree _r;
7644 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7645 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7646 : 0 : return _r;
7647 : : }
7648 : 0 : next_after_fail1706:;
7649 : : }
7650 : : }
7651 : : }
7652 : : }
7653 : : break;
7654 : : }
7655 : 52 : case EQ_EXPR:
7656 : 52 : {
7657 : 52 : tree _q50 = TREE_OPERAND (_p1, 0);
7658 : 52 : tree _q51 = TREE_OPERAND (_p1, 1);
7659 : 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7660 : : {
7661 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7662 : : {
7663 : 0 : {
7664 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7665 : 0 : const enum tree_code cmp1 = LE_EXPR;
7666 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7667 : 0 : const enum tree_code rcmp = LT_EXPR;
7668 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7669 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7670 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7671 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7672 : : )
7673 : : {
7674 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1707;
7675 : 0 : {
7676 : 0 : tree res_op0;
7677 : 0 : res_op0 = captures[0];
7678 : 0 : tree res_op1;
7679 : 0 : res_op1 = captures[1];
7680 : 0 : tree _r;
7681 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7682 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7683 : 0 : return _r;
7684 : : }
7685 : 0 : next_after_fail1707:;
7686 : : }
7687 : : }
7688 : : }
7689 : : }
7690 : : break;
7691 : : }
7692 : 11 : case NE_EXPR:
7693 : 11 : {
7694 : 11 : tree _q50 = TREE_OPERAND (_p1, 0);
7695 : 11 : tree _q51 = TREE_OPERAND (_p1, 1);
7696 : 11 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7697 : : {
7698 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7699 : : {
7700 : 0 : {
7701 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7702 : 0 : const enum tree_code cmp1 = LE_EXPR;
7703 : 0 : const enum tree_code cmp2 = NE_EXPR;
7704 : 0 : const enum tree_code rcmp = GE_EXPR;
7705 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7706 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7707 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7708 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7709 : : )
7710 : : {
7711 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1708;
7712 : 0 : {
7713 : 0 : tree res_op0;
7714 : 0 : res_op0 = captures[0];
7715 : 0 : tree res_op1;
7716 : 0 : res_op1 = captures[1];
7717 : 0 : tree _r;
7718 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7719 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7720 : 0 : return _r;
7721 : : }
7722 : 0 : next_after_fail1708:;
7723 : : }
7724 : : }
7725 : : }
7726 : : }
7727 : : break;
7728 : : }
7729 : 14 : case LE_EXPR:
7730 : 14 : {
7731 : 14 : tree _q50 = TREE_OPERAND (_p1, 0);
7732 : 14 : tree _q51 = TREE_OPERAND (_p1, 1);
7733 : 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7734 : : {
7735 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7736 : : {
7737 : 0 : {
7738 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7739 : 0 : const enum tree_code cmp1 = LE_EXPR;
7740 : 0 : const enum tree_code cmp2 = GE_EXPR;
7741 : 0 : const enum tree_code rcmp = NE_EXPR;
7742 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7743 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7744 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7745 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7746 : : )
7747 : : {
7748 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1709;
7749 : 0 : {
7750 : 0 : tree res_op0;
7751 : 0 : res_op0 = captures[0];
7752 : 0 : tree res_op1;
7753 : 0 : res_op1 = captures[1];
7754 : 0 : tree _r;
7755 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7756 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7757 : 0 : return _r;
7758 : : }
7759 : 0 : next_after_fail1709:;
7760 : : }
7761 : : }
7762 : : }
7763 : : }
7764 : : break;
7765 : : }
7766 : : default:;
7767 : : }
7768 : : break;
7769 : : }
7770 : 62561 : case EQ_EXPR:
7771 : 62561 : {
7772 : 62561 : tree _q20 = TREE_OPERAND (_p0, 0);
7773 : 62561 : tree _q21 = TREE_OPERAND (_p0, 1);
7774 : 62561 : switch (TREE_CODE (_p1))
7775 : : {
7776 : 5 : case LT_EXPR:
7777 : 5 : {
7778 : 5 : tree _q50 = TREE_OPERAND (_p1, 0);
7779 : 5 : tree _q51 = TREE_OPERAND (_p1, 1);
7780 : 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7781 : : {
7782 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7783 : : {
7784 : 0 : {
7785 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7786 : 0 : const enum tree_code cmp1 = LT_EXPR;
7787 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7788 : 0 : const enum tree_code rcmp = LE_EXPR;
7789 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7790 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7791 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7792 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7793 : : )
7794 : : {
7795 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1710;
7796 : 0 : {
7797 : 0 : tree res_op0;
7798 : 0 : res_op0 = captures[0];
7799 : 0 : tree res_op1;
7800 : 0 : res_op1 = captures[1];
7801 : 0 : tree _r;
7802 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7803 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7804 : 0 : return _r;
7805 : : }
7806 : 0 : next_after_fail1710:;
7807 : : }
7808 : : }
7809 : : }
7810 : : }
7811 : : break;
7812 : : }
7813 : 42 : case LE_EXPR:
7814 : 42 : {
7815 : 42 : tree _q50 = TREE_OPERAND (_p1, 0);
7816 : 42 : tree _q51 = TREE_OPERAND (_p1, 1);
7817 : 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7818 : : {
7819 : 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7820 : : {
7821 : 0 : {
7822 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7823 : 0 : const enum tree_code cmp1 = LE_EXPR;
7824 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7825 : 0 : const enum tree_code rcmp = LT_EXPR;
7826 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7827 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7828 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7829 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7830 : : )
7831 : : {
7832 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1711;
7833 : 0 : {
7834 : 0 : tree res_op0;
7835 : 0 : res_op0 = captures[0];
7836 : 0 : tree res_op1;
7837 : 0 : res_op1 = captures[1];
7838 : 0 : tree _r;
7839 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7840 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7841 : 0 : return _r;
7842 : : }
7843 : 0 : next_after_fail1711:;
7844 : : }
7845 : : }
7846 : : }
7847 : : }
7848 : : break;
7849 : : }
7850 : 7 : case GT_EXPR:
7851 : 7 : {
7852 : 7 : tree _q50 = TREE_OPERAND (_p1, 0);
7853 : 7 : tree _q51 = TREE_OPERAND (_p1, 1);
7854 : 7 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7855 : : {
7856 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7857 : : {
7858 : 0 : {
7859 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7860 : 0 : const enum tree_code cmp1 = LT_EXPR;
7861 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7862 : 0 : const enum tree_code rcmp = LE_EXPR;
7863 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7864 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7865 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7866 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7867 : : )
7868 : : {
7869 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1712;
7870 : 0 : {
7871 : 0 : tree res_op0;
7872 : 0 : res_op0 = captures[0];
7873 : 0 : tree res_op1;
7874 : 0 : res_op1 = captures[1];
7875 : 0 : tree _r;
7876 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7877 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7878 : 0 : return _r;
7879 : : }
7880 : 0 : next_after_fail1712:;
7881 : : }
7882 : : }
7883 : : }
7884 : : }
7885 : : break;
7886 : : }
7887 : 14 : case GE_EXPR:
7888 : 14 : {
7889 : 14 : tree _q50 = TREE_OPERAND (_p1, 0);
7890 : 14 : tree _q51 = TREE_OPERAND (_p1, 1);
7891 : 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7892 : : {
7893 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7894 : : {
7895 : 0 : {
7896 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7897 : 0 : const enum tree_code cmp1 = LE_EXPR;
7898 : 0 : const enum tree_code cmp2 = EQ_EXPR;
7899 : 0 : const enum tree_code rcmp = LT_EXPR;
7900 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7901 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7902 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7903 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7904 : : )
7905 : : {
7906 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1713;
7907 : 0 : {
7908 : 0 : tree res_op0;
7909 : 0 : res_op0 = captures[0];
7910 : 0 : tree res_op1;
7911 : 0 : res_op1 = captures[1];
7912 : 0 : tree _r;
7913 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7914 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7915 : 0 : return _r;
7916 : : }
7917 : 0 : next_after_fail1713:;
7918 : : }
7919 : : }
7920 : : }
7921 : : }
7922 : : break;
7923 : : }
7924 : : default:;
7925 : : }
7926 : : break;
7927 : : }
7928 : 67124 : case NE_EXPR:
7929 : 67124 : {
7930 : 67124 : tree _q20 = TREE_OPERAND (_p0, 0);
7931 : 67124 : tree _q21 = TREE_OPERAND (_p0, 1);
7932 : 67124 : switch (TREE_CODE (_p1))
7933 : : {
7934 : 7 : case LT_EXPR:
7935 : 7 : {
7936 : 7 : tree _q50 = TREE_OPERAND (_p1, 0);
7937 : 7 : tree _q51 = TREE_OPERAND (_p1, 1);
7938 : 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7939 : : {
7940 : 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7941 : : {
7942 : 0 : {
7943 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7944 : 0 : const enum tree_code cmp1 = LT_EXPR;
7945 : 0 : const enum tree_code cmp2 = NE_EXPR;
7946 : 0 : const enum tree_code rcmp = GT_EXPR;
7947 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7948 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7949 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7950 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7951 : : )
7952 : : {
7953 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1714;
7954 : 0 : {
7955 : 0 : tree res_op0;
7956 : 0 : res_op0 = captures[0];
7957 : 0 : tree res_op1;
7958 : 0 : res_op1 = captures[1];
7959 : 0 : tree _r;
7960 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7961 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7962 : 0 : return _r;
7963 : : }
7964 : 0 : next_after_fail1714:;
7965 : : }
7966 : : }
7967 : : }
7968 : : }
7969 : : break;
7970 : : }
7971 : 300 : case LE_EXPR:
7972 : 300 : {
7973 : 300 : tree _q50 = TREE_OPERAND (_p1, 0);
7974 : 300 : tree _q51 = TREE_OPERAND (_p1, 1);
7975 : 300 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7976 : : {
7977 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7978 : : {
7979 : 0 : {
7980 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7981 : 0 : const enum tree_code cmp1 = LE_EXPR;
7982 : 0 : const enum tree_code cmp2 = NE_EXPR;
7983 : 0 : const enum tree_code rcmp = GE_EXPR;
7984 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7985 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7986 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7987 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7988 : : )
7989 : : {
7990 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1715;
7991 : 0 : {
7992 : 0 : tree res_op0;
7993 : 0 : res_op0 = captures[0];
7994 : 0 : tree res_op1;
7995 : 0 : res_op1 = captures[1];
7996 : 0 : tree _r;
7997 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7998 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
7999 : 0 : return _r;
8000 : : }
8001 : 0 : next_after_fail1715:;
8002 : : }
8003 : : }
8004 : : }
8005 : : }
8006 : : break;
8007 : : }
8008 : 323 : case GT_EXPR:
8009 : 323 : {
8010 : 323 : tree _q50 = TREE_OPERAND (_p1, 0);
8011 : 323 : tree _q51 = TREE_OPERAND (_p1, 1);
8012 : 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8013 : : {
8014 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8015 : : {
8016 : 0 : {
8017 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8018 : 0 : const enum tree_code cmp1 = LT_EXPR;
8019 : 0 : const enum tree_code cmp2 = NE_EXPR;
8020 : 0 : const enum tree_code rcmp = GT_EXPR;
8021 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8022 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8023 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8024 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8025 : : )
8026 : : {
8027 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1716;
8028 : 0 : {
8029 : 0 : tree res_op0;
8030 : 0 : res_op0 = captures[0];
8031 : 0 : tree res_op1;
8032 : 0 : res_op1 = captures[1];
8033 : 0 : tree _r;
8034 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8035 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
8036 : 0 : return _r;
8037 : : }
8038 : 0 : next_after_fail1716:;
8039 : : }
8040 : : }
8041 : : }
8042 : : }
8043 : : break;
8044 : : }
8045 : 2 : case GE_EXPR:
8046 : 2 : {
8047 : 2 : tree _q50 = TREE_OPERAND (_p1, 0);
8048 : 2 : tree _q51 = TREE_OPERAND (_p1, 1);
8049 : 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8050 : : {
8051 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8052 : : {
8053 : 0 : {
8054 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8055 : 0 : const enum tree_code cmp1 = LE_EXPR;
8056 : 0 : const enum tree_code cmp2 = NE_EXPR;
8057 : 0 : const enum tree_code rcmp = GE_EXPR;
8058 : 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8059 : 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8060 : 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8061 : 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8062 : : )
8063 : : {
8064 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1717;
8065 : 0 : {
8066 : 0 : tree res_op0;
8067 : 0 : res_op0 = captures[0];
8068 : 0 : tree res_op1;
8069 : 0 : res_op1 = captures[1];
8070 : 0 : tree _r;
8071 : 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8072 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
8073 : 0 : return _r;
8074 : : }
8075 : 0 : next_after_fail1717:;
8076 : : }
8077 : : }
8078 : : }
8079 : : }
8080 : : break;
8081 : : }
8082 : : default:;
8083 : : }
8084 : : break;
8085 : : }
8086 : 8094 : case MIN_EXPR:
8087 : 8094 : {
8088 : 8094 : tree _q20 = TREE_OPERAND (_p0, 0);
8089 : 8094 : tree _q21 = TREE_OPERAND (_p0, 1);
8090 : 8094 : switch (TREE_CODE (_p1))
8091 : : {
8092 : 0 : case MAX_EXPR:
8093 : 0 : {
8094 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8095 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8096 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8097 : : {
8098 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8099 : : {
8100 : 0 : {
8101 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8102 : 0 : if (!HONOR_NANS (captures[0])
8103 : : )
8104 : : {
8105 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1718;
8106 : 0 : {
8107 : 0 : tree res_op0;
8108 : 0 : res_op0 = captures[0];
8109 : 0 : tree res_op1;
8110 : 0 : res_op1 = captures[1];
8111 : 0 : tree _r;
8112 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8113 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
8114 : 0 : return _r;
8115 : : }
8116 : 0 : next_after_fail1718:;
8117 : : }
8118 : : }
8119 : : }
8120 : : }
8121 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8122 : : {
8123 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8124 : : {
8125 : 0 : {
8126 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8127 : 0 : if (!HONOR_NANS (captures[0])
8128 : : )
8129 : : {
8130 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1719;
8131 : 0 : {
8132 : 0 : tree res_op0;
8133 : 0 : res_op0 = captures[0];
8134 : 0 : tree res_op1;
8135 : 0 : res_op1 = captures[1];
8136 : 0 : tree _r;
8137 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8138 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
8139 : 0 : return _r;
8140 : : }
8141 : 0 : next_after_fail1719:;
8142 : : }
8143 : : }
8144 : : }
8145 : : }
8146 : : break;
8147 : : }
8148 : 8094 : default:;
8149 : : }
8150 : 8094 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8151 : : {
8152 : 0 : {
8153 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8154 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8155 : 0 : if (res) return res;
8156 : : }
8157 : : }
8158 : 8094 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8159 : : {
8160 : 616 : {
8161 : 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8162 : 616 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8163 : 616 : if (res) return res;
8164 : : }
8165 : : }
8166 : : break;
8167 : : }
8168 : 8134 : case MAX_EXPR:
8169 : 8134 : {
8170 : 8134 : tree _q20 = TREE_OPERAND (_p0, 0);
8171 : 8134 : tree _q21 = TREE_OPERAND (_p0, 1);
8172 : 8134 : switch (TREE_CODE (_p1))
8173 : : {
8174 : 0 : case MIN_EXPR:
8175 : 0 : {
8176 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8177 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8178 : 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8179 : : {
8180 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8181 : : {
8182 : 0 : {
8183 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8184 : 0 : if (!HONOR_NANS (captures[0])
8185 : : )
8186 : : {
8187 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1720;
8188 : 0 : {
8189 : 0 : tree res_op0;
8190 : 0 : res_op0 = captures[0];
8191 : 0 : tree res_op1;
8192 : 0 : res_op1 = captures[1];
8193 : 0 : tree _r;
8194 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8195 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
8196 : 0 : return _r;
8197 : : }
8198 : 0 : next_after_fail1720:;
8199 : : }
8200 : : }
8201 : : }
8202 : : }
8203 : 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8204 : : {
8205 : 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8206 : : {
8207 : 0 : {
8208 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8209 : 0 : if (!HONOR_NANS (captures[0])
8210 : : )
8211 : : {
8212 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1721;
8213 : 0 : {
8214 : 0 : tree res_op0;
8215 : 0 : res_op0 = captures[0];
8216 : 0 : tree res_op1;
8217 : 0 : res_op1 = captures[1];
8218 : 0 : tree _r;
8219 : 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8220 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
8221 : 0 : return _r;
8222 : : }
8223 : 0 : next_after_fail1721:;
8224 : : }
8225 : : }
8226 : : }
8227 : : }
8228 : : break;
8229 : : }
8230 : 8134 : default:;
8231 : : }
8232 : 8134 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8233 : : {
8234 : 0 : {
8235 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8236 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8237 : 0 : if (res) return res;
8238 : : }
8239 : : }
8240 : 8134 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8241 : : {
8242 : 425 : {
8243 : 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8244 : 425 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8245 : 425 : if (res) return res;
8246 : : }
8247 : : }
8248 : : break;
8249 : : }
8250 : 33272324 : default:;
8251 : : }
8252 : 33272324 : if (tree_with_possible_nonzero_bits (_p0))
8253 : : {
8254 : 15778246 : if (tree_with_known_nonzero_bits (_p1))
8255 : : {
8256 : 14299063 : {
8257 : 14299063 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8258 : 14299063 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
8259 : 14299063 : if (res) return res;
8260 : : }
8261 : : }
8262 : : }
8263 : 33219966 : if (tree_with_known_nonzero_bits (_p0))
8264 : : {
8265 : 11684015 : if (tree_with_possible_nonzero_bits (_p1))
8266 : : {
8267 : 11635031 : {
8268 : 11635031 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
8269 : 11635031 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
8270 : 11635031 : if (res) return res;
8271 : : }
8272 : : }
8273 : : }
8274 : 33218711 : switch (TREE_CODE (_p1))
8275 : : {
8276 : 121 : case MIN_EXPR:
8277 : 121 : {
8278 : 121 : tree _q30 = TREE_OPERAND (_p1, 0);
8279 : 121 : tree _q31 = TREE_OPERAND (_p1, 1);
8280 : 121 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8281 : : {
8282 : 0 : {
8283 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8284 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8285 : 0 : if (res) return res;
8286 : : }
8287 : : }
8288 : 121 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8289 : : {
8290 : 0 : {
8291 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8292 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8293 : 0 : if (res) return res;
8294 : : }
8295 : : }
8296 : : break;
8297 : : }
8298 : 1581 : case MAX_EXPR:
8299 : 1581 : {
8300 : 1581 : tree _q30 = TREE_OPERAND (_p1, 0);
8301 : 1581 : tree _q31 = TREE_OPERAND (_p1, 1);
8302 : 1581 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8303 : : {
8304 : 0 : {
8305 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8306 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8307 : 0 : if (res) return res;
8308 : : }
8309 : : }
8310 : 1581 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8311 : : {
8312 : 0 : {
8313 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8314 : 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8315 : 0 : if (res) return res;
8316 : : }
8317 : : }
8318 : : break;
8319 : : }
8320 : 33218711 : default:;
8321 : : }
8322 : 33218711 : switch (TREE_CODE (_p0))
8323 : : {
8324 : 8094 : case MIN_EXPR:
8325 : 8094 : {
8326 : 8094 : tree _q20 = TREE_OPERAND (_p0, 0);
8327 : 8094 : tree _q21 = TREE_OPERAND (_p0, 1);
8328 : 8094 : switch (TREE_CODE (_q21))
8329 : : {
8330 : 668 : case INTEGER_CST:
8331 : 668 : {
8332 : 668 : switch (TREE_CODE (_p1))
8333 : : {
8334 : 0 : case INTEGER_CST:
8335 : 0 : {
8336 : 0 : {
8337 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8338 : 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
8339 : 0 : if (res) return res;
8340 : : }
8341 : 0 : break;
8342 : : }
8343 : : default:;
8344 : : }
8345 : : break;
8346 : : }
8347 : : default:;
8348 : : }
8349 : : break;
8350 : : }
8351 : 8005 : case MAX_EXPR:
8352 : 8005 : {
8353 : 8005 : tree _q20 = TREE_OPERAND (_p0, 0);
8354 : 8005 : tree _q21 = TREE_OPERAND (_p0, 1);
8355 : 8005 : switch (TREE_CODE (_q21))
8356 : : {
8357 : 6930 : case INTEGER_CST:
8358 : 6930 : {
8359 : 6930 : switch (TREE_CODE (_p1))
8360 : : {
8361 : 683 : case INTEGER_CST:
8362 : 683 : {
8363 : 683 : {
8364 : 683 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8365 : 683 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
8366 : 683 : if (res) return res;
8367 : : }
8368 : 0 : break;
8369 : : }
8370 : : default:;
8371 : : }
8372 : : break;
8373 : : }
8374 : 7322 : default:;
8375 : : }
8376 : 7322 : if (integer_zerop (_p1))
8377 : : {
8378 : 34 : {
8379 : 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8380 : 34 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
8381 : 34 : if (res) return res;
8382 : : }
8383 : : }
8384 : : break;
8385 : : }
8386 : 1232261 : case BIT_AND_EXPR:
8387 : 1232261 : {
8388 : 1232261 : tree _q20 = TREE_OPERAND (_p0, 0);
8389 : 1232261 : tree _q21 = TREE_OPERAND (_p0, 1);
8390 : 1232261 : switch (TREE_CODE (_q20))
8391 : : {
8392 : 3884 : case LSHIFT_EXPR:
8393 : 3884 : {
8394 : 3884 : tree _q30 = TREE_OPERAND (_q20, 0);
8395 : 3884 : tree _q31 = TREE_OPERAND (_q20, 1);
8396 : 3884 : if (integer_pow2p (_q30))
8397 : : {
8398 : 3864 : if (integer_pow2p (_q21))
8399 : : {
8400 : 5 : if (integer_zerop (_p1))
8401 : : {
8402 : 5 : {
8403 : 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8404 : 5 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8405 : 5 : if (res) return res;
8406 : : }
8407 : : }
8408 : : }
8409 : : }
8410 : 3879 : switch (TREE_CODE (_q31))
8411 : : {
8412 : 13 : case INTEGER_CST:
8413 : 13 : {
8414 : 13 : switch (TREE_CODE (_q21))
8415 : : {
8416 : 13 : case INTEGER_CST:
8417 : 13 : {
8418 : 13 : switch (TREE_CODE (_p1))
8419 : : {
8420 : 13 : case INTEGER_CST:
8421 : 13 : {
8422 : 13 : {
8423 : 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8424 : 13 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
8425 : 13 : if (res) return res;
8426 : : }
8427 : 0 : break;
8428 : : }
8429 : : default:;
8430 : : }
8431 : : break;
8432 : : }
8433 : : default:;
8434 : : }
8435 : : break;
8436 : : }
8437 : 3866 : default:;
8438 : : }
8439 : 3866 : if (integer_onep (_q30))
8440 : : {
8441 : 3858 : if (integer_pow2p (_q21))
8442 : : {
8443 : 0 : if (integer_zerop (_p1))
8444 : : {
8445 : 0 : {
8446 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
8447 : 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8448 : 0 : if (res) return res;
8449 : : }
8450 : : }
8451 : : }
8452 : : }
8453 : : break;
8454 : : }
8455 : 5032 : case RSHIFT_EXPR:
8456 : 5032 : {
8457 : 5032 : tree _q30 = TREE_OPERAND (_q20, 0);
8458 : 5032 : tree _q31 = TREE_OPERAND (_q20, 1);
8459 : 5032 : if (integer_pow2p (_q30))
8460 : : {
8461 : 33 : if (integer_pow2p (_q21))
8462 : : {
8463 : 1 : if (integer_zerop (_p1))
8464 : : {
8465 : 1 : {
8466 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8467 : 1 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8468 : 1 : if (res) return res;
8469 : : }
8470 : : }
8471 : : }
8472 : : }
8473 : 5031 : switch (TREE_CODE (_q31))
8474 : : {
8475 : 325 : case INTEGER_CST:
8476 : 325 : {
8477 : 325 : switch (TREE_CODE (_q21))
8478 : : {
8479 : 301 : case INTEGER_CST:
8480 : 301 : {
8481 : 301 : switch (TREE_CODE (_p1))
8482 : : {
8483 : 276 : case INTEGER_CST:
8484 : 276 : {
8485 : 276 : {
8486 : 276 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8487 : 276 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
8488 : 276 : if (res) return res;
8489 : : }
8490 : 14 : break;
8491 : : }
8492 : : default:;
8493 : : }
8494 : : break;
8495 : : }
8496 : : default:;
8497 : : }
8498 : : break;
8499 : : }
8500 : : default:;
8501 : : }
8502 : : break;
8503 : : }
8504 : 1231980 : default:;
8505 : : }
8506 : 1231980 : {
8507 : 1231980 : tree _q20_pops[1];
8508 : 1231980 : if (tree_nop_convert (_q20, _q20_pops))
8509 : : {
8510 : 96292 : tree _q30 = _q20_pops[0];
8511 : 96292 : switch (TREE_CODE (_q30))
8512 : : {
8513 : 35004 : case LSHIFT_EXPR:
8514 : 35004 : {
8515 : 35004 : tree _q40 = TREE_OPERAND (_q30, 0);
8516 : 35004 : tree _q41 = TREE_OPERAND (_q30, 1);
8517 : 35004 : if (integer_onep (_q40))
8518 : : {
8519 : 35004 : if (integer_pow2p (_q21))
8520 : : {
8521 : 0 : if (integer_zerop (_p1))
8522 : : {
8523 : 0 : {
8524 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
8525 : 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8526 : 0 : if (res) return res;
8527 : : }
8528 : : }
8529 : : }
8530 : : }
8531 : : break;
8532 : : }
8533 : : default:;
8534 : : }
8535 : : }
8536 : : }
8537 : 1231980 : break;
8538 : : }
8539 : 5154 : case LSHIFT_EXPR:
8540 : 5154 : {
8541 : 5154 : tree _q20 = TREE_OPERAND (_p0, 0);
8542 : 5154 : tree _q21 = TREE_OPERAND (_p0, 1);
8543 : 5154 : switch (TREE_CODE (_q20))
8544 : : {
8545 : 539 : case INTEGER_CST:
8546 : 539 : {
8547 : 539 : switch (TREE_CODE (_p1))
8548 : : {
8549 : 161 : case INTEGER_CST:
8550 : 161 : {
8551 : 161 : {
8552 : 161 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8553 : 161 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR);
8554 : 161 : if (res) return res;
8555 : : }
8556 : 90 : break;
8557 : : }
8558 : : default:;
8559 : : }
8560 : : break;
8561 : : }
8562 : : default:;
8563 : : }
8564 : : break;
8565 : : }
8566 : 414 : case LROTATE_EXPR:
8567 : 414 : {
8568 : 414 : tree _q20 = TREE_OPERAND (_p0, 0);
8569 : 414 : tree _q21 = TREE_OPERAND (_p0, 1);
8570 : 414 : switch (TREE_CODE (_p1))
8571 : : {
8572 : 0 : case LROTATE_EXPR:
8573 : 0 : {
8574 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8575 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8576 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8577 : : {
8578 : 0 : {
8579 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8580 : 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8581 : 0 : if (res) return res;
8582 : : }
8583 : : }
8584 : : break;
8585 : : }
8586 : 414 : default:;
8587 : : }
8588 : 414 : switch (TREE_CODE (_q21))
8589 : : {
8590 : 112 : case INTEGER_CST:
8591 : 112 : {
8592 : 112 : switch (TREE_CODE (_p1))
8593 : : {
8594 : 112 : case INTEGER_CST:
8595 : 112 : {
8596 : 112 : {
8597 : 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8598 : 112 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8599 : 112 : if (res) return res;
8600 : : }
8601 : 0 : break;
8602 : : }
8603 : : default:;
8604 : : }
8605 : : break;
8606 : : }
8607 : 302 : default:;
8608 : : }
8609 : 302 : switch (TREE_CODE (_p1))
8610 : : {
8611 : 197 : case INTEGER_CST:
8612 : 197 : {
8613 : 197 : {
8614 : 197 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8615 : 197 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8616 : 197 : if (res) return res;
8617 : : }
8618 : 197 : break;
8619 : : }
8620 : : default:;
8621 : : }
8622 : : break;
8623 : : }
8624 : 479 : case RROTATE_EXPR:
8625 : 479 : {
8626 : 479 : tree _q20 = TREE_OPERAND (_p0, 0);
8627 : 479 : tree _q21 = TREE_OPERAND (_p0, 1);
8628 : 479 : switch (TREE_CODE (_p1))
8629 : : {
8630 : 0 : case RROTATE_EXPR:
8631 : 0 : {
8632 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8633 : 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8634 : 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8635 : : {
8636 : 0 : {
8637 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8638 : 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8639 : 0 : if (res) return res;
8640 : : }
8641 : : }
8642 : : break;
8643 : : }
8644 : 479 : default:;
8645 : : }
8646 : 479 : switch (TREE_CODE (_q21))
8647 : : {
8648 : 269 : case INTEGER_CST:
8649 : 269 : {
8650 : 269 : switch (TREE_CODE (_p1))
8651 : : {
8652 : 12 : case INTEGER_CST:
8653 : 12 : {
8654 : 12 : {
8655 : 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8656 : 12 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8657 : 12 : if (res) return res;
8658 : : }
8659 : 0 : break;
8660 : : }
8661 : : default:;
8662 : : }
8663 : : break;
8664 : : }
8665 : 467 : default:;
8666 : : }
8667 : 467 : switch (TREE_CODE (_p1))
8668 : : {
8669 : 194 : case INTEGER_CST:
8670 : 194 : {
8671 : 194 : {
8672 : 194 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8673 : 194 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8674 : 194 : if (res) return res;
8675 : : }
8676 : 194 : break;
8677 : : }
8678 : : default:;
8679 : : }
8680 : : break;
8681 : : }
8682 : 200 : case VEC_COND_EXPR:
8683 : 200 : {
8684 : 200 : tree _q20 = TREE_OPERAND (_p0, 0);
8685 : 200 : tree _q21 = TREE_OPERAND (_p0, 1);
8686 : 200 : tree _q22 = TREE_OPERAND (_p0, 2);
8687 : 200 : switch (TREE_CODE (_p1))
8688 : : {
8689 : 0 : case VEC_COND_EXPR:
8690 : 0 : {
8691 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8692 : 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8693 : 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8694 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8695 : : {
8696 : 0 : {
8697 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8698 : 0 : if (VECTOR_TYPE_P (type)
8699 : 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8700 : 0 : || types_match (type, TREE_TYPE (captures[2]))
8701 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8702 : : || (optimize_vectors_before_lowering_p ()
8703 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8704 : : )
8705 : : {
8706 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1722;
8707 : 0 : {
8708 : 0 : tree res_op0;
8709 : 0 : res_op0 = captures[1];
8710 : 0 : tree res_op1;
8711 : 0 : {
8712 : 0 : tree _o1[2], _r1;
8713 : 0 : _o1[0] = captures[2];
8714 : 0 : _o1[1] = captures[5];
8715 : 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8716 : 0 : if (EXPR_P (_r1))
8717 : 0 : goto next_after_fail1722;
8718 : 0 : res_op1 = _r1;
8719 : : }
8720 : 0 : tree res_op2;
8721 : 0 : {
8722 : 0 : tree _o1[2], _r1;
8723 : 0 : _o1[0] = captures[3];
8724 : 0 : _o1[1] = captures[6];
8725 : 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8726 : 0 : if (EXPR_P (_r1))
8727 : 0 : goto next_after_fail1722;
8728 : 0 : res_op2 = _r1;
8729 : : }
8730 : 0 : tree _r;
8731 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8732 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
8733 : 0 : return _r;
8734 : : }
8735 : 0 : next_after_fail1722:;
8736 : : }
8737 : : }
8738 : : }
8739 : : break;
8740 : : }
8741 : 200 : default:;
8742 : : }
8743 : 200 : {
8744 : 200 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8745 : 200 : if (VECTOR_TYPE_P (type)
8746 : 200 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8747 : 198 : || types_match (type, TREE_TYPE (captures[2]))
8748 : 198 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8749 : : || (optimize_vectors_before_lowering_p ()
8750 : 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8751 : : )
8752 : : {
8753 : 198 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1723;
8754 : 198 : {
8755 : 198 : if (! tree_invariant_p (captures[4])) goto next_after_fail1723;
8756 : 72 : tree res_op0;
8757 : 72 : res_op0 = captures[1];
8758 : 72 : tree res_op1;
8759 : 72 : {
8760 : 72 : tree _o1[2], _r1;
8761 : 72 : _o1[0] = captures[2];
8762 : 72 : _o1[1] = unshare_expr (captures[4]);
8763 : 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8764 : 72 : if (EXPR_P (_r1))
8765 : 0 : goto next_after_fail1723;
8766 : 72 : res_op1 = _r1;
8767 : : }
8768 : 72 : tree res_op2;
8769 : 72 : {
8770 : 72 : tree _o1[2], _r1;
8771 : 72 : _o1[0] = captures[3];
8772 : 72 : _o1[1] = captures[4];
8773 : 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8774 : 72 : if (EXPR_P (_r1))
8775 : 0 : goto next_after_fail1723;
8776 : 72 : res_op2 = _r1;
8777 : : }
8778 : 72 : tree _r;
8779 : 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8780 : 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
8781 : 72 : return _r;
8782 : : }
8783 : 128 : next_after_fail1723:;
8784 : : }
8785 : : }
8786 : 128 : break;
8787 : : }
8788 : 2075785 : case CALL_EXPR:
8789 : 2075785 : switch (get_call_combined_fn (_p0))
8790 : : {
8791 : 2 : case CFN_BUILT_IN_BSWAP128:
8792 : 2 : if (call_expr_nargs (_p0) == 1)
8793 : : {
8794 : 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8795 : 2 : switch (TREE_CODE (_p1))
8796 : : {
8797 : 0 : case INTEGER_CST:
8798 : 0 : {
8799 : 0 : {
8800 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8801 : 0 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8802 : 0 : if (res) return res;
8803 : : }
8804 : 0 : break;
8805 : : }
8806 : 1 : case CALL_EXPR:
8807 : 1 : switch (get_call_combined_fn (_p1))
8808 : : {
8809 : 0 : case CFN_BUILT_IN_BSWAP128:
8810 : 0 : if (call_expr_nargs (_p1) == 1)
8811 : : {
8812 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8813 : 0 : {
8814 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8815 : 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8816 : 0 : if (res) return res;
8817 : : }
8818 : : }
8819 : : break;
8820 : : default:;
8821 : : }
8822 : : break;
8823 : : default:;
8824 : : }
8825 : : }
8826 : : break;
8827 : 11 : case CFN_BUILT_IN_BSWAP16:
8828 : 11 : if (call_expr_nargs (_p0) == 1)
8829 : : {
8830 : 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8831 : 11 : switch (TREE_CODE (_p1))
8832 : : {
8833 : 9 : case INTEGER_CST:
8834 : 9 : {
8835 : 9 : {
8836 : 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8837 : 9 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8838 : 9 : if (res) return res;
8839 : : }
8840 : 9 : break;
8841 : : }
8842 : 1 : case CALL_EXPR:
8843 : 1 : switch (get_call_combined_fn (_p1))
8844 : : {
8845 : 1 : case CFN_BUILT_IN_BSWAP16:
8846 : 1 : if (call_expr_nargs (_p1) == 1)
8847 : : {
8848 : 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8849 : 1 : {
8850 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8851 : 1 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8852 : 1 : if (res) return res;
8853 : : }
8854 : : }
8855 : : break;
8856 : : default:;
8857 : : }
8858 : : break;
8859 : : default:;
8860 : : }
8861 : : }
8862 : : break;
8863 : 7 : case CFN_BUILT_IN_BSWAP32:
8864 : 7 : if (call_expr_nargs (_p0) == 1)
8865 : : {
8866 : 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8867 : 7 : switch (TREE_CODE (_p1))
8868 : : {
8869 : 3 : case INTEGER_CST:
8870 : 3 : {
8871 : 3 : {
8872 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8873 : 3 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8874 : 3 : if (res) return res;
8875 : : }
8876 : 3 : break;
8877 : : }
8878 : 3 : case CALL_EXPR:
8879 : 3 : switch (get_call_combined_fn (_p1))
8880 : : {
8881 : 3 : case CFN_BUILT_IN_BSWAP32:
8882 : 3 : if (call_expr_nargs (_p1) == 1)
8883 : : {
8884 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8885 : 3 : {
8886 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8887 : 3 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8888 : 3 : if (res) return res;
8889 : : }
8890 : : }
8891 : : break;
8892 : : default:;
8893 : : }
8894 : : break;
8895 : : default:;
8896 : : }
8897 : : }
8898 : : break;
8899 : 7 : case CFN_BUILT_IN_BSWAP64:
8900 : 7 : if (call_expr_nargs (_p0) == 1)
8901 : : {
8902 : 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8903 : 7 : switch (TREE_CODE (_p1))
8904 : : {
8905 : 3 : case INTEGER_CST:
8906 : 3 : {
8907 : 3 : {
8908 : 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8909 : 3 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8910 : 3 : if (res) return res;
8911 : : }
8912 : 3 : break;
8913 : : }
8914 : 3 : case CALL_EXPR:
8915 : 3 : switch (get_call_combined_fn (_p1))
8916 : : {
8917 : 3 : case CFN_BUILT_IN_BSWAP64:
8918 : 3 : if (call_expr_nargs (_p1) == 1)
8919 : : {
8920 : 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8921 : 3 : {
8922 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8923 : 3 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8924 : 3 : if (res) return res;
8925 : : }
8926 : : }
8927 : : break;
8928 : : default:;
8929 : : }
8930 : : break;
8931 : : default:;
8932 : : }
8933 : : }
8934 : : break;
8935 : : default:;
8936 : : }
8937 : : break;
8938 : 33217473 : default:;
8939 : : }
8940 : 33217473 : switch (TREE_CODE (_p1))
8941 : : {
8942 : 0 : case VEC_COND_EXPR:
8943 : 0 : {
8944 : 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8945 : 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8946 : 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8947 : 0 : {
8948 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8949 : 0 : if (VECTOR_TYPE_P (type)
8950 : 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8951 : 0 : || types_match (type, TREE_TYPE (captures[3]))
8952 : 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8953 : : || (optimize_vectors_before_lowering_p ()
8954 : 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8955 : : )
8956 : : {
8957 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1724;
8958 : 0 : {
8959 : 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1724;
8960 : 0 : tree res_op0;
8961 : 0 : res_op0 = captures[2];
8962 : 0 : tree res_op1;
8963 : 0 : {
8964 : 0 : tree _o1[2], _r1;
8965 : 0 : _o1[0] = unshare_expr (captures[0]);
8966 : 0 : _o1[1] = captures[3];
8967 : 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8968 : 0 : if (EXPR_P (_r1))
8969 : 0 : goto next_after_fail1724;
8970 : 0 : res_op1 = _r1;
8971 : : }
8972 : 0 : tree res_op2;
8973 : 0 : {
8974 : 0 : tree _o1[2], _r1;
8975 : 0 : _o1[0] = captures[0];
8976 : 0 : _o1[1] = captures[4];
8977 : 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8978 : 0 : if (EXPR_P (_r1))
8979 : 0 : goto next_after_fail1724;
8980 : 0 : res_op2 = _r1;
8981 : : }
8982 : 0 : tree _r;
8983 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8984 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8985 : 0 : return _r;
8986 : : }
8987 : 0 : next_after_fail1724:;
8988 : : }
8989 : : }
8990 : 0 : break;
8991 : : }
8992 : 33217473 : default:;
8993 : : }
8994 : 33217473 : switch (TREE_CODE (_p0))
8995 : : {
8996 : 91473 : case COND_EXPR:
8997 : 91473 : {
8998 : 91473 : tree _q20 = TREE_OPERAND (_p0, 0);
8999 : 91473 : tree _q21 = TREE_OPERAND (_p0, 1);
9000 : 91473 : tree _q22 = TREE_OPERAND (_p0, 2);
9001 : 91473 : switch (TREE_CODE (_p1))
9002 : : {
9003 : 257 : case COND_EXPR:
9004 : 257 : {
9005 : 257 : tree _q60 = TREE_OPERAND (_p1, 0);
9006 : 257 : tree _q61 = TREE_OPERAND (_p1, 1);
9007 : 257 : tree _q62 = TREE_OPERAND (_p1, 2);
9008 : 257 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
9009 : : {
9010 : 65 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9011 : : {
9012 : 65 : {
9013 : 65 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9014 : 65 : const enum tree_code eqne = NE_EXPR;
9015 : 65 : if (!HONOR_NANS (captures[1])
9016 : 49 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9017 : 107 : && types_match (type, TREE_TYPE (captures[0]))
9018 : : )
9019 : : {
9020 : 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1725;
9021 : 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1725;
9022 : 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1725;
9023 : 42 : {
9024 : 42 : tree res_op0;
9025 : 42 : {
9026 : 42 : tree _o1[2], _r1;
9027 : 42 : {
9028 : 42 : tree _o2[2], _r2;
9029 : 42 : _o2[0] = captures[0];
9030 : 42 : _o2[1] = captures[3];
9031 : 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9032 : 42 : _o1[0] = _r2;
9033 : : }
9034 : 42 : {
9035 : 42 : tree _o2[2], _r2;
9036 : 42 : _o2[0] = captures[1];
9037 : 42 : _o2[1] = captures[2];
9038 : 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
9039 : 42 : _o1[1] = _r2;
9040 : : }
9041 : 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9042 : 42 : res_op0 = _r1;
9043 : : }
9044 : 42 : tree res_op1;
9045 : 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
9046 : 42 : tree res_op2;
9047 : 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
9048 : 42 : tree _r;
9049 : 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
9050 : 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
9051 : 42 : return _r;
9052 : : }
9053 : 23 : next_after_fail1725:;
9054 : : }
9055 : : }
9056 : : }
9057 : : }
9058 : 215 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
9059 : : {
9060 : 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
9061 : : {
9062 : 0 : {
9063 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9064 : 0 : const enum tree_code eqne = NE_EXPR;
9065 : 0 : if (!HONOR_NANS (captures[1])
9066 : 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9067 : 0 : && types_match (type, TREE_TYPE (captures[0]))
9068 : : )
9069 : : {
9070 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1726;
9071 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1726;
9072 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1726;
9073 : 0 : {
9074 : 0 : tree res_op0;
9075 : 0 : {
9076 : 0 : tree _o1[2], _r1;
9077 : 0 : {
9078 : 0 : tree _o2[2], _r2;
9079 : 0 : _o2[0] = captures[0];
9080 : 0 : _o2[1] = captures[3];
9081 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9082 : 0 : _o1[0] = _r2;
9083 : : }
9084 : 0 : {
9085 : 0 : tree _o2[2], _r2;
9086 : 0 : _o2[0] = captures[1];
9087 : 0 : _o2[1] = captures[2];
9088 : 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
9089 : 0 : _o1[1] = _r2;
9090 : : }
9091 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9092 : 0 : res_op0 = _r1;
9093 : : }
9094 : 0 : tree res_op1;
9095 : 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
9096 : 0 : tree res_op2;
9097 : 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
9098 : 0 : tree _r;
9099 : 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
9100 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
9101 : 0 : return _r;
9102 : : }
9103 : 0 : next_after_fail1726:;
9104 : : }
9105 : : }
9106 : : }
9107 : : }
9108 : : break;
9109 : : }
9110 : : default:;
9111 : : }
9112 : : break;
9113 : : }
9114 : 128 : case VEC_COND_EXPR:
9115 : 128 : {
9116 : 128 : tree _q20 = TREE_OPERAND (_p0, 0);
9117 : 128 : tree _q21 = TREE_OPERAND (_p0, 1);
9118 : 128 : tree _q22 = TREE_OPERAND (_p0, 2);
9119 : 128 : switch (TREE_CODE (_p1))
9120 : : {
9121 : 0 : case VEC_COND_EXPR:
9122 : 0 : {
9123 : 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9124 : 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9125 : 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9126 : 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
9127 : : {
9128 : 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9129 : : {
9130 : 0 : {
9131 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9132 : 0 : const enum tree_code eqne = NE_EXPR;
9133 : 0 : if (!HONOR_NANS (captures[1])
9134 : 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9135 : 0 : && types_match (type, TREE_TYPE (captures[0]))
9136 : : )
9137 : : {
9138 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1727;
9139 : 0 : {
9140 : 0 : tree res_op0;
9141 : 0 : {
9142 : 0 : tree _o1[2], _r1;
9143 : 0 : {
9144 : 0 : tree _o2[2], _r2;
9145 : 0 : _o2[0] = captures[0];
9146 : 0 : _o2[1] = captures[3];
9147 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9148 : 0 : _o1[0] = _r2;
9149 : : }
9150 : 0 : {
9151 : 0 : tree _o2[2], _r2;
9152 : 0 : _o2[0] = captures[1];
9153 : 0 : _o2[1] = captures[2];
9154 : 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
9155 : 0 : _o1[1] = _r2;
9156 : : }
9157 : 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9158 : 0 : res_op0 = _r1;
9159 : : }
9160 : 0 : tree res_op1;
9161 : 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
9162 : 0 : tree res_op2;
9163 : 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
9164 : 0 : tree _r;
9165 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9166 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
9167 : 0 : return _r;
9168 : : }
9169 : 0 : next_after_fail1727:;
9170 : : }
9171 : : }
9172 : : }
9173 : : }
9174 : 0 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
9175 : : {
9176 : 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
9177 : : {
9178 : 0 : {
9179 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9180 : 0 : const enum tree_code eqne = NE_EXPR;
9181 : 0 : if (!HONOR_NANS (captures[1])
9182 : 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9183 : 0 : && types_match (type, TREE_TYPE (captures[0]))
9184 : : )
9185 : : {
9186 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1728;
9187 : 0 : {
9188 : 0 : tree res_op0;
9189 : 0 : {
9190 : 0 : tree _o1[2], _r1;
9191 : 0 : {
9192 : 0 : tree _o2[2], _r2;
9193 : 0 : _o2[0] = captures[0];
9194 : 0 : _o2[1] = captures[3];
9195 : 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9196 : 0 : _o1[0] = _r2;
9197 : : }
9198 : 0 : {
9199 : 0 : tree _o2[2], _r2;
9200 : 0 : _o2[0] = captures[1];
9201 : 0 : _o2[1] = captures[2];
9202 : 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
9203 : 0 : _o1[1] = _r2;
9204 : : }
9205 : 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9206 : 0 : res_op0 = _r1;
9207 : : }
9208 : 0 : tree res_op1;
9209 : 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
9210 : 0 : tree res_op2;
9211 : 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
9212 : 0 : tree _r;
9213 : 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9214 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
9215 : 0 : return _r;
9216 : : }
9217 : 0 : next_after_fail1728:;
9218 : : }
9219 : : }
9220 : : }
9221 : : }
9222 : : break;
9223 : : }
9224 : : default:;
9225 : : }
9226 : : break;
9227 : : }
9228 : 17817 : case LT_EXPR:
9229 : 17817 : {
9230 : 17817 : tree _q20 = TREE_OPERAND (_p0, 0);
9231 : 17817 : tree _q21 = TREE_OPERAND (_p0, 1);
9232 : 17817 : if (integer_zerop (_p1))
9233 : : {
9234 : 16324 : {
9235 : 16324 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9236 : 16324 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
9237 : 16324 : if (res) return res;
9238 : : }
9239 : : }
9240 : 14863 : if (integer_truep (_p1))
9241 : : {
9242 : 548 : {
9243 : 548 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9244 : 548 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
9245 : 548 : if (res) return res;
9246 : : }
9247 : : }
9248 : : break;
9249 : : }
9250 : 11718 : case LE_EXPR:
9251 : 11718 : {
9252 : 11718 : tree _q20 = TREE_OPERAND (_p0, 0);
9253 : 11718 : tree _q21 = TREE_OPERAND (_p0, 1);
9254 : 11718 : if (integer_zerop (_p1))
9255 : : {
9256 : 9162 : {
9257 : 9162 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9258 : 9162 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
9259 : 9162 : if (res) return res;
9260 : : }
9261 : : }
9262 : 10868 : if (integer_truep (_p1))
9263 : : {
9264 : 461 : {
9265 : 461 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9266 : 461 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
9267 : 461 : if (res) return res;
9268 : : }
9269 : : }
9270 : : break;
9271 : : }
9272 : 62561 : case EQ_EXPR:
9273 : 62561 : {
9274 : 62561 : tree _q20 = TREE_OPERAND (_p0, 0);
9275 : 62561 : tree _q21 = TREE_OPERAND (_p0, 1);
9276 : 62561 : if (integer_zerop (_p1))
9277 : : {
9278 : 34815 : {
9279 : 34815 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9280 : 34815 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9281 : 34815 : if (res) return res;
9282 : : }
9283 : : }
9284 : 61681 : if (integer_truep (_p1))
9285 : : {
9286 : 21941 : {
9287 : 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9288 : 21941 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9289 : 21941 : if (res) return res;
9290 : : }
9291 : : }
9292 : : break;
9293 : : }
9294 : 67124 : case NE_EXPR:
9295 : 67124 : {
9296 : 67124 : tree _q20 = TREE_OPERAND (_p0, 0);
9297 : 67124 : tree _q21 = TREE_OPERAND (_p0, 1);
9298 : 67124 : if (integer_zerop (_p1))
9299 : : {
9300 : 55561 : {
9301 : 55561 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9302 : 55561 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9303 : 55561 : if (res) return res;
9304 : : }
9305 : : }
9306 : 33567 : if (integer_truep (_p1))
9307 : : {
9308 : 141 : {
9309 : 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9310 : 141 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9311 : 141 : if (res) return res;
9312 : : }
9313 : : }
9314 : : break;
9315 : : }
9316 : 6176 : case GE_EXPR:
9317 : 6176 : {
9318 : 6176 : tree _q20 = TREE_OPERAND (_p0, 0);
9319 : 6176 : tree _q21 = TREE_OPERAND (_p0, 1);
9320 : 6176 : if (integer_zerop (_p1))
9321 : : {
9322 : 4244 : {
9323 : 4244 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9324 : 4244 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9325 : 4244 : if (res) return res;
9326 : : }
9327 : : }
9328 : 5516 : if (integer_truep (_p1))
9329 : : {
9330 : 478 : {
9331 : 478 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9332 : 478 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9333 : 478 : if (res) return res;
9334 : : }
9335 : : }
9336 : : break;
9337 : : }
9338 : 34457 : case GT_EXPR:
9339 : 34457 : {
9340 : 34457 : tree _q20 = TREE_OPERAND (_p0, 0);
9341 : 34457 : tree _q21 = TREE_OPERAND (_p0, 1);
9342 : 34457 : if (integer_zerop (_p1))
9343 : : {
9344 : 32326 : {
9345 : 32326 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9346 : 32326 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9347 : 32326 : if (res) return res;
9348 : : }
9349 : : }
9350 : 28505 : if (integer_truep (_p1))
9351 : : {
9352 : 320 : {
9353 : 320 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9354 : 320 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9355 : 320 : if (res) return res;
9356 : : }
9357 : : }
9358 : : break;
9359 : : }
9360 : 152737 : case UNORDERED_EXPR:
9361 : 152737 : {
9362 : 152737 : tree _q20 = TREE_OPERAND (_p0, 0);
9363 : 152737 : tree _q21 = TREE_OPERAND (_p0, 1);
9364 : 152737 : if (integer_zerop (_p1))
9365 : : {
9366 : 150559 : {
9367 : 150559 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9368 : 150559 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9369 : 150559 : if (res) return res;
9370 : : }
9371 : : }
9372 : 152347 : if (integer_truep (_p1))
9373 : : {
9374 : 42 : {
9375 : 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9376 : 42 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9377 : 42 : if (res) return res;
9378 : : }
9379 : : }
9380 : : break;
9381 : : }
9382 : 119 : case ORDERED_EXPR:
9383 : 119 : {
9384 : 119 : tree _q20 = TREE_OPERAND (_p0, 0);
9385 : 119 : tree _q21 = TREE_OPERAND (_p0, 1);
9386 : 119 : if (integer_zerop (_p1))
9387 : : {
9388 : 42 : {
9389 : 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9390 : 42 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9391 : 42 : if (res) return res;
9392 : : }
9393 : : }
9394 : 77 : if (integer_truep (_p1))
9395 : : {
9396 : 0 : {
9397 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9398 : 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9399 : 0 : if (res) return res;
9400 : : }
9401 : : }
9402 : : break;
9403 : : }
9404 : 225 : case UNLT_EXPR:
9405 : 225 : {
9406 : 225 : tree _q20 = TREE_OPERAND (_p0, 0);
9407 : 225 : tree _q21 = TREE_OPERAND (_p0, 1);
9408 : 225 : if (integer_zerop (_p1))
9409 : : {
9410 : 28 : {
9411 : 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9412 : 28 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9413 : 28 : if (res) return res;
9414 : : }
9415 : : }
9416 : 197 : if (integer_truep (_p1))
9417 : : {
9418 : 169 : {
9419 : 169 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9420 : 169 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9421 : 169 : if (res) return res;
9422 : : }
9423 : : }
9424 : : break;
9425 : : }
9426 : 1423 : case UNLE_EXPR:
9427 : 1423 : {
9428 : 1423 : tree _q20 = TREE_OPERAND (_p0, 0);
9429 : 1423 : tree _q21 = TREE_OPERAND (_p0, 1);
9430 : 1423 : if (integer_zerop (_p1))
9431 : : {
9432 : 104 : {
9433 : 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9434 : 104 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9435 : 104 : if (res) return res;
9436 : : }
9437 : : }
9438 : 1319 : if (integer_truep (_p1))
9439 : : {
9440 : 1291 : {
9441 : 1291 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9442 : 1291 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9443 : 1291 : if (res) return res;
9444 : : }
9445 : : }
9446 : : break;
9447 : : }
9448 : 3638 : case UNGT_EXPR:
9449 : 3638 : {
9450 : 3638 : tree _q20 = TREE_OPERAND (_p0, 0);
9451 : 3638 : tree _q21 = TREE_OPERAND (_p0, 1);
9452 : 3638 : if (integer_zerop (_p1))
9453 : : {
9454 : 96 : {
9455 : 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9456 : 96 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9457 : 96 : if (res) return res;
9458 : : }
9459 : : }
9460 : 3542 : if (integer_truep (_p1))
9461 : : {
9462 : 3412 : {
9463 : 3412 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9464 : 3412 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9465 : 3412 : if (res) return res;
9466 : : }
9467 : : }
9468 : : break;
9469 : : }
9470 : 404 : case UNGE_EXPR:
9471 : 404 : {
9472 : 404 : tree _q20 = TREE_OPERAND (_p0, 0);
9473 : 404 : tree _q21 = TREE_OPERAND (_p0, 1);
9474 : 404 : if (integer_zerop (_p1))
9475 : : {
9476 : 16 : {
9477 : 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9478 : 16 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9479 : 16 : if (res) return res;
9480 : : }
9481 : : }
9482 : 388 : if (integer_truep (_p1))
9483 : : {
9484 : 220 : {
9485 : 220 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9486 : 220 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9487 : 220 : if (res) return res;
9488 : : }
9489 : : }
9490 : : break;
9491 : : }
9492 : 175 : case UNEQ_EXPR:
9493 : 175 : {
9494 : 175 : tree _q20 = TREE_OPERAND (_p0, 0);
9495 : 175 : tree _q21 = TREE_OPERAND (_p0, 1);
9496 : 175 : if (integer_zerop (_p1))
9497 : : {
9498 : 0 : {
9499 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9500 : 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9501 : 0 : if (res) return res;
9502 : : }
9503 : : }
9504 : 175 : if (integer_truep (_p1))
9505 : : {
9506 : 132 : {
9507 : 132 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9508 : 132 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9509 : 132 : if (res) return res;
9510 : : }
9511 : : }
9512 : : break;
9513 : : }
9514 : 27 : case LTGT_EXPR:
9515 : 27 : {
9516 : 27 : tree _q20 = TREE_OPERAND (_p0, 0);
9517 : 27 : tree _q21 = TREE_OPERAND (_p0, 1);
9518 : 27 : if (integer_zerop (_p1))
9519 : : {
9520 : 6 : {
9521 : 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9522 : 6 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9523 : 6 : if (res) return res;
9524 : : }
9525 : : }
9526 : 27 : if (integer_truep (_p1))
9527 : : {
9528 : 0 : {
9529 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9530 : 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9531 : 0 : if (res) return res;
9532 : : }
9533 : : }
9534 : : break;
9535 : : }
9536 : 98376 : case MINUS_EXPR:
9537 : 98376 : {
9538 : 98376 : tree _q20 = TREE_OPERAND (_p0, 0);
9539 : 98376 : tree _q21 = TREE_OPERAND (_p0, 1);
9540 : 98376 : if (integer_zerop (_p1))
9541 : : {
9542 : 28456 : {
9543 : 28456 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9544 : 28456 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR);
9545 : 28456 : if (res) return res;
9546 : : }
9547 : : }
9548 : : break;
9549 : : }
9550 : 26069 : case POINTER_DIFF_EXPR:
9551 : 26069 : {
9552 : 26069 : tree _q20 = TREE_OPERAND (_p0, 0);
9553 : 26069 : tree _q21 = TREE_OPERAND (_p0, 1);
9554 : 26069 : if (integer_zerop (_p1))
9555 : : {
9556 : 12441 : {
9557 : 12441 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9558 : 12441 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR);
9559 : 12441 : if (res) return res;
9560 : : }
9561 : : }
9562 : : break;
9563 : : }
9564 : 93411 : case MULT_EXPR:
9565 : 93411 : {
9566 : 93411 : tree _q20 = TREE_OPERAND (_p0, 0);
9567 : 93411 : tree _q21 = TREE_OPERAND (_p0, 1);
9568 : 93411 : switch (TREE_CODE (_q21))
9569 : : {
9570 : 75896 : case INTEGER_CST:
9571 : 75896 : {
9572 : 75896 : switch (TREE_CODE (_p1))
9573 : : {
9574 : 50582 : case INTEGER_CST:
9575 : 50582 : {
9576 : 50582 : {
9577 : 50582 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9578 : 50582 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR);
9579 : 50582 : if (res) return res;
9580 : : }
9581 : 34882 : break;
9582 : : }
9583 : 60196 : default:;
9584 : : }
9585 : 60196 : if (integer_zerop (_p1))
9586 : : {
9587 : 12085 : {
9588 : 12085 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9589 : 12085 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9590 : 12085 : if (res) return res;
9591 : : }
9592 : : }
9593 : : break;
9594 : : }
9595 : : default:;
9596 : : }
9597 : : break;
9598 : : }
9599 : 33093269 : default:;
9600 : : }
9601 : 33093269 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9602 : : {
9603 : 45400 : {
9604 : 45400 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9605 : 45400 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR);
9606 : 45400 : if (res) return res;
9607 : : }
9608 : : }
9609 : 33052036 : switch (TREE_CODE (_p0))
9610 : : {
9611 : 4696814 : CASE_CONVERT:
9612 : 4696814 : {
9613 : 4696814 : tree _q20 = TREE_OPERAND (_p0, 0);
9614 : 4696814 : switch (TREE_CODE (_p1))
9615 : : {
9616 : 1199117 : CASE_CONVERT:
9617 : 1199117 : {
9618 : 1199117 : tree _q40 = TREE_OPERAND (_p1, 0);
9619 : 1199117 : {
9620 : 1199117 : tree _q40_pops[1];
9621 : 1199117 : if (tree_maybe_bit_not (_q40, _q40_pops))
9622 : : {
9623 : 0 : tree _q50 = _q40_pops[0];
9624 : 0 : {
9625 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
9626 : 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR);
9627 : 0 : if (res) return res;
9628 : : }
9629 : : }
9630 : : }
9631 : 1199117 : break;
9632 : : }
9633 : 4696814 : default:;
9634 : : }
9635 : 4696814 : {
9636 : 4696814 : tree _q20_pops[1];
9637 : 4696814 : if (tree_maybe_bit_not (_q20, _q20_pops))
9638 : : {
9639 : 3889 : tree _q30 = _q20_pops[0];
9640 : 3889 : switch (TREE_CODE (_p1))
9641 : : {
9642 : 0 : CASE_CONVERT:
9643 : 0 : {
9644 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9645 : 0 : {
9646 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
9647 : 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR);
9648 : 0 : if (res) return res;
9649 : : }
9650 : 0 : break;
9651 : : }
9652 : : default:;
9653 : : }
9654 : : }
9655 : : }
9656 : 4696814 : break;
9657 : : }
9658 : 33052036 : default:;
9659 : : }
9660 : 33052036 : {
9661 : 33052036 : tree _p1_pops[1];
9662 : 33052036 : if (tree_maybe_bit_not (_p1, _p1_pops))
9663 : : {
9664 : 25337440 : tree _q30 = _p1_pops[0];
9665 : 25337440 : {
9666 : 25337440 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9667 : 25337440 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR);
9668 : 25337440 : if (res) return res;
9669 : : }
9670 : : }
9671 : : }
9672 : 33052036 : switch (TREE_CODE (_p0))
9673 : : {
9674 : 13176 : case BIT_NOT_EXPR:
9675 : 13176 : {
9676 : 13176 : tree _q20 = TREE_OPERAND (_p0, 0);
9677 : 13176 : switch (TREE_CODE (_p1))
9678 : : {
9679 : 11 : case BIT_NOT_EXPR:
9680 : 11 : {
9681 : 11 : tree _q40 = TREE_OPERAND (_p1, 0);
9682 : 11 : {
9683 : 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
9684 : 11 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR);
9685 : 11 : if (res) return res;
9686 : : }
9687 : 0 : break;
9688 : : }
9689 : 13165 : default:;
9690 : : }
9691 : 13165 : {
9692 : 13165 : tree _p1_pops[1];
9693 : 13165 : if (tree_nop_convert (_p1, _p1_pops))
9694 : : {
9695 : 80 : tree _q40 = _p1_pops[0];
9696 : 80 : switch (TREE_CODE (_q40))
9697 : : {
9698 : 0 : case BIT_NOT_EXPR:
9699 : 0 : {
9700 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9701 : 0 : {
9702 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
9703 : 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR);
9704 : 0 : if (res) return res;
9705 : : }
9706 : 0 : break;
9707 : : }
9708 : : default:;
9709 : : }
9710 : : }
9711 : : }
9712 : 13165 : if (CONSTANT_CLASS_P (_p1))
9713 : : {
9714 : 12006 : {
9715 : 12006 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9716 : 12006 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9717 : 12006 : if (res) return res;
9718 : : }
9719 : : }
9720 : : break;
9721 : : }
9722 : 33040019 : default:;
9723 : : }
9724 : 33040019 : {
9725 : 33040019 : tree _p0_pops[1];
9726 : 33040019 : if (tree_maybe_bit_not (_p0, _p0_pops))
9727 : : {
9728 : 297444 : tree _q20 = _p0_pops[0];
9729 : 297444 : {
9730 : 297444 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9731 : 297444 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR);
9732 : 297444 : if (res) return res;
9733 : : }
9734 : : }
9735 : : }
9736 : 33040017 : {
9737 : 33040017 : tree _p0_pops[1];
9738 : 33040017 : if (tree_nop_convert (_p0, _p0_pops))
9739 : : {
9740 : 2466352 : tree _q20 = _p0_pops[0];
9741 : 2466352 : switch (TREE_CODE (_q20))
9742 : : {
9743 : 1 : case BIT_NOT_EXPR:
9744 : 1 : {
9745 : 1 : tree _q30 = TREE_OPERAND (_q20, 0);
9746 : 1 : switch (TREE_CODE (_p1))
9747 : : {
9748 : 0 : case BIT_NOT_EXPR:
9749 : 0 : {
9750 : 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9751 : 0 : {
9752 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9753 : 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR);
9754 : 0 : if (res) return res;
9755 : : }
9756 : 0 : break;
9757 : : }
9758 : 1 : default:;
9759 : : }
9760 : 1 : {
9761 : 1 : tree _p1_pops[1];
9762 : 1 : if (tree_nop_convert (_p1, _p1_pops))
9763 : : {
9764 : 0 : tree _q50 = _p1_pops[0];
9765 : 0 : switch (TREE_CODE (_q50))
9766 : : {
9767 : 0 : case BIT_NOT_EXPR:
9768 : 0 : {
9769 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9770 : 0 : {
9771 : 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9772 : 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, NE_EXPR);
9773 : 0 : if (res) return res;
9774 : : }
9775 : 0 : break;
9776 : : }
9777 : : default:;
9778 : : }
9779 : : }
9780 : : }
9781 : 1 : if (CONSTANT_CLASS_P (_p1))
9782 : : {
9783 : 1 : {
9784 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9785 : 1 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9786 : 1 : if (res) return res;
9787 : : }
9788 : : }
9789 : : break;
9790 : : }
9791 : : default:;
9792 : : }
9793 : : }
9794 : : }
9795 : 33040016 : switch (TREE_CODE (_p1))
9796 : : {
9797 : 709743 : case REAL_CST:
9798 : 709743 : {
9799 : 709743 : {
9800 : 709743 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9801 : 709743 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR);
9802 : 709743 : if (res) return res;
9803 : : }
9804 : 630171 : break;
9805 : : }
9806 : 32960444 : default:;
9807 : : }
9808 : 32960444 : switch (TREE_CODE (_p0))
9809 : : {
9810 : 1294957 : case PLUS_EXPR:
9811 : 1294957 : {
9812 : 1294957 : tree _q20 = TREE_OPERAND (_p0, 0);
9813 : 1294957 : tree _q21 = TREE_OPERAND (_p0, 1);
9814 : 1294957 : switch (TREE_CODE (_q21))
9815 : : {
9816 : 3858 : case REAL_CST:
9817 : 3858 : {
9818 : 3858 : switch (TREE_CODE (_p1))
9819 : : {
9820 : 3069 : case REAL_CST:
9821 : 3069 : {
9822 : 3069 : {
9823 : 3069 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9824 : 3069 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
9825 : 3069 : if (res) return res;
9826 : : }
9827 : 3069 : break;
9828 : : }
9829 : : default:;
9830 : : }
9831 : : break;
9832 : : }
9833 : : default:;
9834 : : }
9835 : : break;
9836 : : }
9837 : 69916 : case MINUS_EXPR:
9838 : 69916 : {
9839 : 69916 : tree _q20 = TREE_OPERAND (_p0, 0);
9840 : 69916 : tree _q21 = TREE_OPERAND (_p0, 1);
9841 : 69916 : switch (TREE_CODE (_q21))
9842 : : {
9843 : 3280 : case REAL_CST:
9844 : 3280 : {
9845 : 3280 : switch (TREE_CODE (_p1))
9846 : : {
9847 : 2848 : case REAL_CST:
9848 : 2848 : {
9849 : 2848 : {
9850 : 2848 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9851 : 2848 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
9852 : 2848 : if (res) return res;
9853 : : }
9854 : 2848 : break;
9855 : : }
9856 : : default:;
9857 : : }
9858 : : break;
9859 : : }
9860 : 69916 : default:;
9861 : : }
9862 : 69916 : switch (TREE_CODE (_q20))
9863 : : {
9864 : 87 : case REAL_CST:
9865 : 87 : {
9866 : 87 : switch (TREE_CODE (_p1))
9867 : : {
9868 : 44 : case REAL_CST:
9869 : 44 : {
9870 : 44 : {
9871 : 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9872 : 44 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, NE_EXPR);
9873 : 44 : if (res) return res;
9874 : : }
9875 : 44 : break;
9876 : : }
9877 : : default:;
9878 : : }
9879 : : break;
9880 : : }
9881 : : default:;
9882 : : }
9883 : : break;
9884 : : }
9885 : 10207 : case FLOAT_EXPR:
9886 : 10207 : {
9887 : 10207 : tree _q20 = TREE_OPERAND (_p0, 0);
9888 : 10207 : switch (TREE_CODE (_p1))
9889 : : {
9890 : 1115 : case FLOAT_EXPR:
9891 : 1115 : {
9892 : 1115 : tree _q40 = TREE_OPERAND (_p1, 0);
9893 : 1115 : {
9894 : 1115 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9895 : 1115 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9896 : 1115 : if (res) return res;
9897 : : }
9898 : 971 : break;
9899 : : }
9900 : 1808 : case REAL_CST:
9901 : 1808 : {
9902 : 1808 : {
9903 : 1808 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9904 : 1808 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9905 : 1808 : if (res) return res;
9906 : : }
9907 : 1687 : break;
9908 : : }
9909 : : default:;
9910 : : }
9911 : : break;
9912 : : }
9913 : 2336 : case EXACT_DIV_EXPR:
9914 : 2336 : {
9915 : 2336 : tree _q20 = TREE_OPERAND (_p0, 0);
9916 : 2336 : tree _q21 = TREE_OPERAND (_p0, 1);
9917 : 2336 : switch (TREE_CODE (_p1))
9918 : : {
9919 : 36 : case INTEGER_CST:
9920 : 36 : {
9921 : 36 : {
9922 : 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9923 : 36 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
9924 : 36 : if (res) return res;
9925 : : }
9926 : 0 : break;
9927 : : }
9928 : : default:;
9929 : : }
9930 : : break;
9931 : : }
9932 : 6135 : case NEGATE_EXPR:
9933 : 6135 : {
9934 : 6135 : tree _q20 = TREE_OPERAND (_p0, 0);
9935 : 6135 : switch (TREE_CODE (_p1))
9936 : : {
9937 : 4 : case NEGATE_EXPR:
9938 : 4 : {
9939 : 4 : tree _q40 = TREE_OPERAND (_p1, 0);
9940 : 4 : {
9941 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9942 : 4 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9943 : 4 : if (res) return res;
9944 : : }
9945 : 0 : break;
9946 : : }
9947 : 6131 : default:;
9948 : : }
9949 : 6131 : if (CONSTANT_CLASS_P (_p1))
9950 : : {
9951 : 580 : {
9952 : 580 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9953 : 580 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9954 : 580 : if (res) return res;
9955 : : }
9956 : : }
9957 : : break;
9958 : : }
9959 : 1946 : case ABS_EXPR:
9960 : 1946 : {
9961 : 1946 : tree _q20 = TREE_OPERAND (_p0, 0);
9962 : 1946 : if (zerop (_p1))
9963 : : {
9964 : 72 : {
9965 : 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9966 : 72 : const enum tree_code eqne = NE_EXPR;
9967 : 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1729;
9968 : 72 : {
9969 : 72 : tree res_op0;
9970 : 72 : res_op0 = captures[0];
9971 : 72 : tree res_op1;
9972 : 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9973 : 72 : tree _r;
9974 : 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9975 : 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9976 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9977 : 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 999, __FILE__, __LINE__, true);
9978 : 72 : return _r;
9979 : : }
9980 : 0 : next_after_fail1729:;
9981 : : }
9982 : : }
9983 : : break;
9984 : : }
9985 : 1698 : case ABSU_EXPR:
9986 : 1698 : {
9987 : 1698 : tree _q20 = TREE_OPERAND (_p0, 0);
9988 : 1698 : if (zerop (_p1))
9989 : : {
9990 : 65 : {
9991 : 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9992 : 65 : const enum tree_code eqne = NE_EXPR;
9993 : 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1730;
9994 : 65 : {
9995 : 65 : tree res_op0;
9996 : 65 : res_op0 = captures[0];
9997 : 65 : tree res_op1;
9998 : 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9999 : 65 : tree _r;
10000 : 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
10001 : 65 : if (TREE_SIDE_EFFECTS (captures[1]))
10002 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10003 : 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 999, __FILE__, __LINE__, true);
10004 : 65 : return _r;
10005 : : }
10006 : 0 : next_after_fail1730:;
10007 : : }
10008 : : }
10009 : : break;
10010 : : }
10011 : 4696730 : CASE_CONVERT:
10012 : 4696730 : {
10013 : 4696730 : tree _q20 = TREE_OPERAND (_p0, 0);
10014 : 4696730 : switch (TREE_CODE (_p1))
10015 : : {
10016 : 1199117 : CASE_CONVERT:
10017 : 1199117 : {
10018 : 1199117 : tree _q40 = TREE_OPERAND (_p1, 0);
10019 : 1199117 : {
10020 : 1199117 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10021 : 1199117 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
10022 : 1199117 : if (res) return res;
10023 : : }
10024 : 1012115 : break;
10025 : : }
10026 : 4509728 : default:;
10027 : : }
10028 : 4509728 : {
10029 : 4509728 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10030 : 4509728 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
10031 : 4509728 : if (res) return res;
10032 : : }
10033 : 2440830 : switch (TREE_CODE (_q20))
10034 : : {
10035 : 12 : case BIT_IOR_EXPR:
10036 : 12 : {
10037 : 12 : tree _q30 = TREE_OPERAND (_q20, 0);
10038 : 12 : tree _q31 = TREE_OPERAND (_q20, 1);
10039 : 12 : switch (TREE_CODE (_q31))
10040 : : {
10041 : 0 : case INTEGER_CST:
10042 : 0 : {
10043 : 0 : switch (TREE_CODE (_p1))
10044 : : {
10045 : 0 : case INTEGER_CST:
10046 : 0 : {
10047 : 0 : {
10048 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
10049 : 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR);
10050 : 0 : if (res) return res;
10051 : : }
10052 : 0 : break;
10053 : : }
10054 : : default:;
10055 : : }
10056 : : break;
10057 : : }
10058 : : default:;
10059 : : }
10060 : : break;
10061 : : }
10062 : : default:;
10063 : : }
10064 : : break;
10065 : : }
10066 : 15101056 : case SSA_NAME:
10067 : 15101056 : {
10068 : 15101056 : switch (TREE_CODE (_p1))
10069 : : {
10070 : 326264 : case ADDR_EXPR:
10071 : 326264 : {
10072 : 326264 : {
10073 : 326264 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10074 : 326264 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR);
10075 : 326264 : if (res) return res;
10076 : : }
10077 : 326262 : break;
10078 : : }
10079 : : default:;
10080 : : }
10081 : : break;
10082 : : }
10083 : 247473 : case BIT_IOR_EXPR:
10084 : 247473 : {
10085 : 247473 : tree _q20 = TREE_OPERAND (_p0, 0);
10086 : 247473 : tree _q21 = TREE_OPERAND (_p0, 1);
10087 : 247473 : switch (TREE_CODE (_q21))
10088 : : {
10089 : 1228 : case INTEGER_CST:
10090 : 1228 : {
10091 : 1228 : switch (TREE_CODE (_p1))
10092 : : {
10093 : 232 : case INTEGER_CST:
10094 : 232 : {
10095 : 232 : {
10096 : 232 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10097 : 232 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR);
10098 : 232 : if (res) return res;
10099 : : }
10100 : 232 : break;
10101 : : }
10102 : : default:;
10103 : : }
10104 : : break;
10105 : : }
10106 : : default:;
10107 : : }
10108 : : break;
10109 : : }
10110 : 11739 : case BIT_XOR_EXPR:
10111 : 11739 : {
10112 : 11739 : tree _q20 = TREE_OPERAND (_p0, 0);
10113 : 11739 : tree _q21 = TREE_OPERAND (_p0, 1);
10114 : 11739 : if (integer_zerop (_p1))
10115 : : {
10116 : 7419 : {
10117 : 7419 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10118 : 7419 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, NE_EXPR);
10119 : 7419 : if (res) return res;
10120 : : }
10121 : : }
10122 : 4320 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10123 : : {
10124 : 1 : {
10125 : 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10126 : 1 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR);
10127 : 1 : if (res) return res;
10128 : : }
10129 : : }
10130 : 4319 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10131 : : {
10132 : 2 : {
10133 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10134 : 2 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR);
10135 : 2 : if (res) return res;
10136 : : }
10137 : : }
10138 : : break;
10139 : : }
10140 : 2069693 : case CALL_EXPR:
10141 : 2069693 : switch (get_call_combined_fn (_p0))
10142 : : {
10143 : 42 : case CFN_BUILT_IN_SQRTF:
10144 : 42 : if (call_expr_nargs (_p0) == 1)
10145 : : {
10146 : 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10147 : 42 : switch (TREE_CODE (_p1))
10148 : : {
10149 : 0 : case REAL_CST:
10150 : 0 : {
10151 : 0 : {
10152 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10153 : 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
10154 : 0 : if (res) return res;
10155 : : }
10156 : 0 : break;
10157 : : }
10158 : 42 : case CALL_EXPR:
10159 : 42 : switch (get_call_combined_fn (_p1))
10160 : : {
10161 : 0 : case CFN_BUILT_IN_SQRTF:
10162 : 0 : if (call_expr_nargs (_p1) == 1)
10163 : : {
10164 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10165 : 0 : {
10166 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10167 : 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
10168 : 0 : if (res) return res;
10169 : : }
10170 : : }
10171 : : break;
10172 : : default:;
10173 : : }
10174 : : break;
10175 : : default:;
10176 : : }
10177 : : }
10178 : : break;
10179 : 42 : case CFN_BUILT_IN_SQRTL:
10180 : 42 : if (call_expr_nargs (_p0) == 1)
10181 : : {
10182 : 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10183 : 42 : switch (TREE_CODE (_p1))
10184 : : {
10185 : 0 : case REAL_CST:
10186 : 0 : {
10187 : 0 : {
10188 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10189 : 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
10190 : 0 : if (res) return res;
10191 : : }
10192 : 0 : break;
10193 : : }
10194 : 42 : case CALL_EXPR:
10195 : 42 : switch (get_call_combined_fn (_p1))
10196 : : {
10197 : 0 : case CFN_BUILT_IN_SQRTL:
10198 : 0 : if (call_expr_nargs (_p1) == 1)
10199 : : {
10200 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10201 : 0 : {
10202 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10203 : 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
10204 : 0 : if (res) return res;
10205 : : }
10206 : : }
10207 : : break;
10208 : : default:;
10209 : : }
10210 : : break;
10211 : : default:;
10212 : : }
10213 : : }
10214 : : break;
10215 : 46 : case CFN_BUILT_IN_SQRT:
10216 : 46 : if (call_expr_nargs (_p0) == 1)
10217 : : {
10218 : 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10219 : 46 : switch (TREE_CODE (_p1))
10220 : : {
10221 : 2 : case REAL_CST:
10222 : 2 : {
10223 : 2 : {
10224 : 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10225 : 2 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
10226 : 2 : if (res) return res;
10227 : : }
10228 : 2 : break;
10229 : : }
10230 : 43 : case CALL_EXPR:
10231 : 43 : switch (get_call_combined_fn (_p1))
10232 : : {
10233 : 0 : case CFN_BUILT_IN_SQRT:
10234 : 0 : if (call_expr_nargs (_p1) == 1)
10235 : : {
10236 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10237 : 0 : {
10238 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10239 : 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
10240 : 0 : if (res) return res;
10241 : : }
10242 : : }
10243 : : break;
10244 : : default:;
10245 : : }
10246 : : break;
10247 : : default:;
10248 : : }
10249 : : }
10250 : : break;
10251 : 0 : case CFN_SQRT:
10252 : 0 : if (call_expr_nargs (_p0) == 1)
10253 : : {
10254 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10255 : 0 : switch (TREE_CODE (_p1))
10256 : : {
10257 : 0 : case REAL_CST:
10258 : 0 : {
10259 : 0 : {
10260 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10261 : 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
10262 : 0 : if (res) return res;
10263 : : }
10264 : 0 : break;
10265 : : }
10266 : 0 : case CALL_EXPR:
10267 : 0 : switch (get_call_combined_fn (_p1))
10268 : : {
10269 : 0 : case CFN_SQRT:
10270 : 0 : if (call_expr_nargs (_p1) == 1)
10271 : : {
10272 : 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10273 : 0 : {
10274 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10275 : 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
10276 : 0 : if (res) return res;
10277 : : }
10278 : : }
10279 : : break;
10280 : : default:;
10281 : : }
10282 : : break;
10283 : : default:;
10284 : : }
10285 : : }
10286 : : break;
10287 : : default:;
10288 : : }
10289 : : break;
10290 : 30696116 : default:;
10291 : : }
10292 : 30696116 : switch (TREE_CODE (_p1))
10293 : : {
10294 : 881 : case BIT_XOR_EXPR:
10295 : 881 : {
10296 : 881 : tree _q30 = TREE_OPERAND (_p1, 0);
10297 : 881 : tree _q31 = TREE_OPERAND (_p1, 1);
10298 : 881 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10299 : : {
10300 : 0 : {
10301 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10302 : 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR);
10303 : 0 : if (res) return res;
10304 : : }
10305 : : }
10306 : 881 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10307 : : {
10308 : 0 : {
10309 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10310 : 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR);
10311 : 0 : if (res) return res;
10312 : : }
10313 : : }
10314 : : break;
10315 : : }
10316 : 30696116 : default:;
10317 : : }
10318 : 30696116 : switch (TREE_CODE (_p0))
10319 : : {
10320 : 1231968 : case BIT_AND_EXPR:
10321 : 1231968 : {
10322 : 1231968 : tree _q20 = TREE_OPERAND (_p0, 0);
10323 : 1231968 : tree _q21 = TREE_OPERAND (_p0, 1);
10324 : 1231968 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10325 : : {
10326 : 181 : {
10327 : 181 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10328 : 181 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR);
10329 : 181 : if (res) return res;
10330 : : }
10331 : : }
10332 : 1231940 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10333 : : {
10334 : 4268 : {
10335 : 4268 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10336 : 4268 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR);
10337 : 4268 : if (res) return res;
10338 : : }
10339 : : }
10340 : : break;
10341 : : }
10342 : 30696088 : default:;
10343 : : }
10344 : 30696088 : switch (TREE_CODE (_p1))
10345 : : {
10346 : 7542 : case BIT_AND_EXPR:
10347 : 7542 : {
10348 : 7542 : tree _q30 = TREE_OPERAND (_p1, 0);
10349 : 7542 : tree _q31 = TREE_OPERAND (_p1, 1);
10350 : 7542 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10351 : : {
10352 : 0 : {
10353 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10354 : 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR);
10355 : 0 : if (res) return res;
10356 : : }
10357 : : }
10358 : 7542 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10359 : : {
10360 : 0 : {
10361 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10362 : 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR);
10363 : 0 : if (res) return res;
10364 : : }
10365 : : }
10366 : : break;
10367 : : }
10368 : 30696088 : default:;
10369 : : }
10370 : 30696088 : switch (TREE_CODE (_p0))
10371 : : {
10372 : 2440830 : CASE_CONVERT:
10373 : 2440830 : {
10374 : 2440830 : tree _q20 = TREE_OPERAND (_p0, 0);
10375 : 2440830 : switch (TREE_CODE (_q20))
10376 : : {
10377 : 0 : case BIT_AND_EXPR:
10378 : 0 : {
10379 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10380 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10381 : 0 : switch (TREE_CODE (_q30))
10382 : : {
10383 : 0 : CASE_CONVERT:
10384 : 0 : {
10385 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10386 : 0 : switch (TREE_CODE (_q31))
10387 : : {
10388 : 0 : case INTEGER_CST:
10389 : 0 : {
10390 : 0 : switch (TREE_CODE (_p1))
10391 : : {
10392 : 0 : CASE_CONVERT:
10393 : 0 : {
10394 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
10395 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
10396 : : {
10397 : 0 : {
10398 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
10399 : 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR);
10400 : 0 : if (res) return res;
10401 : : }
10402 : : }
10403 : : break;
10404 : : }
10405 : : default:;
10406 : : }
10407 : : break;
10408 : : }
10409 : : default:;
10410 : : }
10411 : : break;
10412 : : }
10413 : : default:;
10414 : : }
10415 : : break;
10416 : : }
10417 : 2440830 : default:;
10418 : : }
10419 : 2440830 : switch (TREE_CODE (_p1))
10420 : : {
10421 : 1012115 : CASE_CONVERT:
10422 : 1012115 : {
10423 : 1012115 : tree _q40 = TREE_OPERAND (_p1, 0);
10424 : 1012115 : switch (TREE_CODE (_q40))
10425 : : {
10426 : 0 : case BIT_AND_EXPR:
10427 : 0 : {
10428 : 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10429 : 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10430 : 0 : switch (TREE_CODE (_q50))
10431 : : {
10432 : 0 : CASE_CONVERT:
10433 : 0 : {
10434 : 0 : tree _q60 = TREE_OPERAND (_q50, 0);
10435 : 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10436 : : {
10437 : 0 : switch (TREE_CODE (_q51))
10438 : : {
10439 : 0 : case INTEGER_CST:
10440 : 0 : {
10441 : 0 : {
10442 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
10443 : 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR);
10444 : 0 : if (res) return res;
10445 : : }
10446 : 0 : break;
10447 : : }
10448 : : default:;
10449 : : }
10450 : : }
10451 : : break;
10452 : : }
10453 : : default:;
10454 : : }
10455 : : break;
10456 : : }
10457 : : default:;
10458 : : }
10459 : : break;
10460 : : }
10461 : : default:;
10462 : : }
10463 : : break;
10464 : : }
10465 : 247473 : case BIT_IOR_EXPR:
10466 : 247473 : {
10467 : 247473 : tree _q20 = TREE_OPERAND (_p0, 0);
10468 : 247473 : tree _q21 = TREE_OPERAND (_p0, 1);
10469 : 247473 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10470 : : {
10471 : 128 : {
10472 : 128 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10473 : 128 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
10474 : 128 : if (res) return res;
10475 : : }
10476 : : }
10477 : 247465 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10478 : : {
10479 : 251 : {
10480 : 251 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10481 : 251 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
10482 : 251 : if (res) return res;
10483 : : }
10484 : : }
10485 : : break;
10486 : : }
10487 : 30696080 : default:;
10488 : : }
10489 : 30696080 : switch (TREE_CODE (_p1))
10490 : : {
10491 : 617 : case BIT_IOR_EXPR:
10492 : 617 : {
10493 : 617 : tree _q30 = TREE_OPERAND (_p1, 0);
10494 : 617 : tree _q31 = TREE_OPERAND (_p1, 1);
10495 : 617 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10496 : : {
10497 : 0 : {
10498 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10499 : 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
10500 : 0 : if (res) return res;
10501 : : }
10502 : : }
10503 : 617 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10504 : : {
10505 : 0 : {
10506 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10507 : 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
10508 : 0 : if (res) return res;
10509 : : }
10510 : : }
10511 : : break;
10512 : : }
10513 : 30696080 : default:;
10514 : : }
10515 : 30696080 : switch (TREE_CODE (_p0))
10516 : : {
10517 : 2440830 : CASE_CONVERT:
10518 : 2440830 : {
10519 : 2440830 : tree _q20 = TREE_OPERAND (_p0, 0);
10520 : 2440830 : switch (TREE_CODE (_q20))
10521 : : {
10522 : 8 : case BIT_XOR_EXPR:
10523 : 8 : {
10524 : 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10525 : 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10526 : 8 : switch (TREE_CODE (_q31))
10527 : : {
10528 : 0 : case INTEGER_CST:
10529 : 0 : {
10530 : 0 : switch (TREE_CODE (_p1))
10531 : : {
10532 : 0 : case INTEGER_CST:
10533 : 0 : {
10534 : 0 : {
10535 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
10536 : 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR);
10537 : 0 : if (res) return res;
10538 : : }
10539 : 0 : break;
10540 : : }
10541 : : default:;
10542 : : }
10543 : : break;
10544 : : }
10545 : : default:;
10546 : : }
10547 : : break;
10548 : : }
10549 : : default:;
10550 : : }
10551 : : break;
10552 : : }
10553 : 4317 : case BIT_XOR_EXPR:
10554 : 4317 : {
10555 : 4317 : tree _q20 = TREE_OPERAND (_p0, 0);
10556 : 4317 : tree _q21 = TREE_OPERAND (_p0, 1);
10557 : 4317 : switch (TREE_CODE (_q21))
10558 : : {
10559 : 884 : case INTEGER_CST:
10560 : 884 : {
10561 : 884 : switch (TREE_CODE (_p1))
10562 : : {
10563 : 10 : case INTEGER_CST:
10564 : 10 : {
10565 : 10 : {
10566 : 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10567 : 10 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR);
10568 : 10 : if (res) return res;
10569 : : }
10570 : 0 : break;
10571 : : }
10572 : : default:;
10573 : : }
10574 : : break;
10575 : : }
10576 : : default:;
10577 : : }
10578 : : break;
10579 : : }
10580 : 30696070 : default:;
10581 : : }
10582 : 30696070 : {
10583 : 30696070 : tree _p0_pops[1];
10584 : 30696070 : if (tree_nop_convert (_p0, _p0_pops))
10585 : : {
10586 : 1739139 : tree _q20 = _p0_pops[0];
10587 : 1739139 : if (integer_zerop (_p1))
10588 : : {
10589 : 642327 : {
10590 : 642327 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10591 : 642327 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR);
10592 : 642327 : if (res) return res;
10593 : : }
10594 : : }
10595 : : }
10596 : : }
10597 : 30310034 : if (integer_zerop (_p1))
10598 : : {
10599 : 17742878 : {
10600 : 17742878 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10601 : 17742878 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR);
10602 : 17742878 : if (res) return res;
10603 : : }
10604 : : }
10605 : 30144261 : switch (TREE_CODE (_p0))
10606 : : {
10607 : 1231940 : case BIT_AND_EXPR:
10608 : 1231940 : {
10609 : 1231940 : tree _q20 = TREE_OPERAND (_p0, 0);
10610 : 1231940 : tree _q21 = TREE_OPERAND (_p0, 1);
10611 : 1231940 : switch (TREE_CODE (_p1))
10612 : : {
10613 : 6186 : case BIT_AND_EXPR:
10614 : 6186 : {
10615 : 6186 : tree _q50 = TREE_OPERAND (_p1, 0);
10616 : 6186 : tree _q51 = TREE_OPERAND (_p1, 1);
10617 : 6186 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10618 : : {
10619 : 5943 : {
10620 : 5943 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10621 : 5943 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
10622 : 5943 : if (res) return res;
10623 : : }
10624 : : }
10625 : 243 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10626 : : {
10627 : 1 : {
10628 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10629 : 1 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
10630 : 1 : if (res) return res;
10631 : : }
10632 : : }
10633 : 242 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10634 : : {
10635 : 1 : {
10636 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10637 : 1 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
10638 : 1 : if (res) return res;
10639 : : }
10640 : : }
10641 : 241 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10642 : : {
10643 : 6 : {
10644 : 6 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
10645 : 6 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
10646 : 6 : if (res) return res;
10647 : : }
10648 : : }
10649 : : break;
10650 : : }
10651 : 1225989 : default:;
10652 : : }
10653 : 1225989 : if (integer_pow2p (_q21))
10654 : : {
10655 : 612829 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10656 : : {
10657 : 579 : {
10658 : 579 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10659 : 579 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10660 : 579 : if (res) return res;
10661 : : }
10662 : : }
10663 : : }
10664 : 1225414 : switch (TREE_CODE (_q20))
10665 : : {
10666 : 159390 : CASE_CONVERT:
10667 : 159390 : {
10668 : 159390 : tree _q30 = TREE_OPERAND (_q20, 0);
10669 : 159390 : if (integer_pow2p (_q21))
10670 : : {
10671 : 76691 : if (integer_zerop (_p1))
10672 : : {
10673 : 76596 : {
10674 : 76596 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
10675 : 76596 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10676 : 76596 : if (res) return res;
10677 : : }
10678 : : }
10679 : : }
10680 : : break;
10681 : : }
10682 : 1216706 : default:;
10683 : : }
10684 : 1216706 : if (integer_pow2p (_q21))
10685 : : {
10686 : 603546 : if (integer_zerop (_p1))
10687 : : {
10688 : 600213 : {
10689 : 600213 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
10690 : 600213 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10691 : 600213 : if (res) return res;
10692 : : }
10693 : : }
10694 : : }
10695 : : break;
10696 : : }
10697 : 5463 : case GE_EXPR:
10698 : 5463 : {
10699 : 5463 : tree _q20 = TREE_OPERAND (_p0, 0);
10700 : 5463 : tree _q21 = TREE_OPERAND (_p0, 1);
10701 : 5463 : if (integer_zerop (_q21))
10702 : : {
10703 : 960 : switch (TREE_CODE (_p1))
10704 : : {
10705 : 1 : case GE_EXPR:
10706 : 1 : {
10707 : 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10708 : 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10709 : 1 : if (integer_zerop (_q51))
10710 : : {
10711 : 1 : {
10712 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10713 : 1 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
10714 : 1 : if (res) return res;
10715 : : }
10716 : : }
10717 : : break;
10718 : : }
10719 : 3 : case LT_EXPR:
10720 : 3 : {
10721 : 3 : tree _q50 = TREE_OPERAND (_p1, 0);
10722 : 3 : tree _q51 = TREE_OPERAND (_p1, 1);
10723 : 3 : if (integer_zerop (_q51))
10724 : : {
10725 : 3 : {
10726 : 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10727 : 3 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10728 : 3 : if (res) return res;
10729 : : }
10730 : : }
10731 : : break;
10732 : : }
10733 : : default:;
10734 : : }
10735 : : }
10736 : : break;
10737 : : }
10738 : 14807 : case LT_EXPR:
10739 : 14807 : {
10740 : 14807 : tree _q20 = TREE_OPERAND (_p0, 0);
10741 : 14807 : tree _q21 = TREE_OPERAND (_p0, 1);
10742 : 14807 : if (integer_zerop (_q21))
10743 : : {
10744 : 8220 : switch (TREE_CODE (_p1))
10745 : : {
10746 : 73 : case LT_EXPR:
10747 : 73 : {
10748 : 73 : tree _q50 = TREE_OPERAND (_p1, 0);
10749 : 73 : tree _q51 = TREE_OPERAND (_p1, 1);
10750 : 73 : if (integer_zerop (_q51))
10751 : : {
10752 : 73 : {
10753 : 73 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10754 : 73 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
10755 : 73 : if (res) return res;
10756 : : }
10757 : : }
10758 : : break;
10759 : : }
10760 : 17 : case GE_EXPR:
10761 : 17 : {
10762 : 17 : tree _q50 = TREE_OPERAND (_p1, 0);
10763 : 17 : tree _q51 = TREE_OPERAND (_p1, 1);
10764 : 17 : if (integer_zerop (_q51))
10765 : : {
10766 : 17 : {
10767 : 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10768 : 17 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10769 : 17 : if (res) return res;
10770 : : }
10771 : : }
10772 : : break;
10773 : : }
10774 : : default:;
10775 : : }
10776 : : }
10777 : : break;
10778 : : }
10779 : 2054794 : CASE_CONVERT:
10780 : 2054794 : {
10781 : 2054794 : tree _q20 = TREE_OPERAND (_p0, 0);
10782 : 2054794 : switch (TREE_CODE (_q20))
10783 : : {
10784 : 867928 : case ADDR_EXPR:
10785 : 867928 : {
10786 : 867928 : switch (TREE_CODE (_p1))
10787 : : {
10788 : 839899 : CASE_CONVERT:
10789 : 839899 : {
10790 : 839899 : tree _q40 = TREE_OPERAND (_p1, 0);
10791 : 839899 : switch (TREE_CODE (_q40))
10792 : : {
10793 : 839899 : case ADDR_EXPR:
10794 : 839899 : {
10795 : 839899 : {
10796 : 839899 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10797 : 839899 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
10798 : 839899 : if (res) return res;
10799 : : }
10800 : 33 : break;
10801 : : }
10802 : : default:;
10803 : : }
10804 : : break;
10805 : : }
10806 : 20582 : case ADDR_EXPR:
10807 : 20582 : {
10808 : 20582 : {
10809 : 20582 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10810 : 20582 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
10811 : 20582 : if (res) return res;
10812 : : }
10813 : 7859 : break;
10814 : : }
10815 : : default:;
10816 : : }
10817 : : break;
10818 : : }
10819 : : default:;
10820 : : }
10821 : : break;
10822 : : }
10823 : 70114 : case ADDR_EXPR:
10824 : 70114 : {
10825 : 70114 : switch (TREE_CODE (_p1))
10826 : : {
10827 : 203 : CASE_CONVERT:
10828 : 203 : {
10829 : 203 : tree _q30 = TREE_OPERAND (_p1, 0);
10830 : 203 : switch (TREE_CODE (_q30))
10831 : : {
10832 : 203 : case ADDR_EXPR:
10833 : 203 : {
10834 : 203 : {
10835 : 203 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10836 : 203 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
10837 : 203 : if (res) return res;
10838 : : }
10839 : 143 : break;
10840 : : }
10841 : : default:;
10842 : : }
10843 : : break;
10844 : : }
10845 : 61842 : case ADDR_EXPR:
10846 : 61842 : {
10847 : 61842 : {
10848 : 61842 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10849 : 61842 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
10850 : 61842 : if (res) return res;
10851 : : }
10852 : 1607 : break;
10853 : : }
10854 : : default:;
10855 : : }
10856 : : break;
10857 : : }
10858 : 29198011 : default:;
10859 : : }
10860 : 29198011 : {
10861 : 29198011 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10862 : 29198011 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
10863 : 29198011 : if (res) return res;
10864 : : }
10865 : 29188844 : switch (TREE_CODE (_p0))
10866 : : {
10867 : 1202205 : CASE_CONVERT:
10868 : 1202205 : {
10869 : 1202205 : tree _q20 = TREE_OPERAND (_p0, 0);
10870 : 1202205 : switch (TREE_CODE (_p1))
10871 : : {
10872 : 695059 : case INTEGER_CST:
10873 : 695059 : {
10874 : 695059 : {
10875 : 695059 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10876 : 695059 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
10877 : 695059 : if (res) return res;
10878 : : }
10879 : 687461 : break;
10880 : : }
10881 : 1194607 : default:;
10882 : : }
10883 : 1194607 : switch (TREE_CODE (_q20))
10884 : : {
10885 : 12 : case NE_EXPR:
10886 : 12 : {
10887 : 12 : tree _q30 = TREE_OPERAND (_q20, 0);
10888 : 12 : tree _q31 = TREE_OPERAND (_q20, 1);
10889 : 12 : switch (TREE_CODE (_q31))
10890 : : {
10891 : 12 : case INTEGER_CST:
10892 : 12 : {
10893 : 12 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10894 : : {
10895 : 4 : {
10896 : 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10897 : 4 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10898 : 4 : if (res) return res;
10899 : : }
10900 : : }
10901 : : break;
10902 : : }
10903 : : default:;
10904 : : }
10905 : : break;
10906 : : }
10907 : 0 : case EQ_EXPR:
10908 : 0 : {
10909 : 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10910 : 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10911 : 0 : switch (TREE_CODE (_q31))
10912 : : {
10913 : 0 : case INTEGER_CST:
10914 : 0 : {
10915 : 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10916 : : {
10917 : 0 : {
10918 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10919 : 0 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10920 : 0 : if (res) return res;
10921 : : }
10922 : : }
10923 : : break;
10924 : : }
10925 : : default:;
10926 : : }
10927 : : break;
10928 : : }
10929 : : default:;
10930 : : }
10931 : : break;
10932 : : }
10933 : 29181242 : default:;
10934 : : }
10935 : 29181242 : switch (TREE_CODE (_p1))
10936 : : {
10937 : 498118 : CASE_CONVERT:
10938 : 498118 : {
10939 : 498118 : tree _q30 = TREE_OPERAND (_p1, 0);
10940 : 498118 : switch (TREE_CODE (_q30))
10941 : : {
10942 : 0 : case NE_EXPR:
10943 : 0 : {
10944 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10945 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10946 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10947 : : {
10948 : 0 : switch (TREE_CODE (_q41))
10949 : : {
10950 : 0 : case INTEGER_CST:
10951 : 0 : {
10952 : 0 : {
10953 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10954 : 0 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10955 : 0 : if (res) return res;
10956 : : }
10957 : 0 : break;
10958 : : }
10959 : : default:;
10960 : : }
10961 : : }
10962 : : break;
10963 : : }
10964 : 0 : case EQ_EXPR:
10965 : 0 : {
10966 : 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10967 : 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10968 : 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10969 : : {
10970 : 0 : switch (TREE_CODE (_q41))
10971 : : {
10972 : 0 : case INTEGER_CST:
10973 : 0 : {
10974 : 0 : {
10975 : 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10976 : 0 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10977 : 0 : if (res) return res;
10978 : : }
10979 : 0 : break;
10980 : : }
10981 : : default:;
10982 : : }
10983 : : }
10984 : : break;
10985 : : }
10986 : : default:;
10987 : : }
10988 : : break;
10989 : : }
10990 : 29181242 : default:;
10991 : : }
10992 : 29181242 : if (integer_zerop (_p1))
10993 : : {
10994 : 17540964 : {
10995 : 17540964 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10996 : 17540964 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10997 : 17540964 : && types_match (type, TREE_TYPE (captures[0]))
10998 : : )
10999 : : {
11000 : 3507926 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1731;
11001 : 3507926 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1731;
11002 : 3507926 : {
11003 : 3507926 : tree res_op0;
11004 : 3507926 : res_op0 = captures[0];
11005 : 3507926 : tree _r;
11006 : 3507926 : _r = non_lvalue_loc (loc, res_op0);
11007 : 3507926 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
11008 : 3507926 : return _r;
11009 : : }
11010 : : next_after_fail1731:;
11011 : : }
11012 : : }
11013 : : }
11014 : 25673316 : switch (TREE_CODE (_p0))
11015 : : {
11016 : 919673 : case BIT_AND_EXPR:
11017 : 919673 : {
11018 : 919673 : tree _q20 = TREE_OPERAND (_p0, 0);
11019 : 919673 : tree _q21 = TREE_OPERAND (_p0, 1);
11020 : 919673 : switch (TREE_CODE (_q21))
11021 : : {
11022 : 1459 : case VECTOR_CST:
11023 : 1459 : {
11024 : 1459 : if (integer_zerop (_p1))
11025 : : {
11026 : 1459 : {
11027 : 1459 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
11028 : 1459 : const enum tree_code cmp = NE_EXPR;
11029 : 1459 : const enum tree_code icmp = GT_EXPR;
11030 : 1459 : {
11031 : 1459 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11032 : 1459 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11033 : : )
11034 : : {
11035 : 13 : {
11036 : 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11037 : 13 : ? optab_vector : optab_default;
11038 : 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11039 : 13 : if (target_supports_op_p (utype, icmp, optab)
11040 : 13 : || (optimize_vectors_before_lowering_p ()
11041 : 7 : && (!target_supports_op_p (type, cmp, optab)
11042 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11043 : : )
11044 : : {
11045 : 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11046 : : )
11047 : : {
11048 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1732;
11049 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1732;
11050 : 0 : {
11051 : 0 : tree res_op0;
11052 : 0 : res_op0 = captures[1];
11053 : 0 : tree res_op1;
11054 : 0 : res_op1 = csts;
11055 : 0 : tree _r;
11056 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11057 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11058 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11059 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
11060 : 0 : return _r;
11061 : : }
11062 : 1452 : next_after_fail1732:;
11063 : : }
11064 : : else
11065 : : {
11066 : 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1733;
11067 : 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1733;
11068 : 7 : {
11069 : 7 : tree res_op0;
11070 : 7 : {
11071 : 7 : tree _o1[1], _r1;
11072 : 7 : _o1[0] = captures[1];
11073 : 7 : if (TREE_TYPE (_o1[0]) != utype)
11074 : : {
11075 : 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11076 : : }
11077 : : else
11078 : : _r1 = _o1[0];
11079 : 7 : res_op0 = _r1;
11080 : : }
11081 : 7 : tree res_op1;
11082 : 7 : res_op1 = csts;
11083 : 7 : tree _r;
11084 : 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11085 : 7 : if (TREE_SIDE_EFFECTS (captures[2]))
11086 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11087 : 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
11088 : 7 : return _r;
11089 : : }
11090 : 1452 : next_after_fail1733:;
11091 : : }
11092 : : }
11093 : : }
11094 : : }
11095 : : }
11096 : : }
11097 : : }
11098 : : break;
11099 : : }
11100 : 738601 : case INTEGER_CST:
11101 : 738601 : {
11102 : 738601 : if (integer_zerop (_p1))
11103 : : {
11104 : 700471 : {
11105 : 700471 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
11106 : 700471 : const enum tree_code cmp = NE_EXPR;
11107 : 700471 : const enum tree_code icmp = GT_EXPR;
11108 : 700471 : {
11109 : 700471 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11110 : 700471 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11111 : : )
11112 : : {
11113 : 1254 : {
11114 : 1254 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11115 : 1254 : ? optab_vector : optab_default;
11116 : 1254 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11117 : 1254 : if (target_supports_op_p (utype, icmp, optab)
11118 : 1254 : || (optimize_vectors_before_lowering_p ()
11119 : 1085 : && (!target_supports_op_p (type, cmp, optab)
11120 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11121 : : )
11122 : : {
11123 : 1085 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11124 : : )
11125 : : {
11126 : 984 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1734;
11127 : 984 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1734;
11128 : 984 : {
11129 : 984 : tree res_op0;
11130 : 984 : res_op0 = captures[1];
11131 : 984 : tree res_op1;
11132 : 984 : res_op1 = csts;
11133 : 984 : tree _r;
11134 : 984 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11135 : 984 : if (TREE_SIDE_EFFECTS (captures[2]))
11136 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11137 : 984 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
11138 : 984 : return _r;
11139 : : }
11140 : 699386 : next_after_fail1734:;
11141 : : }
11142 : : else
11143 : : {
11144 : 101 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1735;
11145 : 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1735;
11146 : 101 : {
11147 : 101 : tree res_op0;
11148 : 101 : {
11149 : 101 : tree _o1[1], _r1;
11150 : 101 : _o1[0] = captures[1];
11151 : 101 : if (TREE_TYPE (_o1[0]) != utype)
11152 : : {
11153 : 101 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11154 : : }
11155 : : else
11156 : : _r1 = _o1[0];
11157 : 101 : res_op0 = _r1;
11158 : : }
11159 : 101 : tree res_op1;
11160 : 101 : res_op1 = csts;
11161 : 101 : tree _r;
11162 : 101 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11163 : 101 : if (TREE_SIDE_EFFECTS (captures[2]))
11164 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11165 : 101 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
11166 : 101 : return _r;
11167 : : }
11168 : 699386 : next_after_fail1735:;
11169 : : }
11170 : : }
11171 : : }
11172 : : }
11173 : : }
11174 : : }
11175 : : }
11176 : : break;
11177 : : }
11178 : 918581 : default:;
11179 : : }
11180 : 918581 : switch (TREE_CODE (_q20))
11181 : : {
11182 : 0 : case VECTOR_CST:
11183 : 0 : {
11184 : 0 : if (integer_zerop (_p1))
11185 : : {
11186 : 0 : {
11187 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
11188 : 0 : const enum tree_code cmp = NE_EXPR;
11189 : 0 : const enum tree_code icmp = GT_EXPR;
11190 : 0 : {
11191 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11192 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11193 : : )
11194 : : {
11195 : 0 : {
11196 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11197 : 0 : ? optab_vector : optab_default;
11198 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11199 : 0 : if (target_supports_op_p (utype, icmp, optab)
11200 : 0 : || (optimize_vectors_before_lowering_p ()
11201 : 0 : && (!target_supports_op_p (type, cmp, optab)
11202 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11203 : : )
11204 : : {
11205 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11206 : : )
11207 : : {
11208 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1736;
11209 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1736;
11210 : 0 : {
11211 : 0 : tree res_op0;
11212 : 0 : res_op0 = captures[1];
11213 : 0 : tree res_op1;
11214 : 0 : res_op1 = csts;
11215 : 0 : tree _r;
11216 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11217 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11218 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11219 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
11220 : 0 : return _r;
11221 : : }
11222 : 0 : next_after_fail1736:;
11223 : : }
11224 : : else
11225 : : {
11226 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1737;
11227 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1737;
11228 : 0 : {
11229 : 0 : tree res_op0;
11230 : 0 : {
11231 : 0 : tree _o1[1], _r1;
11232 : 0 : _o1[0] = captures[1];
11233 : 0 : if (TREE_TYPE (_o1[0]) != utype)
11234 : : {
11235 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11236 : : }
11237 : : else
11238 : : _r1 = _o1[0];
11239 : 0 : res_op0 = _r1;
11240 : : }
11241 : 0 : tree res_op1;
11242 : 0 : res_op1 = csts;
11243 : 0 : tree _r;
11244 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11245 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11246 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11247 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
11248 : 0 : return _r;
11249 : : }
11250 : 0 : next_after_fail1737:;
11251 : : }
11252 : : }
11253 : : }
11254 : : }
11255 : : }
11256 : : }
11257 : : }
11258 : : break;
11259 : : }
11260 : 0 : case INTEGER_CST:
11261 : 0 : {
11262 : 0 : if (integer_zerop (_p1))
11263 : : {
11264 : 0 : {
11265 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
11266 : 0 : const enum tree_code cmp = NE_EXPR;
11267 : 0 : const enum tree_code icmp = GT_EXPR;
11268 : 0 : {
11269 : 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11270 : 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11271 : : )
11272 : : {
11273 : 0 : {
11274 : 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11275 : 0 : ? optab_vector : optab_default;
11276 : 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11277 : 0 : if (target_supports_op_p (utype, icmp, optab)
11278 : 0 : || (optimize_vectors_before_lowering_p ()
11279 : 0 : && (!target_supports_op_p (type, cmp, optab)
11280 : 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11281 : : )
11282 : : {
11283 : 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11284 : : )
11285 : : {
11286 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1738;
11287 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1738;
11288 : 0 : {
11289 : 0 : tree res_op0;
11290 : 0 : res_op0 = captures[1];
11291 : 0 : tree res_op1;
11292 : 0 : res_op1 = csts;
11293 : 0 : tree _r;
11294 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11295 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11296 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11297 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
11298 : 0 : return _r;
11299 : : }
11300 : 0 : next_after_fail1738:;
11301 : : }
11302 : : else
11303 : : {
11304 : 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1739;
11305 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1739;
11306 : 0 : {
11307 : 0 : tree res_op0;
11308 : 0 : {
11309 : 0 : tree _o1[1], _r1;
11310 : 0 : _o1[0] = captures[1];
11311 : 0 : if (TREE_TYPE (_o1[0]) != utype)
11312 : : {
11313 : 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11314 : : }
11315 : : else
11316 : : _r1 = _o1[0];
11317 : 0 : res_op0 = _r1;
11318 : : }
11319 : 0 : tree res_op1;
11320 : 0 : res_op1 = csts;
11321 : 0 : tree _r;
11322 : 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11323 : 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11324 : 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11325 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
11326 : 0 : return _r;
11327 : : }
11328 : 0 : next_after_fail1739:;
11329 : : }
11330 : : }
11331 : : }
11332 : : }
11333 : : }
11334 : : }
11335 : : }
11336 : : break;
11337 : : }
11338 : : default:;
11339 : : }
11340 : : break;
11341 : : }
11342 : 21739 : case RSHIFT_EXPR:
11343 : 21739 : {
11344 : 21739 : tree _q20 = TREE_OPERAND (_p0, 0);
11345 : 21739 : tree _q21 = TREE_OPERAND (_p0, 1);
11346 : 21739 : switch (TREE_CODE (_q20))
11347 : : {
11348 : 1 : case MULT_EXPR:
11349 : 1 : {
11350 : 1 : tree _q30 = TREE_OPERAND (_q20, 0);
11351 : 1 : tree _q31 = TREE_OPERAND (_q20, 1);
11352 : 1 : switch (TREE_CODE (_q30))
11353 : : {
11354 : 1 : CASE_CONVERT:
11355 : 1 : {
11356 : 1 : tree _q40 = TREE_OPERAND (_q30, 0);
11357 : 1 : switch (TREE_CODE (_q31))
11358 : : {
11359 : 1 : CASE_CONVERT:
11360 : 1 : {
11361 : 1 : tree _q60 = TREE_OPERAND (_q31, 0);
11362 : 1 : switch (TREE_CODE (_q21))
11363 : : {
11364 : 1 : case INTEGER_CST:
11365 : 1 : {
11366 : 1 : if (integer_zerop (_p1))
11367 : : {
11368 : 1 : {
11369 : 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
11370 : 1 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR);
11371 : 1 : if (res) return res;
11372 : : }
11373 : : }
11374 : : break;
11375 : : }
11376 : : default:;
11377 : : }
11378 : : break;
11379 : : }
11380 : : default:;
11381 : : }
11382 : : break;
11383 : : }
11384 : : default:;
11385 : : }
11386 : : break;
11387 : : }
11388 : : default:;
11389 : : }
11390 : : break;
11391 : : }
11392 : 1294905 : case PLUS_EXPR:
11393 : 1294905 : {
11394 : 1294905 : tree _q20 = TREE_OPERAND (_p0, 0);
11395 : 1294905 : tree _q21 = TREE_OPERAND (_p0, 1);
11396 : 1294905 : switch (TREE_CODE (_q21))
11397 : : {
11398 : 1190819 : case INTEGER_CST:
11399 : 1190819 : {
11400 : 1190819 : switch (TREE_CODE (_p1))
11401 : : {
11402 : 706047 : case INTEGER_CST:
11403 : 706047 : {
11404 : 706047 : {
11405 : 706047 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11406 : 706047 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
11407 : 706047 : if (res) return res;
11408 : : }
11409 : 352 : break;
11410 : : }
11411 : : default:;
11412 : : }
11413 : : break;
11414 : : }
11415 : : default:;
11416 : : }
11417 : : break;
11418 : : }
11419 : 69916 : case MINUS_EXPR:
11420 : 69916 : {
11421 : 69916 : tree _q20 = TREE_OPERAND (_p0, 0);
11422 : 69916 : tree _q21 = TREE_OPERAND (_p0, 1);
11423 : 69916 : switch (TREE_CODE (_q21))
11424 : : {
11425 : 193 : case INTEGER_CST:
11426 : 193 : {
11427 : 193 : switch (TREE_CODE (_p1))
11428 : : {
11429 : 72 : case INTEGER_CST:
11430 : 72 : {
11431 : 72 : {
11432 : 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11433 : 72 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
11434 : 72 : if (res) return res;
11435 : : }
11436 : 72 : break;
11437 : : }
11438 : : default:;
11439 : : }
11440 : : break;
11441 : : }
11442 : 69916 : default:;
11443 : : }
11444 : 69916 : switch (TREE_CODE (_q20))
11445 : : {
11446 : 1637 : case INTEGER_CST:
11447 : 1637 : {
11448 : 1637 : switch (TREE_CODE (_p1))
11449 : : {
11450 : 59 : case INTEGER_CST:
11451 : 59 : {
11452 : 59 : {
11453 : 59 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
11454 : 59 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
11455 : 59 : if (res) return res;
11456 : : }
11457 : 0 : break;
11458 : : }
11459 : : default:;
11460 : : }
11461 : : break;
11462 : : }
11463 : : default:;
11464 : : }
11465 : : break;
11466 : : }
11467 : 2067732 : case CALL_EXPR:
11468 : 2067732 : switch (get_call_combined_fn (_p0))
11469 : : {
11470 : 224 : case CFN_BUILT_IN_CLZ:
11471 : 224 : if (call_expr_nargs (_p0) == 1)
11472 : : {
11473 : 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11474 : 224 : switch (TREE_CODE (_p1))
11475 : : {
11476 : 210 : case INTEGER_CST:
11477 : 210 : {
11478 : 210 : {
11479 : 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11480 : 210 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
11481 : 210 : if (res) return res;
11482 : : }
11483 : 135 : break;
11484 : : }
11485 : : default:;
11486 : : }
11487 : : }
11488 : : break;
11489 : 246 : case CFN_BUILT_IN_CTZ:
11490 : 246 : if (call_expr_nargs (_p0) == 1)
11491 : : {
11492 : 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11493 : 246 : switch (TREE_CODE (_p1))
11494 : : {
11495 : 200 : case INTEGER_CST:
11496 : 200 : {
11497 : 200 : {
11498 : 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11499 : 200 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
11500 : 200 : if (res) return res;
11501 : : }
11502 : 0 : break;
11503 : : }
11504 : : default:;
11505 : : }
11506 : : }
11507 : : break;
11508 : 31 : case CFN_BUILT_IN_FFS:
11509 : 31 : if (call_expr_nargs (_p0) == 1)
11510 : : {
11511 : 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11512 : 31 : switch (TREE_CODE (_p1))
11513 : : {
11514 : 11 : case INTEGER_CST:
11515 : 11 : {
11516 : 11 : {
11517 : 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11518 : 11 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
11519 : 11 : if (res) return res;
11520 : : }
11521 : 0 : break;
11522 : : }
11523 : : default:;
11524 : : }
11525 : : }
11526 : : break;
11527 : 0 : case CFN_REDUC_IOR:
11528 : 0 : if (call_expr_nargs (_p0) == 1)
11529 : : {
11530 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11531 : 0 : if (integer_zerop (_p1))
11532 : : {
11533 : 0 : {
11534 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11535 : 0 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
11536 : 0 : if (res) return res;
11537 : : }
11538 : : }
11539 : : }
11540 : : break;
11541 : 0 : case CFN_BUILT_IN_FFSIMAX:
11542 : 0 : if (call_expr_nargs (_p0) == 1)
11543 : : {
11544 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11545 : 0 : switch (TREE_CODE (_p1))
11546 : : {
11547 : 0 : case INTEGER_CST:
11548 : 0 : {
11549 : 0 : {
11550 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11551 : 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
11552 : 0 : if (res) return res;
11553 : : }
11554 : 0 : break;
11555 : : }
11556 : : default:;
11557 : : }
11558 : : }
11559 : : break;
11560 : 11 : case CFN_BUILT_IN_POPCOUNT:
11561 : 11 : if (call_expr_nargs (_p0) == 1)
11562 : : {
11563 : 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11564 : 11 : if (integer_zerop (_p1))
11565 : : {
11566 : 1 : {
11567 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11568 : 1 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
11569 : 1 : if (res) return res;
11570 : : }
11571 : : }
11572 : : }
11573 : : break;
11574 : 87 : case CFN_BUILT_IN_CLZL:
11575 : 87 : if (call_expr_nargs (_p0) == 1)
11576 : : {
11577 : 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11578 : 87 : switch (TREE_CODE (_p1))
11579 : : {
11580 : 79 : case INTEGER_CST:
11581 : 79 : {
11582 : 79 : {
11583 : 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11584 : 79 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
11585 : 79 : if (res) return res;
11586 : : }
11587 : 43 : break;
11588 : : }
11589 : : default:;
11590 : : }
11591 : : }
11592 : : break;
11593 : 85 : case CFN_BUILT_IN_CTZL:
11594 : 85 : if (call_expr_nargs (_p0) == 1)
11595 : : {
11596 : 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11597 : 85 : switch (TREE_CODE (_p1))
11598 : : {
11599 : 77 : case INTEGER_CST:
11600 : 77 : {
11601 : 77 : {
11602 : 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11603 : 77 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
11604 : 77 : if (res) return res;
11605 : : }
11606 : 16 : break;
11607 : : }
11608 : : default:;
11609 : : }
11610 : : }
11611 : : break;
11612 : 8 : case CFN_BUILT_IN_FFSL:
11613 : 8 : if (call_expr_nargs (_p0) == 1)
11614 : : {
11615 : 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11616 : 8 : switch (TREE_CODE (_p1))
11617 : : {
11618 : 0 : case INTEGER_CST:
11619 : 0 : {
11620 : 0 : {
11621 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11622 : 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
11623 : 0 : if (res) return res;
11624 : : }
11625 : 0 : break;
11626 : : }
11627 : : default:;
11628 : : }
11629 : : }
11630 : : break;
11631 : 11 : case CFN_BUILT_IN_POPCOUNTLL:
11632 : 11 : if (call_expr_nargs (_p0) == 1)
11633 : : {
11634 : 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11635 : 11 : if (integer_zerop (_p1))
11636 : : {
11637 : 1 : {
11638 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11639 : 1 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11640 : 1 : if (res) return res;
11641 : : }
11642 : : }
11643 : : }
11644 : : break;
11645 : 0 : case CFN_BUILT_IN_CTZIMAX:
11646 : 0 : if (call_expr_nargs (_p0) == 1)
11647 : : {
11648 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11649 : 0 : switch (TREE_CODE (_p1))
11650 : : {
11651 : 0 : case INTEGER_CST:
11652 : 0 : {
11653 : 0 : {
11654 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11655 : 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
11656 : 0 : if (res) return res;
11657 : : }
11658 : 0 : break;
11659 : : }
11660 : : default:;
11661 : : }
11662 : : }
11663 : : break;
11664 : 0 : case CFN_POPCOUNT:
11665 : 0 : if (call_expr_nargs (_p0) == 1)
11666 : : {
11667 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11668 : 0 : if (integer_zerop (_p1))
11669 : : {
11670 : 0 : {
11671 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11672 : 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
11673 : 0 : if (res) return res;
11674 : : }
11675 : : }
11676 : : }
11677 : : break;
11678 : 0 : case CFN_CLZ:
11679 : 0 : if (call_expr_nargs (_p0) == 1)
11680 : : {
11681 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11682 : 0 : switch (TREE_CODE (_p1))
11683 : : {
11684 : 0 : case INTEGER_CST:
11685 : 0 : {
11686 : 0 : {
11687 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11688 : 0 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
11689 : 0 : if (res) return res;
11690 : : }
11691 : 0 : break;
11692 : : }
11693 : : default:;
11694 : : }
11695 : : }
11696 : 0 : if (call_expr_nargs (_p0) == 2)
11697 : : {
11698 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11699 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11700 : 0 : switch (TREE_CODE (_p1))
11701 : : {
11702 : 0 : case INTEGER_CST:
11703 : 0 : {
11704 : 0 : {
11705 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11706 : 0 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11707 : 0 : if (res) return res;
11708 : : }
11709 : 0 : break;
11710 : : }
11711 : : default:;
11712 : : }
11713 : : }
11714 : : break;
11715 : 0 : case CFN_CTZ:
11716 : 0 : if (call_expr_nargs (_p0) == 1)
11717 : : {
11718 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11719 : 0 : switch (TREE_CODE (_p1))
11720 : : {
11721 : 0 : case INTEGER_CST:
11722 : 0 : {
11723 : 0 : {
11724 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11725 : 0 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
11726 : 0 : if (res) return res;
11727 : : }
11728 : 0 : break;
11729 : : }
11730 : : default:;
11731 : : }
11732 : : }
11733 : 0 : if (call_expr_nargs (_p0) == 2)
11734 : : {
11735 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11736 : 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11737 : 0 : switch (TREE_CODE (_p1))
11738 : : {
11739 : 0 : case INTEGER_CST:
11740 : 0 : {
11741 : 0 : {
11742 : 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11743 : 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
11744 : 0 : if (res) return res;
11745 : : }
11746 : 0 : break;
11747 : : }
11748 : : default:;
11749 : : }
11750 : : }
11751 : : break;
11752 : 0 : case CFN_FFS:
11753 : 0 : if (call_expr_nargs (_p0) == 1)
11754 : : {
11755 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11756 : 0 : switch (TREE_CODE (_p1))
11757 : : {
11758 : 0 : case INTEGER_CST:
11759 : 0 : {
11760 : 0 : {
11761 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11762 : 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
11763 : 0 : if (res) return res;
11764 : : }
11765 : 0 : break;
11766 : : }
11767 : : default:;
11768 : : }
11769 : : }
11770 : : break;
11771 : 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11772 : 0 : if (call_expr_nargs (_p0) == 1)
11773 : : {
11774 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11775 : 0 : if (integer_zerop (_p1))
11776 : : {
11777 : 0 : {
11778 : 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11779 : 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11780 : 0 : if (res) return res;
11781 : : }
11782 : : }
11783 : : }
11784 : : break;
11785 : 0 : case CFN_BUILT_IN_CLZIMAX:
11786 : 0 : if (call_expr_nargs (_p0) == 1)
11787 : : {
11788 : 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11789 : 0 : switch (TREE_CODE (_p1))
11790 : : {
11791 : 0 : case INTEGER_CST:
11792 : 0 : {
11793 : 0 : {
11794 : 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11795 : 0 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
11796 : 0 : if (res) return res;
11797 : : }
11798 : 0 : break;
11799 : : }
11800 : : default:;
11801 : : }
11802 : : }
11803 : : break;
11804 : 12 : case CFN_BUILT_IN_POPCOUNTL:
11805 : 12 : if (call_expr_nargs (_p0) == 1)
11806 : : {
11807 : 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11808 : 12 : if (integer_zerop (_p1))
11809 : : {
11810 : 1 : {
11811 : 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11812 : 1 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
11813 : 1 : if (res) return res;
11814 : : }
11815 : : }
11816 : : }
11817 : : break;
11818 : 52 : case CFN_BUILT_IN_CLZLL:
11819 : 52 : if (call_expr_nargs (_p0) == 1)
11820 : : {
11821 : 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11822 : 52 : switch (TREE_CODE (_p1))
11823 : : {
11824 : 42 : case INTEGER_CST:
11825 : 42 : {
11826 : 42 : {
11827 : 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11828 : 42 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
11829 : 42 : if (res) return res;
11830 : : }
11831 : 18 : break;
11832 : : }
11833 : : default:;
11834 : : }
11835 : : }
11836 : : break;
11837 : 74 : case CFN_BUILT_IN_CTZLL:
11838 : 74 : if (call_expr_nargs (_p0) == 1)
11839 : : {
11840 : 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11841 : 74 : switch (TREE_CODE (_p1))
11842 : : {
11843 : 64 : case INTEGER_CST:
11844 : 64 : {
11845 : 64 : {
11846 : 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11847 : 64 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
11848 : 64 : if (res) return res;
11849 : : }
11850 : 16 : break;
11851 : : }
11852 : : default:;
11853 : : }
11854 : : }
11855 : : break;
11856 : 11 : case CFN_BUILT_IN_FFSLL:
11857 : 11 : if (call_expr_nargs (_p0) == 1)
11858 : : {
11859 : 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11860 : 11 : switch (TREE_CODE (_p1))
11861 : : {
11862 : 1 : case INTEGER_CST:
11863 : 1 : {
11864 : 1 : {
11865 : 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11866 : 1 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
11867 : 1 : if (res) return res;
11868 : : }
11869 : 0 : break;
11870 : : }
11871 : : default:;
11872 : : }
11873 : : }
11874 : : break;
11875 : : default:;
11876 : : }
11877 : : break;
11878 : : default:;
11879 : : }
11880 : : return NULL_TREE;
11881 : : }
11882 : :
11883 : : tree
11884 : 3125911 : generic_simplify_TRUTH_ORIF_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11885 : : {
11886 : 3125911 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11887 : 3125911 : switch (TREE_CODE (_p0))
11888 : : {
11889 : 309328 : case LE_EXPR:
11890 : 309328 : {
11891 : 309328 : tree _q20 = TREE_OPERAND (_p0, 0);
11892 : 309328 : tree _q21 = TREE_OPERAND (_p0, 1);
11893 : 309328 : switch (TREE_CODE (_q20))
11894 : : {
11895 : 91 : case POINTER_PLUS_EXPR:
11896 : 91 : {
11897 : 91 : tree _q30 = TREE_OPERAND (_q20, 0);
11898 : 91 : tree _q31 = TREE_OPERAND (_q20, 1);
11899 : 91 : switch (TREE_CODE (_q31))
11900 : : {
11901 : 3 : case INTEGER_CST:
11902 : 3 : {
11903 : 3 : switch (TREE_CODE (_p1))
11904 : : {
11905 : 2 : case LE_EXPR:
11906 : 2 : {
11907 : 2 : tree _q70 = TREE_OPERAND (_p1, 0);
11908 : 2 : tree _q71 = TREE_OPERAND (_p1, 1);
11909 : 2 : switch (TREE_CODE (_q70))
11910 : : {
11911 : 2 : case POINTER_PLUS_EXPR:
11912 : 2 : {
11913 : 2 : tree _q80 = TREE_OPERAND (_q70, 0);
11914 : 2 : tree _q81 = TREE_OPERAND (_q70, 1);
11915 : 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11916 : : {
11917 : 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11918 : : {
11919 : 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11920 : : {
11921 : 2 : {
11922 : 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11923 : 2 : const enum tree_code cmp = LE_EXPR;
11924 : 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11925 : 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
11926 : 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11927 : : )
11928 : : {
11929 : 1 : {
11930 : 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11931 : 1 : offset_int rhs = off * 2;
11932 : 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11933 : : )
11934 : : {
11935 : 1 : {
11936 : 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11937 : 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11938 : 1 : if (cmp == LT_EXPR
11939 : : )
11940 : : {
11941 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1952;
11942 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1952;
11943 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1952;
11944 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1952;
11945 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1952;
11946 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1952;
11947 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1952;
11948 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1952;
11949 : : {
11950 : : tree res_op0;
11951 : : {
11952 : : tree _o1[1], _r1;
11953 : : {
11954 : : tree _o2[2], _r2;
11955 : : _o2[0] = swap_p ? captures[6] : captures[1];
11956 : : _o2[1] = swap_p ? captures[2] : captures[4];
11957 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11958 : : _o1[0] = _r2;
11959 : : }
11960 : : if (TREE_TYPE (_o1[0]) != sizetype)
11961 : : {
11962 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11963 : : }
11964 : : else
11965 : : _r1 = _o1[0];
11966 : : res_op0 = _r1;
11967 : : }
11968 : : tree res_op1;
11969 : : res_op1 = rhs_tree;
11970 : : tree _r;
11971 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11972 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
11973 : 1 : return _r;
11974 : : }
11975 : : next_after_fail1952:;
11976 : : }
11977 : : else
11978 : : {
11979 : 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1953;
11980 : 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1953;
11981 : 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1953;
11982 : 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1953;
11983 : 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1953;
11984 : 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1953;
11985 : 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1953;
11986 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1953;
11987 : 1 : {
11988 : 1 : tree res_op0;
11989 : 1 : {
11990 : 1 : tree _o1[1], _r1;
11991 : 1 : {
11992 : 1 : tree _o2[2], _r2;
11993 : 1 : {
11994 : 1 : tree _o3[2], _r3;
11995 : 1 : _o3[0] = swap_p ? captures[4] : captures[2];
11996 : 1 : _o3[1] = wide_int_to_tree (sizetype, off);
11997 : 1 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11998 : 1 : _o2[0] = _r3;
11999 : : }
12000 : 1 : _o2[1] = swap_p ? captures[2] : captures[4];
12001 : 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12002 : 1 : _o1[0] = _r2;
12003 : : }
12004 : 1 : if (TREE_TYPE (_o1[0]) != sizetype)
12005 : : {
12006 : 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12007 : : }
12008 : : else
12009 : : _r1 = _o1[0];
12010 : 1 : res_op0 = _r1;
12011 : : }
12012 : 1 : tree res_op1;
12013 : 1 : res_op1 = rhs_tree;
12014 : 1 : tree _r;
12015 : 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12016 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12017 : 1 : return _r;
12018 : : }
12019 : 0 : next_after_fail1953:;
12020 : : }
12021 : : }
12022 : : }
12023 : : }
12024 : : }
12025 : : }
12026 : : }
12027 : : }
12028 : : }
12029 : : break;
12030 : : }
12031 : : default:;
12032 : : }
12033 : : break;
12034 : : }
12035 : 0 : case GE_EXPR:
12036 : 0 : {
12037 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12038 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12039 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
12040 : : {
12041 : 0 : switch (TREE_CODE (_q71))
12042 : : {
12043 : 0 : case POINTER_PLUS_EXPR:
12044 : 0 : {
12045 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12046 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12047 : 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
12048 : : {
12049 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
12050 : : {
12051 : 0 : {
12052 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
12053 : 0 : const enum tree_code cmp = LE_EXPR;
12054 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12055 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12056 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12057 : : )
12058 : : {
12059 : 0 : {
12060 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12061 : 0 : offset_int rhs = off * 2;
12062 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12063 : : )
12064 : : {
12065 : 0 : {
12066 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12067 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12068 : 0 : if (cmp == LT_EXPR
12069 : : )
12070 : : {
12071 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1954;
12072 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1954;
12073 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1954;
12074 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1954;
12075 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1954;
12076 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1954;
12077 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1954;
12078 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1954;
12079 : : {
12080 : : tree res_op0;
12081 : : {
12082 : : tree _o1[1], _r1;
12083 : : {
12084 : : tree _o2[2], _r2;
12085 : : _o2[0] = swap_p ? captures[6] : captures[1];
12086 : : _o2[1] = swap_p ? captures[2] : captures[4];
12087 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12088 : : _o1[0] = _r2;
12089 : : }
12090 : : if (TREE_TYPE (_o1[0]) != sizetype)
12091 : : {
12092 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12093 : : }
12094 : : else
12095 : : _r1 = _o1[0];
12096 : : res_op0 = _r1;
12097 : : }
12098 : : tree res_op1;
12099 : : res_op1 = rhs_tree;
12100 : : tree _r;
12101 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12102 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12103 : 0 : return _r;
12104 : : }
12105 : : next_after_fail1954:;
12106 : : }
12107 : : else
12108 : : {
12109 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1955;
12110 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1955;
12111 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1955;
12112 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1955;
12113 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1955;
12114 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1955;
12115 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1955;
12116 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1955;
12117 : 0 : {
12118 : 0 : tree res_op0;
12119 : 0 : {
12120 : 0 : tree _o1[1], _r1;
12121 : 0 : {
12122 : 0 : tree _o2[2], _r2;
12123 : 0 : {
12124 : 0 : tree _o3[2], _r3;
12125 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12126 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12127 : 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12128 : 0 : _o2[0] = _r3;
12129 : : }
12130 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12131 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12132 : 0 : _o1[0] = _r2;
12133 : : }
12134 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12135 : : {
12136 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12137 : : }
12138 : : else
12139 : : _r1 = _o1[0];
12140 : 0 : res_op0 = _r1;
12141 : : }
12142 : 0 : tree res_op1;
12143 : 0 : res_op1 = rhs_tree;
12144 : 0 : tree _r;
12145 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12146 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12147 : 0 : return _r;
12148 : : }
12149 : 0 : next_after_fail1955:;
12150 : : }
12151 : : }
12152 : : }
12153 : : }
12154 : : }
12155 : : }
12156 : : }
12157 : : }
12158 : : break;
12159 : : }
12160 : : default:;
12161 : : }
12162 : : }
12163 : : break;
12164 : : }
12165 : : default:;
12166 : : }
12167 : : break;
12168 : : }
12169 : : default:;
12170 : : }
12171 : : break;
12172 : : }
12173 : : default:;
12174 : : }
12175 : : break;
12176 : : }
12177 : 751451 : case LT_EXPR:
12178 : 751451 : {
12179 : 751451 : tree _q20 = TREE_OPERAND (_p0, 0);
12180 : 751451 : tree _q21 = TREE_OPERAND (_p0, 1);
12181 : 751451 : switch (TREE_CODE (_q20))
12182 : : {
12183 : 13 : case POINTER_PLUS_EXPR:
12184 : 13 : {
12185 : 13 : tree _q30 = TREE_OPERAND (_q20, 0);
12186 : 13 : tree _q31 = TREE_OPERAND (_q20, 1);
12187 : 13 : switch (TREE_CODE (_q31))
12188 : : {
12189 : 7 : case INTEGER_CST:
12190 : 7 : {
12191 : 7 : switch (TREE_CODE (_p1))
12192 : : {
12193 : 2 : case LT_EXPR:
12194 : 2 : {
12195 : 2 : tree _q70 = TREE_OPERAND (_p1, 0);
12196 : 2 : tree _q71 = TREE_OPERAND (_p1, 1);
12197 : 2 : switch (TREE_CODE (_q70))
12198 : : {
12199 : 2 : case POINTER_PLUS_EXPR:
12200 : 2 : {
12201 : 2 : tree _q80 = TREE_OPERAND (_q70, 0);
12202 : 2 : tree _q81 = TREE_OPERAND (_q70, 1);
12203 : 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
12204 : : {
12205 : 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
12206 : : {
12207 : 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
12208 : : {
12209 : 2 : {
12210 : 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
12211 : 2 : const enum tree_code cmp = LT_EXPR;
12212 : 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12213 : 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
12214 : 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12215 : : )
12216 : : {
12217 : 1 : {
12218 : 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12219 : 1 : offset_int rhs = off * 2;
12220 : 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12221 : : )
12222 : : {
12223 : 1 : {
12224 : 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12225 : 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12226 : 1 : if (cmp == LT_EXPR
12227 : : )
12228 : : {
12229 : 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1956;
12230 : 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1956;
12231 : 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1956;
12232 : 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1956;
12233 : 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1956;
12234 : 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1956;
12235 : 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1956;
12236 : 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1956;
12237 : 1 : {
12238 : 1 : tree res_op0;
12239 : 1 : {
12240 : 1 : tree _o1[1], _r1;
12241 : 1 : {
12242 : 1 : tree _o2[2], _r2;
12243 : 1 : _o2[0] = swap_p ? captures[6] : captures[1];
12244 : 1 : _o2[1] = swap_p ? captures[2] : captures[4];
12245 : 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12246 : 1 : _o1[0] = _r2;
12247 : : }
12248 : 1 : if (TREE_TYPE (_o1[0]) != sizetype)
12249 : : {
12250 : 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12251 : : }
12252 : : else
12253 : : _r1 = _o1[0];
12254 : 1 : res_op0 = _r1;
12255 : : }
12256 : 1 : tree res_op1;
12257 : 1 : res_op1 = rhs_tree;
12258 : 1 : tree _r;
12259 : 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12260 : 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12261 : 1 : return _r;
12262 : : }
12263 : 0 : next_after_fail1956:;
12264 : : }
12265 : : else
12266 : : {
12267 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1957;
12268 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1957;
12269 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1957;
12270 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1957;
12271 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1957;
12272 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1957;
12273 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1957;
12274 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1957;
12275 : : {
12276 : : tree res_op0;
12277 : : {
12278 : : tree _o1[1], _r1;
12279 : : {
12280 : : tree _o2[2], _r2;
12281 : : {
12282 : : tree _o3[2], _r3;
12283 : : _o3[0] = swap_p ? captures[4] : captures[2];
12284 : : _o3[1] = wide_int_to_tree (sizetype, off);
12285 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12286 : : _o2[0] = _r3;
12287 : : }
12288 : : _o2[1] = swap_p ? captures[2] : captures[4];
12289 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12290 : : _o1[0] = _r2;
12291 : : }
12292 : : if (TREE_TYPE (_o1[0]) != sizetype)
12293 : : {
12294 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12295 : : }
12296 : : else
12297 : : _r1 = _o1[0];
12298 : : res_op0 = _r1;
12299 : : }
12300 : : tree res_op1;
12301 : : res_op1 = rhs_tree;
12302 : : tree _r;
12303 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12304 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12305 : : return _r;
12306 : : }
12307 : : next_after_fail1957:;
12308 : : }
12309 : : }
12310 : : }
12311 : : }
12312 : : }
12313 : : }
12314 : : }
12315 : : }
12316 : : }
12317 : : break;
12318 : : }
12319 : : default:;
12320 : : }
12321 : : break;
12322 : : }
12323 : 0 : case GT_EXPR:
12324 : 0 : {
12325 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12326 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12327 : 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
12328 : : {
12329 : 0 : switch (TREE_CODE (_q71))
12330 : : {
12331 : 0 : case POINTER_PLUS_EXPR:
12332 : 0 : {
12333 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12334 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12335 : 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
12336 : : {
12337 : 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
12338 : : {
12339 : 0 : {
12340 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
12341 : 0 : const enum tree_code cmp = LT_EXPR;
12342 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12343 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12344 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12345 : : )
12346 : : {
12347 : 0 : {
12348 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12349 : 0 : offset_int rhs = off * 2;
12350 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12351 : : )
12352 : : {
12353 : 0 : {
12354 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12355 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12356 : 0 : if (cmp == LT_EXPR
12357 : : )
12358 : : {
12359 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1958;
12360 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1958;
12361 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1958;
12362 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1958;
12363 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1958;
12364 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1958;
12365 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1958;
12366 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1958;
12367 : 0 : {
12368 : 0 : tree res_op0;
12369 : 0 : {
12370 : 0 : tree _o1[1], _r1;
12371 : 0 : {
12372 : 0 : tree _o2[2], _r2;
12373 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12374 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12375 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12376 : 0 : _o1[0] = _r2;
12377 : : }
12378 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12379 : : {
12380 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12381 : : }
12382 : : else
12383 : : _r1 = _o1[0];
12384 : 0 : res_op0 = _r1;
12385 : : }
12386 : 0 : tree res_op1;
12387 : 0 : res_op1 = rhs_tree;
12388 : 0 : tree _r;
12389 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12390 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12391 : 0 : return _r;
12392 : : }
12393 : 0 : next_after_fail1958:;
12394 : : }
12395 : : else
12396 : : {
12397 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1959;
12398 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1959;
12399 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1959;
12400 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1959;
12401 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1959;
12402 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1959;
12403 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1959;
12404 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1959;
12405 : : {
12406 : : tree res_op0;
12407 : : {
12408 : : tree _o1[1], _r1;
12409 : : {
12410 : : tree _o2[2], _r2;
12411 : : {
12412 : : tree _o3[2], _r3;
12413 : : _o3[0] = swap_p ? captures[4] : captures[2];
12414 : : _o3[1] = wide_int_to_tree (sizetype, off);
12415 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12416 : : _o2[0] = _r3;
12417 : : }
12418 : : _o2[1] = swap_p ? captures[2] : captures[4];
12419 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12420 : : _o1[0] = _r2;
12421 : : }
12422 : : if (TREE_TYPE (_o1[0]) != sizetype)
12423 : : {
12424 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12425 : : }
12426 : : else
12427 : : _r1 = _o1[0];
12428 : : res_op0 = _r1;
12429 : : }
12430 : : tree res_op1;
12431 : : res_op1 = rhs_tree;
12432 : : tree _r;
12433 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12434 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12435 : : return _r;
12436 : : }
12437 : : next_after_fail1959:;
12438 : : }
12439 : : }
12440 : : }
12441 : : }
12442 : : }
12443 : : }
12444 : : }
12445 : : }
12446 : : break;
12447 : : }
12448 : : default:;
12449 : : }
12450 : : }
12451 : : break;
12452 : : }
12453 : : default:;
12454 : : }
12455 : : break;
12456 : : }
12457 : : default:;
12458 : : }
12459 : : break;
12460 : : }
12461 : : default:;
12462 : : }
12463 : : break;
12464 : : }
12465 : 30365 : case GE_EXPR:
12466 : 30365 : {
12467 : 30365 : tree _q20 = TREE_OPERAND (_p0, 0);
12468 : 30365 : tree _q21 = TREE_OPERAND (_p0, 1);
12469 : 30365 : switch (TREE_CODE (_q21))
12470 : : {
12471 : 0 : case POINTER_PLUS_EXPR:
12472 : 0 : {
12473 : 0 : tree _q40 = TREE_OPERAND (_q21, 0);
12474 : 0 : tree _q41 = TREE_OPERAND (_q21, 1);
12475 : 0 : switch (TREE_CODE (_q41))
12476 : : {
12477 : 0 : case INTEGER_CST:
12478 : 0 : {
12479 : 0 : switch (TREE_CODE (_p1))
12480 : : {
12481 : 0 : case LE_EXPR:
12482 : 0 : {
12483 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12484 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12485 : 0 : switch (TREE_CODE (_q70))
12486 : : {
12487 : 0 : case POINTER_PLUS_EXPR:
12488 : 0 : {
12489 : 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12490 : 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12491 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12492 : : {
12493 : 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12494 : : {
12495 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12496 : : {
12497 : 0 : {
12498 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12499 : 0 : const enum tree_code cmp = LE_EXPR;
12500 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12501 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12502 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12503 : : )
12504 : : {
12505 : 0 : {
12506 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12507 : 0 : offset_int rhs = off * 2;
12508 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12509 : : )
12510 : : {
12511 : 0 : {
12512 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12513 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12514 : 0 : if (cmp == LT_EXPR
12515 : : )
12516 : : {
12517 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1960;
12518 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1960;
12519 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1960;
12520 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1960;
12521 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1960;
12522 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1960;
12523 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1960;
12524 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1960;
12525 : : {
12526 : : tree res_op0;
12527 : : {
12528 : : tree _o1[1], _r1;
12529 : : {
12530 : : tree _o2[2], _r2;
12531 : : _o2[0] = swap_p ? captures[6] : captures[1];
12532 : : _o2[1] = swap_p ? captures[2] : captures[4];
12533 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12534 : : _o1[0] = _r2;
12535 : : }
12536 : : if (TREE_TYPE (_o1[0]) != sizetype)
12537 : : {
12538 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12539 : : }
12540 : : else
12541 : : _r1 = _o1[0];
12542 : : res_op0 = _r1;
12543 : : }
12544 : : tree res_op1;
12545 : : res_op1 = rhs_tree;
12546 : : tree _r;
12547 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12548 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12549 : 0 : return _r;
12550 : : }
12551 : : next_after_fail1960:;
12552 : : }
12553 : : else
12554 : : {
12555 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1961;
12556 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1961;
12557 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1961;
12558 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1961;
12559 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1961;
12560 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1961;
12561 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1961;
12562 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1961;
12563 : 0 : {
12564 : 0 : tree res_op0;
12565 : 0 : {
12566 : 0 : tree _o1[1], _r1;
12567 : 0 : {
12568 : 0 : tree _o2[2], _r2;
12569 : 0 : {
12570 : 0 : tree _o3[2], _r3;
12571 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12572 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12573 : 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12574 : 0 : _o2[0] = _r3;
12575 : : }
12576 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12577 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12578 : 0 : _o1[0] = _r2;
12579 : : }
12580 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12581 : : {
12582 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12583 : : }
12584 : : else
12585 : : _r1 = _o1[0];
12586 : 0 : res_op0 = _r1;
12587 : : }
12588 : 0 : tree res_op1;
12589 : 0 : res_op1 = rhs_tree;
12590 : 0 : tree _r;
12591 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12592 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12593 : 0 : return _r;
12594 : : }
12595 : 0 : next_after_fail1961:;
12596 : : }
12597 : : }
12598 : : }
12599 : : }
12600 : : }
12601 : : }
12602 : : }
12603 : : }
12604 : : }
12605 : : break;
12606 : : }
12607 : : default:;
12608 : : }
12609 : : break;
12610 : : }
12611 : 0 : case GE_EXPR:
12612 : 0 : {
12613 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12614 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12615 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12616 : : {
12617 : 0 : switch (TREE_CODE (_q71))
12618 : : {
12619 : 0 : case POINTER_PLUS_EXPR:
12620 : 0 : {
12621 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12622 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12623 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12624 : : {
12625 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12626 : : {
12627 : 0 : {
12628 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12629 : 0 : const enum tree_code cmp = LE_EXPR;
12630 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12631 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12632 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12633 : : )
12634 : : {
12635 : 0 : {
12636 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12637 : 0 : offset_int rhs = off * 2;
12638 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12639 : : )
12640 : : {
12641 : 0 : {
12642 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12643 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12644 : 0 : if (cmp == LT_EXPR
12645 : : )
12646 : : {
12647 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1962;
12648 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1962;
12649 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1962;
12650 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1962;
12651 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1962;
12652 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1962;
12653 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1962;
12654 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1962;
12655 : : {
12656 : : tree res_op0;
12657 : : {
12658 : : tree _o1[1], _r1;
12659 : : {
12660 : : tree _o2[2], _r2;
12661 : : _o2[0] = swap_p ? captures[6] : captures[1];
12662 : : _o2[1] = swap_p ? captures[2] : captures[4];
12663 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12664 : : _o1[0] = _r2;
12665 : : }
12666 : : if (TREE_TYPE (_o1[0]) != sizetype)
12667 : : {
12668 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12669 : : }
12670 : : else
12671 : : _r1 = _o1[0];
12672 : : res_op0 = _r1;
12673 : : }
12674 : : tree res_op1;
12675 : : res_op1 = rhs_tree;
12676 : : tree _r;
12677 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12678 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12679 : 0 : return _r;
12680 : : }
12681 : : next_after_fail1962:;
12682 : : }
12683 : : else
12684 : : {
12685 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1963;
12686 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1963;
12687 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1963;
12688 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1963;
12689 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1963;
12690 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1963;
12691 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1963;
12692 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1963;
12693 : 0 : {
12694 : 0 : tree res_op0;
12695 : 0 : {
12696 : 0 : tree _o1[1], _r1;
12697 : 0 : {
12698 : 0 : tree _o2[2], _r2;
12699 : 0 : {
12700 : 0 : tree _o3[2], _r3;
12701 : 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12702 : 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12703 : 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12704 : 0 : _o2[0] = _r3;
12705 : : }
12706 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12707 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12708 : 0 : _o1[0] = _r2;
12709 : : }
12710 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12711 : : {
12712 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12713 : : }
12714 : : else
12715 : : _r1 = _o1[0];
12716 : 0 : res_op0 = _r1;
12717 : : }
12718 : 0 : tree res_op1;
12719 : 0 : res_op1 = rhs_tree;
12720 : 0 : tree _r;
12721 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12722 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12723 : 0 : return _r;
12724 : : }
12725 : 0 : next_after_fail1963:;
12726 : : }
12727 : : }
12728 : : }
12729 : : }
12730 : : }
12731 : : }
12732 : : }
12733 : : }
12734 : : break;
12735 : : }
12736 : : default:;
12737 : : }
12738 : : }
12739 : : break;
12740 : : }
12741 : : default:;
12742 : : }
12743 : : break;
12744 : : }
12745 : : default:;
12746 : : }
12747 : : break;
12748 : : }
12749 : : default:;
12750 : : }
12751 : : break;
12752 : : }
12753 : 71498 : case GT_EXPR:
12754 : 71498 : {
12755 : 71498 : tree _q20 = TREE_OPERAND (_p0, 0);
12756 : 71498 : tree _q21 = TREE_OPERAND (_p0, 1);
12757 : 71498 : switch (TREE_CODE (_q21))
12758 : : {
12759 : 0 : case POINTER_PLUS_EXPR:
12760 : 0 : {
12761 : 0 : tree _q40 = TREE_OPERAND (_q21, 0);
12762 : 0 : tree _q41 = TREE_OPERAND (_q21, 1);
12763 : 0 : switch (TREE_CODE (_q41))
12764 : : {
12765 : 0 : case INTEGER_CST:
12766 : 0 : {
12767 : 0 : switch (TREE_CODE (_p1))
12768 : : {
12769 : 0 : case LT_EXPR:
12770 : 0 : {
12771 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12772 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12773 : 0 : switch (TREE_CODE (_q70))
12774 : : {
12775 : 0 : case POINTER_PLUS_EXPR:
12776 : 0 : {
12777 : 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12778 : 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12779 : 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12780 : : {
12781 : 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12782 : : {
12783 : 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12784 : : {
12785 : 0 : {
12786 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12787 : 0 : const enum tree_code cmp = LT_EXPR;
12788 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12789 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12790 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12791 : : )
12792 : : {
12793 : 0 : {
12794 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12795 : 0 : offset_int rhs = off * 2;
12796 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12797 : : )
12798 : : {
12799 : 0 : {
12800 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12801 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12802 : 0 : if (cmp == LT_EXPR
12803 : : )
12804 : : {
12805 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1964;
12806 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1964;
12807 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1964;
12808 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1964;
12809 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1964;
12810 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1964;
12811 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1964;
12812 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1964;
12813 : 0 : {
12814 : 0 : tree res_op0;
12815 : 0 : {
12816 : 0 : tree _o1[1], _r1;
12817 : 0 : {
12818 : 0 : tree _o2[2], _r2;
12819 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12820 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12821 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12822 : 0 : _o1[0] = _r2;
12823 : : }
12824 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12825 : : {
12826 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12827 : : }
12828 : : else
12829 : : _r1 = _o1[0];
12830 : 0 : res_op0 = _r1;
12831 : : }
12832 : 0 : tree res_op1;
12833 : 0 : res_op1 = rhs_tree;
12834 : 0 : tree _r;
12835 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12836 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12837 : 0 : return _r;
12838 : : }
12839 : 0 : next_after_fail1964:;
12840 : : }
12841 : : else
12842 : : {
12843 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1965;
12844 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1965;
12845 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1965;
12846 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1965;
12847 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1965;
12848 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1965;
12849 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1965;
12850 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1965;
12851 : : {
12852 : : tree res_op0;
12853 : : {
12854 : : tree _o1[1], _r1;
12855 : : {
12856 : : tree _o2[2], _r2;
12857 : : {
12858 : : tree _o3[2], _r3;
12859 : : _o3[0] = swap_p ? captures[4] : captures[2];
12860 : : _o3[1] = wide_int_to_tree (sizetype, off);
12861 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12862 : : _o2[0] = _r3;
12863 : : }
12864 : : _o2[1] = swap_p ? captures[2] : captures[4];
12865 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12866 : : _o1[0] = _r2;
12867 : : }
12868 : : if (TREE_TYPE (_o1[0]) != sizetype)
12869 : : {
12870 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12871 : : }
12872 : : else
12873 : : _r1 = _o1[0];
12874 : : res_op0 = _r1;
12875 : : }
12876 : : tree res_op1;
12877 : : res_op1 = rhs_tree;
12878 : : tree _r;
12879 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12880 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12881 : : return _r;
12882 : : }
12883 : : next_after_fail1965:;
12884 : : }
12885 : : }
12886 : : }
12887 : : }
12888 : : }
12889 : : }
12890 : : }
12891 : : }
12892 : : }
12893 : : break;
12894 : : }
12895 : : default:;
12896 : : }
12897 : : break;
12898 : : }
12899 : 0 : case GT_EXPR:
12900 : 0 : {
12901 : 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12902 : 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12903 : 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12904 : : {
12905 : 0 : switch (TREE_CODE (_q71))
12906 : : {
12907 : 0 : case POINTER_PLUS_EXPR:
12908 : 0 : {
12909 : 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12910 : 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12911 : 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12912 : : {
12913 : 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12914 : : {
12915 : 0 : {
12916 : 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12917 : 0 : const enum tree_code cmp = LT_EXPR;
12918 : 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12919 : 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12920 : 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12921 : : )
12922 : : {
12923 : 0 : {
12924 : 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12925 : 0 : offset_int rhs = off * 2;
12926 : 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12927 : : )
12928 : : {
12929 : 0 : {
12930 : 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12931 : 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12932 : 0 : if (cmp == LT_EXPR
12933 : : )
12934 : : {
12935 : 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1966;
12936 : 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1966;
12937 : 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1966;
12938 : 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1966;
12939 : 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1966;
12940 : 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1966;
12941 : 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1966;
12942 : 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1966;
12943 : 0 : {
12944 : 0 : tree res_op0;
12945 : 0 : {
12946 : 0 : tree _o1[1], _r1;
12947 : 0 : {
12948 : 0 : tree _o2[2], _r2;
12949 : 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12950 : 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12951 : 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12952 : 0 : _o1[0] = _r2;
12953 : : }
12954 : 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12955 : : {
12956 : 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12957 : : }
12958 : : else
12959 : : _r1 = _o1[0];
12960 : 0 : res_op0 = _r1;
12961 : : }
12962 : 0 : tree res_op1;
12963 : 0 : res_op1 = rhs_tree;
12964 : 0 : tree _r;
12965 : 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12966 : 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
12967 : 0 : return _r;
12968 : : }
12969 : 0 : next_after_fail1966:;
12970 : : }
12971 : : else
12972 : : {
12973 : : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1967;
12974 : : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1967;
12975 : : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1967;
12976 : : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1967;
12977 : : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1967;
12978 : : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1967;
12979 : : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1967;
12980 : : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1967;
12981 : : {
12982 : : tree res_op0;
12983 : : {
12984 : : tree _o1[1], _r1;
12985 : : {
12986 : : tree _o2[2], _r2;
12987 : : {
12988 : : tree _o3[2], _r3;
12989 : : _o3[0] = swap_p ? captures[4] : captures[2];
12990 : : _o3[1] = wide_int_to_tree (sizetype, off);
12991 : : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12992 : : _o2[0] = _r3;
12993 : : }
12994 : : _o2[1] = swap_p ? captures[2] : captures[4];
12995 : : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12996 : : _o1[0] = _r2;
12997 : : }
12998 : : if (TREE_TYPE (_o1[0]) != sizetype)
12999 : : {
13000 : : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
13001 : : }
13002 : : else
13003 : : _r1 = _o1[0];
13004 : : res_op0 = _r1;
13005 : : }
13006 : : tree res_op1;
13007 : : res_op1 = rhs_tree;
13008 : : tree _r;
13009 : : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
13010 : : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
13011 : : return _r;
13012 : : }
13013 : : next_after_fail1967:;
13014 : : }
13015 : : }
13016 : : }
13017 : : }
13018 : : }
13019 : : }
13020 : : }
13021 : : }
13022 : : break;
13023 : : }
13024 : : default:;
13025 : : }
13026 : : }
13027 : : break;
13028 : : }
13029 : : default:;
13030 : : }
13031 : : break;
13032 : : }
13033 : : default:;
13034 : : }
13035 : : break;
13036 : : }
13037 : : default:;
13038 : : }
13039 : : break;
13040 : : }
13041 : : default:;
13042 : : }
13043 : : return NULL_TREE;
13044 : : }
13045 : : #pragma GCC diagnostic pop
|