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 163653150 : tree_maybe_bit_not (tree t, tree *res_ops)
11 : {
12 163653150 : const tree type = TREE_TYPE (t);
13 163653150 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 163653150 : if (TREE_SIDE_EFFECTS (t)) return false;
15 156211964 : switch (TREE_CODE (t))
16 : {
17 49455060 : case INTEGER_CST:
18 49455060 : {
19 49455060 : {
20 49455060 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 49455060 : {
22 49455060 : res_ops[0] = captures[0];
23 49455060 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 8, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 106756904 : break;
28 : }
29 106756904 : default:;
30 : }
31 106756904 : {
32 106756904 : tree t_pops[1];
33 106756904 : if (tree_bit_not_with_nop (t, t_pops))
34 : {
35 145724 : tree _p0 = t_pops[0];
36 145724 : {
37 145724 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
38 145724 : {
39 145724 : res_ops[0] = captures[0];
40 145724 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 9, __FILE__, __LINE__, false);
41 145724 : return true;
42 : }
43 : }
44 : }
45 : }
46 106611180 : {
47 106611180 : tree t_pops[1];
48 106611180 : if (tree_maybe_cmp (t, t_pops))
49 : {
50 536378 : tree _p0 = t_pops[0];
51 536378 : {
52 536378 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
53 536378 : {
54 536378 : res_ops[0] = captures[0];
55 536378 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 10, __FILE__, __LINE__, false);
56 536378 : return true;
57 : }
58 : }
59 : }
60 : }
61 106074802 : {
62 106074802 : tree t_pops[2];
63 106074802 : if (tree_bit_xor_cst (t, t_pops))
64 : {
65 1601 : tree _p0 = t_pops[0];
66 1601 : tree _p1 = t_pops[1];
67 1601 : {
68 1601 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
69 1601 : {
70 1601 : res_ops[0] = captures[0];
71 1601 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 11, __FILE__, __LINE__, false);
72 1601 : return true;
73 : }
74 : }
75 : }
76 : }
77 106073201 : return false;
78 : }
79 :
80 : bool
81 2405 : tree_min_value (tree t)
82 : {
83 2405 : const tree type = TREE_TYPE (t);
84 2405 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
85 2405 : if (TREE_SIDE_EFFECTS (t)) return false;
86 2397 : if (uniform_integer_cst_p (t))
87 : {
88 2125 : {
89 2125 : {
90 2125 : tree int_cst = uniform_integer_cst_p (t);
91 2125 : tree inner_type = TREE_TYPE (int_cst);
92 4250 : if ((INTEGRAL_TYPE_P (inner_type)
93 17 : || POINTER_TYPE_P (inner_type))
94 4267 : && wi::eq_p (wi::to_wide (int_cst), wi::min_value (inner_type))
95 : )
96 : {
97 138 : {
98 138 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 41, __FILE__, __LINE__, false);
99 138 : return true;
100 : }
101 : }
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_1 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 3 : if (!flag_trapping_math
115 : )
116 : {
117 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail72;
118 2 : {
119 2 : tree res_op0;
120 2 : res_op0 = captures[0];
121 2 : tree _r;
122 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
123 2 : if (TREE_SIDE_EFFECTS (captures[1]))
124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
125 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 49, __FILE__, __LINE__, true);
126 2 : return _r;
127 : }
128 0 : next_after_fail72:;
129 : }
130 : return NULL_TREE;
131 : }
132 :
133 : tree
134 29 : generic_simplify_8 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
136 : const enum tree_code ARG_UNUSED (bit_op))
137 : {
138 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
139 29 : if (bit_op == BIT_AND_EXPR
140 : )
141 : {
142 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail79;
143 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail79;
144 9 : {
145 9 : tree _r;
146 9 : _r = build_zero_cst (type);
147 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 56, __FILE__, __LINE__, true);
148 9 : return _r;
149 : }
150 : next_after_fail79:;
151 : }
152 : else
153 : {
154 20 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail80;
155 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail80;
156 20 : {
157 20 : tree _r;
158 20 : _r = build_minus_one_cst (type);
159 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 57, __FILE__, __LINE__, true);
160 20 : return _r;
161 : }
162 : next_after_fail80:;
163 : }
164 : return NULL_TREE;
165 : }
166 :
167 : tree
168 1 : generic_simplify_17 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
169 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
170 : {
171 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
172 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail92;
173 1 : {
174 1 : tree res_op0;
175 1 : res_op0 = captures[1];
176 1 : tree res_op1;
177 1 : {
178 1 : tree _o1[1], _r1;
179 1 : _o1[0] = captures[2];
180 1 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
181 1 : res_op1 = _r1;
182 : }
183 1 : tree _r;
184 1 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
185 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 65, __FILE__, __LINE__, true);
186 : return _r;
187 : }
188 0 : next_after_fail92:;
189 0 : return NULL_TREE;
190 : }
191 :
192 : tree
193 112 : generic_simplify_28 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
194 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
195 : const enum tree_code ARG_UNUSED (opo),
196 : const enum tree_code ARG_UNUSED (opi))
197 : {
198 112 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
199 112 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail103;
200 112 : {
201 112 : tree res_op0;
202 112 : {
203 112 : tree _o1[1], _r1;
204 112 : _o1[0] = captures[1];
205 112 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
206 112 : res_op0 = _r1;
207 : }
208 112 : tree res_op1;
209 112 : res_op1 = captures[2];
210 112 : tree _r;
211 112 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
212 112 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
213 : return _r;
214 : }
215 0 : next_after_fail103:;
216 0 : return NULL_TREE;
217 : }
218 :
219 : tree
220 599 : generic_simplify_33 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
221 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
222 : const enum tree_code ARG_UNUSED (bitop))
223 : {
224 599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
225 599 : if (!CONSTANT_CLASS_P (captures[0])
226 : )
227 : {
228 599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail108;
229 599 : {
230 599 : tree res_op0;
231 599 : res_op0 = captures[0];
232 599 : tree res_op1;
233 599 : {
234 599 : tree _o1[2], _r1;
235 599 : _o1[0] = captures[1];
236 599 : _o1[1] = captures[2];
237 599 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
238 599 : if (EXPR_P (_r1))
239 0 : goto next_after_fail108;
240 599 : res_op1 = _r1;
241 : }
242 599 : tree _r;
243 599 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
244 599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 80, __FILE__, __LINE__, true);
245 599 : return _r;
246 : }
247 : next_after_fail108:;
248 : }
249 : else
250 : {
251 0 : {
252 0 : tree cst1 = const_binop (bitop, type, captures[0], captures[2]);
253 0 : if (cst1
254 : )
255 : {
256 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail109;
257 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail109;
258 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail109;
259 0 : {
260 0 : tree res_op0;
261 0 : res_op0 = captures[1];
262 0 : tree res_op1;
263 0 : res_op1 = cst1;
264 0 : tree _r;
265 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
266 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 81, __FILE__, __LINE__, true);
267 0 : return _r;
268 : }
269 : next_after_fail109:;
270 : }
271 : else
272 : {
273 0 : {
274 0 : tree cst2 = const_binop (bitop, type, captures[1], captures[2]);
275 0 : if (cst2
276 : )
277 : {
278 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail110;
279 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail110;
280 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail110;
281 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail110;
282 0 : {
283 0 : tree res_op0;
284 0 : res_op0 = captures[0];
285 0 : tree res_op1;
286 0 : res_op1 = cst2;
287 0 : tree _r;
288 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
289 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 82, __FILE__, __LINE__, true);
290 0 : return _r;
291 : }
292 : next_after_fail110:;
293 : }
294 : }
295 : }
296 : }
297 : }
298 : return NULL_TREE;
299 : }
300 :
301 : tree
302 64 : generic_simplify_48 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
303 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
304 : const enum tree_code ARG_UNUSED (cmp),
305 : const enum tree_code ARG_UNUSED (icmp),
306 : const enum tree_code ARG_UNUSED (ncmp))
307 : {
308 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
309 64 : {
310 64 : enum tree_code ic = invert_tree_comparison
311 64 : (cmp, HONOR_NANS (captures[0]));
312 64 : if (ic == icmp
313 : )
314 : {
315 64 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail126;
316 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail126;
317 64 : {
318 64 : tree res_op0;
319 64 : res_op0 = captures[0];
320 64 : tree res_op1;
321 64 : res_op1 = captures[1];
322 64 : tree _r;
323 64 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
324 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 94, __FILE__, __LINE__, true);
325 64 : return _r;
326 : }
327 : next_after_fail126:;
328 : }
329 : else
330 : {
331 0 : if (ic == ncmp
332 : )
333 : {
334 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail127;
335 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail127;
336 0 : {
337 0 : tree res_op0;
338 0 : res_op0 = captures[0];
339 0 : tree res_op1;
340 0 : res_op1 = captures[1];
341 0 : tree _r;
342 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
343 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 95, __FILE__, __LINE__, true);
344 0 : return _r;
345 : }
346 : next_after_fail127:;
347 : }
348 : }
349 : }
350 : return NULL_TREE;
351 : }
352 :
353 : tree
354 241425 : generic_simplify_62 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
355 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
356 : const enum tree_code ARG_UNUSED (outer_op))
357 : {
358 241425 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
359 241425 : if (!TYPE_SATURATING (type)
360 : )
361 : {
362 241425 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
363 482843 : && !FIXED_POINT_TYPE_P (type)
364 : )
365 : {
366 241418 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
367 : )
368 : {
369 228098 : if (!CONSTANT_CLASS_P (captures[1])
370 : )
371 : {
372 228098 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail149;
373 228098 : {
374 228098 : tree res_op0;
375 228098 : {
376 228098 : tree _o1[2], _r1;
377 228098 : {
378 228098 : tree _o2[1], _r2;
379 228098 : _o2[0] = captures[0];
380 228098 : if (TREE_TYPE (_o2[0]) != type)
381 : {
382 3551 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
383 : }
384 : else
385 : _r2 = _o2[0];
386 228098 : _o1[0] = _r2;
387 : }
388 228098 : _o1[1] = captures[2];
389 228098 : _r1 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
390 228098 : if (EXPR_P (_r1))
391 0 : goto next_after_fail149;
392 228098 : res_op0 = _r1;
393 : }
394 228098 : tree res_op1;
395 228098 : {
396 228098 : tree _o1[1], _r1;
397 228098 : _o1[0] = captures[1];
398 228098 : if (TREE_TYPE (_o1[0]) != type)
399 : {
400 3574 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
401 : }
402 : else
403 : _r1 = _o1[0];
404 228098 : res_op1 = _r1;
405 : }
406 228098 : tree _r;
407 228098 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
408 228098 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 117, __FILE__, __LINE__, true);
409 228098 : return _r;
410 : }
411 : next_after_fail149:;
412 : }
413 : }
414 : else
415 : {
416 26640 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
417 26640 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
418 : )
419 : {
420 2321 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail150;
421 2321 : {
422 2321 : tree res_op0;
423 2321 : {
424 2321 : tree _o1[2], _r1;
425 2321 : {
426 2321 : tree _o2[2], _r2;
427 2321 : _o2[0] = captures[0];
428 2321 : {
429 2321 : tree _o3[1], _r3;
430 2321 : _o3[0] = captures[2];
431 2321 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
432 : {
433 2321 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
434 : }
435 : else
436 : _r3 = _o3[0];
437 2321 : _o2[1] = _r3;
438 : }
439 2321 : _r2 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
440 2321 : if (EXPR_P (_r2))
441 0 : goto next_after_fail150;
442 2321 : _o1[0] = _r2;
443 : }
444 2321 : _o1[1] = captures[1];
445 2321 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
446 2321 : res_op0 = _r1;
447 : }
448 2321 : tree _r;
449 2321 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
450 2321 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 118, __FILE__, __LINE__, true);
451 2321 : return _r;
452 : }
453 : next_after_fail150:;
454 : }
455 : else
456 : {
457 10999 : if (types_match (type, captures[1]) && !TYPE_OVERFLOW_SANITIZED (type)
458 : )
459 : {
460 10971 : {
461 10971 : tree cst = const_binop (outer_op, type, captures[0], captures[2]);
462 10971 : if (cst && !TREE_OVERFLOW (cst)
463 : )
464 : {
465 10964 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail151;
466 10964 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail151;
467 10964 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail151;
468 10964 : {
469 10964 : tree res_op0;
470 10964 : res_op0 = cst;
471 10964 : tree res_op1;
472 10964 : res_op1 = captures[1];
473 10964 : tree _r;
474 10964 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
475 10964 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 119, __FILE__, __LINE__, true);
476 10964 : return _r;
477 : }
478 : next_after_fail151:;
479 : }
480 : }
481 : }
482 : }
483 : }
484 : }
485 : }
486 : return NULL_TREE;
487 : }
488 :
489 : tree
490 1 : generic_simplify_85 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
491 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
492 : {
493 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
494 1 : if (INTEGRAL_TYPE_P (type)
495 : )
496 : {
497 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail176;
498 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail176;
499 1 : {
500 1 : tree res_op0;
501 1 : res_op0 = unshare_expr (captures[1]);
502 1 : tree res_op1;
503 1 : {
504 1 : tree _o1[2], _r1;
505 1 : _o1[0] = captures[4];
506 1 : _o1[1] = captures[1];
507 1 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
508 1 : res_op1 = _r1;
509 : }
510 1 : tree _r;
511 1 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
512 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
513 1 : return _r;
514 : }
515 : next_after_fail176:;
516 : }
517 : return NULL_TREE;
518 : }
519 :
520 : tree
521 2654 : generic_simplify_93 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
522 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
523 : {
524 2654 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
525 2654 : if (!TYPE_SATURATING (type)
526 : )
527 : {
528 2654 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
529 2654 : && !TYPE_OVERFLOW_SANITIZED (type)
530 : )
531 : {
532 13 : {
533 13 : tree t1 = type;
534 13 : if (INTEGRAL_TYPE_P (type)
535 21 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
536 8 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
537 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail184;
538 13 : {
539 13 : tree res_op0;
540 13 : {
541 13 : tree _o1[2], _r1;
542 13 : {
543 13 : tree _o2[1], _r2;
544 13 : _o2[0] = captures[0];
545 13 : if (TREE_TYPE (_o2[0]) != t1)
546 : {
547 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
548 : }
549 : else
550 : _r2 = _o2[0];
551 13 : _o1[0] = _r2;
552 : }
553 13 : {
554 13 : tree _o2[1], _r2;
555 13 : _o2[0] = captures[1];
556 13 : if (TREE_TYPE (_o2[0]) != t1)
557 : {
558 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
559 : }
560 : else
561 : _r2 = _o2[0];
562 13 : _o1[1] = _r2;
563 : }
564 13 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
565 13 : res_op0 = _r1;
566 : }
567 13 : tree _r;
568 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
569 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 151, __FILE__, __LINE__, true);
570 13 : return _r;
571 : }
572 0 : next_after_fail184:;
573 : }
574 : }
575 : }
576 : return NULL_TREE;
577 : }
578 :
579 : tree
580 9 : generic_simplify_104 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
581 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
582 : {
583 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
584 9 : if (INTEGRAL_TYPE_P (type)
585 9 : && (
586 :
587 9 : || !TREE_SIDE_EFFECTS (captures[1]))
588 : )
589 : {
590 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail201;
591 2 : {
592 2 : tree res_op0;
593 2 : {
594 2 : tree _o1[1], _r1;
595 2 : _o1[0] = captures[2];
596 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
597 : {
598 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
599 : }
600 : else
601 : _r1 = _o1[0];
602 2 : res_op0 = _r1;
603 : }
604 2 : tree res_op1;
605 2 : res_op1 = captures[1];
606 2 : tree res_op2;
607 2 : res_op2 = captures[0];
608 2 : tree _r;
609 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
610 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 168, __FILE__, __LINE__, true);
611 2 : return _r;
612 : }
613 0 : next_after_fail201:;
614 : }
615 : return NULL_TREE;
616 : }
617 :
618 : tree
619 0 : generic_simplify_110 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
620 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
621 : const enum tree_code ARG_UNUSED (bitop),
622 : const enum tree_code ARG_UNUSED (cmp))
623 : {
624 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
625 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
626 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
627 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
628 : )
629 : {
630 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail207;
631 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail207;
632 0 : {
633 0 : tree res_op0;
634 0 : {
635 0 : tree _o1[2], _r1;
636 0 : _o1[0] = captures[0];
637 0 : {
638 0 : tree _o2[1], _r2;
639 0 : _o2[0] = captures[2];
640 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
641 : {
642 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
643 : }
644 : else
645 : _r2 = _o2[0];
646 0 : _o1[1] = _r2;
647 : }
648 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
649 0 : res_op0 = _r1;
650 : }
651 0 : tree res_op1;
652 0 : res_op1 = captures[1];
653 0 : tree _r;
654 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
655 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 174, __FILE__, __LINE__, true);
656 0 : return _r;
657 : }
658 : next_after_fail207:;
659 : }
660 : return NULL_TREE;
661 : }
662 :
663 : tree
664 8 : generic_simplify_121 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
665 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
666 : {
667 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
668 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
669 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
670 : )
671 : {
672 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail218;
673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail218;
674 0 : {
675 0 : tree _r;
676 0 : _r = captures[2];
677 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 183, __FILE__, __LINE__, true);
678 0 : return _r;
679 : }
680 : next_after_fail218:;
681 : }
682 : return NULL_TREE;
683 : }
684 :
685 : tree
686 1 : generic_simplify_130 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
687 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
688 : {
689 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
690 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail227;
691 1 : {
692 1 : tree res_op0;
693 1 : {
694 1 : tree _o1[2], _r1;
695 1 : _o1[0] = captures[1];
696 1 : _o1[1] = captures[2];
697 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
698 1 : res_op0 = _r1;
699 : }
700 1 : tree _r;
701 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
702 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 189, __FILE__, __LINE__, true);
703 : return _r;
704 : }
705 0 : next_after_fail227:;
706 0 : return NULL_TREE;
707 : }
708 :
709 : tree
710 2 : generic_simplify_141 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
711 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
712 : const enum tree_code ARG_UNUSED (bitop),
713 : const enum tree_code ARG_UNUSED (rbitop))
714 : {
715 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
716 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail242;
717 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail242;
718 2 : {
719 2 : tree _r;
720 2 : _r = captures[2];
721 2 : if (TREE_SIDE_EFFECTS (captures[1]))
722 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
723 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
724 : return _r;
725 : }
726 : next_after_fail242:;
727 : return NULL_TREE;
728 : }
729 :
730 : tree
731 0 : generic_simplify_146 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
732 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
733 : const enum tree_code ARG_UNUSED (bitop),
734 : const enum tree_code ARG_UNUSED (rbitop))
735 : {
736 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
737 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail247;
738 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail247;
739 0 : {
740 0 : tree res_op0;
741 0 : res_op0 = captures[0];
742 0 : tree res_op1;
743 0 : res_op1 = captures[2];
744 0 : tree _r;
745 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
746 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 197, __FILE__, __LINE__, true);
747 : return _r;
748 : }
749 : next_after_fail247:;
750 : return NULL_TREE;
751 : }
752 :
753 : tree
754 4 : generic_simplify_153 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
755 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
756 : {
757 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
758 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail258;
759 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail258;
760 4 : {
761 4 : tree _r;
762 4 : _r = captures[2];
763 4 : if (TREE_SIDE_EFFECTS (captures[1]))
764 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
765 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 207, __FILE__, __LINE__, true);
766 : return _r;
767 : }
768 : next_after_fail258:;
769 : return NULL_TREE;
770 : }
771 :
772 : tree
773 3 : generic_simplify_156 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
774 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
775 : const enum tree_code ARG_UNUSED (code2),
776 : const enum tree_code ARG_UNUSED (code1))
777 : {
778 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
779 3 : if ((TREE_CODE (captures[2]) == INTEGER_CST
780 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
781 3 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
782 3 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
783 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
784 3 : && bitwise_equal_p (captures[2], captures[5]))
785 : )
786 : {
787 3 : {
788 3 : bool one_before = false;
789 3 : bool one_after = false;
790 3 : int cmp = 0;
791 3 : bool allbits = true;
792 3 : if (TREE_CODE (captures[2]) == INTEGER_CST
793 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
794 : {
795 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
796 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
797 0 : auto t2 = wi::to_wide (captures[5]);
798 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
799 0 : if (cmp < 0
800 0 : && t1 == t2 - 1)
801 : one_before = true;
802 0 : if (cmp > 0
803 0 : && t1 == t2 + 1)
804 : one_after = true;
805 : }
806 3 : bool val;
807 3 : switch (code2)
808 : {
809 0 : case EQ_EXPR: val = (cmp == 0); break;
810 0 : case NE_EXPR: val = (cmp != 0); break;
811 0 : case LT_EXPR: val = (cmp < 0); break;
812 3 : case GT_EXPR: val = (cmp > 0); break;
813 0 : case LE_EXPR: val = (cmp <= 0); break;
814 0 : case GE_EXPR: val = (cmp >= 0); break;
815 0 : default: gcc_unreachable ();
816 : }
817 3 : if (code1 == EQ_EXPR && val
818 : )
819 : {
820 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail261;
821 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail261;
822 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail261;
823 0 : {
824 0 : tree _r;
825 0 : _r = captures[3];
826 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 210, __FILE__, __LINE__, true);
827 0 : return _r;
828 : }
829 : next_after_fail261:;
830 : }
831 : else
832 : {
833 3 : if (code1 == NE_EXPR && val && allbits
834 : )
835 : {
836 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail262;
837 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail262;
838 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail262;
839 0 : {
840 0 : tree _r;
841 0 : _r = constant_boolean_node (true, type);
842 0 : if (TREE_SIDE_EFFECTS (captures[1]))
843 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
844 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
845 0 : return _r;
846 : }
847 : next_after_fail262:;
848 : }
849 : else
850 : {
851 3 : if (code1 == NE_EXPR && !val && allbits
852 : )
853 : {
854 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail263;
855 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail263;
856 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail263;
857 0 : {
858 0 : tree _r;
859 0 : _r = captures[0];
860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
861 0 : return _r;
862 : }
863 : next_after_fail263:;
864 : }
865 : else
866 : {
867 3 : if (code1 == EQ_EXPR
868 3 : && code2 == GT_EXPR
869 3 : && cmp == 0
870 3 : && allbits
871 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
872 3 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
873 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
874 : )
875 : {
876 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail264;
877 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail264;
878 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail264;
879 3 : {
880 3 : tree res_op0;
881 3 : res_op0 = captures[4];
882 3 : tree res_op1;
883 3 : res_op1 = captures[5];
884 3 : tree _r;
885 3 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
886 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
887 3 : return _r;
888 : }
889 : next_after_fail264:;
890 : }
891 : else
892 : {
893 0 : if (code1 == EQ_EXPR
894 0 : && code2 == LT_EXPR
895 0 : && cmp == 0
896 0 : && allbits
897 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
898 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
899 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
900 : )
901 : {
902 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail265;
903 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail265;
904 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail265;
905 0 : {
906 0 : tree res_op0;
907 0 : res_op0 = captures[4];
908 0 : tree res_op1;
909 0 : res_op1 = captures[5];
910 0 : tree _r;
911 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
912 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
913 0 : return _r;
914 : }
915 : next_after_fail265:;
916 : }
917 : else
918 : {
919 0 : if (code1 == EQ_EXPR
920 0 : && code2 == GE_EXPR
921 : && one_before
922 0 : && allbits
923 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
924 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
925 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
926 : )
927 : {
928 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail266;
929 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail266;
930 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail266;
931 0 : {
932 0 : tree res_op0;
933 0 : res_op0 = captures[4];
934 0 : tree res_op1;
935 0 : {
936 0 : tree _o1[1], _r1;
937 0 : _o1[0] = captures[2];
938 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
939 : {
940 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
941 : }
942 : else
943 : _r1 = _o1[0];
944 0 : res_op1 = _r1;
945 : }
946 0 : tree _r;
947 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
949 0 : return _r;
950 : }
951 : next_after_fail266:;
952 : }
953 : else
954 : {
955 0 : if (code1 == EQ_EXPR
956 0 : && code2 == LE_EXPR
957 : && one_after
958 0 : && allbits
959 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
960 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
961 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
962 : )
963 : {
964 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail267;
965 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail267;
966 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail267;
967 0 : {
968 0 : tree res_op0;
969 0 : res_op0 = captures[4];
970 0 : tree res_op1;
971 0 : {
972 0 : tree _o1[1], _r1;
973 0 : _o1[0] = captures[2];
974 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
975 : {
976 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
977 : }
978 : else
979 : _r1 = _o1[0];
980 0 : res_op1 = _r1;
981 : }
982 0 : tree _r;
983 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
984 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
985 0 : return _r;
986 : }
987 : next_after_fail267:;
988 : }
989 : }
990 : }
991 : }
992 : }
993 : }
994 : }
995 : }
996 : }
997 : return NULL_TREE;
998 : }
999 :
1000 : tree
1001 12 : generic_simplify_199 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1002 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1003 : const combined_fn ARG_UNUSED (TAN),
1004 : const combined_fn ARG_UNUSED (COS),
1005 : const combined_fn ARG_UNUSED (SIN))
1006 : {
1007 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1008 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1009 : )
1010 : {
1011 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail339;
1012 12 : {
1013 12 : tree res_op0;
1014 12 : res_op0 = captures[1];
1015 12 : tree _r;
1016 12 : _r = maybe_build_call_expr_loc (loc, SIN, type, 1, res_op0);
1017 12 : if (!_r)
1018 0 : goto next_after_fail339;
1019 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 254, __FILE__, __LINE__, true);
1020 12 : return _r;
1021 : }
1022 : next_after_fail339:;
1023 : }
1024 : return NULL_TREE;
1025 : }
1026 :
1027 : tree
1028 64 : generic_simplify_204 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1029 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1030 : const enum tree_code ARG_UNUSED (cmp))
1031 : {
1032 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1033 120 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1034 120 : && tree_expr_nonzero_p (captures[0])
1035 : )
1036 : {
1037 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail344;
1038 12 : {
1039 12 : tree _r;
1040 12 : _r = constant_boolean_node (cmp != EQ_EXPR, type);
1041 12 : if (TREE_SIDE_EFFECTS (captures[0]))
1042 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1043 12 : if (TREE_SIDE_EFFECTS (captures[1]))
1044 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1045 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 259, __FILE__, __LINE__, true);
1046 12 : return _r;
1047 : }
1048 0 : next_after_fail344:;
1049 : }
1050 : return NULL_TREE;
1051 : }
1052 :
1053 : tree
1054 9128 : generic_simplify_212 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1055 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1056 : const enum tree_code ARG_UNUSED (neeq),
1057 : const enum tree_code ARG_UNUSED (ltge))
1058 : {
1059 9128 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1060 9128 : {
1061 9128 : tree itype = signed_type_for (TREE_TYPE (captures[1]));
1062 18043 : if (wi::to_wide (captures[2]) == element_precision (itype) - 1
1063 9128 : && (!VECTOR_TYPE_P (itype)
1064 13 : || (cfun
1065 13 : && cfun->after_inlining
1066 5 : && VECTOR_BOOLEAN_TYPE_P (type)
1067 2 : && (expand_vec_cmp_expr_p (itype, type, ltge)
1068 2 : || !expand_vec_cmp_expr_p (TREE_TYPE (captures[0]),
1069 : type, neeq))))
1070 : )
1071 : {
1072 213 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail355;
1073 213 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail355;
1074 213 : {
1075 213 : tree res_op0;
1076 213 : {
1077 213 : tree _o1[1], _r1;
1078 213 : _o1[0] = captures[1];
1079 213 : if (TREE_TYPE (_o1[0]) != itype)
1080 : {
1081 161 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1082 : }
1083 : else
1084 : _r1 = _o1[0];
1085 213 : res_op0 = _r1;
1086 : }
1087 213 : tree res_op1;
1088 213 : res_op1 = build_zero_cst (itype);
1089 213 : tree _r;
1090 213 : _r = fold_build2_loc (loc, ltge, type, res_op0, res_op1);
1091 213 : if (TREE_SIDE_EFFECTS (captures[2]))
1092 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1093 213 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 269, __FILE__, __LINE__, true);
1094 213 : return _r;
1095 : }
1096 : next_after_fail355:;
1097 : }
1098 : }
1099 : return NULL_TREE;
1100 : }
1101 :
1102 : tree
1103 1366 : generic_simplify_224 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1104 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1105 : const enum tree_code ARG_UNUSED (cmp),
1106 : const enum tree_code ARG_UNUSED (ocmp))
1107 : {
1108 1366 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1109 1366 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1110 374 : && TREE_CODE (TREE_TYPE (captures[0])) != COMPLEX_TYPE
1111 1718 : && (VECTOR_TYPE_P (type) || !VECTOR_TYPE_P (TREE_TYPE (captures[0])))
1112 : )
1113 : {
1114 352 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail380;
1115 352 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail380;
1116 352 : {
1117 352 : tree res_op0;
1118 352 : res_op0 = captures[0];
1119 352 : tree res_op1;
1120 352 : res_op1 = captures[1];
1121 352 : tree _r;
1122 352 : _r = fold_build2_loc (loc, ocmp, type, res_op0, res_op1);
1123 352 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 293, __FILE__, __LINE__, true);
1124 352 : return _r;
1125 : }
1126 : next_after_fail380:;
1127 : }
1128 : return NULL_TREE;
1129 : }
1130 :
1131 : tree
1132 6 : generic_simplify_232 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1133 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1134 : const enum tree_code ARG_UNUSED (cmp),
1135 : const enum tree_code ARG_UNUSED (icmp))
1136 : {
1137 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1138 6 : {
1139 6 : int c1 = wi::clz (wi::to_wide (captures[0]));
1140 6 : int c2 = wi::clz (wi::to_wide (captures[2]));
1141 6 : if (c1 < c2
1142 : )
1143 : {
1144 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail390;
1145 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail390;
1146 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail390;
1147 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail390;
1148 0 : {
1149 0 : tree _r;
1150 0 : _r = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
1151 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1152 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1153 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 303, __FILE__, __LINE__, true);
1154 0 : return _r;
1155 : }
1156 : next_after_fail390:;
1157 : }
1158 : else
1159 : {
1160 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail391;
1161 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail391;
1162 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail391;
1163 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail391;
1164 6 : {
1165 6 : tree res_op0;
1166 6 : res_op0 = captures[1];
1167 6 : tree res_op1;
1168 6 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c1 - c2);
1169 6 : tree _r;
1170 6 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1171 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 304, __FILE__, __LINE__, true);
1172 6 : return _r;
1173 : }
1174 : next_after_fail391:;
1175 : }
1176 : }
1177 : return NULL_TREE;
1178 : }
1179 :
1180 : tree
1181 14 : generic_simplify_242 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1182 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1183 : const enum tree_code ARG_UNUSED (cmp),
1184 : const combined_fn ARG_UNUSED (bswap))
1185 : {
1186 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1187 14 : {
1188 14 : tree ctype = TREE_TYPE (captures[0]);
1189 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail410;
1190 14 : {
1191 14 : tree res_op0;
1192 14 : {
1193 14 : tree _o1[1], _r1;
1194 14 : _o1[0] = captures[1];
1195 14 : if (TREE_TYPE (_o1[0]) != ctype)
1196 : {
1197 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1198 : }
1199 : else
1200 : _r1 = _o1[0];
1201 14 : res_op0 = _r1;
1202 : }
1203 14 : tree res_op1;
1204 14 : {
1205 14 : tree _o1[1], _r1;
1206 14 : _o1[0] = captures[2];
1207 14 : if (TREE_TYPE (_o1[0]) != ctype)
1208 : {
1209 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1210 : }
1211 : else
1212 : _r1 = _o1[0];
1213 14 : res_op1 = _r1;
1214 : }
1215 14 : tree _r;
1216 14 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1217 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 323, __FILE__, __LINE__, true);
1218 : return _r;
1219 : }
1220 0 : next_after_fail410:;
1221 : }
1222 0 : return NULL_TREE;
1223 : }
1224 :
1225 : tree
1226 133401 : generic_simplify_250 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1227 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1228 : const enum tree_code ARG_UNUSED (cmp))
1229 : {
1230 133401 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1231 261992 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1232 133667 : || ! tree_expr_maybe_nan_p (captures[0])
1233 : )
1234 : {
1235 128399 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1236 128399 : {
1237 128399 : tree _r;
1238 128399 : _r = constant_boolean_node (true, type);
1239 128399 : if (TREE_SIDE_EFFECTS (captures[0]))
1240 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1241 128399 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1242 128399 : return _r;
1243 : }
1244 0 : next_after_fail423:;
1245 : }
1246 : else
1247 : {
1248 5002 : if (cmp != EQ_EXPR
1249 5002 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1250 79 : || ! flag_trapping_math)
1251 : )
1252 : {
1253 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail424;
1254 0 : {
1255 0 : tree res_op0;
1256 0 : res_op0 = unshare_expr (captures[0]);
1257 0 : tree res_op1;
1258 0 : res_op1 = captures[0];
1259 0 : tree _r;
1260 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1261 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 336, __FILE__, __LINE__, true);
1262 0 : return _r;
1263 : }
1264 0 : next_after_fail424:;
1265 : }
1266 : }
1267 : return NULL_TREE;
1268 : }
1269 :
1270 : tree
1271 19014 : generic_simplify_257 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1272 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1273 : const enum tree_code ARG_UNUSED (cmp))
1274 : {
1275 19014 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1276 19014 : if (flag_associative_math
1277 : )
1278 : {
1279 13 : {
1280 13 : tree tem = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), captures[0], captures[2]);
1281 13 : if (tem && !TREE_OVERFLOW (tem)
1282 : )
1283 : {
1284 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail445;
1285 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail445;
1286 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail445;
1287 13 : {
1288 13 : tree res_op0;
1289 13 : res_op0 = tem;
1290 13 : tree res_op1;
1291 13 : res_op1 = captures[1];
1292 13 : tree _r;
1293 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1294 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 356, __FILE__, __LINE__, true);
1295 13 : return _r;
1296 : }
1297 : next_after_fail445:;
1298 : }
1299 : }
1300 : }
1301 : return NULL_TREE;
1302 : }
1303 :
1304 : tree
1305 59 : generic_simplify_263 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1306 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1307 : const enum tree_code ARG_UNUSED (cmp),
1308 : const enum tree_code ARG_UNUSED (scmp))
1309 : {
1310 59 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1311 96 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1312 96 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1313 37 : && (cmp == EQ_EXPR
1314 37 : || cmp == NE_EXPR
1315 36 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
1316 : )
1317 : {
1318 23 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail478;
1319 23 : {
1320 23 : tree res_op0;
1321 23 : res_op0 = captures[0];
1322 23 : tree res_op1;
1323 23 : res_op1 = captures[1];
1324 23 : tree _r;
1325 23 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1326 23 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 389, __FILE__, __LINE__, true);
1327 23 : return _r;
1328 : }
1329 0 : next_after_fail478:;
1330 : }
1331 : return NULL_TREE;
1332 : }
1333 :
1334 : tree
1335 17593873 : generic_simplify_266 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1336 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1337 : const enum tree_code ARG_UNUSED (cmp))
1338 : {
1339 17593873 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1340 34929005 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1341 11475716 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1342 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1343 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1344 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1345 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1346 17593873 : && single_use (captures[0])
1347 : )
1348 : {
1349 11475716 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1350 4919333 : && (TREE_CODE (captures[3]) == INTEGER_CST
1351 1850245 : || captures[2] != captures[3])
1352 3069088 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1353 : || cmp == NE_EXPR
1354 1369425 : || cmp == EQ_EXPR)
1355 2149532 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1356 13593438 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1357 1646 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1358 : )
1359 : {
1360 2117694 : if (TREE_CODE (captures[2]) == INTEGER_CST
1361 : )
1362 : {
1363 2117694 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail487;
1364 2117694 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail487;
1365 2117694 : {
1366 2117694 : tree res_op0;
1367 2117694 : res_op0 = captures[1];
1368 2117694 : tree res_op1;
1369 2117694 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1370 2117694 : wide_int::from (wi::to_wide (captures[2]),
1371 2117694 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1372 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1373 2117694 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1374 2117694 : 0, TREE_OVERFLOW (captures[2]));
1375 2117694 : tree _r;
1376 2117694 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1377 2117694 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 391, __FILE__, __LINE__, true);
1378 2117694 : return _r;
1379 : }
1380 : next_after_fail487:;
1381 : }
1382 : else
1383 : {
1384 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail488;
1385 0 : {
1386 0 : tree res_op0;
1387 0 : res_op0 = captures[1];
1388 0 : tree res_op1;
1389 0 : {
1390 0 : tree _o1[1], _r1;
1391 0 : _o1[0] = captures[2];
1392 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1393 : {
1394 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1395 : }
1396 : else
1397 : _r1 = _o1[0];
1398 0 : res_op1 = _r1;
1399 : }
1400 0 : tree _r;
1401 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1402 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
1403 0 : return _r;
1404 : }
1405 0 : next_after_fail488:;
1406 : }
1407 : }
1408 : else
1409 : {
1410 9358022 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1411 : )
1412 : {
1413 5609166 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1414 2933558 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1415 395760 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1416 312154 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1417 8459118 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1418 5525542 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1419 5525542 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1420 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1421 0 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1422 5525542 : || (TREE_CODE (captures[2]) == INTEGER_CST
1423 4430024 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1424 4430024 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1425 : )
1426 : {
1427 4396968 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail489;
1428 4396968 : {
1429 4396968 : tree res_op0;
1430 4396968 : res_op0 = captures[1];
1431 4396968 : tree res_op1;
1432 4396968 : {
1433 4396968 : tree _o1[1], _r1;
1434 4396968 : _o1[0] = captures[3];
1435 4396968 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1436 : {
1437 4396950 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1438 : }
1439 : else
1440 : _r1 = _o1[0];
1441 4396968 : res_op1 = _r1;
1442 : }
1443 4396968 : tree _r;
1444 4396968 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1445 4396968 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1446 4396968 : return _r;
1447 : }
1448 0 : next_after_fail489:;
1449 : }
1450 : else
1451 : {
1452 1212198 : if (TREE_CODE (captures[2]) == INTEGER_CST
1453 81268 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1454 1293466 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1455 : )
1456 : {
1457 36533 : {
1458 36533 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1459 36533 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1460 36533 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1461 36533 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1462 36533 : if (above || below
1463 : )
1464 : {
1465 30433 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1466 : )
1467 : {
1468 25871 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail490;
1469 25871 : {
1470 25871 : tree _r;
1471 25871 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1472 25871 : if (TREE_SIDE_EFFECTS (captures[1]))
1473 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1474 25871 : if (TREE_SIDE_EFFECTS (captures[2]))
1475 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1476 25871 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 394, __FILE__, __LINE__, true);
1477 25871 : return _r;
1478 : }
1479 0 : next_after_fail490:;
1480 : }
1481 : else
1482 : {
1483 4562 : if (cmp == LT_EXPR || cmp == LE_EXPR
1484 : )
1485 : {
1486 3886 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail491;
1487 3886 : {
1488 3886 : tree _r;
1489 3886 : _r = constant_boolean_node (above ? true : false, type);
1490 3886 : if (TREE_SIDE_EFFECTS (captures[1]))
1491 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1492 3886 : if (TREE_SIDE_EFFECTS (captures[2]))
1493 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1494 3886 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1495 3886 : return _r;
1496 : }
1497 0 : next_after_fail491:;
1498 : }
1499 : else
1500 : {
1501 676 : if (cmp == GT_EXPR || cmp == GE_EXPR
1502 : )
1503 : {
1504 676 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail492;
1505 676 : {
1506 676 : tree _r;
1507 930 : _r = constant_boolean_node (above ? false : true, type);
1508 676 : if (TREE_SIDE_EFFECTS (captures[1]))
1509 4 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1510 676 : if (TREE_SIDE_EFFECTS (captures[2]))
1511 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1512 676 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1513 676 : return _r;
1514 : }
1515 0 : next_after_fail492:;
1516 : }
1517 : }
1518 : }
1519 : }
1520 : }
1521 : }
1522 : }
1523 : }
1524 : }
1525 : }
1526 : else
1527 : {
1528 11704926 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1529 1089774 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1530 544887 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1531 7207693 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1532 544768 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1533 : )
1534 : {
1535 544768 : {
1536 544768 : tree type1 = TREE_TYPE (captures[3]);
1537 544768 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1538 : {
1539 342120 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1540 342120 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1541 342120 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1542 176561 : type1 = float_type_node;
1543 342120 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1544 342120 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1545 292 : type1 = double_type_node;
1546 : }
1547 544768 : tree newtype
1548 544768 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1549 544768 : ? TREE_TYPE (captures[1]) : type1);
1550 544768 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1551 544768 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1552 : )
1553 : {
1554 44486 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail493;
1555 44486 : {
1556 44486 : tree res_op0;
1557 44486 : {
1558 44486 : tree _o1[1], _r1;
1559 44486 : _o1[0] = captures[1];
1560 44486 : if (TREE_TYPE (_o1[0]) != newtype)
1561 : {
1562 11436 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1563 : }
1564 : else
1565 : _r1 = _o1[0];
1566 44486 : res_op0 = _r1;
1567 : }
1568 44486 : tree res_op1;
1569 44486 : {
1570 44486 : tree _o1[1], _r1;
1571 44486 : _o1[0] = captures[3];
1572 44486 : if (TREE_TYPE (_o1[0]) != newtype)
1573 : {
1574 44486 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1575 : }
1576 : else
1577 : _r1 = _o1[0];
1578 44486 : res_op1 = _r1;
1579 : }
1580 44486 : tree _r;
1581 44486 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1582 44486 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1583 44486 : return _r;
1584 : }
1585 0 : next_after_fail493:;
1586 : }
1587 : }
1588 : }
1589 : }
1590 : return NULL_TREE;
1591 : }
1592 :
1593 : tree
1594 0 : generic_simplify_295 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1595 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1596 : const enum tree_code ARG_UNUSED (op))
1597 : {
1598 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1599 0 : {
1600 0 : HOST_WIDE_INT zero_val = tree_to_shwi (captures[2]);
1601 0 : tree type0 = TREE_TYPE (captures[1]);
1602 0 : int prec = TYPE_PRECISION (type0);
1603 0 : if (prec <= MAX_FIXED_MODE_SIZE
1604 : )
1605 : {
1606 0 : if (tree_int_cst_sgn (captures[3]) < 0 || wi::to_widest (captures[3]) >= prec
1607 : )
1608 : {
1609 0 : if (zero_val != wi::to_widest (captures[3])
1610 : )
1611 : {
1612 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail555;
1613 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail555;
1614 0 : {
1615 0 : tree _r;
1616 0 : _r = constant_boolean_node (op == EQ_EXPR ? false : true, type);
1617 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1618 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1619 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1620 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1621 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 449, __FILE__, __LINE__, true);
1622 0 : return _r;
1623 : }
1624 0 : next_after_fail555:;
1625 : }
1626 : }
1627 : else
1628 : {
1629 0 : if (zero_val < 0 || zero_val >= prec
1630 : )
1631 : {
1632 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail556;
1633 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail556;
1634 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail556;
1635 0 : {
1636 0 : tree res_op0;
1637 0 : {
1638 0 : tree _o1[2], _r1;
1639 0 : _o1[0] = captures[1];
1640 0 : _o1[1] = wide_int_to_tree (type0,
1641 0 : wi::mask (tree_to_uhwi (captures[3]) + 1,
1642 : false, prec));
1643 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1644 0 : res_op0 = _r1;
1645 : }
1646 0 : tree res_op1;
1647 0 : res_op1 = wide_int_to_tree (type0,
1648 0 : wi::shifted_mask (tree_to_uhwi (captures[3]), 1,
1649 : false, prec));
1650 0 : tree _r;
1651 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1652 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 450, __FILE__, __LINE__, true);
1653 0 : return _r;
1654 : }
1655 0 : next_after_fail556:;
1656 : }
1657 : }
1658 : }
1659 : }
1660 0 : return NULL_TREE;
1661 : }
1662 :
1663 : tree
1664 0 : generic_simplify_306 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1665 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1666 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1667 : {
1668 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1669 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail570;
1670 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail570;
1671 0 : {
1672 0 : tree _r;
1673 0 : _r = captures[1];
1674 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 464, __FILE__, __LINE__, true);
1675 : return _r;
1676 : }
1677 : next_after_fail570:;
1678 : return NULL_TREE;
1679 : }
1680 :
1681 : tree
1682 892 : generic_simplify_313 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1683 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1684 : const enum tree_code ARG_UNUSED (div))
1685 : {
1686 892 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1687 1784 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
1688 892 : && !integer_zerop (captures[0])
1689 1159 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1690 : )
1691 : {
1692 111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail579;
1693 111 : {
1694 111 : tree _r;
1695 111 : _r = build_one_cst (type);
1696 111 : if (TREE_SIDE_EFFECTS (captures[0]))
1697 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1698 111 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1699 111 : return _r;
1700 : }
1701 0 : next_after_fail579:;
1702 : }
1703 : return NULL_TREE;
1704 : }
1705 :
1706 : tree
1707 192 : generic_simplify_319 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1708 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1709 : const enum tree_code ARG_UNUSED (div))
1710 : {
1711 192 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1712 192 : if (ANY_INTEGRAL_TYPE_P (type)
1713 : )
1714 : {
1715 192 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1716 : )
1717 : {
1718 164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail586;
1719 164 : {
1720 164 : tree _r;
1721 164 : _r = captures[1];
1722 164 : if (TREE_SIDE_EFFECTS (captures[2]))
1723 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1724 164 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 478, __FILE__, __LINE__, true);
1725 164 : return _r;
1726 : }
1727 0 : next_after_fail586:;
1728 : }
1729 : }
1730 : return NULL_TREE;
1731 : }
1732 :
1733 : tree
1734 919 : generic_simplify_322 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1735 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1736 : const enum tree_code ARG_UNUSED (mod))
1737 : {
1738 919 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1739 919 : if (!integer_zerop (captures[1])
1740 : )
1741 : {
1742 785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail589;
1743 785 : {
1744 785 : tree _r;
1745 785 : _r = captures[0];
1746 785 : if (TREE_SIDE_EFFECTS (captures[1]))
1747 74 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1748 785 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 481, __FILE__, __LINE__, true);
1749 785 : return _r;
1750 : }
1751 0 : next_after_fail589:;
1752 : }
1753 : return NULL_TREE;
1754 : }
1755 :
1756 : tree
1757 0 : generic_simplify_330 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1758 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1759 : {
1760 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1761 0 : if (SCALAR_FLOAT_TYPE_P (type)
1762 0 : && ! HONOR_NANS (type)
1763 0 : && ! HONOR_INFINITIES (type)
1764 : )
1765 : {
1766 0 : if (types_match (type, float_type_node)
1767 : )
1768 : {
1769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail597;
1770 0 : {
1771 0 : tree res_op0;
1772 0 : res_op0 = build_one_cst (type);
1773 0 : tree res_op1;
1774 0 : {
1775 0 : tree _o1[1], _r1;
1776 0 : _o1[0] = captures[0];
1777 0 : if (TREE_TYPE (_o1[0]) != type)
1778 : {
1779 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1780 : }
1781 : else
1782 : _r1 = _o1[0];
1783 0 : res_op1 = _r1;
1784 : }
1785 0 : tree _r;
1786 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNF, type, 2, res_op0, res_op1);
1787 0 : if (!_r)
1788 0 : goto next_after_fail597;
1789 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 489, __FILE__, __LINE__, true);
1790 0 : return _r;
1791 : }
1792 : next_after_fail597:;
1793 : }
1794 : else
1795 : {
1796 0 : if (types_match (type, double_type_node)
1797 : )
1798 : {
1799 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail598;
1800 0 : {
1801 0 : tree res_op0;
1802 0 : res_op0 = build_one_cst (type);
1803 0 : tree res_op1;
1804 0 : {
1805 0 : tree _o1[1], _r1;
1806 0 : _o1[0] = captures[0];
1807 0 : if (TREE_TYPE (_o1[0]) != type)
1808 : {
1809 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1810 : }
1811 : else
1812 : _r1 = _o1[0];
1813 0 : res_op1 = _r1;
1814 : }
1815 0 : tree _r;
1816 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGN, type, 2, res_op0, res_op1);
1817 0 : if (!_r)
1818 0 : goto next_after_fail598;
1819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
1820 0 : return _r;
1821 : }
1822 : next_after_fail598:;
1823 : }
1824 : else
1825 : {
1826 0 : if (types_match (type, long_double_type_node)
1827 : )
1828 : {
1829 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail599;
1830 0 : {
1831 0 : tree res_op0;
1832 0 : res_op0 = build_one_cst (type);
1833 0 : tree res_op1;
1834 0 : {
1835 0 : tree _o1[1], _r1;
1836 0 : _o1[0] = captures[0];
1837 0 : if (TREE_TYPE (_o1[0]) != type)
1838 : {
1839 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1840 : }
1841 : else
1842 : _r1 = _o1[0];
1843 0 : res_op1 = _r1;
1844 : }
1845 0 : tree _r;
1846 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNL, type, 2, res_op0, res_op1);
1847 0 : if (!_r)
1848 0 : goto next_after_fail599;
1849 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 491, __FILE__, __LINE__, true);
1850 0 : return _r;
1851 : }
1852 : next_after_fail599:;
1853 : }
1854 : }
1855 : }
1856 : }
1857 : return NULL_TREE;
1858 : }
1859 :
1860 : tree
1861 3 : generic_simplify_350 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1862 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1863 : const enum tree_code ARG_UNUSED (op))
1864 : {
1865 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1866 3 : if (INTEGRAL_TYPE_P (type)
1867 3 : && TYPE_PRECISION (type) > 1
1868 3 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1869 6 : && expr_no_side_effects_p (captures[2])
1870 : )
1871 : {
1872 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail625;
1873 3 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail625;
1874 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail625;
1875 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1876 3 : {
1877 3 : tree res_op0;
1878 3 : {
1879 3 : tree _o1[2], _r1;
1880 3 : {
1881 3 : tree _o2[1], _r2;
1882 3 : _o2[0] = captures[0];
1883 3 : if (TREE_TYPE (_o2[0]) != type)
1884 : {
1885 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1886 : }
1887 : else
1888 : _r2 = _o2[0];
1889 3 : _o1[0] = _r2;
1890 : }
1891 3 : _o1[1] = captures[2];
1892 3 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1893 3 : res_op0 = _r1;
1894 : }
1895 3 : tree res_op1;
1896 3 : res_op1 = captures[1];
1897 3 : tree _r;
1898 3 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1899 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 517, __FILE__, __LINE__, true);
1900 3 : return _r;
1901 : }
1902 : next_after_fail625:;
1903 : }
1904 : return NULL_TREE;
1905 : }
1906 :
1907 : tree
1908 0 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1910 : {
1911 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1912 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail636;
1913 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail636;
1914 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail636;
1915 0 : {
1916 0 : tree _r;
1917 0 : _r = captures[2];
1918 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 528, __FILE__, __LINE__, true);
1919 : return _r;
1920 : }
1921 : next_after_fail636:;
1922 : return NULL_TREE;
1923 : }
1924 :
1925 : tree
1926 9 : generic_simplify_367 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1927 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1928 : const combined_fn ARG_UNUSED (func))
1929 : {
1930 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1931 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail643;
1932 9 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail643;
1933 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail643;
1934 9 : {
1935 9 : tree _r;
1936 9 : _r = captures[2];
1937 9 : if (TREE_SIDE_EFFECTS (captures[1]))
1938 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1939 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
1940 : return _r;
1941 : }
1942 : next_after_fail643:;
1943 : return NULL_TREE;
1944 : }
1945 :
1946 : tree
1947 100 : generic_simplify_375 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1948 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1949 : const enum tree_code ARG_UNUSED (cmp))
1950 : {
1951 100 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1952 100 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1953 : )
1954 : {
1955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail654;
1956 0 : {
1957 0 : tree _r;
1958 0 : _r = constant_boolean_node (cmp == LT_EXPR, type);
1959 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1960 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1961 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1962 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1963 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 544, __FILE__, __LINE__, true);
1964 0 : return _r;
1965 : }
1966 0 : next_after_fail654:;
1967 : }
1968 : return NULL_TREE;
1969 : }
1970 :
1971 : tree
1972 435 : generic_simplify_381 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1973 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1974 : const enum tree_code ARG_UNUSED (op))
1975 : {
1976 435 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1977 870 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1978 870 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1979 : )
1980 : {
1981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail661;
1982 0 : {
1983 0 : tree res_op0;
1984 0 : res_op0 = captures[2];
1985 0 : tree res_op1;
1986 0 : res_op1 = captures[1];
1987 0 : tree _r;
1988 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1989 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1990 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 551, __FILE__, __LINE__, true);
1992 0 : return _r;
1993 : }
1994 0 : next_after_fail661:;
1995 : }
1996 : return NULL_TREE;
1997 : }
1998 :
1999 : tree
2000 64 : generic_simplify_386 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2001 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2002 : const enum tree_code ARG_UNUSED (minmax),
2003 : const enum tree_code ARG_UNUSED (cmp),
2004 : const enum tree_code ARG_UNUSED (comb))
2005 : {
2006 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2007 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail667;
2008 64 : {
2009 64 : if (! tree_invariant_p (captures[2])) goto next_after_fail667;
2010 64 : tree res_op0;
2011 64 : {
2012 64 : tree _o1[2], _r1;
2013 64 : _o1[0] = captures[0];
2014 64 : _o1[1] = unshare_expr (captures[2]);
2015 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2016 64 : res_op0 = _r1;
2017 : }
2018 64 : tree res_op1;
2019 64 : {
2020 64 : tree _o1[2], _r1;
2021 64 : _o1[0] = captures[1];
2022 64 : _o1[1] = captures[2];
2023 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2024 64 : res_op1 = _r1;
2025 : }
2026 64 : tree _r;
2027 64 : _r = fold_build2_loc (loc, comb, type, res_op0, res_op1);
2028 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
2029 : return _r;
2030 : }
2031 : next_after_fail667:;
2032 : return NULL_TREE;
2033 : }
2034 :
2035 : tree
2036 0 : generic_simplify_397 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2037 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2038 : const enum tree_code ARG_UNUSED (cmp),
2039 : const enum tree_code ARG_UNUSED (out))
2040 : {
2041 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2042 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2043 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2044 : )
2045 : {
2046 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail710;
2047 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail710;
2048 0 : {
2049 0 : tree res_op0;
2050 0 : {
2051 0 : tree _o1[1], _r1;
2052 0 : _o1[0] = captures[0];
2053 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2054 0 : res_op0 = _r1;
2055 : }
2056 0 : tree res_op1;
2057 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2058 0 : tree _r;
2059 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2060 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 583, __FILE__, __LINE__, true);
2061 0 : return _r;
2062 : }
2063 : next_after_fail710:;
2064 : }
2065 : return NULL_TREE;
2066 : }
2067 :
2068 : tree
2069 744450 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2070 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2071 : const enum tree_code ARG_UNUSED (cmp),
2072 : const enum tree_code ARG_UNUSED (icmp))
2073 : {
2074 744450 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2075 1486358 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2076 744450 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2077 331913 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
2078 1820813 : && (wi::to_wide (captures[2])
2079 1740189 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
2080 : )
2081 : {
2082 5179 : {
2083 5179 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
2084 5179 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail724;
2085 5179 : {
2086 5179 : tree res_op0;
2087 5179 : {
2088 5179 : tree _o1[1], _r1;
2089 5179 : _o1[0] = captures[0];
2090 5179 : if (TREE_TYPE (_o1[0]) != stype)
2091 : {
2092 5179 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2093 : }
2094 : else
2095 : _r1 = _o1[0];
2096 5179 : res_op0 = _r1;
2097 : }
2098 5179 : tree res_op1;
2099 5179 : res_op1 = build_int_cst (stype, 0);
2100 5179 : tree _r;
2101 5179 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2102 5179 : if (TREE_SIDE_EFFECTS (captures[1]))
2103 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2104 5179 : if (TREE_SIDE_EFFECTS (captures[2]))
2105 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2106 5179 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 597, __FILE__, __LINE__, true);
2107 5179 : return _r;
2108 : }
2109 0 : next_after_fail724:;
2110 : }
2111 : }
2112 : return NULL_TREE;
2113 : }
2114 :
2115 : tree
2116 0 : generic_simplify_410 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2117 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2118 : const enum tree_code ARG_UNUSED (cmp),
2119 : const enum tree_code ARG_UNUSED (out))
2120 : {
2121 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2122 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2123 : )
2124 : {
2125 0 : {
2126 0 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2127 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail730;
2128 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail730;
2129 0 : {
2130 0 : tree res_op0;
2131 0 : {
2132 0 : tree _o1[1], _r1;
2133 0 : {
2134 0 : tree _o2[2], _r2;
2135 0 : _o2[0] = captures[2];
2136 0 : _o2[1] = captures[1];
2137 0 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2138 0 : if (!_r2)
2139 0 : goto next_after_fail730;
2140 0 : _o1[0] = _r2;
2141 : }
2142 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2143 0 : res_op0 = _r1;
2144 : }
2145 0 : tree res_op1;
2146 0 : res_op1 = build_zero_cst (t);
2147 0 : tree _r;
2148 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2149 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
2150 0 : return _r;
2151 : }
2152 : next_after_fail730:;
2153 : }
2154 : }
2155 : return NULL_TREE;
2156 : }
2157 :
2158 : tree
2159 1607874 : generic_simplify_416 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2160 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2161 : const enum tree_code ARG_UNUSED (shift))
2162 : {
2163 1607874 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2164 1607874 : if ((
2165 :
2166 1607874 : || !sanitize_flags_p (SANITIZE_SHIFT_EXPONENT))
2167 1605933 : && (TYPE_UNSIGNED (type)
2168 384150 : || shift == LSHIFT_EXPR
2169 189860 : || tree_expr_nonnegative_p (captures[0]))
2170 3025935 : && wi::ges_p (wi::to_wide (uniform_integer_cst_p (captures[1])),
2171 3024713 : element_precision (type))
2172 : )
2173 : {
2174 1222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail740;
2175 1222 : {
2176 1222 : tree _r;
2177 1222 : _r = build_zero_cst (type);
2178 1222 : if (TREE_SIDE_EFFECTS (captures[0]))
2179 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2180 1222 : if (TREE_SIDE_EFFECTS (captures[1]))
2181 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2182 1222 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
2183 1222 : return _r;
2184 : }
2185 0 : next_after_fail740:;
2186 : }
2187 : return NULL_TREE;
2188 : }
2189 :
2190 : tree
2191 67 : generic_simplify_425 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2193 : {
2194 67 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2195 67 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2196 : )
2197 : {
2198 67 : if (TYPE_UNSIGNED (type)
2199 : )
2200 : {
2201 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail752;
2202 2 : {
2203 2 : tree res_op0;
2204 2 : {
2205 2 : tree _o1[1], _r1;
2206 2 : _o1[0] = captures[0];
2207 2 : if (TREE_TYPE (_o1[0]) != type)
2208 : {
2209 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2210 : }
2211 : else
2212 : _r1 = _o1[0];
2213 2 : res_op0 = _r1;
2214 : }
2215 2 : tree res_op1;
2216 2 : {
2217 2 : tree _o1[2], _r1;
2218 2 : _o1[0] = build_minus_one_cst (type);
2219 2 : _o1[1] = captures[1];
2220 2 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2221 2 : res_op1 = _r1;
2222 : }
2223 2 : tree _r;
2224 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2225 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 619, __FILE__, __LINE__, true);
2226 2 : return _r;
2227 : }
2228 0 : next_after_fail752:;
2229 : }
2230 : else
2231 : {
2232 65 : if (INTEGRAL_TYPE_P (type)
2233 : )
2234 : {
2235 65 : {
2236 65 : int width = element_precision (type) - tree_to_uhwi (captures[1]);
2237 65 : tree stype = NULL_TREE;
2238 130 : if (width <= MAX_FIXED_MODE_SIZE)
2239 65 : stype = build_nonstandard_integer_type (width, 0);
2240 65 : if (stype && (width == 1 || type_has_mode_precision_p (stype))
2241 : )
2242 : {
2243 25 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail753;
2244 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail753;
2245 25 : {
2246 25 : tree res_op0;
2247 25 : {
2248 25 : tree _o1[1], _r1;
2249 25 : _o1[0] = captures[0];
2250 25 : if (TREE_TYPE (_o1[0]) != stype)
2251 : {
2252 25 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2253 : }
2254 : else
2255 : _r1 = _o1[0];
2256 25 : res_op0 = _r1;
2257 : }
2258 25 : tree _r;
2259 25 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2260 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 620, __FILE__, __LINE__, true);
2261 25 : return _r;
2262 : }
2263 : next_after_fail753:;
2264 : }
2265 : }
2266 : }
2267 : }
2268 : }
2269 : return NULL_TREE;
2270 : }
2271 :
2272 : tree
2273 8904295 : generic_simplify_432 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2274 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2275 : const enum tree_code ARG_UNUSED (op))
2276 : {
2277 8904295 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2278 8904295 : if (INTEGRAL_TYPE_P (type)
2279 8047536 : && op != MULT_EXPR
2280 8047536 : && op != RDIV_EXPR
2281 3998255 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2282 3595018 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2283 3595018 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2284 3545912 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2285 3545904 : && type_has_mode_precision_p (type)
2286 3537383 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2287 1133354 : && types_match (captures[2], type)
2288 8917904 : && (types_match (captures[2], captures[4])
2289 13609 : || poly_int_tree_p (captures[3]))
2290 : )
2291 : {
2292 10954 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2293 : )
2294 : {
2295 6017 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail768;
2296 6017 : {
2297 6017 : tree res_op0;
2298 6017 : res_op0 = captures[2];
2299 6017 : tree res_op1;
2300 6017 : {
2301 6017 : tree _o1[1], _r1;
2302 6017 : _o1[0] = captures[4];
2303 6017 : if (TREE_TYPE (_o1[0]) != type)
2304 : {
2305 6017 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2306 : }
2307 : else
2308 : _r1 = _o1[0];
2309 6017 : res_op1 = _r1;
2310 : }
2311 6017 : tree _r;
2312 6017 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2313 6017 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 631, __FILE__, __LINE__, true);
2314 6017 : return _r;
2315 : }
2316 0 : next_after_fail768:;
2317 : }
2318 : else
2319 : {
2320 4937 : {
2321 4937 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2322 4937 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail769;
2323 4937 : {
2324 4937 : tree res_op0;
2325 4937 : {
2326 4937 : tree _o1[2], _r1;
2327 4937 : {
2328 4937 : tree _o2[1], _r2;
2329 4937 : _o2[0] = captures[2];
2330 4937 : if (TREE_TYPE (_o2[0]) != utype)
2331 : {
2332 4937 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2333 : }
2334 : else
2335 : _r2 = _o2[0];
2336 4937 : _o1[0] = _r2;
2337 : }
2338 4937 : {
2339 4937 : tree _o2[1], _r2;
2340 4937 : _o2[0] = captures[4];
2341 4937 : if (TREE_TYPE (_o2[0]) != utype)
2342 : {
2343 4937 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2344 : }
2345 : else
2346 : _r2 = _o2[0];
2347 4937 : _o1[1] = _r2;
2348 : }
2349 4937 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2350 4937 : res_op0 = _r1;
2351 : }
2352 4937 : tree _r;
2353 4937 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2354 4937 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 632, __FILE__, __LINE__, true);
2355 4937 : return _r;
2356 : }
2357 0 : next_after_fail769:;
2358 : }
2359 : }
2360 : }
2361 : else
2362 : {
2363 8861266 : if (FLOAT_TYPE_P (type)
2364 8925416 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2365 32075 : == DECIMAL_FLOAT_TYPE_P (type)
2366 : )
2367 : {
2368 32049 : {
2369 32049 : tree arg0 = strip_float_extensions (captures[2]);
2370 32049 : tree arg1 = strip_float_extensions (captures[4]);
2371 32049 : tree itype = TREE_TYPE (captures[0]);
2372 32049 : tree ty1 = TREE_TYPE (arg0);
2373 32049 : tree ty2 = TREE_TYPE (arg1);
2374 32049 : enum tree_code code = TREE_CODE (itype);
2375 0 : if (FLOAT_TYPE_P (ty1)
2376 32049 : && FLOAT_TYPE_P (ty2)
2377 : )
2378 : {
2379 32049 : {
2380 32049 : tree newtype = type;
2381 32049 : if (TYPE_MODE (ty1) == SDmode
2382 31787 : || TYPE_MODE (ty2) == SDmode
2383 63836 : || TYPE_MODE (type) == SDmode)
2384 262 : newtype = dfloat32_type_node;
2385 32049 : if (TYPE_MODE (ty1) == DDmode
2386 31917 : || TYPE_MODE (ty2) == DDmode
2387 63839 : || TYPE_MODE (type) == DDmode)
2388 259 : newtype = dfloat64_type_node;
2389 32049 : if (TYPE_MODE (ty1) == TDmode
2390 32049 : || TYPE_MODE (ty2) == TDmode
2391 63846 : || TYPE_MODE (type) == TDmode)
2392 267 : newtype = dfloat128_type_node;
2393 32049 : if ((newtype == dfloat32_type_node
2394 32049 : || newtype == dfloat64_type_node
2395 31922 : || newtype == dfloat128_type_node)
2396 394 : && newtype == type
2397 32055 : && types_match (newtype, type)
2398 : )
2399 : {
2400 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail770;
2401 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail770;
2402 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail770;
2403 0 : {
2404 0 : tree res_op0;
2405 0 : {
2406 0 : tree _o1[1], _r1;
2407 0 : _o1[0] = captures[2];
2408 0 : if (TREE_TYPE (_o1[0]) != newtype)
2409 : {
2410 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2411 : }
2412 : else
2413 : _r1 = _o1[0];
2414 0 : res_op0 = _r1;
2415 : }
2416 0 : tree res_op1;
2417 0 : {
2418 0 : tree _o1[1], _r1;
2419 0 : _o1[0] = captures[4];
2420 0 : if (TREE_TYPE (_o1[0]) != newtype)
2421 : {
2422 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2423 : }
2424 : else
2425 : _r1 = _o1[0];
2426 0 : res_op1 = _r1;
2427 : }
2428 0 : tree _r;
2429 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2430 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 633, __FILE__, __LINE__, true);
2431 0 : return _r;
2432 : }
2433 : next_after_fail770:;
2434 : }
2435 : else
2436 : {
2437 32043 : {
2438 32043 : if (element_precision (ty1) > element_precision (newtype))
2439 14 : newtype = ty1;
2440 32043 : if (element_precision (ty2) > element_precision (newtype))
2441 4034 : newtype = ty2;
2442 32043 : if (element_precision (newtype) < element_precision (itype)
2443 15259 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2444 0 : || target_supports_op_p (newtype, op, optab_default))
2445 15259 : && (flag_unsafe_math_optimizations
2446 15234 : || (element_precision (newtype) == element_precision (type)
2447 15210 : && real_can_shorten_arithmetic (element_mode (itype),
2448 : element_mode (type))
2449 6609 : && !excess_precision_type (newtype)))
2450 35310 : && !types_match (itype, newtype)
2451 : )
2452 : {
2453 3267 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail771;
2454 3266 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail771;
2455 3258 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail771;
2456 3258 : {
2457 3258 : tree res_op0;
2458 3258 : {
2459 3258 : tree _o1[2], _r1;
2460 3258 : {
2461 3258 : tree _o2[1], _r2;
2462 3258 : _o2[0] = captures[2];
2463 3258 : if (TREE_TYPE (_o2[0]) != newtype)
2464 : {
2465 3 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2466 : }
2467 : else
2468 : _r2 = _o2[0];
2469 3258 : _o1[0] = _r2;
2470 : }
2471 3258 : {
2472 3258 : tree _o2[1], _r2;
2473 3258 : _o2[0] = captures[4];
2474 3258 : if (TREE_TYPE (_o2[0]) != newtype)
2475 : {
2476 3258 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2477 : }
2478 : else
2479 : _r2 = _o2[0];
2480 3258 : _o1[1] = _r2;
2481 : }
2482 3258 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2483 3258 : res_op0 = _r1;
2484 : }
2485 3258 : tree _r;
2486 3258 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2487 3258 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 634, __FILE__, __LINE__, true);
2488 3258 : return _r;
2489 : }
2490 : next_after_fail771:;
2491 : }
2492 : }
2493 : }
2494 : }
2495 : }
2496 : }
2497 : }
2498 : }
2499 : return NULL_TREE;
2500 : }
2501 :
2502 : tree
2503 2 : generic_simplify_463 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2504 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2505 : {
2506 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2507 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail808;
2508 2 : {
2509 2 : tree res_op0;
2510 2 : {
2511 2 : tree _o1[2], _r1;
2512 2 : _o1[0] = captures[1];
2513 2 : _o1[1] = captures[2];
2514 2 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2515 2 : res_op0 = _r1;
2516 : }
2517 2 : tree _r;
2518 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2519 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 662, __FILE__, __LINE__, true);
2520 : return _r;
2521 : }
2522 0 : next_after_fail808:;
2523 0 : return NULL_TREE;
2524 : }
2525 :
2526 : tree
2527 8 : generic_simplify_469 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2528 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2529 : const enum tree_code ARG_UNUSED (eqne))
2530 : {
2531 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2532 8 : if (eqne == EQ_EXPR
2533 : )
2534 : {
2535 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail814;
2536 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail814;
2537 4 : {
2538 4 : tree _r;
2539 4 : _r = constant_boolean_node (false, type);
2540 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2541 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2542 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 667, __FILE__, __LINE__, true);
2543 4 : return _r;
2544 : }
2545 : next_after_fail814:;
2546 : }
2547 : else
2548 : {
2549 4 : if (eqne == NE_EXPR
2550 : )
2551 : {
2552 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail815;
2553 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail815;
2554 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail815;
2555 4 : {
2556 4 : tree _r;
2557 4 : _r = captures[0];
2558 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
2559 4 : return _r;
2560 : }
2561 : next_after_fail815:;
2562 : }
2563 : }
2564 : return NULL_TREE;
2565 : }
2566 :
2567 : tree
2568 213 : generic_simplify_479 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2569 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2570 : const enum tree_code ARG_UNUSED (code2),
2571 : const enum tree_code ARG_UNUSED (code1))
2572 : {
2573 213 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2574 213 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2575 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2576 213 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2577 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2578 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2579 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2580 207 : && bitwise_equal_p (captures[2], captures[5]))
2581 : )
2582 : {
2583 6 : {
2584 6 : bool one_before = false;
2585 6 : bool one_after = false;
2586 6 : int cmp = 0;
2587 6 : bool allbits = true;
2588 6 : if (TREE_CODE (captures[2]) == INTEGER_CST
2589 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2590 : {
2591 6 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2592 6 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2593 6 : auto t2 = wi::to_wide (captures[5]);
2594 6 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2595 6 : if (cmp < 0
2596 6 : && t1 == t2 - 1)
2597 : one_before = true;
2598 6 : if (cmp > 0
2599 6 : && t1 == t2 + 1)
2600 : one_after = true;
2601 : }
2602 6 : bool val;
2603 6 : switch (code2)
2604 : {
2605 0 : case EQ_EXPR: val = (cmp == 0); break;
2606 2 : case NE_EXPR: val = (cmp != 0); break;
2607 0 : case LT_EXPR: val = (cmp < 0); break;
2608 4 : case GT_EXPR: val = (cmp > 0); break;
2609 0 : case LE_EXPR: val = (cmp <= 0); break;
2610 0 : case GE_EXPR: val = (cmp >= 0); break;
2611 0 : default: gcc_unreachable ();
2612 : }
2613 6 : if (code1 == EQ_EXPR && val
2614 : )
2615 : {
2616 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail852;
2617 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail852;
2618 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail852;
2619 0 : {
2620 0 : tree _r;
2621 0 : _r = captures[0];
2622 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2623 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2624 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
2625 0 : return _r;
2626 : }
2627 : next_after_fail852:;
2628 : }
2629 : else
2630 : {
2631 6 : if (code1 == EQ_EXPR && !val
2632 : )
2633 : {
2634 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail853;
2635 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail853;
2636 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2637 0 : {
2638 0 : tree _r;
2639 0 : _r = constant_boolean_node (false, type);
2640 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2641 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2642 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 672, __FILE__, __LINE__, true);
2643 0 : return _r;
2644 : }
2645 : next_after_fail853:;
2646 : }
2647 : else
2648 : {
2649 6 : if (code1 == NE_EXPR && !val && allbits
2650 : )
2651 : {
2652 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail854;
2653 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail854;
2654 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail854;
2655 0 : {
2656 0 : tree _r;
2657 0 : _r = captures[3];
2658 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
2659 0 : return _r;
2660 : }
2661 : next_after_fail854:;
2662 : }
2663 : else
2664 : {
2665 6 : if ((code1 == NE_EXPR
2666 6 : && code2 == GE_EXPR
2667 0 : && cmp == 0
2668 0 : && allbits)
2669 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2670 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2671 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2672 : )
2673 : {
2674 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail855;
2675 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail855;
2676 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail855;
2677 0 : {
2678 0 : tree res_op0;
2679 0 : res_op0 = captures[4];
2680 0 : tree res_op1;
2681 0 : {
2682 0 : tree _o1[1], _r1;
2683 0 : _o1[0] = captures[2];
2684 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2685 : {
2686 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2687 : }
2688 : else
2689 : _r1 = _o1[0];
2690 0 : res_op1 = _r1;
2691 : }
2692 0 : tree _r;
2693 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 674, __FILE__, __LINE__, true);
2695 0 : return _r;
2696 : }
2697 : next_after_fail855:;
2698 : }
2699 : else
2700 : {
2701 6 : if ((code1 == NE_EXPR
2702 6 : && code2 == LE_EXPR
2703 0 : && cmp == 0
2704 0 : && allbits)
2705 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2706 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2707 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2708 : )
2709 : {
2710 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail856;
2711 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail856;
2712 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail856;
2713 0 : {
2714 0 : tree res_op0;
2715 0 : res_op0 = captures[4];
2716 0 : tree res_op1;
2717 0 : {
2718 0 : tree _o1[1], _r1;
2719 0 : _o1[0] = captures[2];
2720 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2721 : {
2722 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2723 : }
2724 : else
2725 : _r1 = _o1[0];
2726 0 : res_op1 = _r1;
2727 : }
2728 0 : tree _r;
2729 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2730 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2731 0 : return _r;
2732 : }
2733 : next_after_fail856:;
2734 : }
2735 : else
2736 : {
2737 6 : if ((code1 == NE_EXPR
2738 6 : && code2 == GT_EXPR
2739 : && one_after
2740 4 : && allbits)
2741 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2742 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2743 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2744 : )
2745 : {
2746 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail857;
2747 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail857;
2748 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail857;
2749 0 : {
2750 0 : tree res_op0;
2751 0 : res_op0 = captures[4];
2752 0 : tree res_op1;
2753 0 : {
2754 0 : tree _o1[1], _r1;
2755 0 : _o1[0] = captures[2];
2756 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2757 : {
2758 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2759 : }
2760 : else
2761 : _r1 = _o1[0];
2762 0 : res_op1 = _r1;
2763 : }
2764 0 : tree _r;
2765 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2766 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2767 0 : return _r;
2768 : }
2769 : next_after_fail857:;
2770 : }
2771 : else
2772 : {
2773 6 : if ((code1 == NE_EXPR
2774 6 : && code2 == LT_EXPR
2775 : && one_before
2776 0 : && allbits)
2777 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2778 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2779 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2780 : )
2781 : {
2782 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail858;
2783 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail858;
2784 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail858;
2785 0 : {
2786 0 : tree res_op0;
2787 0 : res_op0 = captures[4];
2788 0 : tree res_op1;
2789 0 : {
2790 0 : tree _o1[1], _r1;
2791 0 : _o1[0] = captures[2];
2792 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2793 : {
2794 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2795 : }
2796 : else
2797 : _r1 = _o1[0];
2798 0 : res_op1 = _r1;
2799 : }
2800 0 : tree _r;
2801 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2802 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2803 0 : return _r;
2804 : }
2805 : next_after_fail858:;
2806 : }
2807 : }
2808 : }
2809 : }
2810 : }
2811 : }
2812 : }
2813 : }
2814 : }
2815 : return NULL_TREE;
2816 : }
2817 :
2818 : tree
2819 147 : generic_simplify_512 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2820 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2821 : {
2822 147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2823 147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail902;
2824 147 : {
2825 147 : tree res_op0;
2826 147 : {
2827 147 : tree _o1[1], _r1;
2828 147 : _o1[0] = captures[0];
2829 147 : if (TREE_TYPE (_o1[0]) != type)
2830 : {
2831 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2832 : }
2833 : else
2834 : _r1 = _o1[0];
2835 147 : res_op0 = _r1;
2836 : }
2837 147 : tree res_op1;
2838 147 : res_op1 = build_each_one_cst (type);
2839 147 : tree _r;
2840 147 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
2841 147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 715, __FILE__, __LINE__, true);
2842 : return _r;
2843 : }
2844 0 : next_after_fail902:;
2845 0 : return NULL_TREE;
2846 : }
2847 :
2848 : tree
2849 0 : generic_simplify_519 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2850 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2851 : const enum tree_code ARG_UNUSED (minmax))
2852 : {
2853 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2854 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail910;
2855 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail910;
2856 0 : {
2857 0 : tree _r;
2858 0 : _r = captures[0];
2859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 722, __FILE__, __LINE__, true);
2860 : return _r;
2861 : }
2862 : next_after_fail910:;
2863 : return NULL_TREE;
2864 : }
2865 :
2866 : tree
2867 0 : generic_simplify_527 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2868 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2869 : const enum tree_code ARG_UNUSED (minmax),
2870 : const enum tree_code ARG_UNUSED (cmp))
2871 : {
2872 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2873 0 : {
2874 0 : poly_int64 off0, off1;
2875 0 : tree base0, base1;
2876 0 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2877 : off0, off1,
2878 : 1
2879 : );
2880 0 : if (equal == 1
2881 : )
2882 : {
2883 0 : if (minmax == MIN_EXPR
2884 : )
2885 : {
2886 0 : if (known_le (off0, off1)
2887 : )
2888 : {
2889 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail923;
2890 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail923;
2891 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail923;
2892 0 : {
2893 0 : tree _r;
2894 0 : _r = captures[0];
2895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 731, __FILE__, __LINE__, true);
2896 0 : return _r;
2897 : }
2898 0 : next_after_fail923:;
2899 : }
2900 : else
2901 : {
2902 0 : if (known_gt (off0, off1)
2903 : )
2904 : {
2905 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail924;
2906 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail924;
2907 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail924;
2908 0 : {
2909 0 : tree _r;
2910 0 : _r = captures[2];
2911 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 732, __FILE__, __LINE__, true);
2912 0 : return _r;
2913 : }
2914 0 : next_after_fail924:;
2915 : }
2916 : }
2917 : }
2918 : else
2919 : {
2920 0 : if (known_ge (off0, off1)
2921 : )
2922 : {
2923 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail925;
2924 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail925;
2925 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail925;
2926 0 : {
2927 0 : tree _r;
2928 0 : _r = captures[0];
2929 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 733, __FILE__, __LINE__, true);
2930 0 : return _r;
2931 : }
2932 0 : next_after_fail925:;
2933 : }
2934 : else
2935 : {
2936 0 : if (known_lt (off0, off1)
2937 : )
2938 : {
2939 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail926;
2940 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail926;
2941 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail926;
2942 0 : {
2943 0 : tree _r;
2944 0 : _r = captures[2];
2945 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2946 0 : return _r;
2947 : }
2948 0 : next_after_fail926:;
2949 : }
2950 : }
2951 : }
2952 : }
2953 : }
2954 0 : return NULL_TREE;
2955 : }
2956 :
2957 : tree
2958 0 : generic_simplify_548 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2959 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2960 : const combined_fn ARG_UNUSED (cond_len_op))
2961 : {
2962 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2963 0 : {
2964 0 : tree op_type = TREE_TYPE (captures[5]);
2965 0 : if (inverse_conditions_p (captures[0], captures[2])
2966 0 : && element_precision (type) == element_precision (op_type)
2967 : )
2968 : {
2969 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail953;
2970 0 : {
2971 0 : tree res_op0;
2972 0 : {
2973 0 : tree _o1[6], _r1;
2974 0 : _o1[0] = captures[2];
2975 0 : _o1[1] = captures[3];
2976 0 : _o1[2] = captures[4];
2977 0 : {
2978 0 : tree _o2[1], _r2;
2979 0 : _o2[0] = captures[1];
2980 0 : if (TREE_TYPE (_o2[0]) != op_type)
2981 : {
2982 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2983 : }
2984 : else
2985 : _r2 = _o2[0];
2986 0 : _o1[3] = _r2;
2987 : }
2988 0 : _o1[4] = captures[6];
2989 0 : _o1[5] = captures[7];
2990 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 6, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5]);
2991 0 : if (!_r1)
2992 0 : goto next_after_fail953;
2993 0 : res_op0 = _r1;
2994 : }
2995 0 : tree _r;
2996 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2997 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2998 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2999 0 : if (TREE_SIDE_EFFECTS (captures[5]))
3000 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
3001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 748, __FILE__, __LINE__, true);
3002 0 : return _r;
3003 : }
3004 : next_after_fail953:;
3005 : }
3006 : }
3007 : return NULL_TREE;
3008 : }
3009 :
3010 : tree
3011 0 : generic_simplify_561 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3012 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3013 : const enum tree_code ARG_UNUSED (cmp))
3014 : {
3015 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3016 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail969;
3017 0 : {
3018 0 : tree res_op0;
3019 0 : res_op0 = unshare_expr (captures[0]);
3020 0 : tree res_op1;
3021 0 : res_op1 = captures[0];
3022 0 : tree _r;
3023 0 : _r = fold_build2_loc (loc, UNORDERED_EXPR, type, res_op0, res_op1);
3024 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
3025 : return _r;
3026 : }
3027 0 : next_after_fail969:;
3028 0 : return NULL_TREE;
3029 : }
3030 :
3031 : tree
3032 0 : generic_simplify_568 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3033 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3034 : const combined_fn ARG_UNUSED (tans),
3035 : const combined_fn ARG_UNUSED (atans))
3036 : {
3037 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3038 0 : if (flag_unsafe_math_optimizations
3039 : )
3040 : {
3041 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail976;
3042 0 : {
3043 0 : tree _r;
3044 0 : _r = captures[0];
3045 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 771, __FILE__, __LINE__, true);
3046 0 : return _r;
3047 : }
3048 0 : next_after_fail976:;
3049 : }
3050 : return NULL_TREE;
3051 : }
3052 :
3053 : tree
3054 0 : generic_simplify_573 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3055 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3056 : const combined_fn ARG_UNUSED (froms),
3057 : const combined_fn ARG_UNUSED (tos))
3058 : {
3059 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3060 0 : if (optimize && canonicalize_math_p ()
3061 0 : && targetm.libc_has_function (function_c99_misc, NULL_TREE)
3062 : )
3063 : {
3064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail981;
3065 0 : {
3066 0 : tree res_op0;
3067 0 : {
3068 0 : tree _o1[1], _r1;
3069 0 : _o1[0] = captures[0];
3070 0 : _r1 = maybe_build_call_expr_loc (loc, tos, TREE_TYPE (_o1[0]), 1, _o1[0]);
3071 0 : if (!_r1)
3072 0 : goto next_after_fail981;
3073 0 : res_op0 = _r1;
3074 : }
3075 0 : tree _r;
3076 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3077 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 776, __FILE__, __LINE__, true);
3078 0 : return _r;
3079 : }
3080 : next_after_fail981:;
3081 : }
3082 : return NULL_TREE;
3083 : }
3084 :
3085 : tree
3086 0 : generic_simplify_580 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3087 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3088 : const combined_fn ARG_UNUSED (floors))
3089 : {
3090 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3091 0 : if (canonicalize_math_p ()
3092 : )
3093 : {
3094 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail988;
3095 0 : {
3096 0 : tree res_op0;
3097 0 : res_op0 = captures[0];
3098 0 : tree _r;
3099 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3100 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
3101 0 : return _r;
3102 : }
3103 0 : next_after_fail988:;
3104 : }
3105 : return NULL_TREE;
3106 : }
3107 :
3108 : tree
3109 0 : generic_simplify_588 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3111 : const combined_fn ARG_UNUSED (fmas))
3112 : {
3113 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3114 0 : if (canonicalize_math_after_vectorization_p ()
3115 : )
3116 : {
3117 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail996;
3118 : {
3119 : tree res_op0;
3120 : res_op0 = captures[0];
3121 : tree res_op1;
3122 : res_op1 = captures[1];
3123 : tree res_op2;
3124 : res_op2 = captures[2];
3125 : tree _r;
3126 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
3127 : if (!_r)
3128 : goto next_after_fail996;
3129 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 791, __FILE__, __LINE__, true);
3130 : return _r;
3131 : }
3132 0 : next_after_fail996:;
3133 : }
3134 0 : return NULL_TREE;
3135 : }
3136 :
3137 : tree
3138 0 : generic_simplify_598 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3139 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3140 : {
3141 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3142 0 : if (canonicalize_math_after_vectorization_p ()
3143 : )
3144 : {
3145 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1006;
3146 : {
3147 : tree res_op0;
3148 : res_op0 = captures[0];
3149 : tree res_op1;
3150 : res_op1 = captures[1];
3151 : tree res_op2;
3152 : res_op2 = captures[2];
3153 : tree res_op3;
3154 : res_op3 = captures[3];
3155 : tree res_op4;
3156 : res_op4 = captures[4];
3157 : tree _r;
3158 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3159 : if (!_r)
3160 : goto next_after_fail1006;
3161 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 801, __FILE__, __LINE__, true);
3162 : return _r;
3163 : }
3164 0 : next_after_fail1006:;
3165 : }
3166 0 : return NULL_TREE;
3167 : }
3168 :
3169 : tree
3170 0 : generic_simplify_608 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3171 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3172 : const combined_fn ARG_UNUSED (bswap),
3173 : const combined_fn ARG_UNUSED (popcount))
3174 : {
3175 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3176 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3177 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3178 : )
3179 : {
3180 0 : {
3181 0 : tree type0 = TREE_TYPE (captures[0]);
3182 0 : tree type1 = TREE_TYPE (captures[1]);
3183 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3184 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3185 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3186 : )
3187 : {
3188 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1016;
3189 0 : {
3190 0 : tree res_op0;
3191 0 : {
3192 0 : tree _o1[1], _r1;
3193 0 : {
3194 0 : tree _o2[1], _r2;
3195 0 : _o2[0] = captures[2];
3196 0 : if (TREE_TYPE (_o2[0]) != type1)
3197 : {
3198 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3199 : }
3200 : else
3201 : _r2 = _o2[0];
3202 0 : _o1[0] = _r2;
3203 : }
3204 0 : if (TREE_TYPE (_o1[0]) != type0)
3205 : {
3206 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3207 : }
3208 : else
3209 : _r1 = _o1[0];
3210 0 : res_op0 = _r1;
3211 : }
3212 0 : tree _r;
3213 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3214 0 : if (!_r)
3215 0 : goto next_after_fail1016;
3216 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 808, __FILE__, __LINE__, true);
3217 0 : return _r;
3218 : }
3219 : next_after_fail1016:;
3220 : }
3221 : }
3222 : }
3223 : return NULL_TREE;
3224 : }
3225 :
3226 : tree
3227 0 : generic_simplify_620 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3228 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3229 : const combined_fn ARG_UNUSED (reduc))
3230 : {
3231 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3232 0 : {
3233 0 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3234 0 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3235 0 : tree elt = ctor_single_nonzero_element (ctor);
3236 0 : if (elt
3237 0 : && types_match (type, TREE_TYPE (elt))
3238 0 : && !HONOR_SNANS (type)
3239 0 : && !HONOR_SIGNED_ZEROS (type)
3240 : )
3241 : {
3242 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1029;
3243 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3244 0 : {
3245 0 : tree _r;
3246 0 : _r = elt;
3247 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 817, __FILE__, __LINE__, true);
3248 0 : return _r;
3249 : }
3250 : next_after_fail1029:;
3251 : }
3252 : }
3253 : return NULL_TREE;
3254 : }
3255 :
3256 : tree
3257 6377735 : generic_simplify_FLOAT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3258 : {
3259 6377735 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3260 6377735 : {
3261 6377735 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3262 12755470 : if ((
3263 :
3264 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3265 : || (
3266 : 1
3267 6377735 : && type == TREE_TYPE (captures[0]))
3268 : )
3269 : {
3270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
3271 0 : {
3272 0 : tree _r;
3273 0 : _r = captures[0];
3274 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 831, __FILE__, __LINE__, true);
3275 0 : return _r;
3276 : }
3277 0 : next_after_fail1096:;
3278 : }
3279 : }
3280 6377735 : switch (TREE_CODE (_p0))
3281 : {
3282 544816 : CASE_CONVERT:
3283 544816 : {
3284 544816 : tree _q20 = TREE_OPERAND (_p0, 0);
3285 544816 : {
3286 544816 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3287 544816 : {
3288 544816 : tree inside_type = TREE_TYPE (captures[1]);
3289 544816 : tree inter_type = TREE_TYPE (captures[0]);
3290 544816 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3291 544816 : int inside_ptr = POINTER_TYPE_P (inside_type);
3292 544816 : int inside_float = FLOAT_TYPE_P (inside_type);
3293 544816 : int inside_vec = VECTOR_TYPE_P (inside_type);
3294 544816 : unsigned int inside_prec = element_precision (inside_type);
3295 544816 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3296 544816 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3297 544816 : int inter_ptr = POINTER_TYPE_P (inter_type);
3298 544816 : int inter_float = FLOAT_TYPE_P (inter_type);
3299 544816 : int inter_vec = VECTOR_TYPE_P (inter_type);
3300 544816 : unsigned int inter_prec = element_precision (inter_type);
3301 544816 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3302 544816 : int final_int = INTEGRAL_TYPE_P (type);
3303 544816 : int final_ptr = POINTER_TYPE_P (type);
3304 544816 : int final_float = FLOAT_TYPE_P (type);
3305 544816 : int final_vec = VECTOR_TYPE_P (type);
3306 544816 : unsigned int final_prec = element_precision (type);
3307 544816 : int final_unsignedp = TYPE_UNSIGNED (type);
3308 544816 : if (((
3309 :
3310 : && useless_type_conversion_p (type, inside_type))
3311 : || (
3312 : 1
3313 544816 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3314 0 : && (((inter_int || inter_ptr) && final_int)
3315 0 : || (inter_float && final_float))
3316 544816 : && inter_prec >= final_prec
3317 : )
3318 : {
3319 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
3320 0 : {
3321 0 : tree res_op0;
3322 0 : res_op0 = captures[1];
3323 0 : tree _r;
3324 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3325 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
3326 0 : return _r;
3327 : }
3328 0 : next_after_fail1097:;
3329 : }
3330 : else
3331 : {
3332 544816 : if (((inter_int && inside_int) || (inter_float && inside_float))
3333 544810 : && (final_int || final_float)
3334 544810 : && inter_prec >= inside_prec
3335 543823 : && (inter_float || inter_unsignedp == inside_unsignedp)
3336 : )
3337 : {
3338 541436 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
3339 541436 : {
3340 541436 : tree res_op0;
3341 541436 : res_op0 = captures[1];
3342 541436 : tree _r;
3343 541436 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3344 541436 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 833, __FILE__, __LINE__, true);
3345 541436 : return _r;
3346 : }
3347 0 : next_after_fail1098:;
3348 0 : }
3349 : else
3350 : {
3351 3380 : if (inside_int && inter_int && final_int
3352 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3353 0 : && inside_unsignedp && !inter_unsignedp)
3354 0 : || final_prec == inter_prec
3355 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3356 0 : && !inside_unsignedp && inter_unsignedp))
3357 : )
3358 : {
3359 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1099;
3360 0 : {
3361 0 : tree res_op0;
3362 0 : res_op0 = captures[1];
3363 0 : tree _r;
3364 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3365 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3366 0 : return _r;
3367 : }
3368 0 : next_after_fail1099:;
3369 0 : }
3370 : else
3371 : {
3372 3380 : if (! inside_float && ! inter_float && ! final_float
3373 : && ! inside_vec && ! inter_vec && ! final_vec
3374 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3375 0 : && ! (inside_int && inter_int
3376 0 : && inter_unsignedp != inside_unsignedp
3377 0 : && inter_prec < final_prec)
3378 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3379 0 : == (final_unsignedp && final_prec > inter_prec))
3380 0 : && ! (inside_ptr && inter_prec != final_prec)
3381 0 : && ! (final_ptr && inside_prec != inter_prec)
3382 : )
3383 : {
3384 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1100;
3385 0 : {
3386 0 : tree res_op0;
3387 0 : res_op0 = captures[1];
3388 0 : tree _r;
3389 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3390 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
3391 0 : return _r;
3392 : }
3393 0 : next_after_fail1100:;
3394 0 : }
3395 : else
3396 : {
3397 3380 : if (inside_int && inter_int && final_int
3398 3374 : && final_prec <= inside_prec
3399 0 : && inter_prec >= inside_prec
3400 : )
3401 : {
3402 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1101;
3403 0 : {
3404 0 : tree res_op0;
3405 0 : res_op0 = captures[1];
3406 0 : tree _r;
3407 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3408 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 836, __FILE__, __LINE__, true);
3409 0 : return _r;
3410 : }
3411 0 : next_after_fail1101:;
3412 0 : }
3413 : else
3414 : {
3415 : if (0
3416 : && final_int && inter_int && inside_int
3417 : && final_prec >= inside_prec
3418 : && inside_prec > inter_prec
3419 : && inter_unsignedp
3420 : )
3421 : {
3422 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1102;
3423 : {
3424 : tree res_op0;
3425 : {
3426 : tree _o1[2], _r1;
3427 : _o1[0] = captures[1];
3428 : _o1[1] = wide_int_to_tree
3429 : (inside_type,
3430 : wi::mask (inter_prec, false,
3431 : TYPE_PRECISION (inside_type)));
3432 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3433 : res_op0 = _r1;
3434 : }
3435 : tree _r;
3436 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3437 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 837, __FILE__, __LINE__, true);
3438 : return _r;
3439 : }
3440 : next_after_fail1102:;
3441 : }
3442 : else
3443 : {
3444 : if (0
3445 : && inside_int && inter_float && final_int &&
3446 : (unsigned) significand_size (TYPE_MODE (inter_type))
3447 : >= inside_prec - !inside_unsignedp
3448 : )
3449 : {
3450 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1103;
3451 : {
3452 : tree res_op0;
3453 : res_op0 = captures[1];
3454 : tree _r;
3455 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3456 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
3457 : return _r;
3458 : }
3459 : next_after_fail1103:;
3460 : }
3461 : }
3462 : }
3463 : }
3464 : }
3465 : }
3466 : }
3467 : }
3468 : }
3469 3380 : break;
3470 : }
3471 0 : case FLOAT_EXPR:
3472 0 : {
3473 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3474 0 : {
3475 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3476 0 : {
3477 0 : tree inside_type = TREE_TYPE (captures[1]);
3478 0 : tree inter_type = TREE_TYPE (captures[0]);
3479 0 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3480 0 : int inside_ptr = POINTER_TYPE_P (inside_type);
3481 0 : int inside_float = FLOAT_TYPE_P (inside_type);
3482 0 : int inside_vec = VECTOR_TYPE_P (inside_type);
3483 0 : unsigned int inside_prec = element_precision (inside_type);
3484 0 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3485 0 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3486 0 : int inter_ptr = POINTER_TYPE_P (inter_type);
3487 0 : int inter_float = FLOAT_TYPE_P (inter_type);
3488 0 : int inter_vec = VECTOR_TYPE_P (inter_type);
3489 0 : unsigned int inter_prec = element_precision (inter_type);
3490 0 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3491 0 : int final_int = INTEGRAL_TYPE_P (type);
3492 0 : int final_ptr = POINTER_TYPE_P (type);
3493 0 : int final_float = FLOAT_TYPE_P (type);
3494 0 : int final_vec = VECTOR_TYPE_P (type);
3495 0 : unsigned int final_prec = element_precision (type);
3496 0 : int final_unsignedp = TYPE_UNSIGNED (type);
3497 0 : if (((
3498 :
3499 : && useless_type_conversion_p (type, inside_type))
3500 : || (
3501 : 1
3502 0 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3503 0 : && (((inter_int || inter_ptr) && final_int)
3504 0 : || (inter_float && final_float))
3505 0 : && inter_prec >= final_prec
3506 : )
3507 : {
3508 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1104;
3509 0 : {
3510 0 : tree res_op0;
3511 0 : res_op0 = captures[1];
3512 0 : tree _r;
3513 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3514 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
3515 0 : return _r;
3516 : }
3517 0 : next_after_fail1104:;
3518 : }
3519 : else
3520 : {
3521 0 : if (((inter_int && inside_int) || (inter_float && inside_float))
3522 0 : && (final_int || final_float)
3523 0 : && inter_prec >= inside_prec
3524 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
3525 : )
3526 : {
3527 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1105;
3528 0 : {
3529 0 : tree res_op0;
3530 0 : res_op0 = captures[1];
3531 0 : tree _r;
3532 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3533 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 833, __FILE__, __LINE__, true);
3534 0 : return _r;
3535 : }
3536 0 : next_after_fail1105:;
3537 0 : }
3538 : else
3539 : {
3540 0 : if (inside_int && inter_int && final_int
3541 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3542 0 : && inside_unsignedp && !inter_unsignedp)
3543 0 : || final_prec == inter_prec
3544 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3545 0 : && !inside_unsignedp && inter_unsignedp))
3546 : )
3547 : {
3548 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1106;
3549 0 : {
3550 0 : tree res_op0;
3551 0 : res_op0 = captures[1];
3552 0 : tree _r;
3553 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3554 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3555 0 : return _r;
3556 : }
3557 0 : next_after_fail1106:;
3558 0 : }
3559 : else
3560 : {
3561 0 : if (! inside_float && ! inter_float && ! final_float
3562 : && ! inside_vec && ! inter_vec && ! final_vec
3563 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3564 0 : && ! (inside_int && inter_int
3565 0 : && inter_unsignedp != inside_unsignedp
3566 0 : && inter_prec < final_prec)
3567 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3568 0 : == (final_unsignedp && final_prec > inter_prec))
3569 0 : && ! (inside_ptr && inter_prec != final_prec)
3570 0 : && ! (final_ptr && inside_prec != inter_prec)
3571 : )
3572 : {
3573 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1107;
3574 0 : {
3575 0 : tree res_op0;
3576 0 : res_op0 = captures[1];
3577 0 : tree _r;
3578 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3579 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
3580 0 : return _r;
3581 : }
3582 0 : next_after_fail1107:;
3583 0 : }
3584 : else
3585 : {
3586 0 : if (inside_int && inter_int && final_int
3587 0 : && final_prec <= inside_prec
3588 0 : && inter_prec >= inside_prec
3589 : )
3590 : {
3591 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1108;
3592 0 : {
3593 0 : tree res_op0;
3594 0 : res_op0 = captures[1];
3595 0 : tree _r;
3596 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3597 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 836, __FILE__, __LINE__, true);
3598 0 : return _r;
3599 : }
3600 0 : next_after_fail1108:;
3601 0 : }
3602 : else
3603 : {
3604 : if (0
3605 : && final_int && inter_int && inside_int
3606 : && final_prec >= inside_prec
3607 : && inside_prec > inter_prec
3608 : && inter_unsignedp
3609 : )
3610 : {
3611 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1109;
3612 : {
3613 : tree res_op0;
3614 : {
3615 : tree _o1[2], _r1;
3616 : _o1[0] = captures[1];
3617 : _o1[1] = wide_int_to_tree
3618 : (inside_type,
3619 : wi::mask (inter_prec, false,
3620 : TYPE_PRECISION (inside_type)));
3621 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3622 : res_op0 = _r1;
3623 : }
3624 : tree _r;
3625 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3626 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 837, __FILE__, __LINE__, true);
3627 : return _r;
3628 : }
3629 : next_after_fail1109:;
3630 : }
3631 : else
3632 : {
3633 : if (0
3634 : && inside_int && inter_float && final_int &&
3635 : (unsigned) significand_size (TYPE_MODE (inter_type))
3636 : >= inside_prec - !inside_unsignedp
3637 : )
3638 : {
3639 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1110;
3640 : {
3641 : tree res_op0;
3642 : res_op0 = captures[1];
3643 : tree _r;
3644 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3645 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
3646 : return _r;
3647 : }
3648 : next_after_fail1110:;
3649 : }
3650 : }
3651 : }
3652 : }
3653 : }
3654 : }
3655 : }
3656 : }
3657 : }
3658 0 : break;
3659 : }
3660 : default:;
3661 : }
3662 : return NULL_TREE;
3663 : }
3664 :
3665 : tree
3666 32388294 : generic_simplify_MINUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3667 : {
3668 32388294 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3669 32388294 : if (integer_zerop (_p1))
3670 : {
3671 1982319 : {
3672 1982319 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3673 1982319 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1264;
3674 1982319 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1264;
3675 1982319 : {
3676 1982319 : tree res_op0;
3677 1982319 : res_op0 = captures[0];
3678 1982319 : tree _r;
3679 1982319 : _r = non_lvalue_loc (loc, res_op0);
3680 1982319 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3681 1982319 : return _r;
3682 : }
3683 : next_after_fail1264:;
3684 : }
3685 : }
3686 30405975 : if (real_zerop (_p1))
3687 : {
3688 1140 : {
3689 1140 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3690 1140 : if (fold_real_zero_addition_p (type, captures[0], captures[1], 1)
3691 : )
3692 : {
3693 752 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1265;
3694 752 : {
3695 752 : tree res_op0;
3696 752 : res_op0 = captures[0];
3697 752 : tree _r;
3698 752 : _r = non_lvalue_loc (loc, res_op0);
3699 752 : if (TREE_SIDE_EFFECTS (captures[1]))
3700 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3701 752 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
3702 752 : return _r;
3703 : }
3704 0 : next_after_fail1265:;
3705 : }
3706 : }
3707 : }
3708 30405223 : switch (TREE_CODE (_p0))
3709 : {
3710 2261026 : case PLUS_EXPR:
3711 2261026 : {
3712 2261026 : tree _q20 = TREE_OPERAND (_p0, 0);
3713 2261026 : tree _q21 = TREE_OPERAND (_p0, 1);
3714 2261026 : switch (TREE_CODE (_q21))
3715 : {
3716 149003 : case REAL_CST:
3717 149003 : {
3718 149003 : switch (TREE_CODE (_p1))
3719 : {
3720 11 : case REAL_CST:
3721 11 : {
3722 11 : {
3723 11 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3724 11 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR);
3725 11 : if (res) return res;
3726 : }
3727 8 : break;
3728 : }
3729 : default:;
3730 : }
3731 : break;
3732 : }
3733 : default:;
3734 : }
3735 : break;
3736 : }
3737 1215219 : case MINUS_EXPR:
3738 1215219 : {
3739 1215219 : tree _q20 = TREE_OPERAND (_p0, 0);
3740 1215219 : tree _q21 = TREE_OPERAND (_p0, 1);
3741 1215219 : switch (TREE_CODE (_q21))
3742 : {
3743 93674 : case REAL_CST:
3744 93674 : {
3745 93674 : switch (TREE_CODE (_p1))
3746 : {
3747 40 : case REAL_CST:
3748 40 : {
3749 40 : {
3750 40 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3751 40 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, MINUS_EXPR, MINUS_EXPR);
3752 40 : if (res) return res;
3753 : }
3754 38 : break;
3755 : }
3756 : default:;
3757 : }
3758 : break;
3759 : }
3760 : default:;
3761 : }
3762 : break;
3763 : }
3764 30405218 : default:;
3765 : }
3766 30405218 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
3767 : {
3768 204732 : {
3769 204732 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3770 203990 : if (!FLOAT_TYPE_P (type)
3771 204760 : || (!tree_expr_maybe_nan_p (captures[0])
3772 107 : && !tree_expr_maybe_infinite_p (captures[0])
3773 15 : && (!HONOR_SIGN_DEPENDENT_ROUNDING (type)
3774 1 : || !HONOR_SIGNED_ZEROS (type)))
3775 : )
3776 : {
3777 203976 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1266;
3778 203976 : {
3779 203976 : tree _r;
3780 203976 : _r = build_zero_cst (type);
3781 203976 : if (TREE_SIDE_EFFECTS (captures[0]))
3782 36 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3783 203976 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3784 203976 : return _r;
3785 : }
3786 0 : next_after_fail1266:;
3787 : }
3788 : }
3789 : }
3790 30201242 : switch (TREE_CODE (_p0))
3791 : {
3792 8329029 : CASE_CONVERT:
3793 8329029 : {
3794 8329029 : tree _q20 = TREE_OPERAND (_p0, 0);
3795 8329029 : switch (TREE_CODE (_p1))
3796 : {
3797 4136117 : CASE_CONVERT:
3798 4136117 : {
3799 4136117 : tree _q40 = TREE_OPERAND (_p1, 0);
3800 4136117 : switch (TREE_CODE (_q40))
3801 : {
3802 102344 : case MULT_EXPR:
3803 102344 : {
3804 102344 : tree _q50 = TREE_OPERAND (_q40, 0);
3805 102344 : tree _q51 = TREE_OPERAND (_q40, 1);
3806 102344 : switch (TREE_CODE (_q50))
3807 : {
3808 21 : case TRUNC_DIV_EXPR:
3809 21 : {
3810 21 : tree _q60 = TREE_OPERAND (_q50, 0);
3811 21 : tree _q61 = TREE_OPERAND (_q50, 1);
3812 21 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q20, 0))
3813 : {
3814 21 : if ((_q51 == _q61 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q61, 0))
3815 : {
3816 21 : {
3817 21 : tree captures[4] ATTRIBUTE_UNUSED = { _q60, _q61, _q20, _q61 };
3818 21 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3819 21 : if (res) return res;
3820 : }
3821 : }
3822 : }
3823 : break;
3824 : }
3825 102323 : default:;
3826 : }
3827 102323 : switch (TREE_CODE (_q51))
3828 : {
3829 0 : case TRUNC_DIV_EXPR:
3830 0 : {
3831 0 : tree _q70 = TREE_OPERAND (_q51, 0);
3832 0 : tree _q71 = TREE_OPERAND (_q51, 1);
3833 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q20, 0))
3834 : {
3835 0 : if ((_q71 == _q50 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q50, 0))
3836 : {
3837 0 : {
3838 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q70, _q71, _q20, _q50 };
3839 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3840 0 : if (res) return res;
3841 : }
3842 : }
3843 : }
3844 : break;
3845 : }
3846 : default:;
3847 : }
3848 : break;
3849 : }
3850 : default:;
3851 : }
3852 : break;
3853 : }
3854 148610 : case MULT_EXPR:
3855 148610 : {
3856 148610 : tree _q40 = TREE_OPERAND (_p1, 0);
3857 148610 : tree _q41 = TREE_OPERAND (_p1, 1);
3858 148610 : switch (TREE_CODE (_q40))
3859 : {
3860 1733 : case TRUNC_DIV_EXPR:
3861 1733 : {
3862 1733 : tree _q50 = TREE_OPERAND (_q40, 0);
3863 1733 : tree _q51 = TREE_OPERAND (_q40, 1);
3864 1733 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
3865 : {
3866 10 : if ((_q41 == _q51 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q51, 0))
3867 : {
3868 10 : {
3869 10 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q20, _q51 };
3870 10 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3871 10 : if (res) return res;
3872 : }
3873 : }
3874 : }
3875 : break;
3876 : }
3877 148600 : default:;
3878 : }
3879 148600 : switch (TREE_CODE (_q41))
3880 : {
3881 0 : case TRUNC_DIV_EXPR:
3882 0 : {
3883 0 : tree _q60 = TREE_OPERAND (_q41, 0);
3884 0 : tree _q61 = TREE_OPERAND (_q41, 1);
3885 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q20, 0))
3886 : {
3887 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || operand_equal_p (_q61, _q40, 0))
3888 : {
3889 0 : {
3890 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q60, _q61, _q20, _q40 };
3891 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3892 0 : if (res) return res;
3893 : }
3894 : }
3895 : }
3896 : break;
3897 : }
3898 : default:;
3899 : }
3900 : break;
3901 : }
3902 : default:;
3903 : }
3904 : break;
3905 : }
3906 30201211 : default:;
3907 : }
3908 30201211 : switch (TREE_CODE (_p1))
3909 : {
3910 7437365 : CASE_CONVERT:
3911 7437365 : {
3912 7437365 : tree _q30 = TREE_OPERAND (_p1, 0);
3913 7437365 : switch (TREE_CODE (_q30))
3914 : {
3915 136781 : case MULT_EXPR:
3916 136781 : {
3917 136781 : tree _q40 = TREE_OPERAND (_q30, 0);
3918 136781 : tree _q41 = TREE_OPERAND (_q30, 1);
3919 136781 : switch (TREE_CODE (_q40))
3920 : {
3921 12 : case TRUNC_DIV_EXPR:
3922 12 : {
3923 12 : tree _q50 = TREE_OPERAND (_q40, 0);
3924 12 : tree _q51 = TREE_OPERAND (_q40, 1);
3925 12 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _p0, 0))
3926 : {
3927 2 : if ((_q41 == _q51 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q51, 0))
3928 : {
3929 2 : {
3930 2 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _p0, _q51 };
3931 2 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3932 2 : if (res) return res;
3933 : }
3934 : }
3935 : }
3936 : break;
3937 : }
3938 136779 : default:;
3939 : }
3940 136779 : switch (TREE_CODE (_q41))
3941 : {
3942 0 : case TRUNC_DIV_EXPR:
3943 0 : {
3944 0 : tree _q60 = TREE_OPERAND (_q41, 0);
3945 0 : tree _q61 = TREE_OPERAND (_q41, 1);
3946 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _p0, 0))
3947 : {
3948 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || operand_equal_p (_q61, _q40, 0))
3949 : {
3950 0 : {
3951 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q60, _q61, _p0, _q40 };
3952 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3953 0 : if (res) return res;
3954 : }
3955 : }
3956 : }
3957 : break;
3958 : }
3959 : default:;
3960 : }
3961 : break;
3962 : }
3963 : default:;
3964 : }
3965 : break;
3966 : }
3967 2016519 : case MULT_EXPR:
3968 2016519 : {
3969 2016519 : tree _q30 = TREE_OPERAND (_p1, 0);
3970 2016519 : tree _q31 = TREE_OPERAND (_p1, 1);
3971 2016519 : switch (TREE_CODE (_q30))
3972 : {
3973 2176 : case TRUNC_DIV_EXPR:
3974 2176 : {
3975 2176 : tree _q40 = TREE_OPERAND (_q30, 0);
3976 2176 : tree _q41 = TREE_OPERAND (_q30, 1);
3977 2176 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
3978 : {
3979 52 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _q41, 0))
3980 : {
3981 52 : {
3982 52 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _p0, _q41 };
3983 52 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
3984 52 : if (res) return res;
3985 : }
3986 : }
3987 : }
3988 : break;
3989 : }
3990 2016467 : default:;
3991 : }
3992 2016467 : switch (TREE_CODE (_q31))
3993 : {
3994 0 : case TRUNC_DIV_EXPR:
3995 0 : {
3996 0 : tree _q50 = TREE_OPERAND (_q31, 0);
3997 0 : tree _q51 = TREE_OPERAND (_q31, 1);
3998 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _p0, 0))
3999 : {
4000 0 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q30, 0))
4001 : {
4002 0 : {
4003 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _p0, _q30 };
4004 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
4005 0 : if (res) return res;
4006 : }
4007 : }
4008 : }
4009 : break;
4010 : }
4011 : default:;
4012 : }
4013 : break;
4014 : }
4015 30201157 : default:;
4016 : }
4017 30201157 : switch (TREE_CODE (_p0))
4018 : {
4019 1833818 : case MULT_EXPR:
4020 1833818 : {
4021 1833818 : tree _q20 = TREE_OPERAND (_p0, 0);
4022 1833818 : tree _q21 = TREE_OPERAND (_p0, 1);
4023 1833818 : switch (TREE_CODE (_q21))
4024 : {
4025 609 : case PLUS_EXPR:
4026 609 : {
4027 609 : tree _q40 = TREE_OPERAND (_q21, 0);
4028 609 : tree _q41 = TREE_OPERAND (_q21, 1);
4029 609 : switch (TREE_CODE (_q40))
4030 : {
4031 0 : case TRUNC_DIV_EXPR:
4032 0 : {
4033 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4034 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4035 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4036 : {
4037 0 : if (integer_onep (_q41))
4038 : {
4039 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4040 : {
4041 0 : {
4042 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q40, _q50 };
4043 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures);
4044 0 : if (res) return res;
4045 : }
4046 : }
4047 : }
4048 : }
4049 : break;
4050 : }
4051 : default:;
4052 : }
4053 : break;
4054 : }
4055 1833818 : default:;
4056 : }
4057 1833818 : switch (TREE_CODE (_q20))
4058 : {
4059 102673 : case PLUS_EXPR:
4060 102673 : {
4061 102673 : tree _q30 = TREE_OPERAND (_q20, 0);
4062 102673 : tree _q31 = TREE_OPERAND (_q20, 1);
4063 102673 : switch (TREE_CODE (_q30))
4064 : {
4065 1 : case TRUNC_DIV_EXPR:
4066 1 : {
4067 1 : tree _q40 = TREE_OPERAND (_q30, 0);
4068 1 : tree _q41 = TREE_OPERAND (_q30, 1);
4069 1 : if (integer_onep (_q31))
4070 : {
4071 1 : if ((_q21 == _q41 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q41, 0) && types_match (_q21, _q41)))
4072 : {
4073 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4074 : {
4075 1 : {
4076 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q41, _q20, _q30, _q40 };
4077 1 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures);
4078 1 : if (res) return res;
4079 : }
4080 : }
4081 : }
4082 : }
4083 : break;
4084 : }
4085 : default:;
4086 : }
4087 : break;
4088 : }
4089 : default:;
4090 : }
4091 : break;
4092 : }
4093 1266 : case LSHIFT_EXPR:
4094 1266 : {
4095 1266 : tree _q20 = TREE_OPERAND (_p0, 0);
4096 1266 : tree _q21 = TREE_OPERAND (_p0, 1);
4097 1266 : switch (TREE_CODE (_p1))
4098 : {
4099 0 : case LSHIFT_EXPR:
4100 0 : {
4101 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4102 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4103 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4104 : {
4105 0 : {
4106 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
4107 0 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures, MINUS_EXPR);
4108 0 : if (res) return res;
4109 : }
4110 : }
4111 : break;
4112 : }
4113 : default:;
4114 : }
4115 : break;
4116 : }
4117 1183 : case BIT_AND_EXPR:
4118 1183 : {
4119 1183 : tree _q20 = TREE_OPERAND (_p0, 0);
4120 1183 : tree _q21 = TREE_OPERAND (_p0, 1);
4121 1183 : switch (TREE_CODE (_q21))
4122 : {
4123 0 : case BIT_NOT_EXPR:
4124 0 : {
4125 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4126 0 : switch (TREE_CODE (_p1))
4127 : {
4128 0 : case BIT_AND_EXPR:
4129 0 : {
4130 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4131 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4132 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4133 : {
4134 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
4135 : {
4136 0 : {
4137 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _p1 };
4138 0 : tree res = generic_simplify_86 (loc, type, _p0, _p1, captures);
4139 0 : if (res) return res;
4140 : }
4141 : }
4142 : }
4143 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4144 : {
4145 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
4146 : {
4147 0 : {
4148 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _p1 };
4149 0 : tree res = generic_simplify_86 (loc, type, _p0, _p1, captures);
4150 0 : if (res) return res;
4151 : }
4152 : }
4153 : }
4154 : break;
4155 : }
4156 : default:;
4157 : }
4158 : break;
4159 : }
4160 1183 : default:;
4161 : }
4162 1183 : switch (TREE_CODE (_q20))
4163 : {
4164 27 : case BIT_NOT_EXPR:
4165 27 : {
4166 27 : tree _q30 = TREE_OPERAND (_q20, 0);
4167 27 : switch (TREE_CODE (_p1))
4168 : {
4169 21 : case BIT_AND_EXPR:
4170 21 : {
4171 21 : tree _q60 = TREE_OPERAND (_p1, 0);
4172 21 : tree _q61 = TREE_OPERAND (_p1, 1);
4173 21 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
4174 : {
4175 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
4176 : {
4177 0 : {
4178 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q30, _p1 };
4179 0 : tree res = generic_simplify_86 (loc, type, _p0, _p1, captures);
4180 0 : if (res) return res;
4181 : }
4182 : }
4183 : }
4184 21 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4185 : {
4186 21 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
4187 : {
4188 21 : {
4189 21 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q30, _p1 };
4190 21 : tree res = generic_simplify_86 (loc, type, _p0, _p1, captures);
4191 21 : if (res) return res;
4192 : }
4193 : }
4194 : }
4195 : break;
4196 : }
4197 : default:;
4198 : }
4199 : break;
4200 : }
4201 1162 : default:;
4202 : }
4203 1162 : switch (TREE_CODE (_q21))
4204 : {
4205 1122 : case INTEGER_CST:
4206 1122 : {
4207 1122 : switch (TREE_CODE (_p1))
4208 : {
4209 22 : case BIT_AND_EXPR:
4210 22 : {
4211 22 : tree _q50 = TREE_OPERAND (_p1, 0);
4212 22 : tree _q51 = TREE_OPERAND (_p1, 1);
4213 22 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4214 : {
4215 0 : switch (TREE_CODE (_q51))
4216 : {
4217 0 : case INTEGER_CST:
4218 0 : {
4219 0 : {
4220 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
4221 0 : if (~wi::to_wide (captures[2]) == wi::to_wide (captures[4])
4222 : )
4223 : {
4224 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1267;
4225 0 : {
4226 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1267;
4227 0 : tree res_op0;
4228 0 : {
4229 0 : tree _o1[2], _r1;
4230 0 : _o1[0] = captures[1];
4231 0 : _o1[1] = unshare_expr (captures[4]);
4232 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4233 0 : res_op0 = _r1;
4234 : }
4235 0 : tree res_op1;
4236 0 : res_op1 = captures[4];
4237 0 : tree _r;
4238 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
4239 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4240 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4241 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
4242 0 : return _r;
4243 : }
4244 0 : next_after_fail1267:;
4245 : }
4246 : }
4247 0 : break;
4248 : }
4249 : default:;
4250 : }
4251 : }
4252 : break;
4253 : }
4254 : default:;
4255 : }
4256 : break;
4257 : }
4258 1162 : default:;
4259 : }
4260 1162 : switch (TREE_CODE (_p1))
4261 : {
4262 25 : case BIT_AND_EXPR:
4263 25 : {
4264 25 : tree _q50 = TREE_OPERAND (_p1, 0);
4265 25 : tree _q51 = TREE_OPERAND (_p1, 1);
4266 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4267 : {
4268 0 : switch (TREE_CODE (_q51))
4269 : {
4270 0 : case BIT_NOT_EXPR:
4271 0 : {
4272 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4273 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
4274 : {
4275 0 : {
4276 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4277 0 : tree res = generic_simplify_87 (loc, type, _p0, _p1, captures);
4278 0 : if (res) return res;
4279 : }
4280 : }
4281 : break;
4282 : }
4283 : default:;
4284 : }
4285 : }
4286 25 : switch (TREE_CODE (_q50))
4287 : {
4288 0 : case BIT_NOT_EXPR:
4289 0 : {
4290 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4291 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
4292 : {
4293 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4294 : {
4295 0 : {
4296 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4297 0 : tree res = generic_simplify_87 (loc, type, _p0, _p1, captures);
4298 0 : if (res) return res;
4299 : }
4300 : }
4301 : }
4302 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4303 : {
4304 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4305 : {
4306 0 : {
4307 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1 };
4308 0 : tree res = generic_simplify_87 (loc, type, _p0, _p1, captures);
4309 0 : if (res) return res;
4310 : }
4311 : }
4312 : }
4313 : break;
4314 : }
4315 25 : default:;
4316 : }
4317 25 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4318 : {
4319 0 : switch (TREE_CODE (_q51))
4320 : {
4321 0 : case BIT_NOT_EXPR:
4322 0 : {
4323 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4324 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4325 : {
4326 0 : {
4327 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1 };
4328 0 : tree res = generic_simplify_87 (loc, type, _p0, _p1, captures);
4329 0 : if (res) return res;
4330 : }
4331 : }
4332 : break;
4333 : }
4334 : default:;
4335 : }
4336 : }
4337 : break;
4338 : }
4339 2 : case PLUS_EXPR:
4340 2 : {
4341 2 : tree _q50 = TREE_OPERAND (_p1, 0);
4342 2 : tree _q51 = TREE_OPERAND (_p1, 1);
4343 2 : switch (TREE_CODE (_q50))
4344 : {
4345 2 : case BIT_IOR_EXPR:
4346 2 : {
4347 2 : tree _q60 = TREE_OPERAND (_q50, 0);
4348 2 : tree _q61 = TREE_OPERAND (_q50, 1);
4349 2 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4350 : {
4351 2 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
4352 : {
4353 2 : if (integer_onep (_q51))
4354 : {
4355 2 : {
4356 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4357 2 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4358 2 : if (res) return res;
4359 : }
4360 : }
4361 : }
4362 : }
4363 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
4364 : {
4365 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
4366 : {
4367 0 : if (integer_onep (_q51))
4368 : {
4369 0 : {
4370 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4371 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4372 0 : if (res) return res;
4373 : }
4374 : }
4375 : }
4376 : }
4377 : break;
4378 : }
4379 0 : default:;
4380 : }
4381 0 : {
4382 0 : tree _q50_pops[1];
4383 0 : if (tree_nop_convert (_q50, _q50_pops))
4384 : {
4385 0 : tree _q60 = _q50_pops[0];
4386 0 : switch (TREE_CODE (_q60))
4387 : {
4388 0 : case BIT_IOR_EXPR:
4389 0 : {
4390 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4391 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4392 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4393 : {
4394 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
4395 : {
4396 0 : if (integer_onep (_q51))
4397 : {
4398 0 : {
4399 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4400 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4401 0 : if (res) return res;
4402 : }
4403 : }
4404 : }
4405 : }
4406 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
4407 : {
4408 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
4409 : {
4410 0 : if (integer_onep (_q51))
4411 : {
4412 0 : {
4413 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4414 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4415 0 : if (res) return res;
4416 : }
4417 : }
4418 : }
4419 : }
4420 : break;
4421 : }
4422 : default:;
4423 : }
4424 : }
4425 : }
4426 0 : break;
4427 : }
4428 1160 : default:;
4429 : }
4430 1160 : {
4431 1160 : tree _p1_pops[1];
4432 1160 : if (tree_nop_convert (_p1, _p1_pops))
4433 : {
4434 7 : tree _q50 = _p1_pops[0];
4435 7 : switch (TREE_CODE (_q50))
4436 : {
4437 0 : case PLUS_EXPR:
4438 0 : {
4439 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4440 0 : tree _q61 = TREE_OPERAND (_q50, 1);
4441 0 : switch (TREE_CODE (_q60))
4442 : {
4443 0 : case BIT_IOR_EXPR:
4444 0 : {
4445 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4446 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4447 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4448 : {
4449 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
4450 : {
4451 0 : if (integer_onep (_q61))
4452 : {
4453 0 : {
4454 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4455 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4456 0 : if (res) return res;
4457 : }
4458 : }
4459 : }
4460 : }
4461 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
4462 : {
4463 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
4464 : {
4465 0 : if (integer_onep (_q61))
4466 : {
4467 0 : {
4468 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4469 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4470 0 : if (res) return res;
4471 : }
4472 : }
4473 : }
4474 : }
4475 : break;
4476 : }
4477 0 : default:;
4478 : }
4479 0 : {
4480 0 : tree _q60_pops[1];
4481 0 : if (tree_nop_convert (_q60, _q60_pops))
4482 : {
4483 0 : tree _q70 = _q60_pops[0];
4484 0 : switch (TREE_CODE (_q70))
4485 : {
4486 0 : case BIT_IOR_EXPR:
4487 0 : {
4488 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4489 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4490 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
4491 : {
4492 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
4493 : {
4494 0 : if (integer_onep (_q61))
4495 : {
4496 0 : {
4497 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4498 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4499 0 : if (res) return res;
4500 : }
4501 : }
4502 : }
4503 : }
4504 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
4505 : {
4506 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
4507 : {
4508 0 : if (integer_onep (_q61))
4509 : {
4510 0 : {
4511 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4512 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
4513 0 : if (res) return res;
4514 : }
4515 : }
4516 : }
4517 : }
4518 : break;
4519 : }
4520 : default:;
4521 : }
4522 : }
4523 : }
4524 0 : break;
4525 : }
4526 : default:;
4527 : }
4528 : }
4529 : }
4530 1160 : break;
4531 : }
4532 2849 : case BIT_NOT_EXPR:
4533 2849 : {
4534 2849 : tree _q20 = TREE_OPERAND (_p0, 0);
4535 2849 : switch (TREE_CODE (_p1))
4536 : {
4537 22 : case BIT_NOT_EXPR:
4538 22 : {
4539 22 : tree _q40 = TREE_OPERAND (_p1, 0);
4540 22 : {
4541 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4542 22 : if (!TYPE_OVERFLOW_SANITIZED (type)
4543 : )
4544 : {
4545 9 : {
4546 9 : tree utype = unsigned_type_for (type);
4547 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1268;
4548 9 : {
4549 9 : tree res_op0;
4550 9 : {
4551 9 : tree _o1[2], _r1;
4552 9 : {
4553 9 : tree _o2[1], _r2;
4554 9 : _o2[0] = captures[1];
4555 9 : if (TREE_TYPE (_o2[0]) != utype)
4556 : {
4557 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
4558 : }
4559 : else
4560 : _r2 = _o2[0];
4561 9 : _o1[0] = _r2;
4562 : }
4563 9 : {
4564 9 : tree _o2[1], _r2;
4565 9 : _o2[0] = captures[0];
4566 9 : if (TREE_TYPE (_o2[0]) != utype)
4567 : {
4568 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
4569 : }
4570 : else
4571 : _r2 = _o2[0];
4572 9 : _o1[1] = _r2;
4573 : }
4574 9 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4575 9 : res_op0 = _r1;
4576 : }
4577 9 : tree _r;
4578 9 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4579 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
4580 9 : return _r;
4581 : }
4582 0 : next_after_fail1268:;
4583 : }
4584 : }
4585 : }
4586 13 : break;
4587 : }
4588 : default:;
4589 : }
4590 : break;
4591 : }
4592 2259221 : case PLUS_EXPR:
4593 2259221 : {
4594 2259221 : tree _q20 = TREE_OPERAND (_p0, 0);
4595 2259221 : tree _q21 = TREE_OPERAND (_p0, 1);
4596 2259221 : switch (TREE_CODE (_p1))
4597 : {
4598 14 : case BIT_IOR_EXPR:
4599 14 : {
4600 14 : tree _q50 = TREE_OPERAND (_p1, 0);
4601 14 : tree _q51 = TREE_OPERAND (_p1, 1);
4602 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4603 : {
4604 13 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4605 : {
4606 13 : {
4607 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4608 13 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
4609 13 : && !TYPE_SATURATING (type)
4610 : )
4611 : {
4612 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1269;
4613 0 : {
4614 0 : tree res_op0;
4615 0 : res_op0 = captures[0];
4616 0 : tree res_op1;
4617 0 : res_op1 = captures[1];
4618 0 : tree _r;
4619 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4620 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
4621 0 : return _r;
4622 : }
4623 0 : next_after_fail1269:;
4624 : }
4625 : }
4626 : }
4627 : }
4628 : break;
4629 : }
4630 80 : case BIT_AND_EXPR:
4631 80 : {
4632 80 : tree _q50 = TREE_OPERAND (_p1, 0);
4633 80 : tree _q51 = TREE_OPERAND (_p1, 1);
4634 80 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4635 : {
4636 25 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4637 : {
4638 13 : {
4639 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4640 13 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
4641 13 : && !TYPE_SATURATING (type)
4642 : )
4643 : {
4644 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1270;
4645 0 : {
4646 0 : tree res_op0;
4647 0 : res_op0 = captures[0];
4648 0 : tree res_op1;
4649 0 : res_op1 = captures[1];
4650 0 : tree _r;
4651 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
4652 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
4653 0 : return _r;
4654 : }
4655 0 : next_after_fail1270:;
4656 : }
4657 : }
4658 : }
4659 : }
4660 : break;
4661 : }
4662 2259221 : default:;
4663 : }
4664 2259221 : switch (TREE_CODE (_q20))
4665 : {
4666 593 : case BIT_AND_EXPR:
4667 593 : {
4668 593 : tree _q30 = TREE_OPERAND (_q20, 0);
4669 593 : tree _q31 = TREE_OPERAND (_q20, 1);
4670 593 : if (integer_all_onesp (_q21))
4671 : {
4672 1 : switch (TREE_CODE (_p1))
4673 : {
4674 1 : case BIT_IOR_EXPR:
4675 1 : {
4676 1 : tree _q70 = TREE_OPERAND (_p1, 0);
4677 1 : tree _q71 = TREE_OPERAND (_p1, 1);
4678 1 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
4679 : {
4680 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4681 : {
4682 1 : {
4683 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
4684 1 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4685 1 : if (res) return res;
4686 : }
4687 : }
4688 : }
4689 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
4690 : {
4691 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
4692 : {
4693 0 : {
4694 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
4695 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4696 0 : if (res) return res;
4697 : }
4698 : }
4699 : }
4700 : break;
4701 : }
4702 0 : default:;
4703 : }
4704 0 : {
4705 0 : tree _p1_pops[1];
4706 0 : if (tree_nop_convert (_p1, _p1_pops))
4707 : {
4708 0 : tree _q70 = _p1_pops[0];
4709 0 : switch (TREE_CODE (_q70))
4710 : {
4711 0 : case BIT_IOR_EXPR:
4712 0 : {
4713 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4714 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4715 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
4716 : {
4717 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
4718 : {
4719 0 : {
4720 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
4721 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4722 0 : if (res) return res;
4723 : }
4724 : }
4725 : }
4726 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
4727 : {
4728 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
4729 : {
4730 0 : {
4731 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
4732 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4733 0 : if (res) return res;
4734 : }
4735 : }
4736 : }
4737 : break;
4738 : }
4739 : default:;
4740 : }
4741 : }
4742 : }
4743 : }
4744 : break;
4745 : }
4746 2259220 : default:;
4747 : }
4748 2259220 : {
4749 2259220 : tree _q20_pops[1];
4750 2259220 : if (tree_nop_convert (_q20, _q20_pops))
4751 : {
4752 538589 : tree _q30 = _q20_pops[0];
4753 538589 : switch (TREE_CODE (_q30))
4754 : {
4755 0 : case BIT_AND_EXPR:
4756 0 : {
4757 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4758 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4759 0 : if (integer_all_onesp (_q21))
4760 : {
4761 0 : switch (TREE_CODE (_p1))
4762 : {
4763 0 : case BIT_IOR_EXPR:
4764 0 : {
4765 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4766 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4767 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4768 : {
4769 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
4770 : {
4771 0 : {
4772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
4773 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4774 0 : if (res) return res;
4775 : }
4776 : }
4777 : }
4778 0 : if ((_q80 == _q41 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q41, 0) && types_match (_q80, _q41)))
4779 : {
4780 0 : if ((_q81 == _q40 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q40, 0) && types_match (_q81, _q40)))
4781 : {
4782 0 : {
4783 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q40 };
4784 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4785 0 : if (res) return res;
4786 : }
4787 : }
4788 : }
4789 : break;
4790 : }
4791 0 : default:;
4792 : }
4793 0 : {
4794 0 : tree _p1_pops[1];
4795 0 : if (tree_nop_convert (_p1, _p1_pops))
4796 : {
4797 0 : tree _q80 = _p1_pops[0];
4798 0 : switch (TREE_CODE (_q80))
4799 : {
4800 0 : case BIT_IOR_EXPR:
4801 0 : {
4802 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4803 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4804 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
4805 : {
4806 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
4807 : {
4808 0 : {
4809 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
4810 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4811 0 : if (res) return res;
4812 : }
4813 : }
4814 : }
4815 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
4816 : {
4817 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
4818 : {
4819 0 : {
4820 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q40 };
4821 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4822 0 : if (res) return res;
4823 : }
4824 : }
4825 : }
4826 : break;
4827 : }
4828 : default:;
4829 : }
4830 : }
4831 : }
4832 : }
4833 : break;
4834 : }
4835 : default:;
4836 : }
4837 : }
4838 : }
4839 2259220 : break;
4840 : }
4841 77 : case BIT_IOR_EXPR:
4842 77 : {
4843 77 : tree _q20 = TREE_OPERAND (_p0, 0);
4844 77 : tree _q21 = TREE_OPERAND (_p0, 1);
4845 77 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4846 : {
4847 5 : {
4848 5 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4849 5 : tree res = generic_simplify_90 (loc, type, _p0, _p1, captures);
4850 5 : if (res) return res;
4851 : }
4852 : }
4853 72 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4854 : {
4855 0 : {
4856 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4857 0 : tree res = generic_simplify_90 (loc, type, _p0, _p1, captures);
4858 0 : if (res) return res;
4859 : }
4860 : }
4861 72 : switch (TREE_CODE (_p1))
4862 : {
4863 0 : case BIT_XOR_EXPR:
4864 0 : {
4865 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4866 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4867 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4868 : {
4869 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4870 : {
4871 0 : {
4872 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1271;
4874 0 : {
4875 0 : tree res_op0;
4876 0 : res_op0 = captures[0];
4877 0 : tree res_op1;
4878 0 : res_op1 = captures[1];
4879 0 : tree _r;
4880 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4881 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 914, __FILE__, __LINE__, true);
4882 0 : return _r;
4883 : }
4884 0 : next_after_fail1271:;
4885 : }
4886 : }
4887 : }
4888 : break;
4889 : }
4890 0 : case BIT_AND_EXPR:
4891 0 : {
4892 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4893 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4894 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4895 : {
4896 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4897 : {
4898 0 : {
4899 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1272;
4901 0 : {
4902 0 : tree res_op0;
4903 0 : res_op0 = captures[0];
4904 0 : tree res_op1;
4905 0 : res_op1 = captures[1];
4906 0 : tree _r;
4907 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
4908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
4909 0 : return _r;
4910 : }
4911 0 : next_after_fail1272:;
4912 : }
4913 : }
4914 : }
4915 : break;
4916 : }
4917 : default:;
4918 : }
4919 : break;
4920 : }
4921 30201118 : default:;
4922 : }
4923 30201118 : {
4924 30201118 : tree _p0_pops[1];
4925 30201118 : if (tree_nop_convert (_p0, _p0_pops))
4926 : {
4927 7223221 : tree _q20 = _p0_pops[0];
4928 7223221 : switch (TREE_CODE (_q20))
4929 : {
4930 1007098 : case PLUS_EXPR:
4931 1007098 : {
4932 1007098 : tree _q30 = TREE_OPERAND (_q20, 0);
4933 1007098 : tree _q31 = TREE_OPERAND (_q20, 1);
4934 1007098 : switch (TREE_CODE (_q30))
4935 : {
4936 8 : case BIT_AND_EXPR:
4937 8 : {
4938 8 : tree _q40 = TREE_OPERAND (_q30, 0);
4939 8 : tree _q41 = TREE_OPERAND (_q30, 1);
4940 8 : if (integer_all_onesp (_q31))
4941 : {
4942 0 : switch (TREE_CODE (_p1))
4943 : {
4944 0 : case BIT_IOR_EXPR:
4945 0 : {
4946 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4947 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4948 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4949 : {
4950 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
4951 : {
4952 0 : {
4953 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
4954 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4955 0 : if (res) return res;
4956 : }
4957 : }
4958 : }
4959 0 : if ((_q80 == _q41 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q41, 0) && types_match (_q80, _q41)))
4960 : {
4961 0 : if ((_q81 == _q40 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q40, 0) && types_match (_q81, _q40)))
4962 : {
4963 0 : {
4964 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q40 };
4965 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4966 0 : if (res) return res;
4967 : }
4968 : }
4969 : }
4970 : break;
4971 : }
4972 0 : default:;
4973 : }
4974 0 : {
4975 0 : tree _p1_pops[1];
4976 0 : if (tree_nop_convert (_p1, _p1_pops))
4977 : {
4978 0 : tree _q80 = _p1_pops[0];
4979 0 : switch (TREE_CODE (_q80))
4980 : {
4981 0 : case BIT_IOR_EXPR:
4982 0 : {
4983 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4984 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4985 0 : if ((_q90 == _q40 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q40, 0) && types_match (_q90, _q40)))
4986 : {
4987 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
4988 : {
4989 0 : {
4990 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
4991 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
4992 0 : if (res) return res;
4993 : }
4994 : }
4995 : }
4996 0 : if ((_q90 == _q41 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q41, 0) && types_match (_q90, _q41)))
4997 : {
4998 0 : if ((_q91 == _q40 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q40, 0) && types_match (_q91, _q40)))
4999 : {
5000 0 : {
5001 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q40 };
5002 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
5003 0 : if (res) return res;
5004 : }
5005 : }
5006 : }
5007 : break;
5008 : }
5009 : default:;
5010 : }
5011 : }
5012 : }
5013 : }
5014 : break;
5015 : }
5016 1007098 : default:;
5017 : }
5018 1007098 : {
5019 1007098 : tree _q30_pops[1];
5020 1007098 : if (tree_nop_convert (_q30, _q30_pops))
5021 : {
5022 43729 : tree _q40 = _q30_pops[0];
5023 43729 : switch (TREE_CODE (_q40))
5024 : {
5025 0 : case BIT_AND_EXPR:
5026 0 : {
5027 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5028 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5029 0 : if (integer_all_onesp (_q31))
5030 : {
5031 0 : switch (TREE_CODE (_p1))
5032 : {
5033 0 : case BIT_IOR_EXPR:
5034 0 : {
5035 0 : tree _q90 = TREE_OPERAND (_p1, 0);
5036 0 : tree _q91 = TREE_OPERAND (_p1, 1);
5037 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
5038 : {
5039 0 : if ((_q91 == _q51 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q51, 0) && types_match (_q91, _q51)))
5040 : {
5041 0 : {
5042 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
5043 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
5044 0 : if (res) return res;
5045 : }
5046 : }
5047 : }
5048 0 : if ((_q90 == _q51 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q51, 0) && types_match (_q90, _q51)))
5049 : {
5050 0 : if ((_q91 == _q50 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q50, 0) && types_match (_q91, _q50)))
5051 : {
5052 0 : {
5053 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
5054 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
5055 0 : if (res) return res;
5056 : }
5057 : }
5058 : }
5059 : break;
5060 : }
5061 0 : default:;
5062 : }
5063 0 : {
5064 0 : tree _p1_pops[1];
5065 0 : if (tree_nop_convert (_p1, _p1_pops))
5066 : {
5067 0 : tree _q90 = _p1_pops[0];
5068 0 : switch (TREE_CODE (_q90))
5069 : {
5070 0 : case BIT_IOR_EXPR:
5071 0 : {
5072 0 : tree _q100 = TREE_OPERAND (_q90, 0);
5073 0 : tree _q101 = TREE_OPERAND (_q90, 1);
5074 0 : if ((_q100 == _q50 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q50, 0) && types_match (_q100, _q50)))
5075 : {
5076 0 : if ((_q101 == _q51 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q51, 0) && types_match (_q101, _q51)))
5077 : {
5078 0 : {
5079 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
5080 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
5081 0 : if (res) return res;
5082 : }
5083 : }
5084 : }
5085 0 : if ((_q100 == _q51 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q51, 0) && types_match (_q100, _q51)))
5086 : {
5087 0 : if ((_q101 == _q50 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q50, 0) && types_match (_q101, _q50)))
5088 : {
5089 0 : {
5090 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
5091 0 : tree res = generic_simplify_89 (loc, type, _p0, _p1, captures);
5092 0 : if (res) return res;
5093 : }
5094 : }
5095 : }
5096 : break;
5097 : }
5098 : default:;
5099 : }
5100 : }
5101 : }
5102 : }
5103 : break;
5104 : }
5105 : default:;
5106 : }
5107 : }
5108 : }
5109 1007098 : break;
5110 : }
5111 14 : case BIT_AND_EXPR:
5112 14 : {
5113 14 : tree _q30 = TREE_OPERAND (_q20, 0);
5114 14 : tree _q31 = TREE_OPERAND (_q20, 1);
5115 14 : switch (TREE_CODE (_p1))
5116 : {
5117 0 : case PLUS_EXPR:
5118 0 : {
5119 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5120 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5121 0 : switch (TREE_CODE (_q60))
5122 : {
5123 0 : case BIT_IOR_EXPR:
5124 0 : {
5125 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5126 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5127 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
5128 : {
5129 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5130 : {
5131 0 : if (integer_onep (_q61))
5132 : {
5133 0 : {
5134 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5135 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5136 0 : if (res) return res;
5137 : }
5138 : }
5139 : }
5140 : }
5141 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
5142 : {
5143 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
5144 : {
5145 0 : if (integer_onep (_q61))
5146 : {
5147 0 : {
5148 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5149 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5150 0 : if (res) return res;
5151 : }
5152 : }
5153 : }
5154 : }
5155 : break;
5156 : }
5157 0 : default:;
5158 : }
5159 0 : {
5160 0 : tree _q60_pops[1];
5161 0 : if (tree_nop_convert (_q60, _q60_pops))
5162 : {
5163 0 : tree _q70 = _q60_pops[0];
5164 0 : switch (TREE_CODE (_q70))
5165 : {
5166 0 : case BIT_IOR_EXPR:
5167 0 : {
5168 0 : tree _q80 = TREE_OPERAND (_q70, 0);
5169 0 : tree _q81 = TREE_OPERAND (_q70, 1);
5170 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
5171 : {
5172 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
5173 : {
5174 0 : if (integer_onep (_q61))
5175 : {
5176 0 : {
5177 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5178 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5179 0 : if (res) return res;
5180 : }
5181 : }
5182 : }
5183 : }
5184 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
5185 : {
5186 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
5187 : {
5188 0 : if (integer_onep (_q61))
5189 : {
5190 0 : {
5191 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5192 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5193 0 : if (res) return res;
5194 : }
5195 : }
5196 : }
5197 : }
5198 : break;
5199 : }
5200 : default:;
5201 : }
5202 : }
5203 : }
5204 0 : break;
5205 : }
5206 14 : default:;
5207 : }
5208 14 : {
5209 14 : tree _p1_pops[1];
5210 14 : if (tree_nop_convert (_p1, _p1_pops))
5211 : {
5212 14 : tree _q60 = _p1_pops[0];
5213 14 : switch (TREE_CODE (_q60))
5214 : {
5215 0 : case PLUS_EXPR:
5216 0 : {
5217 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5218 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5219 0 : switch (TREE_CODE (_q70))
5220 : {
5221 0 : case BIT_IOR_EXPR:
5222 0 : {
5223 0 : tree _q80 = TREE_OPERAND (_q70, 0);
5224 0 : tree _q81 = TREE_OPERAND (_q70, 1);
5225 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
5226 : {
5227 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
5228 : {
5229 0 : if (integer_onep (_q71))
5230 : {
5231 0 : {
5232 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
5233 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5234 0 : if (res) return res;
5235 : }
5236 : }
5237 : }
5238 : }
5239 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
5240 : {
5241 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
5242 : {
5243 0 : if (integer_onep (_q71))
5244 : {
5245 0 : {
5246 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
5247 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5248 0 : if (res) return res;
5249 : }
5250 : }
5251 : }
5252 : }
5253 : break;
5254 : }
5255 0 : default:;
5256 : }
5257 0 : {
5258 0 : tree _q70_pops[1];
5259 0 : if (tree_nop_convert (_q70, _q70_pops))
5260 : {
5261 0 : tree _q80 = _q70_pops[0];
5262 0 : switch (TREE_CODE (_q80))
5263 : {
5264 0 : case BIT_IOR_EXPR:
5265 0 : {
5266 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5267 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5268 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5269 : {
5270 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5271 : {
5272 0 : if (integer_onep (_q71))
5273 : {
5274 0 : {
5275 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
5276 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5277 0 : if (res) return res;
5278 : }
5279 : }
5280 : }
5281 : }
5282 0 : if ((_q90 == _q31 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q31, 0) && types_match (_q90, _q31)))
5283 : {
5284 0 : if ((_q91 == _q30 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q30, 0) && types_match (_q91, _q30)))
5285 : {
5286 0 : if (integer_onep (_q71))
5287 : {
5288 0 : {
5289 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
5290 0 : tree res = generic_simplify_88 (loc, type, _p0, _p1, captures);
5291 0 : if (res) return res;
5292 : }
5293 : }
5294 : }
5295 : }
5296 : break;
5297 : }
5298 : default:;
5299 : }
5300 : }
5301 : }
5302 0 : break;
5303 : }
5304 : default:;
5305 : }
5306 : }
5307 : }
5308 14 : break;
5309 : }
5310 : default:;
5311 : }
5312 : }
5313 : }
5314 30201118 : if (tree_negate_expr_p (_p1))
5315 : {
5316 7380378 : {
5317 7380378 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5318 7380378 : if (!FIXED_POINT_TYPE_P (type)
5319 : )
5320 : {
5321 7380378 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1273;
5322 7380378 : {
5323 7380378 : tree res_op0;
5324 7380378 : res_op0 = captures[0];
5325 7380378 : tree res_op1;
5326 7380378 : {
5327 7380378 : tree _o1[1], _r1;
5328 7380378 : _o1[0] = captures[1];
5329 7380378 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5330 7380378 : res_op1 = _r1;
5331 : }
5332 7380378 : tree _r;
5333 7380378 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5334 7380378 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 916, __FILE__, __LINE__, true);
5335 7380378 : return _r;
5336 : }
5337 0 : next_after_fail1273:;
5338 : }
5339 : }
5340 : }
5341 22820740 : switch (TREE_CODE (_p0))
5342 : {
5343 4966321 : CASE_CONVERT:
5344 4966321 : {
5345 4966321 : tree _q20 = TREE_OPERAND (_p0, 0);
5346 4966321 : switch (TREE_CODE (_p1))
5347 : {
5348 4136096 : CASE_CONVERT:
5349 4136096 : {
5350 4136096 : tree _q40 = TREE_OPERAND (_p1, 0);
5351 4136096 : switch (TREE_CODE (_q40))
5352 : {
5353 15 : case BIT_AND_EXPR:
5354 15 : {
5355 15 : tree _q50 = TREE_OPERAND (_q40, 0);
5356 15 : tree _q51 = TREE_OPERAND (_q40, 1);
5357 15 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
5358 : {
5359 0 : {
5360 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q50, _p1, _q40, _q51, _q20 };
5361 0 : tree res = generic_simplify_91 (loc, type, _p0, _p1, captures);
5362 0 : if (res) return res;
5363 : }
5364 : }
5365 15 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
5366 : {
5367 1 : {
5368 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q51, _p1, _q40, _q50, _q20 };
5369 1 : tree res = generic_simplify_91 (loc, type, _p0, _p1, captures);
5370 1 : if (res) return res;
5371 : }
5372 : }
5373 : break;
5374 : }
5375 : default:;
5376 : }
5377 : break;
5378 : }
5379 4919 : case BIT_AND_EXPR:
5380 4919 : {
5381 4919 : tree _q40 = TREE_OPERAND (_p1, 0);
5382 4919 : tree _q41 = TREE_OPERAND (_p1, 1);
5383 4919 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
5384 : {
5385 0 : {
5386 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _p1, _p1, _q41, _q20 };
5387 0 : tree res = generic_simplify_92 (loc, type, _p0, _p1, captures);
5388 0 : if (res) return res;
5389 : }
5390 : }
5391 4919 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
5392 : {
5393 21 : {
5394 21 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _p1, _q40, _q20 };
5395 21 : tree res = generic_simplify_92 (loc, type, _p0, _p1, captures);
5396 21 : if (res) return res;
5397 : }
5398 : }
5399 : break;
5400 : }
5401 4966299 : default:;
5402 : }
5403 4966299 : switch (TREE_CODE (_q20))
5404 : {
5405 107116 : case ADDR_EXPR:
5406 107116 : {
5407 107116 : switch (TREE_CODE (_p1))
5408 : {
5409 98970 : CASE_CONVERT:
5410 98970 : {
5411 98970 : tree _q40 = TREE_OPERAND (_p1, 0);
5412 98970 : switch (TREE_CODE (_q40))
5413 : {
5414 26534 : case POINTER_PLUS_EXPR:
5415 26534 : {
5416 26534 : tree _q50 = TREE_OPERAND (_q40, 0);
5417 26534 : tree _q51 = TREE_OPERAND (_q40, 1);
5418 26534 : {
5419 26534 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
5420 26534 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
5421 : )
5422 : {
5423 26534 : {
5424 26534 : poly_int64 diff;
5425 26534 : if (ptr_difference_const (captures[0], captures[1], &diff)
5426 : )
5427 : {
5428 11934 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1274;
5429 11934 : {
5430 11934 : tree res_op0;
5431 11934 : res_op0 = build_int_cst_type (type, diff);
5432 11934 : tree res_op1;
5433 11934 : {
5434 11934 : tree _o1[1], _r1;
5435 11934 : _o1[0] = captures[2];
5436 11934 : if (TREE_TYPE (_o1[0]) != type)
5437 : {
5438 11934 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5439 : }
5440 : else
5441 : _r1 = _o1[0];
5442 11934 : res_op1 = _r1;
5443 : }
5444 11934 : tree _r;
5445 11934 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5446 11934 : if (TREE_SIDE_EFFECTS (captures[0]))
5447 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5448 11934 : if (TREE_SIDE_EFFECTS (captures[1]))
5449 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5450 11934 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 917, __FILE__, __LINE__, true);
5451 11934 : return _r;
5452 : }
5453 0 : next_after_fail1274:;
5454 : }
5455 : }
5456 : }
5457 : }
5458 14600 : break;
5459 : }
5460 87036 : default:;
5461 : }
5462 87036 : {
5463 87036 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5464 87036 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
5465 : )
5466 : {
5467 87036 : {
5468 87036 : poly_int64 diff;
5469 87036 : if (ptr_difference_const (captures[0], captures[1], &diff)
5470 : )
5471 : {
5472 54019 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1275;
5473 54019 : {
5474 54019 : tree _r;
5475 54019 : _r = build_int_cst_type (type, diff);
5476 54019 : if (TREE_SIDE_EFFECTS (captures[0]))
5477 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5478 54019 : if (TREE_SIDE_EFFECTS (captures[1]))
5479 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5480 54019 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 918, __FILE__, __LINE__, true);
5481 54019 : return _r;
5482 : }
5483 0 : next_after_fail1275:;
5484 : }
5485 : }
5486 : }
5487 : }
5488 33017 : break;
5489 : }
5490 : default:;
5491 : }
5492 : break;
5493 : }
5494 100784 : case POINTER_PLUS_EXPR:
5495 100784 : {
5496 100784 : tree _q30 = TREE_OPERAND (_q20, 0);
5497 100784 : tree _q31 = TREE_OPERAND (_q20, 1);
5498 100784 : switch (TREE_CODE (_p1))
5499 : {
5500 99694 : CASE_CONVERT:
5501 99694 : {
5502 99694 : tree _q60 = TREE_OPERAND (_p1, 0);
5503 99694 : switch (TREE_CODE (_q60))
5504 : {
5505 5419 : case ADDR_EXPR:
5506 5419 : {
5507 5419 : {
5508 5419 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
5509 5419 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
5510 : )
5511 : {
5512 5419 : {
5513 5419 : poly_int64 diff;
5514 5419 : if (ptr_difference_const (captures[0], captures[2], &diff)
5515 : )
5516 : {
5517 1154 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1276;
5518 1154 : {
5519 1154 : tree res_op0;
5520 1154 : {
5521 1154 : tree _o1[1], _r1;
5522 1154 : _o1[0] = captures[1];
5523 1154 : if (TREE_TYPE (_o1[0]) != type)
5524 : {
5525 881 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5526 : }
5527 : else
5528 : _r1 = _o1[0];
5529 1154 : res_op0 = _r1;
5530 : }
5531 1154 : tree res_op1;
5532 1154 : res_op1 = build_int_cst_type (type, diff);
5533 1154 : tree _r;
5534 1154 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5535 1154 : if (TREE_SIDE_EFFECTS (captures[0]))
5536 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5537 1154 : if (TREE_SIDE_EFFECTS (captures[2]))
5538 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
5539 1154 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
5540 1154 : return _r;
5541 : }
5542 0 : next_after_fail1276:;
5543 : }
5544 : }
5545 : }
5546 : }
5547 4265 : break;
5548 : }
5549 : default:;
5550 : }
5551 : break;
5552 : }
5553 : default:;
5554 : }
5555 : break;
5556 : }
5557 4899192 : default:;
5558 : }
5559 4899192 : switch (TREE_CODE (_p1))
5560 : {
5561 4068988 : CASE_CONVERT:
5562 4068988 : {
5563 4068988 : tree _q40 = TREE_OPERAND (_p1, 0);
5564 4068988 : switch (TREE_CODE (_q40))
5565 : {
5566 48292 : case ADDR_EXPR:
5567 48292 : {
5568 48292 : {
5569 48292 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5570 48292 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
5571 : )
5572 : {
5573 48271 : {
5574 48271 : poly_int64 diff;
5575 48271 : if (ptr_difference_const (captures[0], captures[1], &diff)
5576 : )
5577 : {
5578 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1277;
5579 0 : {
5580 0 : tree _r;
5581 0 : _r = build_int_cst_type (type, diff);
5582 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5583 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5584 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5585 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5586 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
5587 0 : return _r;
5588 : }
5589 0 : next_after_fail1277:;
5590 : }
5591 : }
5592 : }
5593 : }
5594 48292 : break;
5595 : }
5596 : default:;
5597 : }
5598 : break;
5599 : }
5600 : default:;
5601 : }
5602 : break;
5603 : }
5604 22753611 : default:;
5605 : }
5606 22753611 : if (integer_onep (_p0))
5607 : {
5608 106159 : switch (TREE_CODE (_p1))
5609 : {
5610 27600 : case SSA_NAME:
5611 27600 : {
5612 27600 : {
5613 27600 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5614 27600 : if (INTEGRAL_TYPE_P (type)
5615 27600 : && ssa_name_has_boolean_range (captures[1])
5616 : )
5617 : {
5618 217 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1278;
5619 217 : {
5620 217 : tree res_op0;
5621 217 : res_op0 = captures[1];
5622 217 : tree res_op1;
5623 217 : res_op1 = captures[0];
5624 217 : tree _r;
5625 217 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
5626 217 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
5627 217 : return _r;
5628 : }
5629 0 : next_after_fail1278:;
5630 : }
5631 : }
5632 27383 : break;
5633 : }
5634 : default:;
5635 : }
5636 : }
5637 22753394 : switch (TREE_CODE (_p1))
5638 : {
5639 7370255 : CASE_CONVERT:
5640 7370255 : {
5641 7370255 : tree _q30 = TREE_OPERAND (_p1, 0);
5642 7370255 : switch (TREE_CODE (_q30))
5643 : {
5644 14 : case BIT_AND_EXPR:
5645 14 : {
5646 14 : tree _q40 = TREE_OPERAND (_q30, 0);
5647 14 : tree _q41 = TREE_OPERAND (_q30, 1);
5648 14 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
5649 : {
5650 0 : {
5651 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _p1, _q30, _q41, _p0 };
5652 0 : tree res = generic_simplify_91 (loc, type, _p0, _p1, captures);
5653 0 : if (res) return res;
5654 : }
5655 : }
5656 14 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
5657 : {
5658 0 : {
5659 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
5660 0 : tree res = generic_simplify_91 (loc, type, _p0, _p1, captures);
5661 0 : if (res) return res;
5662 : }
5663 : }
5664 : break;
5665 : }
5666 : default:;
5667 : }
5668 : break;
5669 : }
5670 6983 : case BIT_AND_EXPR:
5671 6983 : {
5672 6983 : tree _q30 = TREE_OPERAND (_p1, 0);
5673 6983 : tree _q31 = TREE_OPERAND (_p1, 1);
5674 6983 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
5675 : {
5676 217 : {
5677 217 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _p1, _p1, _q31, _p0 };
5678 217 : tree res = generic_simplify_92 (loc, type, _p0, _p1, captures);
5679 217 : if (res) return res;
5680 : }
5681 : }
5682 6766 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
5683 : {
5684 38 : {
5685 38 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
5686 38 : tree res = generic_simplify_92 (loc, type, _p0, _p1, captures);
5687 38 : if (res) return res;
5688 : }
5689 : }
5690 : break;
5691 : }
5692 22753139 : default:;
5693 : }
5694 22753139 : switch (TREE_CODE (_p0))
5695 : {
5696 1746829 : case PLUS_EXPR:
5697 1746829 : {
5698 1746829 : tree _q20 = TREE_OPERAND (_p0, 0);
5699 1746829 : tree _q21 = TREE_OPERAND (_p0, 1);
5700 1746829 : switch (TREE_CODE (_p1))
5701 : {
5702 472374 : case PLUS_EXPR:
5703 472374 : {
5704 472374 : tree _q50 = TREE_OPERAND (_p1, 0);
5705 472374 : tree _q51 = TREE_OPERAND (_p1, 1);
5706 472374 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5707 : {
5708 171725 : {
5709 171725 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5710 343450 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5711 343450 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5712 40237 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5713 : )
5714 : {
5715 171719 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1279;
5716 171719 : {
5717 171719 : tree res_op0;
5718 171719 : res_op0 = captures[0];
5719 171719 : tree res_op1;
5720 171719 : res_op1 = captures[2];
5721 171719 : tree _r;
5722 171719 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5723 171719 : if (TREE_SIDE_EFFECTS (captures[1]))
5724 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5725 171719 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
5726 171719 : return _r;
5727 : }
5728 0 : next_after_fail1279:;
5729 : }
5730 : }
5731 : }
5732 300655 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5733 : {
5734 353 : {
5735 353 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5736 706 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5737 706 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5738 243 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5739 : )
5740 : {
5741 353 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1280;
5742 353 : {
5743 353 : tree res_op0;
5744 353 : res_op0 = captures[0];
5745 353 : tree res_op1;
5746 353 : res_op1 = captures[2];
5747 353 : tree _r;
5748 353 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5749 353 : if (TREE_SIDE_EFFECTS (captures[1]))
5750 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5751 353 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
5752 353 : return _r;
5753 : }
5754 0 : next_after_fail1280:;
5755 : }
5756 : }
5757 : }
5758 300302 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5759 : {
5760 183 : {
5761 183 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5762 366 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5763 366 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5764 94 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5765 : )
5766 : {
5767 183 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1281;
5768 183 : {
5769 183 : tree res_op0;
5770 183 : res_op0 = captures[0];
5771 183 : tree res_op1;
5772 183 : res_op1 = captures[2];
5773 183 : tree _r;
5774 183 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5775 183 : if (TREE_SIDE_EFFECTS (captures[1]))
5776 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5777 183 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
5778 183 : return _r;
5779 : }
5780 0 : next_after_fail1281:;
5781 : }
5782 : }
5783 : }
5784 300119 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5785 : {
5786 172309 : {
5787 172309 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5788 344618 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5789 344618 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5790 138909 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5791 : )
5792 : {
5793 172309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1282;
5794 172309 : {
5795 172309 : tree res_op0;
5796 172309 : res_op0 = captures[0];
5797 172309 : tree res_op1;
5798 172309 : res_op1 = captures[2];
5799 172309 : tree _r;
5800 172309 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5801 172309 : if (TREE_SIDE_EFFECTS (captures[1]))
5802 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5803 172309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
5804 172309 : return _r;
5805 : }
5806 0 : next_after_fail1282:;
5807 : }
5808 : }
5809 : }
5810 : break;
5811 : }
5812 : default:;
5813 : }
5814 : break;
5815 : }
5816 954379 : case MINUS_EXPR:
5817 954379 : {
5818 954379 : tree _q20 = TREE_OPERAND (_p0, 0);
5819 954379 : tree _q21 = TREE_OPERAND (_p0, 1);
5820 954379 : switch (TREE_CODE (_p1))
5821 : {
5822 3919 : case MINUS_EXPR:
5823 3919 : {
5824 3919 : tree _q50 = TREE_OPERAND (_p1, 0);
5825 3919 : tree _q51 = TREE_OPERAND (_p1, 1);
5826 3919 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5827 : {
5828 3877 : {
5829 3877 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5830 7754 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5831 7754 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5832 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5833 : )
5834 : {
5835 3877 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1283;
5836 3877 : {
5837 3877 : tree res_op0;
5838 3877 : res_op0 = captures[0];
5839 3877 : tree res_op1;
5840 3877 : res_op1 = captures[2];
5841 3877 : tree _r;
5842 3877 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5843 3877 : if (TREE_SIDE_EFFECTS (captures[1]))
5844 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5845 3877 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
5846 3877 : return _r;
5847 : }
5848 0 : next_after_fail1283:;
5849 : }
5850 : }
5851 : }
5852 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5853 : {
5854 0 : {
5855 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5856 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5857 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5858 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5859 : )
5860 : {
5861 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1284;
5862 0 : {
5863 0 : tree res_op0;
5864 0 : res_op0 = captures[2];
5865 0 : tree res_op1;
5866 0 : res_op1 = captures[1];
5867 0 : tree _r;
5868 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
5869 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5870 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5871 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 924, __FILE__, __LINE__, true);
5872 0 : return _r;
5873 : }
5874 0 : next_after_fail1284:;
5875 : }
5876 : }
5877 : }
5878 : break;
5879 : }
5880 : default:;
5881 : }
5882 : break;
5883 : }
5884 59 : case POINTER_DIFF_EXPR:
5885 59 : {
5886 59 : tree _q20 = TREE_OPERAND (_p0, 0);
5887 59 : tree _q21 = TREE_OPERAND (_p0, 1);
5888 59 : switch (TREE_CODE (_p1))
5889 : {
5890 0 : case POINTER_DIFF_EXPR:
5891 0 : {
5892 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5893 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5894 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5895 : {
5896 0 : {
5897 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5898 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5899 0 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
5900 : )
5901 : {
5902 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1285;
5903 0 : {
5904 0 : tree res_op0;
5905 0 : res_op0 = captures[1];
5906 0 : tree res_op1;
5907 0 : res_op1 = captures[3];
5908 0 : tree _r;
5909 0 : _r = fold_build2_loc (loc, POINTER_DIFF_EXPR, type, res_op0, res_op1);
5910 0 : if (TREE_SIDE_EFFECTS (captures[2]))
5911 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
5912 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
5913 0 : return _r;
5914 : }
5915 0 : next_after_fail1285:;
5916 : }
5917 : }
5918 : }
5919 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5920 : {
5921 0 : {
5922 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5923 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5924 0 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
5925 : )
5926 : {
5927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1286;
5928 0 : {
5929 0 : tree res_op0;
5930 0 : res_op0 = captures[3];
5931 0 : tree res_op1;
5932 0 : res_op1 = captures[2];
5933 0 : tree _r;
5934 0 : _r = fold_build2_loc (loc, POINTER_DIFF_EXPR, type, res_op0, res_op1);
5935 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5936 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5937 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 926, __FILE__, __LINE__, true);
5938 0 : return _r;
5939 : }
5940 0 : next_after_fail1286:;
5941 : }
5942 : }
5943 : }
5944 : break;
5945 : }
5946 : default:;
5947 : }
5948 : break;
5949 : }
5950 22404698 : default:;
5951 : }
5952 22404698 : switch (TREE_CODE (_p1))
5953 : {
5954 7370255 : CASE_CONVERT:
5955 7370255 : {
5956 7370255 : tree _q30 = TREE_OPERAND (_p1, 0);
5957 7370255 : switch (TREE_CODE (_q30))
5958 : {
5959 2609 : case NEGATE_EXPR:
5960 2609 : {
5961 2609 : tree _q40 = TREE_OPERAND (_q30, 0);
5962 2609 : {
5963 2609 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
5964 2609 : tree res = generic_simplify_93 (loc, type, _p0, _p1, captures);
5965 2609 : if (res) return res;
5966 : }
5967 2601 : break;
5968 : }
5969 : default:;
5970 : }
5971 : break;
5972 : }
5973 45 : case NEGATE_EXPR:
5974 45 : {
5975 45 : tree _q30 = TREE_OPERAND (_p1, 0);
5976 45 : {
5977 45 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5978 45 : tree res = generic_simplify_93 (loc, type, _p0, _p1, captures);
5979 45 : if (res) return res;
5980 : }
5981 40 : break;
5982 : }
5983 22404685 : default:;
5984 : }
5985 22404685 : switch (TREE_CODE (_p0))
5986 : {
5987 1402265 : case PLUS_EXPR:
5988 1402265 : {
5989 1402265 : tree _q20 = TREE_OPERAND (_p0, 0);
5990 1402265 : tree _q21 = TREE_OPERAND (_p0, 1);
5991 1402265 : {
5992 1402265 : tree _q20_pops[1];
5993 1402265 : if (tree_nop_convert (_q20, _q20_pops))
5994 : {
5995 328719 : tree _q30 = _q20_pops[0];
5996 328719 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5997 : {
5998 338 : {
5999 338 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6000 338 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6001 338 : if (res) return res;
6002 : }
6003 : }
6004 : }
6005 : }
6006 1401927 : {
6007 1401927 : tree _q21_pops[1];
6008 1401927 : if (tree_nop_convert (_q21, _q21_pops))
6009 : {
6010 483010 : tree _q40 = _q21_pops[0];
6011 483010 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6012 : {
6013 89 : {
6014 89 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6015 89 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6016 89 : if (res) return res;
6017 : }
6018 : }
6019 : }
6020 : }
6021 1401838 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6022 : {
6023 53204 : {
6024 53204 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6025 53204 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6026 53204 : if (res) return res;
6027 : }
6028 : }
6029 1348634 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6030 : {
6031 1683 : {
6032 1683 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6033 1683 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6034 1683 : if (res) return res;
6035 : }
6036 : }
6037 : break;
6038 : }
6039 950502 : case MINUS_EXPR:
6040 950502 : {
6041 950502 : tree _q20 = TREE_OPERAND (_p0, 0);
6042 950502 : tree _q21 = TREE_OPERAND (_p0, 1);
6043 950502 : {
6044 950502 : tree _q20_pops[1];
6045 950502 : if (tree_nop_convert (_q20, _q20_pops))
6046 : {
6047 84202 : tree _q30 = _q20_pops[0];
6048 84202 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6049 : {
6050 0 : {
6051 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6052 0 : tree res = generic_simplify_95 (loc, type, _p0, _p1, captures);
6053 0 : if (res) return res;
6054 : }
6055 : }
6056 : }
6057 : }
6058 950502 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6059 : {
6060 178 : {
6061 178 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6062 178 : tree res = generic_simplify_95 (loc, type, _p0, _p1, captures);
6063 178 : if (res) return res;
6064 : }
6065 : }
6066 : break;
6067 : }
6068 22349204 : default:;
6069 : }
6070 22349204 : {
6071 22349204 : tree _p0_pops[1];
6072 22349204 : if (tree_nop_convert (_p0, _p0_pops))
6073 : {
6074 4327822 : tree _q20 = _p0_pops[0];
6075 4327822 : switch (TREE_CODE (_q20))
6076 : {
6077 351927 : case PLUS_EXPR:
6078 351927 : {
6079 351927 : tree _q30 = TREE_OPERAND (_q20, 0);
6080 351927 : tree _q31 = TREE_OPERAND (_q20, 1);
6081 351927 : {
6082 351927 : tree _q30_pops[1];
6083 351927 : if (tree_nop_convert (_q30, _q30_pops))
6084 : {
6085 31231 : tree _q40 = _q30_pops[0];
6086 31231 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6087 : {
6088 638 : {
6089 638 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q31 };
6090 638 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6091 638 : if (res) return res;
6092 : }
6093 : }
6094 : }
6095 : }
6096 351289 : {
6097 351289 : tree _q31_pops[1];
6098 351289 : if (tree_nop_convert (_q31, _q31_pops))
6099 : {
6100 2147 : tree _q50 = _q31_pops[0];
6101 2147 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6102 : {
6103 52 : {
6104 52 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6105 52 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6106 52 : if (res) return res;
6107 : }
6108 : }
6109 : }
6110 : }
6111 351237 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6112 : {
6113 10 : {
6114 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6115 10 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6116 10 : if (res) return res;
6117 : }
6118 : }
6119 351227 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6120 : {
6121 0 : {
6122 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6123 0 : tree res = generic_simplify_94 (loc, type, _p0, _p1, captures);
6124 0 : if (res) return res;
6125 : }
6126 : }
6127 : break;
6128 : }
6129 768 : case MINUS_EXPR:
6130 768 : {
6131 768 : tree _q30 = TREE_OPERAND (_q20, 0);
6132 768 : tree _q31 = TREE_OPERAND (_q20, 1);
6133 768 : {
6134 768 : tree _q30_pops[1];
6135 768 : if (tree_nop_convert (_q30, _q30_pops))
6136 : {
6137 0 : tree _q40 = _q30_pops[0];
6138 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6139 : {
6140 0 : {
6141 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q31 };
6142 0 : tree res = generic_simplify_95 (loc, type, _p0, _p1, captures);
6143 0 : if (res) return res;
6144 : }
6145 : }
6146 : }
6147 : }
6148 768 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6149 : {
6150 0 : {
6151 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6152 0 : tree res = generic_simplify_95 (loc, type, _p0, _p1, captures);
6153 0 : if (res) return res;
6154 : }
6155 : }
6156 : break;
6157 : }
6158 : default:;
6159 : }
6160 : }
6161 : }
6162 22348504 : switch (TREE_CODE (_p1))
6163 : {
6164 1259737 : case PLUS_EXPR:
6165 1259737 : {
6166 1259737 : tree _q30 = TREE_OPERAND (_p1, 0);
6167 1259737 : tree _q31 = TREE_OPERAND (_p1, 1);
6168 1259737 : {
6169 1259737 : tree _q30_pops[1];
6170 1259737 : if (tree_nop_convert (_q30, _q30_pops))
6171 : {
6172 331144 : tree _q40 = _q30_pops[0];
6173 331144 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6174 : {
6175 71 : {
6176 71 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6177 71 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6178 71 : if (res) return res;
6179 : }
6180 : }
6181 : }
6182 : }
6183 1259666 : {
6184 1259666 : tree _q31_pops[1];
6185 1259666 : if (tree_nop_convert (_q31, _q31_pops))
6186 : {
6187 61943 : tree _q50 = _q31_pops[0];
6188 61943 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6189 : {
6190 0 : {
6191 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6192 0 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6193 0 : if (res) return res;
6194 : }
6195 : }
6196 : }
6197 : }
6198 1259666 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6199 : {
6200 38043 : {
6201 38043 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6202 38043 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6203 38043 : if (res) return res;
6204 : }
6205 : }
6206 1221623 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6207 : {
6208 1457 : {
6209 1457 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6210 1457 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6211 1457 : if (res) return res;
6212 : }
6213 : }
6214 : break;
6215 : }
6216 80740 : case MINUS_EXPR:
6217 80740 : {
6218 80740 : tree _q30 = TREE_OPERAND (_p1, 0);
6219 80740 : tree _q31 = TREE_OPERAND (_p1, 1);
6220 80740 : {
6221 80740 : tree _q30_pops[1];
6222 80740 : if (tree_nop_convert (_q30, _q30_pops))
6223 : {
6224 61 : tree _q40 = _q30_pops[0];
6225 61 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6226 : {
6227 0 : {
6228 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6229 0 : tree res = generic_simplify_97 (loc, type, _p0, _p1, captures);
6230 0 : if (res) return res;
6231 : }
6232 : }
6233 : }
6234 : }
6235 80740 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6236 : {
6237 337 : {
6238 337 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6239 337 : tree res = generic_simplify_97 (loc, type, _p0, _p1, captures);
6240 337 : if (res) return res;
6241 : }
6242 : }
6243 : break;
6244 : }
6245 22308596 : default:;
6246 : }
6247 22308596 : {
6248 22308596 : tree _p1_pops[1];
6249 22308596 : if (tree_nop_convert (_p1, _p1_pops))
6250 : {
6251 6681018 : tree _q30 = _p1_pops[0];
6252 6681018 : switch (TREE_CODE (_q30))
6253 : {
6254 661434 : case PLUS_EXPR:
6255 661434 : {
6256 661434 : tree _q40 = TREE_OPERAND (_q30, 0);
6257 661434 : tree _q41 = TREE_OPERAND (_q30, 1);
6258 661434 : {
6259 661434 : tree _q40_pops[1];
6260 661434 : if (tree_nop_convert (_q40, _q40_pops))
6261 : {
6262 65143 : tree _q50 = _q40_pops[0];
6263 65143 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6264 : {
6265 152 : {
6266 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6267 152 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6268 152 : if (res) return res;
6269 : }
6270 : }
6271 : }
6272 : }
6273 661282 : {
6274 661282 : tree _q41_pops[1];
6275 661282 : if (tree_nop_convert (_q41, _q41_pops))
6276 : {
6277 17616 : tree _q60 = _q41_pops[0];
6278 17616 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6279 : {
6280 0 : {
6281 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6282 0 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6283 0 : if (res) return res;
6284 : }
6285 : }
6286 : }
6287 : }
6288 661282 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6289 : {
6290 7 : {
6291 7 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6292 7 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6293 7 : if (res) return res;
6294 : }
6295 : }
6296 661275 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6297 : {
6298 0 : {
6299 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6300 0 : tree res = generic_simplify_96 (loc, type, _p0, _p1, captures);
6301 0 : if (res) return res;
6302 : }
6303 : }
6304 : break;
6305 : }
6306 7532 : case MINUS_EXPR:
6307 7532 : {
6308 7532 : tree _q40 = TREE_OPERAND (_q30, 0);
6309 7532 : tree _q41 = TREE_OPERAND (_q30, 1);
6310 7532 : {
6311 7532 : tree _q40_pops[1];
6312 7532 : if (tree_nop_convert (_q40, _q40_pops))
6313 : {
6314 6712 : tree _q50 = _q40_pops[0];
6315 6712 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6316 : {
6317 0 : {
6318 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6319 0 : tree res = generic_simplify_97 (loc, type, _p0, _p1, captures);
6320 0 : if (res) return res;
6321 : }
6322 : }
6323 : }
6324 : }
6325 7532 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6326 : {
6327 2 : {
6328 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6329 2 : tree res = generic_simplify_97 (loc, type, _p0, _p1, captures);
6330 2 : if (res) return res;
6331 : }
6332 : }
6333 : break;
6334 : }
6335 : default:;
6336 : }
6337 : }
6338 : }
6339 22308435 : switch (TREE_CODE (_p0))
6340 : {
6341 1346962 : case PLUS_EXPR:
6342 1346962 : {
6343 1346962 : tree _q20 = TREE_OPERAND (_p0, 0);
6344 1346962 : tree _q21 = TREE_OPERAND (_p0, 1);
6345 1346962 : switch (TREE_CODE (_p1))
6346 : {
6347 0 : case MINUS_EXPR:
6348 0 : {
6349 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6350 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6351 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6352 : {
6353 0 : {
6354 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
6355 0 : tree res = generic_simplify_98 (loc, type, _p0, _p1, captures);
6356 0 : if (res) return res;
6357 : }
6358 : }
6359 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6360 : {
6361 0 : {
6362 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
6363 0 : tree res = generic_simplify_98 (loc, type, _p0, _p1, captures);
6364 0 : if (res) return res;
6365 : }
6366 : }
6367 : break;
6368 : }
6369 1346962 : default:;
6370 : }
6371 1346962 : if (CONSTANT_CLASS_P (_q21))
6372 : {
6373 565776 : if (CONSTANT_CLASS_P (_p1))
6374 : {
6375 13 : {
6376 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6377 13 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, MINUS_EXPR);
6378 13 : if (res) return res;
6379 : }
6380 : }
6381 : }
6382 : break;
6383 : }
6384 950321 : case MINUS_EXPR:
6385 950321 : {
6386 950321 : tree _q20 = TREE_OPERAND (_p0, 0);
6387 950321 : tree _q21 = TREE_OPERAND (_p0, 1);
6388 950321 : if (CONSTANT_CLASS_P (_q21))
6389 : {
6390 93646 : if (CONSTANT_CLASS_P (_p1))
6391 : {
6392 12 : {
6393 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6394 12 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, MINUS_EXPR);
6395 12 : if (res) return res;
6396 : }
6397 : }
6398 : }
6399 950321 : if (CONSTANT_CLASS_P (_q20))
6400 : {
6401 2928 : if (CONSTANT_CLASS_P (_p1))
6402 : {
6403 1 : {
6404 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6405 1 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, MINUS_EXPR);
6406 1 : if (res) return res;
6407 : }
6408 : }
6409 : }
6410 : break;
6411 : }
6412 4884525 : CASE_CONVERT:
6413 4884525 : {
6414 4884525 : tree _q20 = TREE_OPERAND (_p0, 0);
6415 4884525 : switch (TREE_CODE (_p1))
6416 : {
6417 4068978 : CASE_CONVERT:
6418 4068978 : {
6419 4068978 : tree _q40 = TREE_OPERAND (_p1, 0);
6420 4068978 : {
6421 4068978 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6422 4068978 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures, MINUS_EXPR);
6423 4068978 : if (res) return res;
6424 : }
6425 4054695 : break;
6426 : }
6427 4870242 : default:;
6428 : }
6429 4870242 : switch (TREE_CODE (_q20))
6430 : {
6431 288 : case NEGATE_EXPR:
6432 288 : {
6433 288 : tree _q30 = TREE_OPERAND (_q20, 0);
6434 288 : if (integer_each_onep (_p1))
6435 : {
6436 0 : {
6437 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6438 0 : tree res = generic_simplify_100 (loc, type, _p0, _p1, captures);
6439 0 : if (res) return res;
6440 : }
6441 : }
6442 : break;
6443 : }
6444 401194 : case PLUS_EXPR:
6445 401194 : {
6446 401194 : tree _q30 = TREE_OPERAND (_q20, 0);
6447 401194 : tree _q31 = TREE_OPERAND (_q20, 1);
6448 401194 : switch (TREE_CODE (_p1))
6449 : {
6450 384529 : CASE_CONVERT:
6451 384529 : {
6452 384529 : tree _q60 = TREE_OPERAND (_p1, 0);
6453 384529 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
6454 : {
6455 6258 : {
6456 6258 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
6457 6258 : tree res = generic_simplify_101 (loc, type, _p0, _p1, captures);
6458 6258 : if (res) return res;
6459 : }
6460 : }
6461 378385 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
6462 : {
6463 32 : {
6464 32 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
6465 32 : tree res = generic_simplify_101 (loc, type, _p0, _p1, captures);
6466 32 : if (res) return res;
6467 : }
6468 : }
6469 : break;
6470 : }
6471 395018 : default:;
6472 : }
6473 395018 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
6474 : {
6475 3863 : {
6476 3863 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
6477 3863 : tree res = generic_simplify_101 (loc, type, _p0, _p1, captures);
6478 3863 : if (res) return res;
6479 : }
6480 : }
6481 391155 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
6482 : {
6483 960 : {
6484 960 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
6485 960 : tree res = generic_simplify_101 (loc, type, _p0, _p1, captures);
6486 960 : if (res) return res;
6487 : }
6488 : }
6489 : break;
6490 : }
6491 99630 : case POINTER_PLUS_EXPR:
6492 99630 : {
6493 99630 : tree _q30 = TREE_OPERAND (_q20, 0);
6494 99630 : tree _q31 = TREE_OPERAND (_q20, 1);
6495 99630 : switch (TREE_CODE (_p1))
6496 : {
6497 98540 : CASE_CONVERT:
6498 98540 : {
6499 98540 : tree _q60 = TREE_OPERAND (_p1, 0);
6500 98540 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
6501 : {
6502 11317 : {
6503 11317 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
6504 11317 : if (!TYPE_SATURATING (type)
6505 : )
6506 : {
6507 11317 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
6508 22634 : && !FIXED_POINT_TYPE_P (type)
6509 : )
6510 : {
6511 11317 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
6512 11317 : || (POINTER_TYPE_P (TREE_TYPE (captures[0]))
6513 0 : && TREE_CODE (captures[1]) == INTEGER_CST
6514 0 : && tree_int_cst_sign_bit (captures[1]) == 0)
6515 : )
6516 : {
6517 11317 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1287;
6518 11317 : {
6519 11317 : tree res_op0;
6520 11317 : res_op0 = captures[1];
6521 11317 : tree _r;
6522 11317 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
6523 11317 : if (TREE_SIDE_EFFECTS (captures[2]))
6524 11 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
6525 11317 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 927, __FILE__, __LINE__, true);
6526 11317 : return _r;
6527 : }
6528 0 : next_after_fail1287:;
6529 : }
6530 : }
6531 : }
6532 : }
6533 : }
6534 : break;
6535 : }
6536 : default:;
6537 : }
6538 : break;
6539 : }
6540 4847926 : default:;
6541 : }
6542 4847926 : switch (TREE_CODE (_p1))
6543 : {
6544 4032507 : CASE_CONVERT:
6545 4032507 : {
6546 4032507 : tree _q40 = TREE_OPERAND (_p1, 0);
6547 4032507 : switch (TREE_CODE (_q40))
6548 : {
6549 483853 : case PLUS_EXPR:
6550 483853 : {
6551 483853 : tree _q50 = TREE_OPERAND (_q40, 0);
6552 483853 : tree _q51 = TREE_OPERAND (_q40, 1);
6553 483853 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
6554 : {
6555 2145 : {
6556 2145 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
6557 2145 : tree res = generic_simplify_102 (loc, type, _p0, _p1, captures);
6558 2145 : if (res) return res;
6559 : }
6560 : }
6561 481780 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
6562 : {
6563 18 : {
6564 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q50, _q20 };
6565 18 : tree res = generic_simplify_102 (loc, type, _p0, _p1, captures);
6566 18 : if (res) return res;
6567 : }
6568 : }
6569 : break;
6570 : }
6571 : default:;
6572 : }
6573 : break;
6574 : }
6575 : default:;
6576 : }
6577 : break;
6578 : }
6579 139726 : case NEGATE_EXPR:
6580 139726 : {
6581 139726 : tree _q20 = TREE_OPERAND (_p0, 0);
6582 139726 : if (integer_each_onep (_p1))
6583 : {
6584 41 : {
6585 41 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6586 41 : tree res = generic_simplify_100 (loc, type, _p0, _p1, captures);
6587 41 : if (res) return res;
6588 : }
6589 : }
6590 : break;
6591 : }
6592 22269704 : default:;
6593 : }
6594 22269704 : {
6595 22269704 : tree _p0_pops[1];
6596 22269704 : if (tree_nop_convert (_p0, _p0_pops))
6597 : {
6598 4280475 : tree _q20 = _p0_pops[0];
6599 4280475 : switch (TREE_CODE (_q20))
6600 : {
6601 332878 : case PLUS_EXPR:
6602 332878 : {
6603 332878 : tree _q30 = TREE_OPERAND (_q20, 0);
6604 332878 : tree _q31 = TREE_OPERAND (_q20, 1);
6605 332878 : if (CONSTANT_CLASS_P (_q31))
6606 : {
6607 326349 : if (CONSTANT_CLASS_P (_p1))
6608 : {
6609 0 : {
6610 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6611 0 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, MINUS_EXPR);
6612 0 : if (res) return res;
6613 : }
6614 : }
6615 : }
6616 : break;
6617 : }
6618 768 : case MINUS_EXPR:
6619 768 : {
6620 768 : tree _q30 = TREE_OPERAND (_q20, 0);
6621 768 : tree _q31 = TREE_OPERAND (_q20, 1);
6622 768 : if (CONSTANT_CLASS_P (_q31))
6623 : {
6624 0 : if (CONSTANT_CLASS_P (_p1))
6625 : {
6626 0 : {
6627 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6628 0 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, MINUS_EXPR);
6629 0 : if (res) return res;
6630 : }
6631 : }
6632 : }
6633 768 : if (CONSTANT_CLASS_P (_q30))
6634 : {
6635 18 : if (CONSTANT_CLASS_P (_p1))
6636 : {
6637 0 : {
6638 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6639 0 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, MINUS_EXPR);
6640 0 : if (res) return res;
6641 : }
6642 : }
6643 : }
6644 : break;
6645 : }
6646 : default:;
6647 : }
6648 : }
6649 : }
6650 22269704 : if (CONSTANT_CLASS_P (_p0))
6651 : {
6652 5596023 : switch (TREE_CODE (_p1))
6653 : {
6654 823 : case MINUS_EXPR:
6655 823 : {
6656 823 : tree _q30 = TREE_OPERAND (_p1, 0);
6657 823 : tree _q31 = TREE_OPERAND (_p1, 1);
6658 823 : if (CONSTANT_CLASS_P (_q30))
6659 : {
6660 639 : {
6661 639 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6662 639 : tree res = generic_simplify_99 (loc, type, _p0, _p1, captures);
6663 639 : if (res) return res;
6664 : }
6665 : }
6666 : break;
6667 : }
6668 5595393 : default:;
6669 : }
6670 5595393 : {
6671 5595393 : tree _p1_pops[1];
6672 5595393 : if (tree_nop_convert (_p1, _p1_pops))
6673 : {
6674 1839597 : tree _q30 = _p1_pops[0];
6675 1839597 : switch (TREE_CODE (_q30))
6676 : {
6677 7207 : case MINUS_EXPR:
6678 7207 : {
6679 7207 : tree _q40 = TREE_OPERAND (_q30, 0);
6680 7207 : tree _q41 = TREE_OPERAND (_q30, 1);
6681 7207 : if (CONSTANT_CLASS_P (_q40))
6682 : {
6683 29 : {
6684 29 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6685 29 : tree res = generic_simplify_99 (loc, type, _p0, _p1, captures);
6686 29 : if (res) return res;
6687 : }
6688 : }
6689 : break;
6690 : }
6691 : default:;
6692 : }
6693 : }
6694 : }
6695 : }
6696 22269045 : if (integer_all_onesp (_p0))
6697 : {
6698 1315234 : {
6699 1315234 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
6700 1315234 : if (!TYPE_SATURATING (type)
6701 : )
6702 : {
6703 1315234 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
6704 2630468 : && !FIXED_POINT_TYPE_P (type)
6705 : )
6706 : {
6707 1315234 : if (TREE_CODE (type) != COMPLEX_TYPE
6708 : )
6709 : {
6710 1315232 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1288;
6711 1315232 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1288;
6712 1315232 : {
6713 1315232 : tree res_op0;
6714 1315232 : res_op0 = captures[0];
6715 1315232 : tree _r;
6716 1315232 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
6717 1315232 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
6718 1315232 : return _r;
6719 : }
6720 : next_after_fail1288:;
6721 : }
6722 : }
6723 : }
6724 : }
6725 : }
6726 20953813 : switch (TREE_CODE (_p1))
6727 : {
6728 6986812 : CASE_CONVERT:
6729 6986812 : {
6730 6986812 : tree _q30 = TREE_OPERAND (_p1, 0);
6731 6986812 : switch (TREE_CODE (_q30))
6732 : {
6733 666616 : case PLUS_EXPR:
6734 666616 : {
6735 666616 : tree _q40 = TREE_OPERAND (_q30, 0);
6736 666616 : tree _q41 = TREE_OPERAND (_q30, 1);
6737 666616 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
6738 : {
6739 0 : {
6740 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
6741 0 : tree res = generic_simplify_102 (loc, type, _p0, _p1, captures);
6742 0 : if (res) return res;
6743 : }
6744 : }
6745 666616 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
6746 : {
6747 7898 : {
6748 7898 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _p0 };
6749 7898 : tree res = generic_simplify_102 (loc, type, _p0, _p1, captures);
6750 7898 : if (res) return res;
6751 : }
6752 : }
6753 : break;
6754 : }
6755 : default:;
6756 : }
6757 : break;
6758 : }
6759 20946112 : default:;
6760 : }
6761 20946112 : switch (TREE_CODE (_p0))
6762 : {
6763 4845835 : CASE_CONVERT:
6764 4845835 : {
6765 4845835 : tree _q20 = TREE_OPERAND (_p0, 0);
6766 4845835 : switch (TREE_CODE (_p1))
6767 : {
6768 4030416 : CASE_CONVERT:
6769 4030416 : {
6770 4030416 : tree _q40 = TREE_OPERAND (_p1, 0);
6771 4030416 : switch (TREE_CODE (_q40))
6772 : {
6773 371691 : case POINTER_PLUS_EXPR:
6774 371691 : {
6775 371691 : tree _q50 = TREE_OPERAND (_q40, 0);
6776 371691 : tree _q51 = TREE_OPERAND (_q40, 1);
6777 371691 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
6778 : {
6779 2162 : {
6780 2162 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
6781 2162 : if (!TYPE_SATURATING (type)
6782 : )
6783 : {
6784 2162 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
6785 4324 : && !FIXED_POINT_TYPE_P (type)
6786 : )
6787 : {
6788 2162 : if (INTEGRAL_TYPE_P (type)
6789 2162 : && TYPE_OVERFLOW_UNDEFINED (type)
6790 0 : && TREE_CODE (captures[1]) != INTEGER_CST
6791 2162 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
6792 : )
6793 : {
6794 0 : {
6795 0 : tree utype = unsigned_type_for (type);
6796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1289;
6797 0 : {
6798 0 : tree res_op0;
6799 0 : {
6800 0 : tree _o1[1], _r1;
6801 0 : {
6802 0 : tree _o2[1], _r2;
6803 0 : _o2[0] = captures[1];
6804 0 : if (TREE_TYPE (_o2[0]) != utype)
6805 : {
6806 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
6807 : }
6808 : else
6809 : _r2 = _o2[0];
6810 0 : _o1[0] = _r2;
6811 : }
6812 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
6813 0 : res_op0 = _r1;
6814 : }
6815 0 : tree _r;
6816 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
6817 0 : if (TREE_SIDE_EFFECTS (captures[2]))
6818 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
6819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
6820 0 : return _r;
6821 : }
6822 0 : next_after_fail1289:;
6823 : }
6824 : }
6825 : else
6826 : {
6827 2162 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
6828 2162 : || (POINTER_TYPE_P (TREE_TYPE (captures[0]))
6829 0 : && TREE_CODE (captures[1]) == INTEGER_CST
6830 0 : && tree_int_cst_sign_bit (captures[1]) == 0)
6831 : )
6832 : {
6833 2162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1290;
6834 2162 : {
6835 2162 : tree res_op0;
6836 2162 : {
6837 2162 : tree _o1[1], _r1;
6838 2162 : _o1[0] = captures[1];
6839 2162 : if (TREE_TYPE (_o1[0]) != type)
6840 : {
6841 2158 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
6842 : }
6843 : else
6844 : _r1 = _o1[0];
6845 2162 : res_op0 = _r1;
6846 : }
6847 2162 : tree _r;
6848 2162 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
6849 2162 : if (TREE_SIDE_EFFECTS (captures[2]))
6850 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
6851 2162 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
6852 2162 : return _r;
6853 : }
6854 0 : next_after_fail1290:;
6855 : }
6856 : }
6857 : }
6858 : }
6859 : }
6860 : }
6861 : break;
6862 : }
6863 : default:;
6864 : }
6865 : break;
6866 : }
6867 4843673 : default:;
6868 : }
6869 4843673 : switch (TREE_CODE (_q20))
6870 : {
6871 390195 : case PLUS_EXPR:
6872 390195 : {
6873 390195 : tree _q30 = TREE_OPERAND (_q20, 0);
6874 390195 : tree _q31 = TREE_OPERAND (_q20, 1);
6875 390195 : switch (TREE_CODE (_p1))
6876 : {
6877 373658 : CASE_CONVERT:
6878 373658 : {
6879 373658 : tree _q60 = TREE_OPERAND (_p1, 0);
6880 373658 : switch (TREE_CODE (_q60))
6881 : {
6882 202475 : case PLUS_EXPR:
6883 202475 : {
6884 202475 : tree _q70 = TREE_OPERAND (_q60, 0);
6885 202475 : tree _q71 = TREE_OPERAND (_q60, 1);
6886 202475 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q30, 0))
6887 : {
6888 5415 : {
6889 5415 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q71, _q30 };
6890 5415 : tree res = generic_simplify_103 (loc, type, _p0, _p1, captures);
6891 5415 : if (res) return res;
6892 : }
6893 : }
6894 197060 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q30, 0))
6895 : {
6896 70 : {
6897 70 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q70, _q30 };
6898 70 : tree res = generic_simplify_103 (loc, type, _p0, _p1, captures);
6899 70 : if (res) return res;
6900 : }
6901 : }
6902 196990 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q31, 0))
6903 : {
6904 90 : {
6905 90 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q71, _q31 };
6906 90 : tree res = generic_simplify_103 (loc, type, _p0, _p1, captures);
6907 90 : if (res) return res;
6908 : }
6909 : }
6910 196900 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q31, 0))
6911 : {
6912 147069 : {
6913 147069 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q70, _q31 };
6914 147069 : tree res = generic_simplify_103 (loc, type, _p0, _p1, captures);
6915 147069 : if (res) return res;
6916 : }
6917 : }
6918 : break;
6919 : }
6920 : default:;
6921 : }
6922 : break;
6923 : }
6924 : default:;
6925 : }
6926 : break;
6927 : }
6928 88313 : case POINTER_PLUS_EXPR:
6929 88313 : {
6930 88313 : tree _q30 = TREE_OPERAND (_q20, 0);
6931 88313 : tree _q31 = TREE_OPERAND (_q20, 1);
6932 88313 : switch (TREE_CODE (_p1))
6933 : {
6934 87223 : CASE_CONVERT:
6935 87223 : {
6936 87223 : tree _q60 = TREE_OPERAND (_p1, 0);
6937 87223 : switch (TREE_CODE (_q60))
6938 : {
6939 50710 : case POINTER_PLUS_EXPR:
6940 50710 : {
6941 50710 : tree _q70 = TREE_OPERAND (_q60, 0);
6942 50710 : tree _q71 = TREE_OPERAND (_q60, 1);
6943 50710 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q30, 0))
6944 : {
6945 10018 : {
6946 10018 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q71, _q30 };
6947 10018 : if (!TYPE_SATURATING (type)
6948 : )
6949 : {
6950 10018 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
6951 20036 : && !FIXED_POINT_TYPE_P (type)
6952 : )
6953 : {
6954 10018 : if (INTEGRAL_TYPE_P (type)
6955 10018 : && TYPE_OVERFLOW_UNDEFINED (type)
6956 10018 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
6957 : )
6958 : {
6959 0 : {
6960 0 : tree utype = unsigned_type_for (type);
6961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1291;
6962 0 : {
6963 0 : tree res_op0;
6964 0 : {
6965 0 : tree _o1[2], _r1;
6966 0 : {
6967 0 : tree _o2[1], _r2;
6968 0 : _o2[0] = captures[1];
6969 0 : if (TREE_TYPE (_o2[0]) != utype)
6970 : {
6971 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
6972 : }
6973 : else
6974 : _r2 = _o2[0];
6975 0 : _o1[0] = _r2;
6976 : }
6977 0 : {
6978 0 : tree _o2[1], _r2;
6979 0 : _o2[0] = captures[2];
6980 0 : if (TREE_TYPE (_o2[0]) != utype)
6981 : {
6982 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
6983 : }
6984 : else
6985 : _r2 = _o2[0];
6986 0 : _o1[1] = _r2;
6987 : }
6988 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6989 0 : res_op0 = _r1;
6990 : }
6991 0 : tree _r;
6992 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
6993 0 : if (TREE_SIDE_EFFECTS (captures[3]))
6994 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
6995 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 931, __FILE__, __LINE__, true);
6996 0 : return _r;
6997 : }
6998 0 : next_after_fail1291:;
6999 : }
7000 : }
7001 : else
7002 : {
7003 10018 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
7004 10018 : || (POINTER_TYPE_P (TREE_TYPE (captures[0]))
7005 0 : && TREE_CODE (captures[1]) == INTEGER_CST
7006 0 : && tree_int_cst_sign_bit (captures[1]) == 0
7007 0 : && TREE_CODE (captures[2]) == INTEGER_CST
7008 0 : && tree_int_cst_sign_bit (captures[2]) == 0)
7009 : )
7010 : {
7011 10018 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1292;
7012 10018 : {
7013 10018 : tree res_op0;
7014 10018 : {
7015 10018 : tree _o1[1], _r1;
7016 10018 : _o1[0] = captures[1];
7017 10018 : if (TREE_TYPE (_o1[0]) != type)
7018 : {
7019 9948 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
7020 : }
7021 : else
7022 : _r1 = _o1[0];
7023 10018 : res_op0 = _r1;
7024 : }
7025 10018 : tree res_op1;
7026 10018 : {
7027 10018 : tree _o1[1], _r1;
7028 10018 : _o1[0] = captures[2];
7029 10018 : if (TREE_TYPE (_o1[0]) != type)
7030 : {
7031 9965 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
7032 : }
7033 : else
7034 : _r1 = _o1[0];
7035 10018 : res_op1 = _r1;
7036 : }
7037 10018 : tree _r;
7038 10018 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
7039 10018 : if (TREE_SIDE_EFFECTS (captures[3]))
7040 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
7041 10018 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 932, __FILE__, __LINE__, true);
7042 10018 : return _r;
7043 : }
7044 0 : next_after_fail1292:;
7045 : }
7046 : }
7047 : }
7048 : }
7049 : }
7050 : }
7051 : break;
7052 : }
7053 : default:;
7054 : }
7055 : break;
7056 : }
7057 : default:;
7058 : }
7059 : break;
7060 : }
7061 : default:;
7062 : }
7063 : break;
7064 : }
7065 1463208 : case MULT_EXPR:
7066 1463208 : {
7067 1463208 : tree _q20 = TREE_OPERAND (_p0, 0);
7068 1463208 : tree _q21 = TREE_OPERAND (_p0, 1);
7069 1463208 : switch (TREE_CODE (_p1))
7070 : {
7071 690793 : case MULT_EXPR:
7072 690793 : {
7073 690793 : tree _q50 = TREE_OPERAND (_p1, 0);
7074 690793 : tree _q51 = TREE_OPERAND (_p1, 1);
7075 690793 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7076 : {
7077 3956 : {
7078 3956 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
7079 3956 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7080 3956 : if (res) return res;
7081 : }
7082 : }
7083 689586 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7084 : {
7085 13723 : {
7086 13723 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
7087 13723 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7088 13723 : if (res) return res;
7089 : }
7090 : }
7091 675863 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7092 : {
7093 33939 : {
7094 33939 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
7095 33939 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7096 33939 : if (res) return res;
7097 : }
7098 : }
7099 642001 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7100 : {
7101 207009 : {
7102 207009 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
7103 207009 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7104 207009 : if (res) return res;
7105 : }
7106 : }
7107 : break;
7108 : }
7109 : default:;
7110 : }
7111 : break;
7112 : }
7113 20547527 : default:;
7114 : }
7115 20547527 : switch (TREE_CODE (_p1))
7116 : {
7117 1744097 : case MULT_EXPR:
7118 1744097 : {
7119 1744097 : tree _q30 = TREE_OPERAND (_p1, 0);
7120 1744097 : tree _q31 = TREE_OPERAND (_p1, 1);
7121 1744097 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7122 : {
7123 3890 : {
7124 3890 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
7125 3890 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7126 3890 : if (res) return res;
7127 : }
7128 : }
7129 1740251 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7130 : {
7131 1332 : {
7132 1332 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
7133 1332 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7134 1332 : if (res) return res;
7135 : }
7136 : }
7137 : break;
7138 : }
7139 20542448 : default:;
7140 : }
7141 20542448 : switch (TREE_CODE (_p0))
7142 : {
7143 1212782 : case MULT_EXPR:
7144 1212782 : {
7145 1212782 : tree _q20 = TREE_OPERAND (_p0, 0);
7146 1212782 : tree _q21 = TREE_OPERAND (_p0, 1);
7147 1212782 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7148 : {
7149 60665 : {
7150 60665 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7151 60665 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7152 60665 : if (res) return res;
7153 : }
7154 : }
7155 1152289 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7156 : {
7157 632 : {
7158 632 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
7159 632 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7160 632 : if (res) return res;
7161 : }
7162 : }
7163 : break;
7164 : }
7165 20481856 : default:;
7166 : }
7167 20481856 : switch (TREE_CODE (_p1))
7168 : {
7169 1739018 : case MULT_EXPR:
7170 1739018 : {
7171 1739018 : tree _q30 = TREE_OPERAND (_p1, 0);
7172 1739018 : tree _q31 = TREE_OPERAND (_p1, 1);
7173 1739018 : switch (TREE_CODE (_q30))
7174 : {
7175 75821 : case MINUS_EXPR:
7176 75821 : {
7177 75821 : tree _q40 = TREE_OPERAND (_q30, 0);
7178 75821 : tree _q41 = TREE_OPERAND (_q30, 1);
7179 75821 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7180 : {
7181 19 : if (tree_zero_one_valued_p (_q31))
7182 : {
7183 0 : {
7184 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q31 };
7185 0 : tree res = generic_simplify_104 (loc, type, _p0, _p1, captures);
7186 0 : if (res) return res;
7187 : }
7188 : }
7189 : }
7190 : break;
7191 : }
7192 1739018 : default:;
7193 : }
7194 1739018 : if (tree_zero_one_valued_p (_q30))
7195 : {
7196 1204 : switch (TREE_CODE (_q31))
7197 : {
7198 9 : case MINUS_EXPR:
7199 9 : {
7200 9 : tree _q50 = TREE_OPERAND (_q31, 0);
7201 9 : tree _q51 = TREE_OPERAND (_q31, 1);
7202 9 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7203 : {
7204 9 : {
7205 9 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q51, _q30 };
7206 9 : tree res = generic_simplify_104 (loc, type, _p0, _p1, captures);
7207 9 : if (res) return res;
7208 : }
7209 : }
7210 : break;
7211 : }
7212 : default:;
7213 : }
7214 : }
7215 : break;
7216 : }
7217 20481854 : default:;
7218 : }
7219 20481854 : switch (TREE_CODE (_p0))
7220 : {
7221 0 : case VEC_COND_EXPR:
7222 0 : {
7223 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7224 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7225 0 : tree _q22 = TREE_OPERAND (_p0, 2);
7226 0 : switch (TREE_CODE (_p1))
7227 : {
7228 0 : case VEC_COND_EXPR:
7229 0 : {
7230 0 : tree _q60 = TREE_OPERAND (_p1, 0);
7231 0 : tree _q61 = TREE_OPERAND (_p1, 1);
7232 0 : tree _q62 = TREE_OPERAND (_p1, 2);
7233 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7234 : {
7235 0 : {
7236 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7237 0 : if (VECTOR_TYPE_P (type)
7238 0 : && (TREE_CODE_CLASS (MINUS_EXPR) != tcc_comparison
7239 : || types_match (type, TREE_TYPE (captures[2]))
7240 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7241 : || (optimize_vectors_before_lowering_p ()
7242 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7243 : )
7244 : {
7245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1293;
7246 0 : {
7247 0 : tree res_op0;
7248 0 : res_op0 = captures[1];
7249 0 : tree res_op1;
7250 0 : {
7251 0 : tree _o1[2], _r1;
7252 0 : _o1[0] = captures[2];
7253 0 : _o1[1] = captures[5];
7254 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7255 0 : if (EXPR_P (_r1))
7256 0 : goto next_after_fail1293;
7257 0 : res_op1 = _r1;
7258 : }
7259 0 : tree res_op2;
7260 0 : {
7261 0 : tree _o1[2], _r1;
7262 0 : _o1[0] = captures[3];
7263 0 : _o1[1] = captures[6];
7264 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7265 0 : if (EXPR_P (_r1))
7266 0 : goto next_after_fail1293;
7267 0 : res_op2 = _r1;
7268 : }
7269 0 : tree _r;
7270 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7271 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
7272 0 : return _r;
7273 : }
7274 0 : next_after_fail1293:;
7275 : }
7276 : }
7277 : }
7278 : break;
7279 : }
7280 0 : default:;
7281 : }
7282 0 : {
7283 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7284 0 : if (VECTOR_TYPE_P (type)
7285 0 : && (TREE_CODE_CLASS (MINUS_EXPR) != tcc_comparison
7286 : || types_match (type, TREE_TYPE (captures[2]))
7287 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7288 : || (optimize_vectors_before_lowering_p ()
7289 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7290 : )
7291 : {
7292 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1294;
7293 0 : {
7294 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1294;
7295 0 : tree res_op0;
7296 0 : res_op0 = captures[1];
7297 0 : tree res_op1;
7298 0 : {
7299 0 : tree _o1[2], _r1;
7300 0 : _o1[0] = captures[2];
7301 0 : _o1[1] = unshare_expr (captures[4]);
7302 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7303 0 : if (EXPR_P (_r1))
7304 0 : goto next_after_fail1294;
7305 0 : res_op1 = _r1;
7306 : }
7307 0 : tree res_op2;
7308 0 : {
7309 0 : tree _o1[2], _r1;
7310 0 : _o1[0] = captures[3];
7311 0 : _o1[1] = captures[4];
7312 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7313 0 : if (EXPR_P (_r1))
7314 0 : goto next_after_fail1294;
7315 0 : res_op2 = _r1;
7316 : }
7317 0 : tree _r;
7318 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7319 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7320 0 : return _r;
7321 : }
7322 0 : next_after_fail1294:;
7323 : }
7324 : }
7325 0 : break;
7326 : }
7327 20481854 : default:;
7328 : }
7329 20481854 : if (integer_zerop (_p0))
7330 : {
7331 295286 : {
7332 295286 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
7333 295286 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1295;
7334 295286 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1295;
7335 295286 : {
7336 295286 : tree res_op0;
7337 295286 : res_op0 = captures[0];
7338 295286 : tree _r;
7339 295286 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
7340 295286 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 933, __FILE__, __LINE__, true);
7341 295286 : return _r;
7342 : }
7343 : next_after_fail1295:;
7344 : }
7345 : }
7346 20186568 : if (real_zerop (_p0))
7347 : {
7348 158 : {
7349 158 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7350 158 : if (fold_real_zero_addition_p (type, captures[1], captures[0], 0)
7351 : )
7352 : {
7353 55 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1296;
7354 55 : {
7355 55 : tree res_op0;
7356 55 : res_op0 = captures[1];
7357 55 : tree _r;
7358 55 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
7359 55 : if (TREE_SIDE_EFFECTS (captures[0]))
7360 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
7361 55 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 934, __FILE__, __LINE__, true);
7362 55 : return _r;
7363 : }
7364 0 : next_after_fail1296:;
7365 : }
7366 : }
7367 : }
7368 20186513 : switch (TREE_CODE (_p1))
7369 : {
7370 4 : case VEC_COND_EXPR:
7371 4 : {
7372 4 : tree _q30 = TREE_OPERAND (_p1, 0);
7373 4 : tree _q31 = TREE_OPERAND (_p1, 1);
7374 4 : tree _q32 = TREE_OPERAND (_p1, 2);
7375 4 : {
7376 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7377 4 : if (VECTOR_TYPE_P (type)
7378 4 : && (TREE_CODE_CLASS (MINUS_EXPR) != tcc_comparison
7379 : || types_match (type, TREE_TYPE (captures[3]))
7380 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
7381 : || (optimize_vectors_before_lowering_p ()
7382 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
7383 : )
7384 : {
7385 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1297;
7386 4 : {
7387 4 : if (! tree_invariant_p (captures[0])) goto next_after_fail1297;
7388 0 : tree res_op0;
7389 0 : res_op0 = captures[2];
7390 0 : tree res_op1;
7391 0 : {
7392 0 : tree _o1[2], _r1;
7393 0 : _o1[0] = unshare_expr (captures[0]);
7394 0 : _o1[1] = captures[3];
7395 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7396 0 : if (EXPR_P (_r1))
7397 0 : goto next_after_fail1297;
7398 0 : res_op1 = _r1;
7399 : }
7400 0 : tree res_op2;
7401 0 : {
7402 0 : tree _o1[2], _r1;
7403 0 : _o1[0] = captures[0];
7404 0 : _o1[1] = captures[4];
7405 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, type, _o1[0], _o1[1]);
7406 0 : if (EXPR_P (_r1))
7407 0 : goto next_after_fail1297;
7408 0 : res_op2 = _r1;
7409 : }
7410 0 : tree _r;
7411 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7412 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
7413 0 : return _r;
7414 : }
7415 4 : next_after_fail1297:;
7416 : }
7417 : }
7418 4 : if (integer_each_onep (_q31))
7419 : {
7420 0 : if (integer_zerop (_q32))
7421 : {
7422 0 : {
7423 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7424 0 : tree res = generic_simplify_105 (loc, type, _p0, _p1, captures);
7425 0 : if (res) return res;
7426 : }
7427 : }
7428 : }
7429 : break;
7430 : }
7431 111903 : case VIEW_CONVERT_EXPR:
7432 111903 : {
7433 111903 : tree _q30 = TREE_OPERAND (_p1, 0);
7434 111903 : switch (TREE_CODE (_q30))
7435 : {
7436 0 : case VEC_COND_EXPR:
7437 0 : {
7438 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7439 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7440 0 : tree _q42 = TREE_OPERAND (_q30, 2);
7441 0 : if (integer_each_onep (_q41))
7442 : {
7443 0 : if (integer_zerop (_q42))
7444 : {
7445 0 : {
7446 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42 };
7447 0 : tree res = generic_simplify_105 (loc, type, _p0, _p1, captures);
7448 0 : if (res) return res;
7449 : }
7450 : }
7451 : }
7452 : break;
7453 : }
7454 : default:;
7455 : }
7456 : break;
7457 : }
7458 20186513 : default:;
7459 : }
7460 20186513 : switch (TREE_CODE (_p0))
7461 : {
7462 112477 : case RDIV_EXPR:
7463 112477 : {
7464 112477 : tree _q20 = TREE_OPERAND (_p0, 0);
7465 112477 : tree _q21 = TREE_OPERAND (_p0, 1);
7466 112477 : switch (TREE_CODE (_p1))
7467 : {
7468 18823 : case RDIV_EXPR:
7469 18823 : {
7470 18823 : tree _q50 = TREE_OPERAND (_p1, 0);
7471 18823 : tree _q51 = TREE_OPERAND (_p1, 1);
7472 18823 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7473 : {
7474 18803 : {
7475 18803 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7476 18803 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures, MINUS_EXPR);
7477 18803 : if (res) return res;
7478 : }
7479 : }
7480 : break;
7481 : }
7482 : default:;
7483 : }
7484 : break;
7485 : }
7486 1346962 : case PLUS_EXPR:
7487 1346962 : {
7488 1346962 : tree _q20 = TREE_OPERAND (_p0, 0);
7489 1346962 : tree _q21 = TREE_OPERAND (_p0, 1);
7490 1346962 : switch (TREE_CODE (_q20))
7491 : {
7492 57337 : case CALL_EXPR:
7493 57337 : switch (get_call_combined_fn (_q20))
7494 : {
7495 4 : case CFN_BUILT_IN_POPCOUNT:
7496 4 : if (call_expr_nargs (_q20) == 1)
7497 : {
7498 4 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7499 4 : switch (TREE_CODE (_q21))
7500 : {
7501 4 : case CALL_EXPR:
7502 4 : switch (get_call_combined_fn (_q21))
7503 : {
7504 4 : case CFN_BUILT_IN_POPCOUNT:
7505 4 : if (call_expr_nargs (_q21) == 1)
7506 : {
7507 4 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7508 4 : switch (TREE_CODE (_p1))
7509 : {
7510 4 : case CALL_EXPR:
7511 4 : switch (get_call_combined_fn (_p1))
7512 : {
7513 4 : case CFN_BUILT_IN_POPCOUNT:
7514 4 : if (call_expr_nargs (_p1) == 1)
7515 : {
7516 4 : tree _q70 = CALL_EXPR_ARG (_p1, 0);
7517 4 : switch (TREE_CODE (_q70))
7518 : {
7519 2 : case BIT_AND_EXPR:
7520 2 : {
7521 2 : tree _q80 = TREE_OPERAND (_q70, 0);
7522 2 : tree _q81 = TREE_OPERAND (_q70, 1);
7523 2 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7524 : {
7525 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7526 : {
7527 1 : {
7528 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7529 1 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
7530 1 : if (res) return res;
7531 : }
7532 : }
7533 : }
7534 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7535 : {
7536 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7537 : {
7538 1 : {
7539 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7540 1 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
7541 1 : if (res) return res;
7542 : }
7543 : }
7544 : }
7545 : break;
7546 : }
7547 2 : case BIT_IOR_EXPR:
7548 2 : {
7549 2 : tree _q80 = TREE_OPERAND (_q70, 0);
7550 2 : tree _q81 = TREE_OPERAND (_q70, 1);
7551 2 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7552 : {
7553 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7554 : {
7555 1 : {
7556 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7557 1 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
7558 1 : if (res) return res;
7559 : }
7560 : }
7561 : }
7562 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7563 : {
7564 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7565 : {
7566 1 : {
7567 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7568 1 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
7569 1 : if (res) return res;
7570 : }
7571 : }
7572 : }
7573 : break;
7574 : }
7575 : default:;
7576 : }
7577 : }
7578 : break;
7579 : default:;
7580 : }
7581 : break;
7582 : default:;
7583 : }
7584 : }
7585 : break;
7586 : default:;
7587 : }
7588 : break;
7589 : default:;
7590 : }
7591 : }
7592 : break;
7593 0 : case CFN_BUILT_IN_POPCOUNTLL:
7594 0 : if (call_expr_nargs (_q20) == 1)
7595 : {
7596 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7597 0 : switch (TREE_CODE (_q21))
7598 : {
7599 0 : case CALL_EXPR:
7600 0 : switch (get_call_combined_fn (_q21))
7601 : {
7602 0 : case CFN_BUILT_IN_POPCOUNTLL:
7603 0 : if (call_expr_nargs (_q21) == 1)
7604 : {
7605 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7606 0 : switch (TREE_CODE (_p1))
7607 : {
7608 0 : case CALL_EXPR:
7609 0 : switch (get_call_combined_fn (_p1))
7610 : {
7611 0 : case CFN_BUILT_IN_POPCOUNTLL:
7612 0 : if (call_expr_nargs (_p1) == 1)
7613 : {
7614 0 : tree _q70 = CALL_EXPR_ARG (_p1, 0);
7615 0 : switch (TREE_CODE (_q70))
7616 : {
7617 0 : case BIT_AND_EXPR:
7618 0 : {
7619 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7620 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7621 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7622 : {
7623 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7624 : {
7625 0 : {
7626 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7627 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7628 0 : if (res) return res;
7629 : }
7630 : }
7631 : }
7632 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7633 : {
7634 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7635 : {
7636 0 : {
7637 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7638 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7639 0 : if (res) return res;
7640 : }
7641 : }
7642 : }
7643 : break;
7644 : }
7645 0 : case BIT_IOR_EXPR:
7646 0 : {
7647 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7648 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7649 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7650 : {
7651 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7652 : {
7653 0 : {
7654 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7655 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7656 0 : if (res) return res;
7657 : }
7658 : }
7659 : }
7660 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7661 : {
7662 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7663 : {
7664 0 : {
7665 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7666 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7667 0 : if (res) return res;
7668 : }
7669 : }
7670 : }
7671 : break;
7672 : }
7673 : default:;
7674 : }
7675 : }
7676 : break;
7677 : default:;
7678 : }
7679 : break;
7680 : default:;
7681 : }
7682 : }
7683 : break;
7684 : default:;
7685 : }
7686 : break;
7687 : default:;
7688 : }
7689 : }
7690 : break;
7691 0 : case CFN_POPCOUNT:
7692 0 : if (call_expr_nargs (_q20) == 1)
7693 : {
7694 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7695 0 : switch (TREE_CODE (_q21))
7696 : {
7697 0 : case CALL_EXPR:
7698 0 : switch (get_call_combined_fn (_q21))
7699 : {
7700 0 : case CFN_POPCOUNT:
7701 0 : if (call_expr_nargs (_q21) == 1)
7702 : {
7703 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7704 0 : switch (TREE_CODE (_p1))
7705 : {
7706 0 : case CALL_EXPR:
7707 0 : switch (get_call_combined_fn (_p1))
7708 : {
7709 0 : case CFN_POPCOUNT:
7710 0 : if (call_expr_nargs (_p1) == 1)
7711 : {
7712 0 : tree _q70 = CALL_EXPR_ARG (_p1, 0);
7713 0 : switch (TREE_CODE (_q70))
7714 : {
7715 0 : case BIT_AND_EXPR:
7716 0 : {
7717 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7718 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7719 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7720 : {
7721 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7722 : {
7723 0 : {
7724 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7725 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
7726 0 : if (res) return res;
7727 : }
7728 : }
7729 : }
7730 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7731 : {
7732 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7733 : {
7734 0 : {
7735 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7736 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
7737 0 : if (res) return res;
7738 : }
7739 : }
7740 : }
7741 : break;
7742 : }
7743 0 : case BIT_IOR_EXPR:
7744 0 : {
7745 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7746 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7747 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7748 : {
7749 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7750 : {
7751 0 : {
7752 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7753 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
7754 0 : if (res) return res;
7755 : }
7756 : }
7757 : }
7758 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7759 : {
7760 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7761 : {
7762 0 : {
7763 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7764 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
7765 0 : if (res) return res;
7766 : }
7767 : }
7768 : }
7769 : break;
7770 : }
7771 : default:;
7772 : }
7773 : }
7774 : break;
7775 : default:;
7776 : }
7777 : break;
7778 : default:;
7779 : }
7780 : }
7781 : break;
7782 : default:;
7783 : }
7784 : break;
7785 : default:;
7786 : }
7787 : }
7788 : break;
7789 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
7790 0 : if (call_expr_nargs (_q20) == 1)
7791 : {
7792 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7793 0 : switch (TREE_CODE (_q21))
7794 : {
7795 0 : case CALL_EXPR:
7796 0 : switch (get_call_combined_fn (_q21))
7797 : {
7798 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
7799 0 : if (call_expr_nargs (_q21) == 1)
7800 : {
7801 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7802 0 : switch (TREE_CODE (_p1))
7803 : {
7804 0 : case CALL_EXPR:
7805 0 : switch (get_call_combined_fn (_p1))
7806 : {
7807 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
7808 0 : if (call_expr_nargs (_p1) == 1)
7809 : {
7810 0 : tree _q70 = CALL_EXPR_ARG (_p1, 0);
7811 0 : switch (TREE_CODE (_q70))
7812 : {
7813 0 : case BIT_AND_EXPR:
7814 0 : {
7815 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7816 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7817 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7818 : {
7819 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7820 : {
7821 0 : {
7822 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7823 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
7824 0 : if (res) return res;
7825 : }
7826 : }
7827 : }
7828 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7829 : {
7830 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7831 : {
7832 0 : {
7833 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7834 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
7835 0 : if (res) return res;
7836 : }
7837 : }
7838 : }
7839 : break;
7840 : }
7841 0 : case BIT_IOR_EXPR:
7842 0 : {
7843 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7844 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7845 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7846 : {
7847 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7848 : {
7849 0 : {
7850 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7851 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
7852 0 : if (res) return res;
7853 : }
7854 : }
7855 : }
7856 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7857 : {
7858 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7859 : {
7860 0 : {
7861 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7862 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
7863 0 : if (res) return res;
7864 : }
7865 : }
7866 : }
7867 : break;
7868 : }
7869 : default:;
7870 : }
7871 : }
7872 : break;
7873 : default:;
7874 : }
7875 : break;
7876 : default:;
7877 : }
7878 : }
7879 : break;
7880 : default:;
7881 : }
7882 : break;
7883 : default:;
7884 : }
7885 : }
7886 : break;
7887 0 : case CFN_BUILT_IN_POPCOUNTL:
7888 0 : if (call_expr_nargs (_q20) == 1)
7889 : {
7890 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7891 0 : switch (TREE_CODE (_q21))
7892 : {
7893 0 : case CALL_EXPR:
7894 0 : switch (get_call_combined_fn (_q21))
7895 : {
7896 0 : case CFN_BUILT_IN_POPCOUNTL:
7897 0 : if (call_expr_nargs (_q21) == 1)
7898 : {
7899 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7900 0 : switch (TREE_CODE (_p1))
7901 : {
7902 0 : case CALL_EXPR:
7903 0 : switch (get_call_combined_fn (_p1))
7904 : {
7905 0 : case CFN_BUILT_IN_POPCOUNTL:
7906 0 : if (call_expr_nargs (_p1) == 1)
7907 : {
7908 0 : tree _q70 = CALL_EXPR_ARG (_p1, 0);
7909 0 : switch (TREE_CODE (_q70))
7910 : {
7911 0 : case BIT_AND_EXPR:
7912 0 : {
7913 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7914 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7915 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7916 : {
7917 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7918 : {
7919 0 : {
7920 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7921 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
7922 0 : if (res) return res;
7923 : }
7924 : }
7925 : }
7926 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7927 : {
7928 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7929 : {
7930 0 : {
7931 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7932 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
7933 0 : if (res) return res;
7934 : }
7935 : }
7936 : }
7937 : break;
7938 : }
7939 0 : case BIT_IOR_EXPR:
7940 0 : {
7941 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7942 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7943 0 : if ((_q80 == _q30 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q30, 0) && types_match (_q80, _q30)))
7944 : {
7945 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
7946 : {
7947 0 : {
7948 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7949 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
7950 0 : if (res) return res;
7951 : }
7952 : }
7953 : }
7954 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
7955 : {
7956 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
7957 : {
7958 0 : {
7959 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _p1, _q70 };
7960 0 : tree res = generic_simplify_107 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
7961 0 : if (res) return res;
7962 : }
7963 : }
7964 : }
7965 : break;
7966 : }
7967 : default:;
7968 : }
7969 : }
7970 : break;
7971 : default:;
7972 : }
7973 : break;
7974 : default:;
7975 : }
7976 : }
7977 : break;
7978 : default:;
7979 : }
7980 : break;
7981 : default:;
7982 : }
7983 : }
7984 : break;
7985 : default:;
7986 : }
7987 : break;
7988 : default:;
7989 : }
7990 : break;
7991 : }
7992 0 : case VEC_PERM_EXPR:
7993 0 : {
7994 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7995 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7996 0 : tree _q22 = TREE_OPERAND (_p0, 2);
7997 0 : switch (TREE_CODE (_q20))
7998 : {
7999 0 : case MULT_EXPR:
8000 0 : {
8001 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8002 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8003 0 : if (tree_vec_same_elem_p (_q31))
8004 : {
8005 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8006 : {
8007 0 : {
8008 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q22, _p1 };
8009 0 : tree res = generic_simplify_108 (loc, type, _p0, _p1, captures);
8010 0 : if (res) return res;
8011 : }
8012 : }
8013 : }
8014 0 : if (tree_vec_same_elem_p (_q30))
8015 : {
8016 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8017 : {
8018 0 : {
8019 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _q22, _p1 };
8020 0 : tree res = generic_simplify_108 (loc, type, _p0, _p1, captures);
8021 0 : if (res) return res;
8022 : }
8023 : }
8024 : }
8025 : break;
8026 : }
8027 : default:;
8028 : }
8029 : break;
8030 : }
8031 687997 : case CALL_EXPR:
8032 687997 : switch (get_call_combined_fn (_p0))
8033 : {
8034 18 : case CFN_BUILT_IN_LOG:
8035 18 : if (call_expr_nargs (_p0) == 1)
8036 : {
8037 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8038 18 : switch (TREE_CODE (_p1))
8039 : {
8040 0 : case CALL_EXPR:
8041 0 : switch (get_call_combined_fn (_p1))
8042 : {
8043 0 : case CFN_BUILT_IN_LOG:
8044 0 : if (call_expr_nargs (_p1) == 1)
8045 : {
8046 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8047 0 : {
8048 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8049 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG);
8050 0 : if (res) return res;
8051 : }
8052 : }
8053 : break;
8054 : default:;
8055 : }
8056 : break;
8057 : default:;
8058 : }
8059 : }
8060 : break;
8061 2 : case CFN_BUILT_IN_LOG2:
8062 2 : if (call_expr_nargs (_p0) == 1)
8063 : {
8064 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8065 2 : switch (TREE_CODE (_p1))
8066 : {
8067 0 : case CALL_EXPR:
8068 0 : switch (get_call_combined_fn (_p1))
8069 : {
8070 0 : case CFN_BUILT_IN_LOG2:
8071 0 : if (call_expr_nargs (_p1) == 1)
8072 : {
8073 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8074 0 : {
8075 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8076 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2);
8077 0 : if (res) return res;
8078 : }
8079 : }
8080 : break;
8081 : default:;
8082 : }
8083 : break;
8084 : default:;
8085 : }
8086 : }
8087 : break;
8088 0 : case CFN_BUILT_IN_LOGF:
8089 0 : if (call_expr_nargs (_p0) == 1)
8090 : {
8091 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8092 0 : switch (TREE_CODE (_p1))
8093 : {
8094 0 : case CALL_EXPR:
8095 0 : switch (get_call_combined_fn (_p1))
8096 : {
8097 0 : case CFN_BUILT_IN_LOGF:
8098 0 : if (call_expr_nargs (_p1) == 1)
8099 : {
8100 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8101 0 : {
8102 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8103 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF);
8104 0 : if (res) return res;
8105 : }
8106 : }
8107 : break;
8108 : default:;
8109 : }
8110 : break;
8111 : default:;
8112 : }
8113 : }
8114 : break;
8115 0 : case CFN_BUILT_IN_LOGL:
8116 0 : if (call_expr_nargs (_p0) == 1)
8117 : {
8118 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8119 0 : switch (TREE_CODE (_p1))
8120 : {
8121 0 : case CALL_EXPR:
8122 0 : switch (get_call_combined_fn (_p1))
8123 : {
8124 0 : case CFN_BUILT_IN_LOGL:
8125 0 : if (call_expr_nargs (_p1) == 1)
8126 : {
8127 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8128 0 : {
8129 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8130 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL);
8131 0 : if (res) return res;
8132 : }
8133 : }
8134 : break;
8135 : default:;
8136 : }
8137 : break;
8138 : default:;
8139 : }
8140 : }
8141 : break;
8142 0 : case CFN_BUILT_IN_LOG10F:
8143 0 : if (call_expr_nargs (_p0) == 1)
8144 : {
8145 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8146 0 : switch (TREE_CODE (_p1))
8147 : {
8148 0 : case CALL_EXPR:
8149 0 : switch (get_call_combined_fn (_p1))
8150 : {
8151 0 : case CFN_BUILT_IN_LOG10F:
8152 0 : if (call_expr_nargs (_p1) == 1)
8153 : {
8154 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8155 0 : {
8156 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8157 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F);
8158 0 : if (res) return res;
8159 : }
8160 : }
8161 : break;
8162 : default:;
8163 : }
8164 : break;
8165 : default:;
8166 : }
8167 : }
8168 : break;
8169 0 : case CFN_BUILT_IN_LOG10L:
8170 0 : if (call_expr_nargs (_p0) == 1)
8171 : {
8172 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8173 0 : switch (TREE_CODE (_p1))
8174 : {
8175 0 : case CALL_EXPR:
8176 0 : switch (get_call_combined_fn (_p1))
8177 : {
8178 0 : case CFN_BUILT_IN_LOG10L:
8179 0 : if (call_expr_nargs (_p1) == 1)
8180 : {
8181 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8182 0 : {
8183 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8184 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L);
8185 0 : if (res) return res;
8186 : }
8187 : }
8188 : break;
8189 : default:;
8190 : }
8191 : break;
8192 : default:;
8193 : }
8194 : }
8195 : break;
8196 0 : case CFN_LOG:
8197 0 : if (call_expr_nargs (_p0) == 1)
8198 : {
8199 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8200 0 : switch (TREE_CODE (_p1))
8201 : {
8202 0 : case CALL_EXPR:
8203 0 : switch (get_call_combined_fn (_p1))
8204 : {
8205 0 : case CFN_LOG:
8206 0 : if (call_expr_nargs (_p1) == 1)
8207 : {
8208 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8209 0 : {
8210 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8211 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_LOG);
8212 0 : if (res) return res;
8213 : }
8214 : }
8215 : break;
8216 : default:;
8217 : }
8218 : break;
8219 : default:;
8220 : }
8221 : }
8222 : break;
8223 0 : case CFN_LOG2:
8224 0 : if (call_expr_nargs (_p0) == 1)
8225 : {
8226 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8227 0 : switch (TREE_CODE (_p1))
8228 : {
8229 0 : case CALL_EXPR:
8230 0 : switch (get_call_combined_fn (_p1))
8231 : {
8232 0 : case CFN_LOG2:
8233 0 : if (call_expr_nargs (_p1) == 1)
8234 : {
8235 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8236 0 : {
8237 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8238 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_LOG2);
8239 0 : if (res) return res;
8240 : }
8241 : }
8242 : break;
8243 : default:;
8244 : }
8245 : break;
8246 : default:;
8247 : }
8248 : }
8249 : break;
8250 0 : case CFN_LOG10:
8251 0 : if (call_expr_nargs (_p0) == 1)
8252 : {
8253 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8254 0 : switch (TREE_CODE (_p1))
8255 : {
8256 0 : case CALL_EXPR:
8257 0 : switch (get_call_combined_fn (_p1))
8258 : {
8259 0 : case CFN_LOG10:
8260 0 : if (call_expr_nargs (_p1) == 1)
8261 : {
8262 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8263 0 : {
8264 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8265 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_LOG10);
8266 0 : if (res) return res;
8267 : }
8268 : }
8269 : break;
8270 : default:;
8271 : }
8272 : break;
8273 : default:;
8274 : }
8275 : }
8276 : break;
8277 6 : case CFN_BUILT_IN_LOG10:
8278 6 : if (call_expr_nargs (_p0) == 1)
8279 : {
8280 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8281 6 : switch (TREE_CODE (_p1))
8282 : {
8283 2 : case CALL_EXPR:
8284 2 : switch (get_call_combined_fn (_p1))
8285 : {
8286 2 : case CFN_BUILT_IN_LOG10:
8287 2 : if (call_expr_nargs (_p1) == 1)
8288 : {
8289 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8290 2 : {
8291 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8292 2 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10);
8293 2 : if (res) return res;
8294 : }
8295 : }
8296 : break;
8297 : default:;
8298 : }
8299 : break;
8300 : default:;
8301 : }
8302 : }
8303 : break;
8304 0 : case CFN_BUILT_IN_LOG2F:
8305 0 : if (call_expr_nargs (_p0) == 1)
8306 : {
8307 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8308 0 : switch (TREE_CODE (_p1))
8309 : {
8310 0 : case CALL_EXPR:
8311 0 : switch (get_call_combined_fn (_p1))
8312 : {
8313 0 : case CFN_BUILT_IN_LOG2F:
8314 0 : if (call_expr_nargs (_p1) == 1)
8315 : {
8316 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8317 0 : {
8318 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8319 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F);
8320 0 : if (res) return res;
8321 : }
8322 : }
8323 : break;
8324 : default:;
8325 : }
8326 : break;
8327 : default:;
8328 : }
8329 : }
8330 : break;
8331 0 : case CFN_BUILT_IN_LOG2L:
8332 0 : if (call_expr_nargs (_p0) == 1)
8333 : {
8334 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8335 0 : switch (TREE_CODE (_p1))
8336 : {
8337 0 : case CALL_EXPR:
8338 0 : switch (get_call_combined_fn (_p1))
8339 : {
8340 0 : case CFN_BUILT_IN_LOG2L:
8341 0 : if (call_expr_nargs (_p1) == 1)
8342 : {
8343 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8344 0 : {
8345 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8346 0 : tree res = generic_simplify_106 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L);
8347 0 : if (res) return res;
8348 : }
8349 : }
8350 : break;
8351 : default:;
8352 : }
8353 : break;
8354 : default:;
8355 : }
8356 : }
8357 : break;
8358 : default:;
8359 : }
8360 : break;
8361 20186496 : default:;
8362 : }
8363 20186496 : switch (TREE_CODE (_p1))
8364 : {
8365 6710 : case BIT_AND_EXPR:
8366 6710 : {
8367 6710 : tree _q30 = TREE_OPERAND (_p1, 0);
8368 6710 : tree _q31 = TREE_OPERAND (_p1, 1);
8369 6710 : switch (TREE_CODE (_q30))
8370 : {
8371 80 : case MAX_EXPR:
8372 80 : {
8373 80 : tree _q40 = TREE_OPERAND (_q30, 0);
8374 80 : tree _q41 = TREE_OPERAND (_q30, 1);
8375 80 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
8376 : {
8377 80 : switch (TREE_CODE (_q41))
8378 : {
8379 80 : case INTEGER_CST:
8380 80 : {
8381 80 : switch (TREE_CODE (_q31))
8382 : {
8383 72 : case INTEGER_CST:
8384 72 : {
8385 72 : {
8386 72 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q31 };
8387 72 : {
8388 72 : auto i = wi::neg (wi::to_wide (captures[2]));
8389 72 : if (wi::popcount (i) == 1
8390 200 : && (wi::to_wide (captures[1])) == (i - 1)
8391 : )
8392 : {
8393 40 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
8394 : )
8395 : {
8396 8 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1298;
8397 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1298;
8398 8 : {
8399 8 : tree res_op0;
8400 8 : res_op0 = captures[0];
8401 8 : tree res_op1;
8402 8 : res_op1 = captures[1];
8403 8 : tree _r;
8404 8 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
8405 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 935, __FILE__, __LINE__, true);
8406 8 : return _r;
8407 : }
8408 64 : next_after_fail1298:;
8409 : }
8410 : else
8411 : {
8412 32 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1299;
8413 32 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1299;
8414 32 : {
8415 32 : if (! tree_invariant_p (captures[0])) goto next_after_fail1299;
8416 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail1299;
8417 0 : tree res_op0;
8418 0 : {
8419 0 : tree _o1[2], _r1;
8420 0 : _o1[0] = unshare_expr (captures[0]);
8421 0 : _o1[1] = unshare_expr (captures[1]);
8422 0 : _r1 = fold_build2_loc (loc, LE_EXPR, boolean_type_node, _o1[0], _o1[1]);
8423 0 : res_op0 = _r1;
8424 : }
8425 0 : tree res_op1;
8426 0 : res_op1 = unshare_expr (captures[0]);
8427 0 : tree res_op2;
8428 0 : {
8429 0 : tree _o1[2], _r1;
8430 0 : _o1[0] = captures[0];
8431 0 : _o1[1] = captures[1];
8432 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8433 0 : res_op2 = _r1;
8434 : }
8435 0 : tree _r;
8436 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8437 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
8438 0 : return _r;
8439 : }
8440 64 : next_after_fail1299:;
8441 : }
8442 : }
8443 8 : }
8444 : }
8445 64 : break;
8446 : }
8447 : default:;
8448 : }
8449 : break;
8450 : }
8451 : default:;
8452 : }
8453 : }
8454 : break;
8455 : }
8456 : default:;
8457 : }
8458 : break;
8459 : }
8460 20186488 : default:;
8461 : }
8462 20186488 : switch (TREE_CODE (_p0))
8463 : {
8464 0 : case VEC_PERM_EXPR:
8465 0 : {
8466 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8467 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8468 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8469 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8470 : {
8471 0 : switch (TREE_CODE (_p1))
8472 : {
8473 0 : case VEC_PERM_EXPR:
8474 0 : {
8475 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8476 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8477 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8478 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8479 : {
8480 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8481 : {
8482 0 : {
8483 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8484 0 : if (VECTOR_INTEGER_TYPE_P (type)
8485 : )
8486 : {
8487 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1300;
8488 0 : {
8489 0 : tree res_op0;
8490 0 : {
8491 0 : tree _o1[2], _r1;
8492 0 : _o1[0] = captures[0];
8493 0 : _o1[1] = captures[2];
8494 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8495 0 : captures[3] = _r1;
8496 : }
8497 0 : res_op0 = unshare_expr (captures[3]);
8498 0 : tree res_op1;
8499 0 : res_op1 = captures[3];
8500 0 : tree res_op2;
8501 0 : res_op2 = captures[1];
8502 0 : tree _r;
8503 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
8504 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
8505 0 : return _r;
8506 : }
8507 0 : next_after_fail1300:;
8508 : }
8509 : }
8510 : }
8511 : }
8512 : break;
8513 : }
8514 0 : default:;
8515 : }
8516 0 : switch (TREE_CODE (_q22))
8517 : {
8518 0 : case VECTOR_CST:
8519 0 : {
8520 0 : switch (TREE_CODE (_p1))
8521 : {
8522 0 : case VEC_PERM_EXPR:
8523 0 : {
8524 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8525 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8526 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8527 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8528 : {
8529 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8530 : {
8531 0 : switch (TREE_CODE (_q62))
8532 : {
8533 0 : case VECTOR_CST:
8534 0 : {
8535 0 : {
8536 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8537 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8538 0 : if (res) return res;
8539 : }
8540 0 : break;
8541 : }
8542 : default:;
8543 : }
8544 : }
8545 : }
8546 : break;
8547 : }
8548 : default:;
8549 : }
8550 : break;
8551 : }
8552 : default:;
8553 : }
8554 : }
8555 : break;
8556 : }
8557 : default:;
8558 : }
8559 : return NULL_TREE;
8560 : }
8561 :
8562 : tree
8563 1246591 : generic_simplify_LSHIFT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8564 : {
8565 1246591 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8566 1246591 : switch (TREE_CODE (_p1))
8567 : {
8568 250 : case TRUNC_MOD_EXPR:
8569 250 : {
8570 250 : tree _q30 = TREE_OPERAND (_p1, 0);
8571 250 : tree _q31 = TREE_OPERAND (_p1, 1);
8572 250 : {
8573 250 : tree _q31_pops[1];
8574 250 : if (tree_power_of_two_cand (_q31, _q31_pops))
8575 : {
8576 244 : tree _q50 = _q31_pops[0];
8577 244 : {
8578 244 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
8579 244 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, LSHIFT_EXPR, TRUNC_MOD_EXPR);
8580 244 : if (res) return res;
8581 : }
8582 : }
8583 : }
8584 75 : break;
8585 : }
8586 0 : case FLOOR_MOD_EXPR:
8587 0 : {
8588 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8589 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8590 0 : {
8591 0 : tree _q31_pops[1];
8592 0 : if (tree_power_of_two_cand (_q31, _q31_pops))
8593 : {
8594 0 : tree _q50 = _q31_pops[0];
8595 0 : {
8596 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
8597 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, LSHIFT_EXPR, FLOOR_MOD_EXPR);
8598 0 : if (res) return res;
8599 : }
8600 : }
8601 : }
8602 0 : break;
8603 : }
8604 1246416 : default:;
8605 : }
8606 1246416 : if (uniform_integer_cst_p (_p1))
8607 : {
8608 853097 : {
8609 853097 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8610 853097 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8611 853097 : if (res) return res;
8612 : }
8613 : }
8614 1245951 : switch (TREE_CODE (_p0))
8615 : {
8616 703634 : CASE_CONVERT:
8617 703634 : {
8618 703634 : tree _q20 = TREE_OPERAND (_p0, 0);
8619 703634 : switch (TREE_CODE (_q20))
8620 : {
8621 4 : case LT_EXPR:
8622 4 : {
8623 4 : tree _q30 = TREE_OPERAND (_q20, 0);
8624 4 : tree _q31 = TREE_OPERAND (_q20, 1);
8625 4 : if (integer_zerop (_q31))
8626 : {
8627 4 : switch (TREE_CODE (_p1))
8628 : {
8629 4 : case INTEGER_CST:
8630 4 : {
8631 4 : {
8632 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8633 4 : if (TYPE_SIGN (TREE_TYPE (captures[0])) == SIGNED
8634 4 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])) - 1)
8635 : )
8636 : {
8637 0 : {
8638 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
8639 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1651;
8640 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
8641 0 : {
8642 0 : tree res_op0;
8643 0 : {
8644 0 : tree _o1[1], _r1;
8645 0 : _o1[0] = captures[0];
8646 0 : if (TREE_TYPE (_o1[0]) != type)
8647 : {
8648 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
8649 : }
8650 : else
8651 : _r1 = _o1[0];
8652 0 : res_op0 = _r1;
8653 : }
8654 0 : tree res_op1;
8655 0 : res_op1 = wide_int_to_tree (type,
8656 0 : wi::lshift (wone, wi::to_wide (captures[2])));
8657 0 : tree _r;
8658 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
8659 0 : if (TREE_SIDE_EFFECTS (captures[1]))
8660 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
8661 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
8662 0 : return _r;
8663 : }
8664 0 : next_after_fail1651:;
8665 0 : }
8666 : }
8667 : }
8668 4 : break;
8669 : }
8670 : default:;
8671 : }
8672 : }
8673 : break;
8674 : }
8675 426 : CASE_CONVERT:
8676 426 : {
8677 426 : tree _q30 = TREE_OPERAND (_q20, 0);
8678 426 : switch (TREE_CODE (_q30))
8679 : {
8680 0 : case RSHIFT_EXPR:
8681 0 : {
8682 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8683 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8684 0 : switch (TREE_CODE (_q41))
8685 : {
8686 0 : case INTEGER_CST:
8687 0 : {
8688 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
8689 : {
8690 0 : {
8691 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
8692 0 : if (wi::ltu_p (wi::to_wide (captures[2]), element_precision (type))
8693 0 : && INTEGRAL_TYPE_P (type)
8694 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8695 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
8696 0 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[1]))
8697 0 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) >= TYPE_PRECISION (type)
8698 0 : || wi::geu_p (wi::to_wide (captures[2]),
8699 0 : TYPE_PRECISION (type)
8700 0 : - TYPE_PRECISION (TREE_TYPE (captures[0]))))
8701 : )
8702 : {
8703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
8704 0 : {
8705 0 : tree res_op0;
8706 0 : {
8707 0 : tree _o1[1], _r1;
8708 0 : _o1[0] = captures[1];
8709 0 : if (TREE_TYPE (_o1[0]) != type)
8710 : {
8711 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
8712 : }
8713 : else
8714 : _r1 = _o1[0];
8715 0 : res_op0 = _r1;
8716 : }
8717 0 : tree res_op1;
8718 0 : {
8719 0 : tree _o1[2], _r1;
8720 0 : _o1[0] = build_minus_one_cst (type);
8721 0 : _o1[1] = captures[2];
8722 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8723 0 : res_op1 = _r1;
8724 : }
8725 0 : tree _r;
8726 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
8727 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
8728 0 : return _r;
8729 : }
8730 0 : next_after_fail1652:;
8731 : }
8732 : }
8733 : }
8734 : break;
8735 : }
8736 : default:;
8737 : }
8738 : break;
8739 : }
8740 : default:;
8741 : }
8742 : break;
8743 : }
8744 : default:;
8745 : }
8746 : break;
8747 : }
8748 19148 : case RSHIFT_EXPR:
8749 19148 : {
8750 19148 : tree _q20 = TREE_OPERAND (_p0, 0);
8751 19148 : tree _q21 = TREE_OPERAND (_p0, 1);
8752 19148 : switch (TREE_CODE (_q21))
8753 : {
8754 48 : case INTEGER_CST:
8755 48 : {
8756 48 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8757 : {
8758 3 : {
8759 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8760 3 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures);
8761 3 : if (res) return res;
8762 : }
8763 : }
8764 : break;
8765 : }
8766 : default:;
8767 : }
8768 : break;
8769 : }
8770 1245948 : default:;
8771 : }
8772 1245948 : {
8773 1245948 : tree _p0_pops[1];
8774 1245948 : if (tree_nop_convert (_p0, _p0_pops))
8775 : {
8776 671376 : tree _q20 = _p0_pops[0];
8777 671376 : switch (TREE_CODE (_q20))
8778 : {
8779 73 : case RSHIFT_EXPR:
8780 73 : {
8781 73 : tree _q30 = TREE_OPERAND (_q20, 0);
8782 73 : tree _q31 = TREE_OPERAND (_q20, 1);
8783 73 : switch (TREE_CODE (_q31))
8784 : {
8785 67 : case INTEGER_CST:
8786 67 : {
8787 67 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
8788 : {
8789 8 : {
8790 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
8791 8 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures);
8792 8 : if (res) return res;
8793 : }
8794 : }
8795 : break;
8796 : }
8797 : default:;
8798 : }
8799 : break;
8800 : }
8801 : default:;
8802 : }
8803 : }
8804 : }
8805 1245940 : if (integer_onep (_p0))
8806 : {
8807 319041 : switch (TREE_CODE (_p1))
8808 : {
8809 46676 : case MINUS_EXPR:
8810 46676 : {
8811 46676 : tree _q30 = TREE_OPERAND (_p1, 0);
8812 46676 : tree _q31 = TREE_OPERAND (_p1, 1);
8813 46676 : switch (TREE_CODE (_q30))
8814 : {
8815 46673 : case INTEGER_CST:
8816 46673 : {
8817 46673 : {
8818 46673 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
8819 46673 : if (INTEGRAL_TYPE_P (type)
8820 46673 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
8821 46673 : && single_use (captures[1])
8822 : )
8823 : {
8824 28359 : if (TYPE_UNSIGNED (type)
8825 : )
8826 : {
8827 28353 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
8828 28353 : {
8829 28353 : tree res_op0;
8830 28353 : {
8831 28353 : tree _o1[2], _r1;
8832 28353 : _o1[0] = captures[0];
8833 28353 : _o1[1] = captures[2];
8834 28353 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8835 28353 : res_op0 = _r1;
8836 : }
8837 28353 : tree res_op1;
8838 28353 : res_op1 = captures[3];
8839 28353 : tree _r;
8840 28353 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
8841 28353 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
8842 28353 : return _r;
8843 : }
8844 0 : next_after_fail1653:;
8845 : }
8846 : else
8847 : {
8848 6 : {
8849 6 : tree utype = unsigned_type_for (type);
8850 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1654;
8851 6 : {
8852 6 : tree res_op0;
8853 6 : {
8854 6 : tree _o1[2], _r1;
8855 6 : {
8856 6 : tree _o2[2], _r2;
8857 6 : {
8858 6 : tree _o3[1], _r3;
8859 6 : _o3[0] = captures[0];
8860 6 : if (TREE_TYPE (_o3[0]) != utype)
8861 : {
8862 6 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
8863 : }
8864 : else
8865 : _r3 = _o3[0];
8866 6 : _o2[0] = _r3;
8867 : }
8868 6 : _o2[1] = captures[2];
8869 6 : _r2 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8870 6 : _o1[0] = _r2;
8871 : }
8872 6 : _o1[1] = captures[3];
8873 6 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8874 6 : res_op0 = _r1;
8875 : }
8876 6 : tree _r;
8877 6 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
8878 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
8879 6 : return _r;
8880 : }
8881 0 : next_after_fail1654:;
8882 : }
8883 : }
8884 : }
8885 : }
8886 18314 : break;
8887 : }
8888 : default:;
8889 : }
8890 : break;
8891 : }
8892 : default:;
8893 : }
8894 : }
8895 1217581 : if (integer_zerop (_p1))
8896 : {
8897 1265 : {
8898 1265 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8899 1265 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8900 1265 : if (res) return res;
8901 : }
8902 : }
8903 1216316 : if (integer_zerop (_p0))
8904 : {
8905 178 : {
8906 178 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8907 178 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8908 178 : if (res) return res;
8909 : }
8910 : }
8911 1216138 : switch (TREE_CODE (_p1))
8912 : {
8913 0 : case VECTOR_CST:
8914 0 : {
8915 0 : {
8916 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8917 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8918 0 : if (res) return res;
8919 : }
8920 0 : break;
8921 : }
8922 0 : case CONSTRUCTOR:
8923 0 : {
8924 0 : {
8925 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8926 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8927 0 : if (res) return res;
8928 : }
8929 0 : break;
8930 : }
8931 1216138 : default:;
8932 : }
8933 1216138 : switch (TREE_CODE (_p0))
8934 : {
8935 280 : case LSHIFT_EXPR:
8936 280 : {
8937 280 : tree _q20 = TREE_OPERAND (_p0, 0);
8938 280 : tree _q21 = TREE_OPERAND (_p0, 1);
8939 280 : switch (TREE_CODE (_q21))
8940 : {
8941 39 : case INTEGER_CST:
8942 39 : {
8943 39 : switch (TREE_CODE (_p1))
8944 : {
8945 39 : case INTEGER_CST:
8946 39 : {
8947 39 : {
8948 39 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8949 39 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, LSHIFT_EXPR);
8950 39 : if (res) return res;
8951 : }
8952 0 : break;
8953 : }
8954 : default:;
8955 : }
8956 : break;
8957 : }
8958 : default:;
8959 : }
8960 : break;
8961 : }
8962 703260 : CASE_CONVERT:
8963 703260 : {
8964 703260 : tree _q20 = TREE_OPERAND (_p0, 0);
8965 703260 : switch (TREE_CODE (_q20))
8966 : {
8967 0 : case BIT_AND_EXPR:
8968 0 : {
8969 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8970 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8971 0 : switch (TREE_CODE (_q31))
8972 : {
8973 0 : case INTEGER_CST:
8974 0 : {
8975 0 : switch (TREE_CODE (_p1))
8976 : {
8977 0 : case INTEGER_CST:
8978 0 : {
8979 0 : {
8980 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
8981 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, LSHIFT_EXPR);
8982 0 : if (res) return res;
8983 : }
8984 0 : break;
8985 : }
8986 : default:;
8987 : }
8988 : break;
8989 : }
8990 : default:;
8991 : }
8992 : break;
8993 : }
8994 11 : case BIT_XOR_EXPR:
8995 11 : {
8996 11 : tree _q30 = TREE_OPERAND (_q20, 0);
8997 11 : tree _q31 = TREE_OPERAND (_q20, 1);
8998 11 : switch (TREE_CODE (_q31))
8999 : {
9000 0 : case INTEGER_CST:
9001 0 : {
9002 0 : switch (TREE_CODE (_p1))
9003 : {
9004 0 : case INTEGER_CST:
9005 0 : {
9006 0 : {
9007 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9008 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LSHIFT_EXPR);
9009 0 : if (res) return res;
9010 : }
9011 0 : break;
9012 : }
9013 : default:;
9014 : }
9015 : break;
9016 : }
9017 : default:;
9018 : }
9019 : break;
9020 : }
9021 18 : case BIT_IOR_EXPR:
9022 18 : {
9023 18 : tree _q30 = TREE_OPERAND (_q20, 0);
9024 18 : tree _q31 = TREE_OPERAND (_q20, 1);
9025 18 : switch (TREE_CODE (_q31))
9026 : {
9027 11 : case INTEGER_CST:
9028 11 : {
9029 11 : switch (TREE_CODE (_p1))
9030 : {
9031 11 : case INTEGER_CST:
9032 11 : {
9033 11 : {
9034 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9035 11 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, LSHIFT_EXPR);
9036 11 : if (res) return res;
9037 : }
9038 2 : break;
9039 : }
9040 : default:;
9041 : }
9042 : break;
9043 : }
9044 : default:;
9045 : }
9046 : break;
9047 : }
9048 : default:;
9049 : }
9050 : break;
9051 : }
9052 13745 : case BIT_AND_EXPR:
9053 13745 : {
9054 13745 : tree _q20 = TREE_OPERAND (_p0, 0);
9055 13745 : tree _q21 = TREE_OPERAND (_p0, 1);
9056 13745 : switch (TREE_CODE (_q21))
9057 : {
9058 13650 : case INTEGER_CST:
9059 13650 : {
9060 13650 : switch (TREE_CODE (_p1))
9061 : {
9062 13511 : case INTEGER_CST:
9063 13511 : {
9064 13511 : {
9065 13511 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9066 13511 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, LSHIFT_EXPR);
9067 13511 : if (res) return res;
9068 : }
9069 7 : break;
9070 : }
9071 : default:;
9072 : }
9073 : break;
9074 : }
9075 : default:;
9076 : }
9077 : break;
9078 : }
9079 76 : case BIT_XOR_EXPR:
9080 76 : {
9081 76 : tree _q20 = TREE_OPERAND (_p0, 0);
9082 76 : tree _q21 = TREE_OPERAND (_p0, 1);
9083 76 : switch (TREE_CODE (_q21))
9084 : {
9085 7 : case INTEGER_CST:
9086 7 : {
9087 7 : switch (TREE_CODE (_p1))
9088 : {
9089 7 : case INTEGER_CST:
9090 7 : {
9091 7 : {
9092 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9093 7 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LSHIFT_EXPR);
9094 7 : if (res) return res;
9095 : }
9096 0 : break;
9097 : }
9098 : default:;
9099 : }
9100 : break;
9101 : }
9102 : default:;
9103 : }
9104 : break;
9105 : }
9106 78 : case BIT_IOR_EXPR:
9107 78 : {
9108 78 : tree _q20 = TREE_OPERAND (_p0, 0);
9109 78 : tree _q21 = TREE_OPERAND (_p0, 1);
9110 78 : switch (TREE_CODE (_q21))
9111 : {
9112 2 : case INTEGER_CST:
9113 2 : {
9114 2 : switch (TREE_CODE (_p1))
9115 : {
9116 2 : case INTEGER_CST:
9117 2 : {
9118 2 : {
9119 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9120 2 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, LSHIFT_EXPR);
9121 2 : if (res) return res;
9122 : }
9123 0 : break;
9124 : }
9125 : default:;
9126 : }
9127 : break;
9128 : }
9129 : default:;
9130 : }
9131 : break;
9132 : }
9133 1 : case VEC_COND_EXPR:
9134 1 : {
9135 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9136 1 : tree _q21 = TREE_OPERAND (_p0, 1);
9137 1 : tree _q22 = TREE_OPERAND (_p0, 2);
9138 1 : switch (TREE_CODE (_p1))
9139 : {
9140 0 : case VEC_COND_EXPR:
9141 0 : {
9142 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9143 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9144 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9145 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9146 : {
9147 0 : {
9148 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9149 0 : if (VECTOR_TYPE_P (type)
9150 0 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
9151 : || types_match (type, TREE_TYPE (captures[2]))
9152 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9153 : || (optimize_vectors_before_lowering_p ()
9154 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9155 : )
9156 : {
9157 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1655;
9158 0 : {
9159 0 : tree res_op0;
9160 0 : res_op0 = captures[1];
9161 0 : tree res_op1;
9162 0 : {
9163 0 : tree _o1[2], _r1;
9164 0 : _o1[0] = captures[2];
9165 0 : _o1[1] = captures[5];
9166 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9167 0 : if (EXPR_P (_r1))
9168 0 : goto next_after_fail1655;
9169 0 : res_op1 = _r1;
9170 : }
9171 0 : tree res_op2;
9172 0 : {
9173 0 : tree _o1[2], _r1;
9174 0 : _o1[0] = captures[3];
9175 0 : _o1[1] = captures[6];
9176 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9177 0 : if (EXPR_P (_r1))
9178 0 : goto next_after_fail1655;
9179 0 : res_op2 = _r1;
9180 : }
9181 0 : tree _r;
9182 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9183 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
9184 0 : return _r;
9185 : }
9186 0 : next_after_fail1655:;
9187 : }
9188 : }
9189 : }
9190 : break;
9191 : }
9192 1 : default:;
9193 : }
9194 1 : {
9195 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9196 1 : if (VECTOR_TYPE_P (type)
9197 1 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
9198 : || types_match (type, TREE_TYPE (captures[2]))
9199 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9200 : || (optimize_vectors_before_lowering_p ()
9201 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9202 : )
9203 : {
9204 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1656;
9205 1 : {
9206 1 : if (! tree_invariant_p (captures[4])) goto next_after_fail1656;
9207 0 : tree res_op0;
9208 0 : res_op0 = captures[1];
9209 0 : tree res_op1;
9210 0 : {
9211 0 : tree _o1[2], _r1;
9212 0 : _o1[0] = captures[2];
9213 0 : _o1[1] = unshare_expr (captures[4]);
9214 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9215 0 : if (EXPR_P (_r1))
9216 0 : goto next_after_fail1656;
9217 0 : res_op1 = _r1;
9218 : }
9219 0 : tree res_op2;
9220 0 : {
9221 0 : tree _o1[2], _r1;
9222 0 : _o1[0] = captures[3];
9223 0 : _o1[1] = captures[4];
9224 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9225 0 : if (EXPR_P (_r1))
9226 0 : goto next_after_fail1656;
9227 0 : res_op2 = _r1;
9228 : }
9229 0 : tree _r;
9230 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9231 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
9232 0 : return _r;
9233 : }
9234 1 : next_after_fail1656:;
9235 : }
9236 : }
9237 1 : break;
9238 : }
9239 1202577 : default:;
9240 : }
9241 1202577 : switch (TREE_CODE (_p1))
9242 : {
9243 3 : case VEC_COND_EXPR:
9244 3 : {
9245 3 : tree _q30 = TREE_OPERAND (_p1, 0);
9246 3 : tree _q31 = TREE_OPERAND (_p1, 1);
9247 3 : tree _q32 = TREE_OPERAND (_p1, 2);
9248 3 : {
9249 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9250 3 : if (VECTOR_TYPE_P (type)
9251 3 : && (TREE_CODE_CLASS (LSHIFT_EXPR) != tcc_comparison
9252 : || types_match (type, TREE_TYPE (captures[3]))
9253 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9254 : || (optimize_vectors_before_lowering_p ()
9255 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9256 : )
9257 : {
9258 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1657;
9259 3 : {
9260 3 : if (! tree_invariant_p (captures[0])) goto next_after_fail1657;
9261 1 : tree res_op0;
9262 1 : res_op0 = captures[2];
9263 1 : tree res_op1;
9264 1 : {
9265 1 : tree _o1[2], _r1;
9266 1 : _o1[0] = unshare_expr (captures[0]);
9267 1 : _o1[1] = captures[3];
9268 1 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9269 1 : if (EXPR_P (_r1))
9270 0 : goto next_after_fail1657;
9271 1 : res_op1 = _r1;
9272 : }
9273 1 : tree res_op2;
9274 1 : {
9275 1 : tree _o1[2], _r1;
9276 1 : _o1[0] = captures[0];
9277 1 : _o1[1] = captures[4];
9278 1 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, type, _o1[0], _o1[1]);
9279 1 : if (EXPR_P (_r1))
9280 0 : goto next_after_fail1657;
9281 1 : res_op2 = _r1;
9282 : }
9283 1 : tree _r;
9284 1 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9285 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
9286 1 : return _r;
9287 : }
9288 2 : next_after_fail1657:;
9289 : }
9290 : }
9291 2 : break;
9292 : }
9293 1202576 : default:;
9294 : }
9295 1202576 : switch (TREE_CODE (_p0))
9296 : {
9297 0 : case VEC_PERM_EXPR:
9298 0 : {
9299 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9300 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9301 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9302 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
9303 : {
9304 0 : switch (TREE_CODE (_p1))
9305 : {
9306 0 : case VEC_PERM_EXPR:
9307 0 : {
9308 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9309 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9310 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9311 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
9312 : {
9313 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9314 : {
9315 0 : {
9316 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
9317 0 : if (VECTOR_INTEGER_TYPE_P (type)
9318 : )
9319 : {
9320 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1658;
9321 0 : {
9322 0 : tree res_op0;
9323 0 : {
9324 0 : tree _o1[2], _r1;
9325 0 : _o1[0] = captures[0];
9326 0 : _o1[1] = captures[2];
9327 0 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9328 0 : captures[3] = _r1;
9329 : }
9330 0 : res_op0 = unshare_expr (captures[3]);
9331 0 : tree res_op1;
9332 0 : res_op1 = captures[3];
9333 0 : tree res_op2;
9334 0 : res_op2 = captures[1];
9335 0 : tree _r;
9336 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
9337 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
9338 0 : return _r;
9339 : }
9340 0 : next_after_fail1658:;
9341 : }
9342 : }
9343 : }
9344 : }
9345 : break;
9346 : }
9347 : default:;
9348 : }
9349 : }
9350 : break;
9351 : }
9352 : default:;
9353 : }
9354 : return NULL_TREE;
9355 : }
9356 :
9357 : tree
9358 80513 : generic_simplify_MIN_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
9359 : {
9360 80513 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9361 80513 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9362 : {
9363 0 : {
9364 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9365 0 : tree res = generic_simplify_517 (loc, type, _p0, _p1, captures, MIN_EXPR);
9366 0 : if (res) return res;
9367 : }
9368 : }
9369 80513 : switch (TREE_CODE (_p0))
9370 : {
9371 46 : case MIN_EXPR:
9372 46 : {
9373 46 : tree _q20 = TREE_OPERAND (_p0, 0);
9374 46 : tree _q21 = TREE_OPERAND (_p0, 1);
9375 46 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9376 : {
9377 0 : {
9378 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9379 0 : tree res = generic_simplify_518 (loc, type, _p0, _p1, captures, MIN_EXPR);
9380 0 : if (res) return res;
9381 : }
9382 : }
9383 46 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9384 : {
9385 0 : {
9386 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
9387 0 : tree res = generic_simplify_518 (loc, type, _p0, _p1, captures, MIN_EXPR);
9388 0 : if (res) return res;
9389 : }
9390 : }
9391 : break;
9392 : }
9393 80513 : default:;
9394 : }
9395 80513 : switch (TREE_CODE (_p1))
9396 : {
9397 0 : case MIN_EXPR:
9398 0 : {
9399 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9400 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9401 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9402 : {
9403 0 : {
9404 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
9405 0 : tree res = generic_simplify_519 (loc, type, _p0, _p1, captures, MIN_EXPR);
9406 0 : if (res) return res;
9407 : }
9408 : }
9409 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9410 : {
9411 0 : {
9412 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
9413 0 : tree res = generic_simplify_519 (loc, type, _p0, _p1, captures, MIN_EXPR);
9414 0 : if (res) return res;
9415 : }
9416 : }
9417 : break;
9418 : }
9419 80513 : default:;
9420 : }
9421 80513 : switch (TREE_CODE (_p0))
9422 : {
9423 4 : case MAX_EXPR:
9424 4 : {
9425 4 : tree _q20 = TREE_OPERAND (_p0, 0);
9426 4 : tree _q21 = TREE_OPERAND (_p0, 1);
9427 4 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9428 : {
9429 3 : {
9430 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9431 3 : tree res = generic_simplify_520 (loc, type, _p0, _p1, captures);
9432 3 : if (res) return res;
9433 : }
9434 : }
9435 1 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9436 : {
9437 1 : {
9438 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9439 1 : tree res = generic_simplify_520 (loc, type, _p0, _p1, captures);
9440 1 : if (res) return res;
9441 : }
9442 : }
9443 : break;
9444 : }
9445 80509 : default:;
9446 : }
9447 80509 : switch (TREE_CODE (_p1))
9448 : {
9449 0 : case MAX_EXPR:
9450 0 : {
9451 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9452 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9453 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9454 : {
9455 0 : {
9456 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9457 0 : tree res = generic_simplify_520 (loc, type, _p0, _p1, captures);
9458 0 : if (res) return res;
9459 : }
9460 : }
9461 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9462 : {
9463 0 : {
9464 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9465 0 : tree res = generic_simplify_520 (loc, type, _p0, _p1, captures);
9466 0 : if (res) return res;
9467 : }
9468 : }
9469 : break;
9470 : }
9471 0 : case NEGATE_EXPR:
9472 0 : {
9473 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9474 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9475 : {
9476 0 : {
9477 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9478 0 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
9479 0 : if (res) return res;
9480 : }
9481 : }
9482 : break;
9483 : }
9484 80509 : default:;
9485 : }
9486 80509 : switch (TREE_CODE (_p0))
9487 : {
9488 2 : case NEGATE_EXPR:
9489 2 : {
9490 2 : tree _q20 = TREE_OPERAND (_p0, 0);
9491 2 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9492 : {
9493 2 : {
9494 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9495 2 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
9496 2 : if (res) return res;
9497 : }
9498 : }
9499 : break;
9500 : }
9501 80507 : default:;
9502 : }
9503 80507 : {
9504 80507 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9505 80507 : if (INTEGRAL_TYPE_P (type)
9506 78686 : && TYPE_MIN_VALUE (type)
9507 159193 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
9508 : )
9509 : {
9510 544 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1722;
9511 544 : {
9512 544 : tree _r;
9513 544 : _r = captures[1];
9514 544 : if (TREE_SIDE_EFFECTS (captures[0]))
9515 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
9516 544 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1019, __FILE__, __LINE__, true);
9517 544 : return _r;
9518 : }
9519 0 : next_after_fail1722:;
9520 : }
9521 : else
9522 : {
9523 79963 : if (INTEGRAL_TYPE_P (type)
9524 78142 : && TYPE_MAX_VALUE (type)
9525 158105 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
9526 : )
9527 : {
9528 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1723;
9529 1 : {
9530 1 : tree _r;
9531 1 : _r = captures[0];
9532 1 : if (TREE_SIDE_EFFECTS (captures[1]))
9533 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9534 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9535 1 : return _r;
9536 : }
9537 0 : next_after_fail1723:;
9538 : }
9539 : }
9540 : }
9541 79962 : switch (TREE_CODE (_p0))
9542 : {
9543 5613 : case PLUS_EXPR:
9544 5613 : {
9545 5613 : tree _q20 = TREE_OPERAND (_p0, 0);
9546 5613 : tree _q21 = TREE_OPERAND (_p0, 1);
9547 5613 : switch (TREE_CODE (_p1))
9548 : {
9549 15 : case PLUS_EXPR:
9550 15 : {
9551 15 : tree _q50 = TREE_OPERAND (_p1, 0);
9552 15 : tree _q51 = TREE_OPERAND (_p1, 1);
9553 15 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9554 : {
9555 0 : {
9556 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9557 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MIN_EXPR);
9558 0 : if (res) return res;
9559 : }
9560 0 : {
9561 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
9562 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MIN_EXPR);
9563 0 : if (res) return res;
9564 : }
9565 : }
9566 15 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9567 : {
9568 0 : {
9569 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9570 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MIN_EXPR);
9571 0 : if (res) return res;
9572 : }
9573 : }
9574 15 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9575 : {
9576 1 : {
9577 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q51, _q21, _p0, _q20 };
9578 1 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MIN_EXPR);
9579 1 : if (res) return res;
9580 : }
9581 : }
9582 : break;
9583 : }
9584 5612 : default:;
9585 : }
9586 5612 : switch (TREE_CODE (_q21))
9587 : {
9588 5484 : case INTEGER_CST:
9589 5484 : {
9590 5484 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9591 : {
9592 0 : {
9593 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9594 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
9595 : )
9596 : {
9597 0 : if (tree_int_cst_sgn (captures[2]) > 0
9598 : )
9599 : {
9600 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1724;
9601 0 : {
9602 0 : tree _r;
9603 0 : _r = captures[0];
9604 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9605 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9606 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9607 0 : return _r;
9608 : }
9609 0 : next_after_fail1724:;
9610 : }
9611 : else
9612 : {
9613 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1725;
9614 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1725;
9615 0 : {
9616 0 : tree _r;
9617 0 : _r = captures[1];
9618 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9619 0 : return _r;
9620 : }
9621 0 : next_after_fail1725:;
9622 : }
9623 : }
9624 : }
9625 : }
9626 : break;
9627 : }
9628 : default:;
9629 : }
9630 : break;
9631 : }
9632 998 : case MINUS_EXPR:
9633 998 : {
9634 998 : tree _q20 = TREE_OPERAND (_p0, 0);
9635 998 : tree _q21 = TREE_OPERAND (_p0, 1);
9636 998 : switch (TREE_CODE (_p1))
9637 : {
9638 980 : case MINUS_EXPR:
9639 980 : {
9640 980 : tree _q50 = TREE_OPERAND (_p1, 0);
9641 980 : tree _q51 = TREE_OPERAND (_p1, 1);
9642 980 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9643 : {
9644 0 : {
9645 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9646 0 : tree res = generic_simplify_523 (loc, type, _p0, _p1, captures, MIN_EXPR);
9647 0 : if (res) return res;
9648 : }
9649 0 : {
9650 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
9651 0 : tree res = generic_simplify_523 (loc, type, _p0, _p1, captures, MIN_EXPR);
9652 0 : if (res) return res;
9653 : }
9654 : }
9655 : break;
9656 : }
9657 : default:;
9658 : }
9659 : break;
9660 : }
9661 79961 : default:;
9662 : }
9663 79961 : switch (TREE_CODE (_p1))
9664 : {
9665 21 : case PLUS_EXPR:
9666 21 : {
9667 21 : tree _q30 = TREE_OPERAND (_p1, 0);
9668 21 : tree _q31 = TREE_OPERAND (_p1, 1);
9669 21 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9670 : {
9671 0 : switch (TREE_CODE (_q31))
9672 : {
9673 0 : case INTEGER_CST:
9674 0 : {
9675 0 : {
9676 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
9677 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
9678 : )
9679 : {
9680 0 : if (tree_int_cst_sgn (captures[2]) > 0
9681 : )
9682 : {
9683 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1726;
9684 0 : {
9685 0 : tree _r;
9686 0 : _r = captures[0];
9687 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9688 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9689 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9690 0 : return _r;
9691 : }
9692 0 : next_after_fail1726:;
9693 : }
9694 : else
9695 : {
9696 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1727;
9697 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1727;
9698 0 : {
9699 0 : tree _r;
9700 0 : _r = captures[1];
9701 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9702 0 : return _r;
9703 : }
9704 0 : next_after_fail1727:;
9705 : }
9706 : }
9707 : }
9708 0 : break;
9709 : }
9710 : default:;
9711 : }
9712 : }
9713 : break;
9714 : }
9715 79961 : default:;
9716 : }
9717 79961 : switch (TREE_CODE (_p0))
9718 : {
9719 46 : case MIN_EXPR:
9720 46 : {
9721 46 : tree _q20 = TREE_OPERAND (_p0, 0);
9722 46 : tree _q21 = TREE_OPERAND (_p0, 1);
9723 46 : switch (TREE_CODE (_p1))
9724 : {
9725 0 : case MAX_EXPR:
9726 0 : {
9727 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9728 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9729 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9730 : {
9731 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9732 : {
9733 0 : {
9734 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9735 0 : if (!HONOR_NANS (captures[0])
9736 : )
9737 : {
9738 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1728;
9739 0 : {
9740 0 : tree res_op0;
9741 0 : res_op0 = captures[0];
9742 0 : tree res_op1;
9743 0 : res_op1 = captures[1];
9744 0 : tree _r;
9745 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
9746 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
9747 0 : return _r;
9748 : }
9749 0 : next_after_fail1728:;
9750 : }
9751 : }
9752 : }
9753 : }
9754 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9755 : {
9756 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9757 : {
9758 0 : {
9759 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9760 0 : if (!HONOR_NANS (captures[0])
9761 : )
9762 : {
9763 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1729;
9764 0 : {
9765 0 : tree res_op0;
9766 0 : res_op0 = captures[0];
9767 0 : tree res_op1;
9768 0 : res_op1 = captures[1];
9769 0 : tree _r;
9770 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
9771 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
9772 0 : return _r;
9773 : }
9774 0 : next_after_fail1729:;
9775 : }
9776 : }
9777 : }
9778 : }
9779 : break;
9780 : }
9781 : default:;
9782 : }
9783 : break;
9784 : }
9785 0 : case MAX_EXPR:
9786 0 : {
9787 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9788 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9789 0 : switch (TREE_CODE (_p1))
9790 : {
9791 0 : case MIN_EXPR:
9792 0 : {
9793 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9794 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9795 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9796 : {
9797 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9798 : {
9799 0 : {
9800 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9801 0 : if (!HONOR_NANS (captures[0])
9802 : )
9803 : {
9804 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1730;
9805 0 : {
9806 0 : tree res_op0;
9807 0 : res_op0 = captures[0];
9808 0 : tree res_op1;
9809 0 : res_op1 = captures[1];
9810 0 : tree _r;
9811 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
9812 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
9813 0 : return _r;
9814 : }
9815 0 : next_after_fail1730:;
9816 : }
9817 : }
9818 : }
9819 : }
9820 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9821 : {
9822 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9823 : {
9824 0 : {
9825 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9826 0 : if (!HONOR_NANS (captures[0])
9827 : )
9828 : {
9829 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1731;
9830 0 : {
9831 0 : tree res_op0;
9832 0 : res_op0 = captures[0];
9833 0 : tree res_op1;
9834 0 : res_op1 = captures[1];
9835 0 : tree _r;
9836 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
9837 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
9838 0 : return _r;
9839 : }
9840 0 : next_after_fail1731:;
9841 : }
9842 : }
9843 : }
9844 : }
9845 : break;
9846 : }
9847 : default:;
9848 : }
9849 : break;
9850 : }
9851 1 : case BIT_AND_EXPR:
9852 1 : {
9853 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9854 1 : tree _q21 = TREE_OPERAND (_p0, 1);
9855 1 : switch (TREE_CODE (_q21))
9856 : {
9857 1 : case INTEGER_CST:
9858 1 : {
9859 1 : switch (TREE_CODE (_p1))
9860 : {
9861 0 : case BIT_AND_EXPR:
9862 0 : {
9863 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9864 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9865 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9866 : {
9867 0 : switch (TREE_CODE (_q51))
9868 : {
9869 0 : case INTEGER_CST:
9870 0 : {
9871 0 : {
9872 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9873 0 : tree res = generic_simplify_524 (loc, type, _p0, _p1, captures, MIN_EXPR);
9874 0 : if (res) return res;
9875 : }
9876 0 : break;
9877 : }
9878 : default:;
9879 : }
9880 : }
9881 : break;
9882 : }
9883 : default:;
9884 : }
9885 : break;
9886 : }
9887 : default:;
9888 : }
9889 : break;
9890 : }
9891 79961 : default:;
9892 : }
9893 79961 : switch (TREE_CODE (_p1))
9894 : {
9895 0 : case BIT_AND_EXPR:
9896 0 : {
9897 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9898 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9899 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9900 : {
9901 0 : switch (TREE_CODE (_q31))
9902 : {
9903 0 : case INTEGER_CST:
9904 0 : {
9905 0 : {
9906 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
9907 0 : tree res = generic_simplify_525 (loc, type, _p0, _p1, captures, MIN_EXPR);
9908 0 : if (res) return res;
9909 : }
9910 0 : break;
9911 : }
9912 : default:;
9913 : }
9914 : }
9915 : break;
9916 : }
9917 79961 : default:;
9918 : }
9919 79961 : switch (TREE_CODE (_p0))
9920 : {
9921 572 : CASE_CONVERT:
9922 572 : {
9923 572 : tree _q20 = TREE_OPERAND (_p0, 0);
9924 572 : switch (TREE_CODE (_q20))
9925 : {
9926 47 : case ADDR_EXPR:
9927 47 : {
9928 47 : switch (TREE_CODE (_p1))
9929 : {
9930 47 : CASE_CONVERT:
9931 47 : {
9932 47 : tree _q40 = TREE_OPERAND (_p1, 0);
9933 47 : switch (TREE_CODE (_q40))
9934 : {
9935 47 : case ADDR_EXPR:
9936 47 : {
9937 47 : {
9938 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9939 47 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
9940 47 : if (res) return res;
9941 : }
9942 47 : break;
9943 : }
9944 : default:;
9945 : }
9946 : break;
9947 : }
9948 0 : case ADDR_EXPR:
9949 0 : {
9950 0 : {
9951 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9952 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
9953 0 : if (res) return res;
9954 : }
9955 0 : break;
9956 : }
9957 : default:;
9958 : }
9959 : break;
9960 : }
9961 : default:;
9962 : }
9963 : break;
9964 : }
9965 10 : case ADDR_EXPR:
9966 10 : {
9967 10 : switch (TREE_CODE (_p1))
9968 : {
9969 0 : CASE_CONVERT:
9970 0 : {
9971 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9972 0 : switch (TREE_CODE (_q30))
9973 : {
9974 0 : case ADDR_EXPR:
9975 0 : {
9976 0 : {
9977 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
9978 0 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
9979 0 : if (res) return res;
9980 : }
9981 0 : break;
9982 : }
9983 : default:;
9984 : }
9985 : break;
9986 : }
9987 10 : case ADDR_EXPR:
9988 10 : {
9989 10 : {
9990 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
9991 10 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
9992 10 : if (res) return res;
9993 : }
9994 10 : break;
9995 : }
9996 : default:;
9997 : }
9998 : break;
9999 : }
10000 0 : case NEGATE_EXPR:
10001 0 : {
10002 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10003 0 : switch (TREE_CODE (_p1))
10004 : {
10005 0 : case NEGATE_EXPR:
10006 0 : {
10007 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10008 0 : {
10009 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10010 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
10011 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
10012 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
10013 : )
10014 : {
10015 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1732;
10016 0 : {
10017 0 : tree res_op0;
10018 0 : {
10019 0 : tree _o1[2], _r1;
10020 0 : _o1[0] = captures[1];
10021 0 : _o1[1] = captures[3];
10022 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10023 0 : res_op0 = _r1;
10024 : }
10025 0 : tree _r;
10026 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
10027 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
10028 0 : return _r;
10029 : }
10030 0 : next_after_fail1732:;
10031 : }
10032 : }
10033 0 : break;
10034 : }
10035 : default:;
10036 : }
10037 : break;
10038 : }
10039 0 : case BIT_NOT_EXPR:
10040 0 : {
10041 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10042 0 : switch (TREE_CODE (_p1))
10043 : {
10044 0 : case BIT_NOT_EXPR:
10045 0 : {
10046 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10047 0 : {
10048 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10049 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures, MIN_EXPR, MAX_EXPR);
10050 0 : if (res) return res;
10051 : }
10052 0 : break;
10053 : }
10054 : default:;
10055 : }
10056 : break;
10057 : }
10058 0 : case VEC_COND_EXPR:
10059 0 : {
10060 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10061 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10062 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10063 0 : switch (TREE_CODE (_p1))
10064 : {
10065 0 : case VEC_COND_EXPR:
10066 0 : {
10067 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10068 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10069 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10070 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10071 : {
10072 0 : {
10073 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10074 0 : if (VECTOR_TYPE_P (type)
10075 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
10076 : || types_match (type, TREE_TYPE (captures[2]))
10077 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10078 : || (optimize_vectors_before_lowering_p ()
10079 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10080 : )
10081 : {
10082 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1733;
10083 0 : {
10084 0 : tree res_op0;
10085 0 : res_op0 = captures[1];
10086 0 : tree res_op1;
10087 0 : {
10088 0 : tree _o1[2], _r1;
10089 0 : _o1[0] = captures[2];
10090 0 : _o1[1] = captures[5];
10091 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10092 0 : if (EXPR_P (_r1))
10093 0 : goto next_after_fail1733;
10094 0 : res_op1 = _r1;
10095 : }
10096 0 : tree res_op2;
10097 0 : {
10098 0 : tree _o1[2], _r1;
10099 0 : _o1[0] = captures[3];
10100 0 : _o1[1] = captures[6];
10101 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10102 0 : if (EXPR_P (_r1))
10103 0 : goto next_after_fail1733;
10104 0 : res_op2 = _r1;
10105 : }
10106 0 : tree _r;
10107 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10108 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10109 0 : return _r;
10110 : }
10111 0 : next_after_fail1733:;
10112 : }
10113 : }
10114 : }
10115 : break;
10116 : }
10117 0 : default:;
10118 : }
10119 0 : {
10120 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10121 0 : if (VECTOR_TYPE_P (type)
10122 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
10123 : || types_match (type, TREE_TYPE (captures[2]))
10124 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10125 : || (optimize_vectors_before_lowering_p ()
10126 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10127 : )
10128 : {
10129 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1734;
10130 0 : {
10131 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1734;
10132 0 : tree res_op0;
10133 0 : res_op0 = captures[1];
10134 0 : tree res_op1;
10135 0 : {
10136 0 : tree _o1[2], _r1;
10137 0 : _o1[0] = captures[2];
10138 0 : _o1[1] = unshare_expr (captures[4]);
10139 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10140 0 : if (EXPR_P (_r1))
10141 0 : goto next_after_fail1734;
10142 0 : res_op1 = _r1;
10143 : }
10144 0 : tree res_op2;
10145 0 : {
10146 0 : tree _o1[2], _r1;
10147 0 : _o1[0] = captures[3];
10148 0 : _o1[1] = captures[4];
10149 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10150 0 : if (EXPR_P (_r1))
10151 0 : goto next_after_fail1734;
10152 0 : res_op2 = _r1;
10153 : }
10154 0 : tree _r;
10155 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10156 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10157 0 : return _r;
10158 : }
10159 0 : next_after_fail1734:;
10160 : }
10161 : }
10162 0 : break;
10163 : }
10164 79961 : default:;
10165 : }
10166 79961 : switch (TREE_CODE (_p1))
10167 : {
10168 0 : case VEC_COND_EXPR:
10169 0 : {
10170 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10171 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10172 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10173 0 : {
10174 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10175 0 : if (VECTOR_TYPE_P (type)
10176 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
10177 : || types_match (type, TREE_TYPE (captures[3]))
10178 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10179 : || (optimize_vectors_before_lowering_p ()
10180 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10181 : )
10182 : {
10183 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1735;
10184 0 : {
10185 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1735;
10186 0 : tree res_op0;
10187 0 : res_op0 = captures[2];
10188 0 : tree res_op1;
10189 0 : {
10190 0 : tree _o1[2], _r1;
10191 0 : _o1[0] = unshare_expr (captures[0]);
10192 0 : _o1[1] = captures[3];
10193 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10194 0 : if (EXPR_P (_r1))
10195 0 : goto next_after_fail1735;
10196 0 : res_op1 = _r1;
10197 : }
10198 0 : tree res_op2;
10199 0 : {
10200 0 : tree _o1[2], _r1;
10201 0 : _o1[0] = captures[0];
10202 0 : _o1[1] = captures[4];
10203 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
10204 0 : if (EXPR_P (_r1))
10205 0 : goto next_after_fail1735;
10206 0 : res_op2 = _r1;
10207 : }
10208 0 : tree _r;
10209 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
10211 0 : return _r;
10212 : }
10213 0 : next_after_fail1735:;
10214 : }
10215 : }
10216 0 : break;
10217 : }
10218 79961 : default:;
10219 : }
10220 79961 : if (tree_zero_one_valued_p (_p0))
10221 : {
10222 3 : if (tree_zero_one_valued_p (_p1))
10223 : {
10224 2 : {
10225 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10226 2 : tree res = generic_simplify_531 (loc, type, _p0, _p1, captures, MIN_EXPR, BIT_AND_EXPR);
10227 2 : if (res) return res;
10228 : }
10229 : }
10230 : }
10231 : return NULL_TREE;
10232 : }
10233 :
10234 : tree
10235 192441 : generic_simplify_ORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10236 : {
10237 192441 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10238 192441 : switch (TREE_CODE (_p0))
10239 : {
10240 0 : case VEC_COND_EXPR:
10241 0 : {
10242 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10243 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10244 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10245 0 : switch (TREE_CODE (_p1))
10246 : {
10247 0 : case VEC_COND_EXPR:
10248 0 : {
10249 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10250 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10251 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10252 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10253 : {
10254 0 : {
10255 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10256 0 : if (VECTOR_TYPE_P (type)
10257 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
10258 0 : || types_match (type, TREE_TYPE (captures[2]))
10259 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10260 : || (optimize_vectors_before_lowering_p ()
10261 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10262 : )
10263 : {
10264 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1757;
10265 0 : {
10266 0 : tree res_op0;
10267 0 : res_op0 = captures[1];
10268 0 : tree res_op1;
10269 0 : {
10270 0 : tree _o1[2], _r1;
10271 0 : _o1[0] = captures[2];
10272 0 : _o1[1] = captures[5];
10273 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10274 0 : if (EXPR_P (_r1))
10275 0 : goto next_after_fail1757;
10276 0 : res_op1 = _r1;
10277 : }
10278 0 : tree res_op2;
10279 0 : {
10280 0 : tree _o1[2], _r1;
10281 0 : _o1[0] = captures[3];
10282 0 : _o1[1] = captures[6];
10283 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10284 0 : if (EXPR_P (_r1))
10285 0 : goto next_after_fail1757;
10286 0 : res_op2 = _r1;
10287 : }
10288 0 : tree _r;
10289 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10290 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10291 0 : return _r;
10292 : }
10293 0 : next_after_fail1757:;
10294 : }
10295 : }
10296 : }
10297 : break;
10298 : }
10299 0 : default:;
10300 : }
10301 0 : {
10302 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10303 0 : if (VECTOR_TYPE_P (type)
10304 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
10305 0 : || types_match (type, TREE_TYPE (captures[2]))
10306 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10307 : || (optimize_vectors_before_lowering_p ()
10308 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10309 : )
10310 : {
10311 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1758;
10312 0 : {
10313 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1758;
10314 0 : tree res_op0;
10315 0 : res_op0 = captures[1];
10316 0 : tree res_op1;
10317 0 : {
10318 0 : tree _o1[2], _r1;
10319 0 : _o1[0] = captures[2];
10320 0 : _o1[1] = unshare_expr (captures[4]);
10321 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10322 0 : if (EXPR_P (_r1))
10323 0 : goto next_after_fail1758;
10324 0 : res_op1 = _r1;
10325 : }
10326 0 : tree res_op2;
10327 0 : {
10328 0 : tree _o1[2], _r1;
10329 0 : _o1[0] = captures[3];
10330 0 : _o1[1] = captures[4];
10331 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10332 0 : if (EXPR_P (_r1))
10333 0 : goto next_after_fail1758;
10334 0 : res_op2 = _r1;
10335 : }
10336 0 : tree _r;
10337 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10338 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10339 0 : return _r;
10340 : }
10341 0 : next_after_fail1758:;
10342 : }
10343 : }
10344 0 : break;
10345 : }
10346 192441 : default:;
10347 : }
10348 192441 : switch (TREE_CODE (_p1))
10349 : {
10350 0 : case VEC_COND_EXPR:
10351 0 : {
10352 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10353 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10354 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10355 0 : {
10356 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10357 0 : if (VECTOR_TYPE_P (type)
10358 0 : && (TREE_CODE_CLASS (ORDERED_EXPR) != tcc_comparison
10359 0 : || types_match (type, TREE_TYPE (captures[3]))
10360 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10361 : || (optimize_vectors_before_lowering_p ()
10362 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10363 : )
10364 : {
10365 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1759;
10366 0 : {
10367 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1759;
10368 0 : tree res_op0;
10369 0 : res_op0 = captures[2];
10370 0 : tree res_op1;
10371 0 : {
10372 0 : tree _o1[2], _r1;
10373 0 : _o1[0] = unshare_expr (captures[0]);
10374 0 : _o1[1] = captures[3];
10375 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10376 0 : if (EXPR_P (_r1))
10377 0 : goto next_after_fail1759;
10378 0 : res_op1 = _r1;
10379 : }
10380 0 : tree res_op2;
10381 0 : {
10382 0 : tree _o1[2], _r1;
10383 0 : _o1[0] = captures[0];
10384 0 : _o1[1] = captures[4];
10385 0 : _r1 = fold_build2_loc (loc, ORDERED_EXPR, type, _o1[0], _o1[1]);
10386 0 : if (EXPR_P (_r1))
10387 0 : goto next_after_fail1759;
10388 0 : res_op2 = _r1;
10389 : }
10390 0 : tree _r;
10391 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10392 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
10393 0 : return _r;
10394 : }
10395 0 : next_after_fail1759:;
10396 : }
10397 : }
10398 0 : break;
10399 : }
10400 192441 : default:;
10401 : }
10402 192441 : switch (TREE_CODE (_p0))
10403 : {
10404 0 : case FLOAT_EXPR:
10405 0 : {
10406 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10407 0 : switch (TREE_CODE (_p1))
10408 : {
10409 0 : case FLOAT_EXPR:
10410 0 : {
10411 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10412 0 : {
10413 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10414 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
10415 0 : if (res) return res;
10416 : }
10417 0 : break;
10418 : }
10419 : default:;
10420 : }
10421 : break;
10422 : }
10423 0 : case NEGATE_EXPR:
10424 0 : {
10425 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10426 0 : switch (TREE_CODE (_p1))
10427 : {
10428 0 : case NEGATE_EXPR:
10429 0 : {
10430 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10431 0 : {
10432 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10433 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
10434 0 : if (res) return res;
10435 : }
10436 0 : break;
10437 : }
10438 0 : default:;
10439 : }
10440 0 : if (CONSTANT_CLASS_P (_p1))
10441 : {
10442 0 : {
10443 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10444 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, ORDERED_EXPR, ORDERED_EXPR);
10445 0 : if (res) return res;
10446 : }
10447 : }
10448 : break;
10449 : }
10450 192441 : default:;
10451 : }
10452 192441 : switch (TREE_CODE (_p1))
10453 : {
10454 102 : case REAL_CST:
10455 102 : {
10456 102 : {
10457 102 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10458 102 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
10459 102 : if (res) return res;
10460 : }
10461 102 : break;
10462 : }
10463 192441 : default:;
10464 : }
10465 192441 : {
10466 192441 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10467 192441 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
10468 : )
10469 : {
10470 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1760;
10471 0 : {
10472 0 : tree _r;
10473 0 : _r = constant_boolean_node (false, type);
10474 0 : if (TREE_SIDE_EFFECTS (captures[0]))
10475 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10476 0 : if (TREE_SIDE_EFFECTS (captures[1]))
10477 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10478 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
10479 0 : return _r;
10480 : }
10481 0 : next_after_fail1760:;
10482 : }
10483 : else
10484 : {
10485 192441 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
10486 : )
10487 : {
10488 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1761;
10489 10 : {
10490 10 : tree _r;
10491 10 : _r = constant_boolean_node (true, type);
10492 10 : if (TREE_SIDE_EFFECTS (captures[0]))
10493 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10494 10 : if (TREE_SIDE_EFFECTS (captures[1]))
10495 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10496 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
10497 10 : return _r;
10498 : }
10499 0 : next_after_fail1761:;
10500 : }
10501 : }
10502 : }
10503 192431 : return NULL_TREE;
10504 : }
10505 :
10506 : tree
10507 349656 : generic_simplify_UNEQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10508 : {
10509 349656 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10510 349656 : switch (TREE_CODE (_p0))
10511 : {
10512 0 : case VEC_COND_EXPR:
10513 0 : {
10514 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10515 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10516 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10517 0 : switch (TREE_CODE (_p1))
10518 : {
10519 0 : case VEC_COND_EXPR:
10520 0 : {
10521 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10522 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10523 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10524 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10525 : {
10526 0 : {
10527 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10528 0 : if (VECTOR_TYPE_P (type)
10529 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
10530 0 : || types_match (type, TREE_TYPE (captures[2]))
10531 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10532 : || (optimize_vectors_before_lowering_p ()
10533 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10534 : )
10535 : {
10536 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1774;
10537 0 : {
10538 0 : tree res_op0;
10539 0 : res_op0 = captures[1];
10540 0 : tree res_op1;
10541 0 : {
10542 0 : tree _o1[2], _r1;
10543 0 : _o1[0] = captures[2];
10544 0 : _o1[1] = captures[5];
10545 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10546 0 : if (EXPR_P (_r1))
10547 0 : goto next_after_fail1774;
10548 0 : res_op1 = _r1;
10549 : }
10550 0 : tree res_op2;
10551 0 : {
10552 0 : tree _o1[2], _r1;
10553 0 : _o1[0] = captures[3];
10554 0 : _o1[1] = captures[6];
10555 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10556 0 : if (EXPR_P (_r1))
10557 0 : goto next_after_fail1774;
10558 0 : res_op2 = _r1;
10559 : }
10560 0 : tree _r;
10561 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10562 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10563 0 : return _r;
10564 : }
10565 0 : next_after_fail1774:;
10566 : }
10567 : }
10568 : }
10569 : break;
10570 : }
10571 0 : default:;
10572 : }
10573 0 : {
10574 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10575 0 : if (VECTOR_TYPE_P (type)
10576 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
10577 0 : || types_match (type, TREE_TYPE (captures[2]))
10578 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10579 : || (optimize_vectors_before_lowering_p ()
10580 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10581 : )
10582 : {
10583 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1775;
10584 0 : {
10585 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1775;
10586 0 : tree res_op0;
10587 0 : res_op0 = captures[1];
10588 0 : tree res_op1;
10589 0 : {
10590 0 : tree _o1[2], _r1;
10591 0 : _o1[0] = captures[2];
10592 0 : _o1[1] = unshare_expr (captures[4]);
10593 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10594 0 : if (EXPR_P (_r1))
10595 0 : goto next_after_fail1775;
10596 0 : res_op1 = _r1;
10597 : }
10598 0 : tree res_op2;
10599 0 : {
10600 0 : tree _o1[2], _r1;
10601 0 : _o1[0] = captures[3];
10602 0 : _o1[1] = captures[4];
10603 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10604 0 : if (EXPR_P (_r1))
10605 0 : goto next_after_fail1775;
10606 0 : res_op2 = _r1;
10607 : }
10608 0 : tree _r;
10609 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10610 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10611 0 : return _r;
10612 : }
10613 0 : next_after_fail1775:;
10614 : }
10615 : }
10616 0 : break;
10617 : }
10618 349656 : default:;
10619 : }
10620 349656 : switch (TREE_CODE (_p1))
10621 : {
10622 0 : case VEC_COND_EXPR:
10623 0 : {
10624 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10625 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10626 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10627 0 : {
10628 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10629 0 : if (VECTOR_TYPE_P (type)
10630 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
10631 0 : || types_match (type, TREE_TYPE (captures[3]))
10632 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10633 : || (optimize_vectors_before_lowering_p ()
10634 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10635 : )
10636 : {
10637 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1776;
10638 0 : {
10639 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1776;
10640 0 : tree res_op0;
10641 0 : res_op0 = captures[2];
10642 0 : tree res_op1;
10643 0 : {
10644 0 : tree _o1[2], _r1;
10645 0 : _o1[0] = unshare_expr (captures[0]);
10646 0 : _o1[1] = captures[3];
10647 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10648 0 : if (EXPR_P (_r1))
10649 0 : goto next_after_fail1776;
10650 0 : res_op1 = _r1;
10651 : }
10652 0 : tree res_op2;
10653 0 : {
10654 0 : tree _o1[2], _r1;
10655 0 : _o1[0] = captures[0];
10656 0 : _o1[1] = captures[4];
10657 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
10658 0 : if (EXPR_P (_r1))
10659 0 : goto next_after_fail1776;
10660 0 : res_op2 = _r1;
10661 : }
10662 0 : tree _r;
10663 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10664 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
10665 0 : return _r;
10666 : }
10667 0 : next_after_fail1776:;
10668 : }
10669 : }
10670 0 : break;
10671 : }
10672 349656 : default:;
10673 : }
10674 349656 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10675 : {
10676 0 : {
10677 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10678 0 : tree res = generic_simplify_562 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
10679 0 : if (res) return res;
10680 : }
10681 : }
10682 349656 : switch (TREE_CODE (_p0))
10683 : {
10684 0 : case FLOAT_EXPR:
10685 0 : {
10686 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10687 0 : switch (TREE_CODE (_p1))
10688 : {
10689 0 : case FLOAT_EXPR:
10690 0 : {
10691 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10692 0 : {
10693 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10694 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNEQ_EXPR, EQ_EXPR);
10695 0 : if (res) return res;
10696 : }
10697 0 : break;
10698 : }
10699 : default:;
10700 : }
10701 : break;
10702 : }
10703 0 : case NEGATE_EXPR:
10704 0 : {
10705 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10706 0 : switch (TREE_CODE (_p1))
10707 : {
10708 0 : case NEGATE_EXPR:
10709 0 : {
10710 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10711 0 : {
10712 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10713 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
10714 0 : if (res) return res;
10715 : }
10716 0 : break;
10717 : }
10718 0 : default:;
10719 : }
10720 0 : if (CONSTANT_CLASS_P (_p1))
10721 : {
10722 0 : {
10723 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10724 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
10725 0 : if (res) return res;
10726 : }
10727 : }
10728 : break;
10729 : }
10730 349656 : default:;
10731 : }
10732 349656 : switch (TREE_CODE (_p1))
10733 : {
10734 154 : case REAL_CST:
10735 154 : {
10736 154 : {
10737 154 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10738 154 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
10739 154 : if (res) return res;
10740 : }
10741 152 : break;
10742 : }
10743 : default:;
10744 : }
10745 : return NULL_TREE;
10746 : }
10747 :
10748 : tree
10749 12440909 : generic_simplify_COND_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
10750 : {
10751 12440909 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10752 12440909 : switch (TREE_CODE (_p0))
10753 : {
10754 1751807 : case LT_EXPR:
10755 1751807 : {
10756 1751807 : tree _q20 = TREE_OPERAND (_p0, 0);
10757 1751807 : tree _q21 = TREE_OPERAND (_p0, 1);
10758 1751807 : switch (TREE_CODE (_q20))
10759 : {
10760 11286 : case MINUS_EXPR:
10761 11286 : {
10762 11286 : tree _q30 = TREE_OPERAND (_q20, 0);
10763 11286 : tree _q31 = TREE_OPERAND (_q20, 1);
10764 11286 : switch (TREE_CODE (_q30))
10765 : {
10766 592 : case SSA_NAME:
10767 592 : {
10768 592 : switch (TREE_CODE (_q31))
10769 : {
10770 0 : case CALL_EXPR:
10771 0 : switch (get_call_combined_fn (_q31))
10772 : {
10773 0 : case CFN_BUILT_IN_FLOORF:
10774 0 : if (call_expr_nargs (_q31) == 1)
10775 : {
10776 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
10777 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
10778 : {
10779 0 : switch (TREE_CODE (_q50))
10780 : {
10781 0 : case SSA_NAME:
10782 0 : {
10783 0 : switch (TREE_CODE (_q21))
10784 : {
10785 0 : case MINUS_EXPR:
10786 0 : {
10787 0 : tree _q80 = TREE_OPERAND (_q21, 0);
10788 0 : tree _q81 = TREE_OPERAND (_q21, 1);
10789 0 : switch (TREE_CODE (_q80))
10790 : {
10791 0 : case CALL_EXPR:
10792 0 : switch (get_call_combined_fn (_q80))
10793 : {
10794 0 : case CFN_BUILT_IN_CEILF:
10795 0 : if (call_expr_nargs (_q80) == 1)
10796 : {
10797 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
10798 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
10799 : {
10800 0 : switch (TREE_CODE (_q90))
10801 : {
10802 0 : case SSA_NAME:
10803 0 : {
10804 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
10805 : {
10806 0 : switch (TREE_CODE (_q81))
10807 : {
10808 0 : case SSA_NAME:
10809 0 : {
10810 0 : switch (TREE_CODE (_p1))
10811 : {
10812 0 : case CALL_EXPR:
10813 0 : switch (get_call_combined_fn (_p1))
10814 : {
10815 0 : case CFN_BUILT_IN_FLOORF:
10816 0 : if (call_expr_nargs (_p1) == 1)
10817 : {
10818 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
10819 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
10820 : {
10821 0 : switch (TREE_CODE (_q140))
10822 : {
10823 0 : case SSA_NAME:
10824 0 : {
10825 0 : switch (TREE_CODE (_p2))
10826 : {
10827 0 : case CALL_EXPR:
10828 0 : switch (get_call_combined_fn (_p2))
10829 : {
10830 0 : case CFN_BUILT_IN_CEILF:
10831 0 : if (call_expr_nargs (_p2) == 1)
10832 : {
10833 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
10834 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
10835 : {
10836 0 : switch (TREE_CODE (_q170))
10837 : {
10838 0 : case SSA_NAME:
10839 0 : {
10840 0 : {
10841 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
10842 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
10843 0 : if (res) return res;
10844 : }
10845 0 : break;
10846 : }
10847 : default:;
10848 : }
10849 : }
10850 : }
10851 : break;
10852 : default:;
10853 : }
10854 : break;
10855 : default:;
10856 : }
10857 : break;
10858 : }
10859 : default:;
10860 : }
10861 : }
10862 : }
10863 : break;
10864 : default:;
10865 : }
10866 : break;
10867 : default:;
10868 : }
10869 : break;
10870 : }
10871 : default:;
10872 : }
10873 : }
10874 : break;
10875 : }
10876 : default:;
10877 : }
10878 : }
10879 : }
10880 : break;
10881 : default:;
10882 : }
10883 : break;
10884 : default:;
10885 : }
10886 : break;
10887 : }
10888 : default:;
10889 : }
10890 : break;
10891 : }
10892 : default:;
10893 : }
10894 : }
10895 : }
10896 : break;
10897 0 : case CFN_BUILT_IN_FLOORL:
10898 0 : if (call_expr_nargs (_q31) == 1)
10899 : {
10900 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
10901 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
10902 : {
10903 0 : switch (TREE_CODE (_q50))
10904 : {
10905 0 : case SSA_NAME:
10906 0 : {
10907 0 : switch (TREE_CODE (_q21))
10908 : {
10909 0 : case MINUS_EXPR:
10910 0 : {
10911 0 : tree _q80 = TREE_OPERAND (_q21, 0);
10912 0 : tree _q81 = TREE_OPERAND (_q21, 1);
10913 0 : switch (TREE_CODE (_q80))
10914 : {
10915 0 : case CALL_EXPR:
10916 0 : switch (get_call_combined_fn (_q80))
10917 : {
10918 0 : case CFN_BUILT_IN_CEILL:
10919 0 : if (call_expr_nargs (_q80) == 1)
10920 : {
10921 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
10922 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
10923 : {
10924 0 : switch (TREE_CODE (_q90))
10925 : {
10926 0 : case SSA_NAME:
10927 0 : {
10928 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
10929 : {
10930 0 : switch (TREE_CODE (_q81))
10931 : {
10932 0 : case SSA_NAME:
10933 0 : {
10934 0 : switch (TREE_CODE (_p1))
10935 : {
10936 0 : case CALL_EXPR:
10937 0 : switch (get_call_combined_fn (_p1))
10938 : {
10939 0 : case CFN_BUILT_IN_FLOORL:
10940 0 : if (call_expr_nargs (_p1) == 1)
10941 : {
10942 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
10943 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
10944 : {
10945 0 : switch (TREE_CODE (_q140))
10946 : {
10947 0 : case SSA_NAME:
10948 0 : {
10949 0 : switch (TREE_CODE (_p2))
10950 : {
10951 0 : case CALL_EXPR:
10952 0 : switch (get_call_combined_fn (_p2))
10953 : {
10954 0 : case CFN_BUILT_IN_CEILL:
10955 0 : if (call_expr_nargs (_p2) == 1)
10956 : {
10957 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
10958 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
10959 : {
10960 0 : switch (TREE_CODE (_q170))
10961 : {
10962 0 : case SSA_NAME:
10963 0 : {
10964 0 : {
10965 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
10966 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
10967 0 : if (res) return res;
10968 : }
10969 0 : break;
10970 : }
10971 : default:;
10972 : }
10973 : }
10974 : }
10975 : break;
10976 : default:;
10977 : }
10978 : break;
10979 : default:;
10980 : }
10981 : break;
10982 : }
10983 : default:;
10984 : }
10985 : }
10986 : }
10987 : break;
10988 : default:;
10989 : }
10990 : break;
10991 : default:;
10992 : }
10993 : break;
10994 : }
10995 : default:;
10996 : }
10997 : }
10998 : break;
10999 : }
11000 : default:;
11001 : }
11002 : }
11003 : }
11004 : break;
11005 : default:;
11006 : }
11007 : break;
11008 : default:;
11009 : }
11010 : break;
11011 : }
11012 : default:;
11013 : }
11014 : break;
11015 : }
11016 : default:;
11017 : }
11018 : }
11019 : }
11020 : break;
11021 0 : case CFN_FLOOR:
11022 0 : if (call_expr_nargs (_q31) == 1)
11023 : {
11024 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11025 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11026 : {
11027 0 : switch (TREE_CODE (_q50))
11028 : {
11029 0 : case SSA_NAME:
11030 0 : {
11031 0 : switch (TREE_CODE (_q21))
11032 : {
11033 0 : case MINUS_EXPR:
11034 0 : {
11035 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11036 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11037 0 : switch (TREE_CODE (_q80))
11038 : {
11039 0 : case CALL_EXPR:
11040 0 : switch (get_call_combined_fn (_q80))
11041 : {
11042 0 : case CFN_CEIL:
11043 0 : if (call_expr_nargs (_q80) == 1)
11044 : {
11045 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11046 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11047 : {
11048 0 : switch (TREE_CODE (_q90))
11049 : {
11050 0 : case SSA_NAME:
11051 0 : {
11052 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11053 : {
11054 0 : switch (TREE_CODE (_q81))
11055 : {
11056 0 : case SSA_NAME:
11057 0 : {
11058 0 : switch (TREE_CODE (_p1))
11059 : {
11060 0 : case CALL_EXPR:
11061 0 : switch (get_call_combined_fn (_p1))
11062 : {
11063 0 : case CFN_FLOOR:
11064 0 : if (call_expr_nargs (_p1) == 1)
11065 : {
11066 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11067 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11068 : {
11069 0 : switch (TREE_CODE (_q140))
11070 : {
11071 0 : case SSA_NAME:
11072 0 : {
11073 0 : switch (TREE_CODE (_p2))
11074 : {
11075 0 : case CALL_EXPR:
11076 0 : switch (get_call_combined_fn (_p2))
11077 : {
11078 0 : case CFN_CEIL:
11079 0 : if (call_expr_nargs (_p2) == 1)
11080 : {
11081 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11082 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11083 : {
11084 0 : switch (TREE_CODE (_q170))
11085 : {
11086 0 : case SSA_NAME:
11087 0 : {
11088 0 : {
11089 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11090 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
11091 0 : if (res) return res;
11092 : }
11093 0 : break;
11094 : }
11095 : default:;
11096 : }
11097 : }
11098 : }
11099 : break;
11100 : default:;
11101 : }
11102 : break;
11103 : default:;
11104 : }
11105 : break;
11106 : }
11107 : default:;
11108 : }
11109 : }
11110 : }
11111 : break;
11112 : default:;
11113 : }
11114 : break;
11115 : default:;
11116 : }
11117 : break;
11118 : }
11119 : default:;
11120 : }
11121 : }
11122 : break;
11123 : }
11124 : default:;
11125 : }
11126 : }
11127 : }
11128 : break;
11129 : default:;
11130 : }
11131 : break;
11132 : default:;
11133 : }
11134 : break;
11135 : }
11136 : default:;
11137 : }
11138 : break;
11139 : }
11140 : default:;
11141 : }
11142 : }
11143 : }
11144 : break;
11145 0 : case CFN_BUILT_IN_FLOOR:
11146 0 : if (call_expr_nargs (_q31) == 1)
11147 : {
11148 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11149 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11150 : {
11151 0 : switch (TREE_CODE (_q50))
11152 : {
11153 0 : case SSA_NAME:
11154 0 : {
11155 0 : switch (TREE_CODE (_q21))
11156 : {
11157 0 : case MINUS_EXPR:
11158 0 : {
11159 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11160 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11161 0 : switch (TREE_CODE (_q80))
11162 : {
11163 0 : case CALL_EXPR:
11164 0 : switch (get_call_combined_fn (_q80))
11165 : {
11166 0 : case CFN_BUILT_IN_CEIL:
11167 0 : if (call_expr_nargs (_q80) == 1)
11168 : {
11169 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11170 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11171 : {
11172 0 : switch (TREE_CODE (_q90))
11173 : {
11174 0 : case SSA_NAME:
11175 0 : {
11176 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11177 : {
11178 0 : switch (TREE_CODE (_q81))
11179 : {
11180 0 : case SSA_NAME:
11181 0 : {
11182 0 : switch (TREE_CODE (_p1))
11183 : {
11184 0 : case CALL_EXPR:
11185 0 : switch (get_call_combined_fn (_p1))
11186 : {
11187 0 : case CFN_BUILT_IN_FLOOR:
11188 0 : if (call_expr_nargs (_p1) == 1)
11189 : {
11190 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11191 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11192 : {
11193 0 : switch (TREE_CODE (_q140))
11194 : {
11195 0 : case SSA_NAME:
11196 0 : {
11197 0 : switch (TREE_CODE (_p2))
11198 : {
11199 0 : case CALL_EXPR:
11200 0 : switch (get_call_combined_fn (_p2))
11201 : {
11202 0 : case CFN_BUILT_IN_CEIL:
11203 0 : if (call_expr_nargs (_p2) == 1)
11204 : {
11205 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11206 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11207 : {
11208 0 : switch (TREE_CODE (_q170))
11209 : {
11210 0 : case SSA_NAME:
11211 0 : {
11212 0 : {
11213 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11214 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
11215 0 : if (res) return res;
11216 : }
11217 0 : break;
11218 : }
11219 : default:;
11220 : }
11221 : }
11222 : }
11223 : break;
11224 : default:;
11225 : }
11226 : break;
11227 : default:;
11228 : }
11229 : break;
11230 : }
11231 : default:;
11232 : }
11233 : }
11234 : }
11235 : break;
11236 : default:;
11237 : }
11238 : break;
11239 : default:;
11240 : }
11241 : break;
11242 : }
11243 : default:;
11244 : }
11245 : }
11246 : break;
11247 : }
11248 : default:;
11249 : }
11250 : }
11251 : }
11252 : break;
11253 : default:;
11254 : }
11255 : break;
11256 : default:;
11257 : }
11258 : break;
11259 : }
11260 : default:;
11261 : }
11262 : break;
11263 : }
11264 : default:;
11265 : }
11266 : }
11267 : }
11268 : break;
11269 : default:;
11270 : }
11271 : break;
11272 : default:;
11273 : }
11274 : break;
11275 : }
11276 : default:;
11277 : }
11278 : break;
11279 : }
11280 1751807 : default:;
11281 : }
11282 1751807 : switch (TREE_CODE (_p1))
11283 : {
11284 8 : case BIT_IOR_EXPR:
11285 8 : {
11286 8 : tree _q50 = TREE_OPERAND (_p1, 0);
11287 8 : tree _q51 = TREE_OPERAND (_p1, 1);
11288 8 : switch (TREE_CODE (_q51))
11289 : {
11290 8 : case INTEGER_CST:
11291 8 : {
11292 8 : switch (TREE_CODE (_p2))
11293 : {
11294 0 : case BIT_AND_EXPR:
11295 0 : {
11296 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11297 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11298 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
11299 : {
11300 0 : switch (TREE_CODE (_q81))
11301 : {
11302 0 : case INTEGER_CST:
11303 0 : {
11304 0 : {
11305 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
11306 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11307 0 : if (res) return res;
11308 : }
11309 0 : break;
11310 : }
11311 : default:;
11312 : }
11313 : }
11314 : break;
11315 : }
11316 : default:;
11317 : }
11318 : break;
11319 : }
11320 : default:;
11321 : }
11322 : break;
11323 : }
11324 1751807 : default:;
11325 : }
11326 1751807 : switch (TREE_CODE (_q20))
11327 : {
11328 102914 : CASE_CONVERT:
11329 102914 : {
11330 102914 : tree _q30 = TREE_OPERAND (_q20, 0);
11331 102914 : switch (TREE_CODE (_q21))
11332 : {
11333 16725 : case INTEGER_CST:
11334 16725 : {
11335 16725 : switch (TREE_CODE (_p1))
11336 : {
11337 15 : CASE_CONVERT:
11338 15 : {
11339 15 : tree _q60 = TREE_OPERAND (_p1, 0);
11340 15 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11341 : {
11342 0 : switch (TREE_CODE (_p2))
11343 : {
11344 0 : case INTEGER_CST:
11345 0 : {
11346 0 : {
11347 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
11348 0 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11349 0 : if (res) return res;
11350 : }
11351 0 : break;
11352 : }
11353 : default:;
11354 : }
11355 : }
11356 : break;
11357 : }
11358 16725 : default:;
11359 : }
11360 16725 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11361 : {
11362 6 : switch (TREE_CODE (_p2))
11363 : {
11364 6 : case INTEGER_CST:
11365 6 : {
11366 6 : {
11367 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
11368 6 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11369 6 : if (res) return res;
11370 : }
11371 6 : break;
11372 : }
11373 : default:;
11374 : }
11375 : }
11376 16725 : switch (TREE_CODE (_p1))
11377 : {
11378 25 : case PLUS_EXPR:
11379 25 : {
11380 25 : tree _q60 = TREE_OPERAND (_p1, 0);
11381 25 : tree _q61 = TREE_OPERAND (_p1, 1);
11382 25 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11383 : {
11384 7 : switch (TREE_CODE (_q61))
11385 : {
11386 7 : case INTEGER_CST:
11387 7 : {
11388 7 : switch (TREE_CODE (_p2))
11389 : {
11390 7 : case INTEGER_CST:
11391 7 : {
11392 7 : {
11393 7 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
11394 7 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
11395 7 : if (res) return res;
11396 : }
11397 0 : break;
11398 : }
11399 : default:;
11400 : }
11401 : break;
11402 : }
11403 : default:;
11404 : }
11405 : }
11406 : break;
11407 : }
11408 0 : case MINUS_EXPR:
11409 0 : {
11410 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11411 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11412 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11413 : {
11414 0 : switch (TREE_CODE (_q61))
11415 : {
11416 0 : case INTEGER_CST:
11417 0 : {
11418 0 : switch (TREE_CODE (_p2))
11419 : {
11420 0 : case INTEGER_CST:
11421 0 : {
11422 0 : {
11423 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
11424 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
11425 0 : if (res) return res;
11426 : }
11427 0 : break;
11428 : }
11429 : default:;
11430 : }
11431 : break;
11432 : }
11433 : default:;
11434 : }
11435 : }
11436 : break;
11437 : }
11438 : default:;
11439 : }
11440 : break;
11441 : }
11442 : default:;
11443 : }
11444 : break;
11445 : }
11446 1751800 : default:;
11447 : }
11448 1751800 : switch (TREE_CODE (_q21))
11449 : {
11450 362635 : case INTEGER_CST:
11451 362635 : {
11452 362635 : switch (TREE_CODE (_p1))
11453 : {
11454 1126 : CASE_CONVERT:
11455 1126 : {
11456 1126 : tree _q50 = TREE_OPERAND (_p1, 0);
11457 1126 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11458 : {
11459 36 : switch (TREE_CODE (_p2))
11460 : {
11461 5 : case INTEGER_CST:
11462 5 : {
11463 5 : {
11464 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
11465 5 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11466 5 : if (res) return res;
11467 : }
11468 5 : break;
11469 : }
11470 : default:;
11471 : }
11472 : }
11473 : break;
11474 : }
11475 362635 : default:;
11476 : }
11477 362635 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
11478 : {
11479 81 : switch (TREE_CODE (_p2))
11480 : {
11481 8 : case INTEGER_CST:
11482 8 : {
11483 8 : {
11484 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
11485 8 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11486 8 : if (res) return res;
11487 : }
11488 0 : break;
11489 : }
11490 : default:;
11491 : }
11492 : }
11493 362627 : switch (TREE_CODE (_p1))
11494 : {
11495 9096 : case PLUS_EXPR:
11496 9096 : {
11497 9096 : tree _q50 = TREE_OPERAND (_p1, 0);
11498 9096 : tree _q51 = TREE_OPERAND (_p1, 1);
11499 9096 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11500 : {
11501 9061 : switch (TREE_CODE (_q51))
11502 : {
11503 9061 : case INTEGER_CST:
11504 9061 : {
11505 9061 : switch (TREE_CODE (_p2))
11506 : {
11507 36 : case INTEGER_CST:
11508 36 : {
11509 36 : {
11510 36 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
11511 36 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
11512 36 : if (res) return res;
11513 : }
11514 36 : break;
11515 : }
11516 : default:;
11517 : }
11518 : break;
11519 : }
11520 : default:;
11521 : }
11522 : }
11523 : break;
11524 : }
11525 62 : case MINUS_EXPR:
11526 62 : {
11527 62 : tree _q50 = TREE_OPERAND (_p1, 0);
11528 62 : tree _q51 = TREE_OPERAND (_p1, 1);
11529 62 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11530 : {
11531 0 : switch (TREE_CODE (_q51))
11532 : {
11533 0 : case INTEGER_CST:
11534 0 : {
11535 0 : switch (TREE_CODE (_p2))
11536 : {
11537 0 : case INTEGER_CST:
11538 0 : {
11539 0 : {
11540 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
11541 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
11542 0 : if (res) return res;
11543 : }
11544 0 : break;
11545 : }
11546 : default:;
11547 : }
11548 : break;
11549 : }
11550 : default:;
11551 : }
11552 : }
11553 : break;
11554 : }
11555 : default:;
11556 : }
11557 : break;
11558 : }
11559 1751792 : default:;
11560 : }
11561 1751792 : switch (TREE_CODE (_p1))
11562 : {
11563 0 : case MIN_EXPR:
11564 0 : {
11565 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11566 0 : tree _q51 = TREE_OPERAND (_p1, 1);
11567 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11568 : {
11569 0 : switch (TREE_CODE (_p2))
11570 : {
11571 0 : case MIN_EXPR:
11572 0 : {
11573 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11574 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11575 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
11576 : {
11577 0 : {
11578 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
11579 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
11580 0 : if (res) return res;
11581 : }
11582 : }
11583 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
11584 : {
11585 0 : {
11586 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
11587 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
11588 0 : if (res) return res;
11589 : }
11590 : }
11591 : break;
11592 : }
11593 : default:;
11594 : }
11595 : }
11596 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11597 : {
11598 0 : switch (TREE_CODE (_p2))
11599 : {
11600 0 : case MIN_EXPR:
11601 0 : {
11602 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11603 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11604 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
11605 : {
11606 0 : {
11607 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
11608 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
11609 0 : if (res) return res;
11610 : }
11611 : }
11612 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
11613 : {
11614 0 : {
11615 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
11616 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
11617 0 : if (res) return res;
11618 : }
11619 : }
11620 : break;
11621 : }
11622 : default:;
11623 : }
11624 : }
11625 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11626 : {
11627 0 : switch (TREE_CODE (_p2))
11628 : {
11629 0 : case MIN_EXPR:
11630 0 : {
11631 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11632 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11633 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
11634 : {
11635 0 : {
11636 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
11637 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11638 0 : if (res) return res;
11639 : }
11640 : }
11641 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
11642 : {
11643 0 : {
11644 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
11645 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11646 0 : if (res) return res;
11647 : }
11648 : }
11649 : break;
11650 : }
11651 0 : default:;
11652 : }
11653 0 : {
11654 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
11655 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11656 0 : if (res) return res;
11657 : }
11658 : }
11659 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11660 : {
11661 0 : switch (TREE_CODE (_p2))
11662 : {
11663 0 : case MIN_EXPR:
11664 0 : {
11665 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11666 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11667 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
11668 : {
11669 0 : {
11670 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
11671 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11672 0 : if (res) return res;
11673 : }
11674 : }
11675 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
11676 : {
11677 0 : {
11678 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
11679 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11680 0 : if (res) return res;
11681 : }
11682 : }
11683 : break;
11684 : }
11685 0 : default:;
11686 : }
11687 0 : {
11688 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
11689 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
11690 0 : if (res) return res;
11691 : }
11692 : }
11693 : break;
11694 : }
11695 21 : case MAX_EXPR:
11696 21 : {
11697 21 : tree _q50 = TREE_OPERAND (_p1, 0);
11698 21 : tree _q51 = TREE_OPERAND (_p1, 1);
11699 21 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11700 : {
11701 1 : switch (TREE_CODE (_p2))
11702 : {
11703 0 : case MAX_EXPR:
11704 0 : {
11705 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11706 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11707 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
11708 : {
11709 0 : {
11710 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
11711 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11712 0 : if (res) return res;
11713 : }
11714 : }
11715 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
11716 : {
11717 0 : {
11718 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
11719 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11720 0 : if (res) return res;
11721 : }
11722 : }
11723 : break;
11724 : }
11725 1 : default:;
11726 : }
11727 1 : {
11728 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
11729 1 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11730 1 : if (res) return res;
11731 : }
11732 : }
11733 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11734 : {
11735 4 : switch (TREE_CODE (_p2))
11736 : {
11737 0 : case MAX_EXPR:
11738 0 : {
11739 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11740 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11741 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
11742 : {
11743 0 : {
11744 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
11745 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11746 0 : if (res) return res;
11747 : }
11748 : }
11749 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
11750 : {
11751 0 : {
11752 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
11753 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11754 0 : if (res) return res;
11755 : }
11756 : }
11757 : break;
11758 : }
11759 : default:;
11760 : }
11761 : }
11762 20 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11763 : {
11764 8 : switch (TREE_CODE (_p2))
11765 : {
11766 0 : case MAX_EXPR:
11767 0 : {
11768 0 : tree _q80 = TREE_OPERAND (_p2, 0);
11769 0 : tree _q81 = TREE_OPERAND (_p2, 1);
11770 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
11771 : {
11772 0 : {
11773 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
11774 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
11775 0 : if (res) return res;
11776 : }
11777 : }
11778 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
11779 : {
11780 0 : {
11781 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
11782 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
11783 0 : if (res) return res;
11784 : }
11785 : }
11786 : break;
11787 : }
11788 : default:;
11789 : }
11790 : }
11791 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11792 : {
11793 1 : switch (TREE_CODE (_p2))
11794 : {
11795 1 : case MAX_EXPR:
11796 1 : {
11797 1 : tree _q80 = TREE_OPERAND (_p2, 0);
11798 1 : tree _q81 = TREE_OPERAND (_p2, 1);
11799 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
11800 : {
11801 0 : {
11802 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
11803 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
11804 0 : if (res) return res;
11805 : }
11806 : }
11807 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
11808 : {
11809 1 : {
11810 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
11811 1 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
11812 1 : if (res) return res;
11813 : }
11814 : }
11815 : break;
11816 : }
11817 : default:;
11818 : }
11819 : }
11820 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
11821 : {
11822 4 : {
11823 4 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
11824 4 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
11825 4 : if (res) return res;
11826 : }
11827 : }
11828 : break;
11829 : }
11830 1751790 : default:;
11831 : }
11832 1751790 : {
11833 1751790 : tree _q20_pops[1];
11834 1751790 : if (tree_nop_convert (_q20, _q20_pops))
11835 : {
11836 56484 : tree _q30 = _q20_pops[0];
11837 56484 : if (integer_zerop (_q21))
11838 : {
11839 7747 : switch (TREE_CODE (_p1))
11840 : {
11841 0 : case MIN_EXPR:
11842 0 : {
11843 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11844 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11845 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11846 : {
11847 0 : switch (TREE_CODE (_q61))
11848 : {
11849 0 : case INTEGER_CST:
11850 0 : {
11851 0 : switch (TREE_CODE (_p2))
11852 : {
11853 0 : case INTEGER_CST:
11854 0 : {
11855 0 : {
11856 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
11857 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
11858 0 : if (res) return res;
11859 : }
11860 0 : break;
11861 : }
11862 : default:;
11863 : }
11864 : break;
11865 : }
11866 : default:;
11867 : }
11868 : }
11869 : break;
11870 : }
11871 : default:;
11872 : }
11873 : }
11874 : }
11875 : }
11876 1751790 : if (integer_zerop (_q21))
11877 : {
11878 317273 : if (tree_expr_nonnegative_p (_p1))
11879 : {
11880 285313 : switch (TREE_CODE (_p2))
11881 : {
11882 17 : case MIN_EXPR:
11883 17 : {
11884 17 : tree _q60 = TREE_OPERAND (_p2, 0);
11885 17 : tree _q61 = TREE_OPERAND (_p2, 1);
11886 17 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11887 : {
11888 16 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
11889 : {
11890 9 : {
11891 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11892 9 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures);
11893 9 : if (res) return res;
11894 : }
11895 : }
11896 : }
11897 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
11898 : {
11899 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
11900 : {
11901 0 : {
11902 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11903 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures);
11904 0 : if (res) return res;
11905 : }
11906 : }
11907 : }
11908 : break;
11909 : }
11910 : default:;
11911 : }
11912 : }
11913 : }
11914 1751781 : if (tree_expr_nonnegative_p (_q20))
11915 : {
11916 492192 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
11917 : {
11918 166 : switch (TREE_CODE (_p2))
11919 : {
11920 5 : case ABS_EXPR:
11921 5 : {
11922 5 : tree _q60 = TREE_OPERAND (_p2, 0);
11923 5 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
11924 : {
11925 0 : {
11926 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
11927 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
11928 0 : if (res) return res;
11929 : }
11930 : }
11931 : break;
11932 : }
11933 : default:;
11934 : }
11935 : }
11936 492192 : switch (TREE_CODE (_p1))
11937 : {
11938 0 : case ABS_EXPR:
11939 0 : {
11940 0 : tree _q50 = TREE_OPERAND (_p1, 0);
11941 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
11942 : {
11943 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
11944 : {
11945 0 : {
11946 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
11947 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
11948 0 : if (res) return res;
11949 : }
11950 : }
11951 : }
11952 : break;
11953 : }
11954 : default:;
11955 : }
11956 : }
11957 : break;
11958 : }
11959 549003 : case GE_EXPR:
11960 549003 : {
11961 549003 : tree _q20 = TREE_OPERAND (_p0, 0);
11962 549003 : tree _q21 = TREE_OPERAND (_p0, 1);
11963 549003 : switch (TREE_CODE (_q20))
11964 : {
11965 38133 : case MINUS_EXPR:
11966 38133 : {
11967 38133 : tree _q30 = TREE_OPERAND (_q20, 0);
11968 38133 : tree _q31 = TREE_OPERAND (_q20, 1);
11969 38133 : switch (TREE_CODE (_q30))
11970 : {
11971 528 : case SSA_NAME:
11972 528 : {
11973 528 : switch (TREE_CODE (_q31))
11974 : {
11975 0 : case CALL_EXPR:
11976 0 : switch (get_call_combined_fn (_q31))
11977 : {
11978 0 : case CFN_BUILT_IN_FLOORF:
11979 0 : if (call_expr_nargs (_q31) == 1)
11980 : {
11981 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11982 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11983 : {
11984 0 : switch (TREE_CODE (_q50))
11985 : {
11986 0 : case SSA_NAME:
11987 0 : {
11988 0 : switch (TREE_CODE (_q21))
11989 : {
11990 0 : case MINUS_EXPR:
11991 0 : {
11992 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11993 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11994 0 : switch (TREE_CODE (_q80))
11995 : {
11996 0 : case CALL_EXPR:
11997 0 : switch (get_call_combined_fn (_q80))
11998 : {
11999 0 : case CFN_BUILT_IN_CEILF:
12000 0 : if (call_expr_nargs (_q80) == 1)
12001 : {
12002 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12003 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12004 : {
12005 0 : switch (TREE_CODE (_q90))
12006 : {
12007 0 : case SSA_NAME:
12008 0 : {
12009 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12010 : {
12011 0 : switch (TREE_CODE (_q81))
12012 : {
12013 0 : case SSA_NAME:
12014 0 : {
12015 0 : switch (TREE_CODE (_p1))
12016 : {
12017 0 : case CALL_EXPR:
12018 0 : switch (get_call_combined_fn (_p1))
12019 : {
12020 0 : case CFN_BUILT_IN_CEILF:
12021 0 : if (call_expr_nargs (_p1) == 1)
12022 : {
12023 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12024 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12025 : {
12026 0 : switch (TREE_CODE (_q140))
12027 : {
12028 0 : case SSA_NAME:
12029 0 : {
12030 0 : switch (TREE_CODE (_p2))
12031 : {
12032 0 : case CALL_EXPR:
12033 0 : switch (get_call_combined_fn (_p2))
12034 : {
12035 0 : case CFN_BUILT_IN_FLOORF:
12036 0 : if (call_expr_nargs (_p2) == 1)
12037 : {
12038 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12039 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12040 : {
12041 0 : switch (TREE_CODE (_q170))
12042 : {
12043 0 : case SSA_NAME:
12044 0 : {
12045 0 : {
12046 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12047 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
12048 0 : if (res) return res;
12049 : }
12050 0 : break;
12051 : }
12052 : default:;
12053 : }
12054 : }
12055 : }
12056 : break;
12057 : default:;
12058 : }
12059 : break;
12060 : default:;
12061 : }
12062 : break;
12063 : }
12064 : default:;
12065 : }
12066 : }
12067 : }
12068 : break;
12069 : default:;
12070 : }
12071 : break;
12072 : default:;
12073 : }
12074 : break;
12075 : }
12076 : default:;
12077 : }
12078 : }
12079 : break;
12080 : }
12081 : default:;
12082 : }
12083 : }
12084 : }
12085 : break;
12086 : default:;
12087 : }
12088 : break;
12089 : default:;
12090 : }
12091 : break;
12092 : }
12093 : default:;
12094 : }
12095 : break;
12096 : }
12097 : default:;
12098 : }
12099 : }
12100 : }
12101 : break;
12102 0 : case CFN_BUILT_IN_FLOORL:
12103 0 : if (call_expr_nargs (_q31) == 1)
12104 : {
12105 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12106 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12107 : {
12108 0 : switch (TREE_CODE (_q50))
12109 : {
12110 0 : case SSA_NAME:
12111 0 : {
12112 0 : switch (TREE_CODE (_q21))
12113 : {
12114 0 : case MINUS_EXPR:
12115 0 : {
12116 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12117 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12118 0 : switch (TREE_CODE (_q80))
12119 : {
12120 0 : case CALL_EXPR:
12121 0 : switch (get_call_combined_fn (_q80))
12122 : {
12123 0 : case CFN_BUILT_IN_CEILL:
12124 0 : if (call_expr_nargs (_q80) == 1)
12125 : {
12126 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12127 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12128 : {
12129 0 : switch (TREE_CODE (_q90))
12130 : {
12131 0 : case SSA_NAME:
12132 0 : {
12133 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12134 : {
12135 0 : switch (TREE_CODE (_q81))
12136 : {
12137 0 : case SSA_NAME:
12138 0 : {
12139 0 : switch (TREE_CODE (_p1))
12140 : {
12141 0 : case CALL_EXPR:
12142 0 : switch (get_call_combined_fn (_p1))
12143 : {
12144 0 : case CFN_BUILT_IN_CEILL:
12145 0 : if (call_expr_nargs (_p1) == 1)
12146 : {
12147 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12148 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12149 : {
12150 0 : switch (TREE_CODE (_q140))
12151 : {
12152 0 : case SSA_NAME:
12153 0 : {
12154 0 : switch (TREE_CODE (_p2))
12155 : {
12156 0 : case CALL_EXPR:
12157 0 : switch (get_call_combined_fn (_p2))
12158 : {
12159 0 : case CFN_BUILT_IN_FLOORL:
12160 0 : if (call_expr_nargs (_p2) == 1)
12161 : {
12162 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12163 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12164 : {
12165 0 : switch (TREE_CODE (_q170))
12166 : {
12167 0 : case SSA_NAME:
12168 0 : {
12169 0 : {
12170 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12171 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
12172 0 : if (res) return res;
12173 : }
12174 0 : break;
12175 : }
12176 : default:;
12177 : }
12178 : }
12179 : }
12180 : break;
12181 : default:;
12182 : }
12183 : break;
12184 : default:;
12185 : }
12186 : break;
12187 : }
12188 : default:;
12189 : }
12190 : }
12191 : }
12192 : break;
12193 : default:;
12194 : }
12195 : break;
12196 : default:;
12197 : }
12198 : break;
12199 : }
12200 : default:;
12201 : }
12202 : }
12203 : break;
12204 : }
12205 : default:;
12206 : }
12207 : }
12208 : }
12209 : break;
12210 : default:;
12211 : }
12212 : break;
12213 : default:;
12214 : }
12215 : break;
12216 : }
12217 : default:;
12218 : }
12219 : break;
12220 : }
12221 : default:;
12222 : }
12223 : }
12224 : }
12225 : break;
12226 0 : case CFN_FLOOR:
12227 0 : if (call_expr_nargs (_q31) == 1)
12228 : {
12229 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12230 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12231 : {
12232 0 : switch (TREE_CODE (_q50))
12233 : {
12234 0 : case SSA_NAME:
12235 0 : {
12236 0 : switch (TREE_CODE (_q21))
12237 : {
12238 0 : case MINUS_EXPR:
12239 0 : {
12240 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12241 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12242 0 : switch (TREE_CODE (_q80))
12243 : {
12244 0 : case CALL_EXPR:
12245 0 : switch (get_call_combined_fn (_q80))
12246 : {
12247 0 : case CFN_CEIL:
12248 0 : if (call_expr_nargs (_q80) == 1)
12249 : {
12250 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12251 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12252 : {
12253 0 : switch (TREE_CODE (_q90))
12254 : {
12255 0 : case SSA_NAME:
12256 0 : {
12257 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12258 : {
12259 0 : switch (TREE_CODE (_q81))
12260 : {
12261 0 : case SSA_NAME:
12262 0 : {
12263 0 : switch (TREE_CODE (_p1))
12264 : {
12265 0 : case CALL_EXPR:
12266 0 : switch (get_call_combined_fn (_p1))
12267 : {
12268 0 : case CFN_CEIL:
12269 0 : if (call_expr_nargs (_p1) == 1)
12270 : {
12271 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12272 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12273 : {
12274 0 : switch (TREE_CODE (_q140))
12275 : {
12276 0 : case SSA_NAME:
12277 0 : {
12278 0 : switch (TREE_CODE (_p2))
12279 : {
12280 0 : case CALL_EXPR:
12281 0 : switch (get_call_combined_fn (_p2))
12282 : {
12283 0 : case CFN_FLOOR:
12284 0 : if (call_expr_nargs (_p2) == 1)
12285 : {
12286 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12287 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12288 : {
12289 0 : switch (TREE_CODE (_q170))
12290 : {
12291 0 : case SSA_NAME:
12292 0 : {
12293 0 : {
12294 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12295 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
12296 0 : if (res) return res;
12297 : }
12298 0 : break;
12299 : }
12300 : default:;
12301 : }
12302 : }
12303 : }
12304 : break;
12305 : default:;
12306 : }
12307 : break;
12308 : default:;
12309 : }
12310 : break;
12311 : }
12312 : default:;
12313 : }
12314 : }
12315 : }
12316 : break;
12317 : default:;
12318 : }
12319 : break;
12320 : default:;
12321 : }
12322 : break;
12323 : }
12324 : default:;
12325 : }
12326 : }
12327 : break;
12328 : }
12329 : default:;
12330 : }
12331 : }
12332 : }
12333 : break;
12334 : default:;
12335 : }
12336 : break;
12337 : default:;
12338 : }
12339 : break;
12340 : }
12341 : default:;
12342 : }
12343 : break;
12344 : }
12345 : default:;
12346 : }
12347 : }
12348 : }
12349 : break;
12350 0 : case CFN_BUILT_IN_FLOOR:
12351 0 : if (call_expr_nargs (_q31) == 1)
12352 : {
12353 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12354 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12355 : {
12356 0 : switch (TREE_CODE (_q50))
12357 : {
12358 0 : case SSA_NAME:
12359 0 : {
12360 0 : switch (TREE_CODE (_q21))
12361 : {
12362 0 : case MINUS_EXPR:
12363 0 : {
12364 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12365 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12366 0 : switch (TREE_CODE (_q80))
12367 : {
12368 0 : case CALL_EXPR:
12369 0 : switch (get_call_combined_fn (_q80))
12370 : {
12371 0 : case CFN_BUILT_IN_CEIL:
12372 0 : if (call_expr_nargs (_q80) == 1)
12373 : {
12374 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12375 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12376 : {
12377 0 : switch (TREE_CODE (_q90))
12378 : {
12379 0 : case SSA_NAME:
12380 0 : {
12381 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12382 : {
12383 0 : switch (TREE_CODE (_q81))
12384 : {
12385 0 : case SSA_NAME:
12386 0 : {
12387 0 : switch (TREE_CODE (_p1))
12388 : {
12389 0 : case CALL_EXPR:
12390 0 : switch (get_call_combined_fn (_p1))
12391 : {
12392 0 : case CFN_BUILT_IN_CEIL:
12393 0 : if (call_expr_nargs (_p1) == 1)
12394 : {
12395 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12396 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12397 : {
12398 0 : switch (TREE_CODE (_q140))
12399 : {
12400 0 : case SSA_NAME:
12401 0 : {
12402 0 : switch (TREE_CODE (_p2))
12403 : {
12404 0 : case CALL_EXPR:
12405 0 : switch (get_call_combined_fn (_p2))
12406 : {
12407 0 : case CFN_BUILT_IN_FLOOR:
12408 0 : if (call_expr_nargs (_p2) == 1)
12409 : {
12410 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12411 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12412 : {
12413 0 : switch (TREE_CODE (_q170))
12414 : {
12415 0 : case SSA_NAME:
12416 0 : {
12417 0 : {
12418 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12419 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
12420 0 : if (res) return res;
12421 : }
12422 0 : break;
12423 : }
12424 : default:;
12425 : }
12426 : }
12427 : }
12428 : break;
12429 : default:;
12430 : }
12431 : break;
12432 : default:;
12433 : }
12434 : break;
12435 : }
12436 : default:;
12437 : }
12438 : }
12439 : }
12440 : break;
12441 : default:;
12442 : }
12443 : break;
12444 : default:;
12445 : }
12446 : break;
12447 : }
12448 : default:;
12449 : }
12450 : }
12451 : break;
12452 : }
12453 : default:;
12454 : }
12455 : }
12456 : }
12457 : break;
12458 : default:;
12459 : }
12460 : break;
12461 : default:;
12462 : }
12463 : break;
12464 : }
12465 : default:;
12466 : }
12467 : break;
12468 : }
12469 : default:;
12470 : }
12471 : }
12472 : }
12473 : break;
12474 : default:;
12475 : }
12476 : break;
12477 : default:;
12478 : }
12479 : break;
12480 : }
12481 : default:;
12482 : }
12483 : break;
12484 : }
12485 549003 : default:;
12486 : }
12487 549003 : switch (TREE_CODE (_p1))
12488 : {
12489 0 : case BIT_IOR_EXPR:
12490 0 : {
12491 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12492 0 : tree _q51 = TREE_OPERAND (_p1, 1);
12493 0 : switch (TREE_CODE (_q51))
12494 : {
12495 0 : case INTEGER_CST:
12496 0 : {
12497 0 : switch (TREE_CODE (_p2))
12498 : {
12499 0 : case BIT_AND_EXPR:
12500 0 : {
12501 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12502 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12503 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12504 : {
12505 0 : switch (TREE_CODE (_q81))
12506 : {
12507 0 : case INTEGER_CST:
12508 0 : {
12509 0 : {
12510 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
12511 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
12512 0 : if (res) return res;
12513 : }
12514 0 : break;
12515 : }
12516 : default:;
12517 : }
12518 : }
12519 : break;
12520 : }
12521 : default:;
12522 : }
12523 : break;
12524 : }
12525 : default:;
12526 : }
12527 : break;
12528 : }
12529 549003 : default:;
12530 : }
12531 549003 : switch (TREE_CODE (_q20))
12532 : {
12533 55615 : CASE_CONVERT:
12534 55615 : {
12535 55615 : tree _q30 = TREE_OPERAND (_q20, 0);
12536 55615 : switch (TREE_CODE (_q21))
12537 : {
12538 26459 : case INTEGER_CST:
12539 26459 : {
12540 26459 : switch (TREE_CODE (_p1))
12541 : {
12542 9987 : CASE_CONVERT:
12543 9987 : {
12544 9987 : tree _q60 = TREE_OPERAND (_p1, 0);
12545 9987 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12546 : {
12547 5956 : switch (TREE_CODE (_p2))
12548 : {
12549 5948 : case INTEGER_CST:
12550 5948 : {
12551 5948 : {
12552 5948 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12553 5948 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
12554 5948 : if (res) return res;
12555 : }
12556 5948 : break;
12557 : }
12558 : default:;
12559 : }
12560 : }
12561 : break;
12562 : }
12563 26459 : default:;
12564 : }
12565 26459 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12566 : {
12567 312 : switch (TREE_CODE (_p2))
12568 : {
12569 299 : case INTEGER_CST:
12570 299 : {
12571 299 : {
12572 299 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12573 299 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
12574 299 : if (res) return res;
12575 : }
12576 294 : break;
12577 : }
12578 : default:;
12579 : }
12580 : }
12581 26454 : switch (TREE_CODE (_p1))
12582 : {
12583 385 : case PLUS_EXPR:
12584 385 : {
12585 385 : tree _q60 = TREE_OPERAND (_p1, 0);
12586 385 : tree _q61 = TREE_OPERAND (_p1, 1);
12587 385 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12588 : {
12589 0 : switch (TREE_CODE (_q61))
12590 : {
12591 0 : case INTEGER_CST:
12592 0 : {
12593 0 : switch (TREE_CODE (_p2))
12594 : {
12595 0 : case INTEGER_CST:
12596 0 : {
12597 0 : {
12598 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12599 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
12600 0 : if (res) return res;
12601 : }
12602 0 : break;
12603 : }
12604 : default:;
12605 : }
12606 : break;
12607 : }
12608 : default:;
12609 : }
12610 : }
12611 : break;
12612 : }
12613 76 : case MINUS_EXPR:
12614 76 : {
12615 76 : tree _q60 = TREE_OPERAND (_p1, 0);
12616 76 : tree _q61 = TREE_OPERAND (_p1, 1);
12617 76 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12618 : {
12619 0 : switch (TREE_CODE (_q61))
12620 : {
12621 0 : case INTEGER_CST:
12622 0 : {
12623 0 : switch (TREE_CODE (_p2))
12624 : {
12625 0 : case INTEGER_CST:
12626 0 : {
12627 0 : {
12628 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12629 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
12630 0 : if (res) return res;
12631 : }
12632 0 : break;
12633 : }
12634 : default:;
12635 : }
12636 : break;
12637 : }
12638 : default:;
12639 : }
12640 : }
12641 : break;
12642 : }
12643 : default:;
12644 : }
12645 : break;
12646 : }
12647 : default:;
12648 : }
12649 : break;
12650 : }
12651 548998 : default:;
12652 : }
12653 548998 : switch (TREE_CODE (_q21))
12654 : {
12655 203974 : case INTEGER_CST:
12656 203974 : {
12657 203974 : switch (TREE_CODE (_p1))
12658 : {
12659 54100 : CASE_CONVERT:
12660 54100 : {
12661 54100 : tree _q50 = TREE_OPERAND (_p1, 0);
12662 54100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12663 : {
12664 150 : switch (TREE_CODE (_p2))
12665 : {
12666 45 : case INTEGER_CST:
12667 45 : {
12668 45 : {
12669 45 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12670 45 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
12671 45 : if (res) return res;
12672 : }
12673 45 : break;
12674 : }
12675 : default:;
12676 : }
12677 : }
12678 : break;
12679 : }
12680 203974 : default:;
12681 : }
12682 203974 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12683 : {
12684 40735 : switch (TREE_CODE (_p2))
12685 : {
12686 10599 : case INTEGER_CST:
12687 10599 : {
12688 10599 : {
12689 10599 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12690 10599 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
12691 10599 : if (res) return res;
12692 : }
12693 15 : break;
12694 : }
12695 : default:;
12696 : }
12697 : }
12698 193390 : switch (TREE_CODE (_p1))
12699 : {
12700 16683 : case PLUS_EXPR:
12701 16683 : {
12702 16683 : tree _q50 = TREE_OPERAND (_p1, 0);
12703 16683 : tree _q51 = TREE_OPERAND (_p1, 1);
12704 16683 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12705 : {
12706 6451 : switch (TREE_CODE (_q51))
12707 : {
12708 6451 : case INTEGER_CST:
12709 6451 : {
12710 6451 : switch (TREE_CODE (_p2))
12711 : {
12712 6451 : case INTEGER_CST:
12713 6451 : {
12714 6451 : {
12715 6451 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12716 6451 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
12717 6451 : if (res) return res;
12718 : }
12719 0 : break;
12720 : }
12721 : default:;
12722 : }
12723 : break;
12724 : }
12725 : default:;
12726 : }
12727 : }
12728 : break;
12729 : }
12730 226 : case MINUS_EXPR:
12731 226 : {
12732 226 : tree _q50 = TREE_OPERAND (_p1, 0);
12733 226 : tree _q51 = TREE_OPERAND (_p1, 1);
12734 226 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12735 : {
12736 0 : switch (TREE_CODE (_q51))
12737 : {
12738 0 : case INTEGER_CST:
12739 0 : {
12740 0 : switch (TREE_CODE (_p2))
12741 : {
12742 0 : case INTEGER_CST:
12743 0 : {
12744 0 : {
12745 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12746 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
12747 0 : if (res) return res;
12748 : }
12749 0 : break;
12750 : }
12751 : default:;
12752 : }
12753 : break;
12754 : }
12755 : default:;
12756 : }
12757 : }
12758 : break;
12759 : }
12760 : default:;
12761 : }
12762 : break;
12763 : }
12764 531963 : default:;
12765 : }
12766 531963 : switch (TREE_CODE (_p1))
12767 : {
12768 16 : case MIN_EXPR:
12769 16 : {
12770 16 : tree _q50 = TREE_OPERAND (_p1, 0);
12771 16 : tree _q51 = TREE_OPERAND (_p1, 1);
12772 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12773 : {
12774 15 : switch (TREE_CODE (_p2))
12775 : {
12776 0 : case MIN_EXPR:
12777 0 : {
12778 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12779 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12780 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12781 : {
12782 0 : {
12783 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12784 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12785 0 : if (res) return res;
12786 : }
12787 : }
12788 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12789 : {
12790 0 : {
12791 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12792 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12793 0 : if (res) return res;
12794 : }
12795 : }
12796 : break;
12797 : }
12798 15 : default:;
12799 : }
12800 15 : {
12801 15 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
12802 15 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12803 15 : if (res) return res;
12804 : }
12805 : }
12806 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12807 : {
12808 0 : switch (TREE_CODE (_p2))
12809 : {
12810 0 : case MIN_EXPR:
12811 0 : {
12812 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12813 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12814 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12815 : {
12816 0 : {
12817 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12818 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12819 0 : if (res) return res;
12820 : }
12821 : }
12822 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12823 : {
12824 0 : {
12825 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12826 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12827 0 : if (res) return res;
12828 : }
12829 : }
12830 : break;
12831 : }
12832 : default:;
12833 : }
12834 : }
12835 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12836 : {
12837 0 : switch (TREE_CODE (_p2))
12838 : {
12839 0 : case MIN_EXPR:
12840 0 : {
12841 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12842 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12843 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12844 : {
12845 0 : {
12846 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12847 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
12848 0 : if (res) return res;
12849 : }
12850 : }
12851 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12852 : {
12853 0 : {
12854 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12855 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
12856 0 : if (res) return res;
12857 : }
12858 : }
12859 : break;
12860 : }
12861 : default:;
12862 : }
12863 : }
12864 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12865 : {
12866 0 : switch (TREE_CODE (_p2))
12867 : {
12868 0 : case MIN_EXPR:
12869 0 : {
12870 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12871 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12872 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12873 : {
12874 0 : {
12875 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12876 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
12877 0 : if (res) return res;
12878 : }
12879 : }
12880 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12881 : {
12882 0 : {
12883 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12884 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
12885 0 : if (res) return res;
12886 : }
12887 : }
12888 : break;
12889 : }
12890 : default:;
12891 : }
12892 : }
12893 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12894 : {
12895 0 : {
12896 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
12897 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
12898 0 : if (res) return res;
12899 : }
12900 : }
12901 : break;
12902 : }
12903 9 : case MAX_EXPR:
12904 9 : {
12905 9 : tree _q50 = TREE_OPERAND (_p1, 0);
12906 9 : tree _q51 = TREE_OPERAND (_p1, 1);
12907 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12908 : {
12909 1 : switch (TREE_CODE (_p2))
12910 : {
12911 0 : case MAX_EXPR:
12912 0 : {
12913 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12914 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12915 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12916 : {
12917 0 : {
12918 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12919 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
12920 0 : if (res) return res;
12921 : }
12922 : }
12923 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12924 : {
12925 0 : {
12926 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12927 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
12928 0 : if (res) return res;
12929 : }
12930 : }
12931 : break;
12932 : }
12933 : default:;
12934 : }
12935 : }
12936 9 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12937 : {
12938 1 : switch (TREE_CODE (_p2))
12939 : {
12940 0 : case MAX_EXPR:
12941 0 : {
12942 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12943 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12944 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12945 : {
12946 0 : {
12947 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12948 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
12949 0 : if (res) return res;
12950 : }
12951 : }
12952 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12953 : {
12954 0 : {
12955 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12956 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
12957 0 : if (res) return res;
12958 : }
12959 : }
12960 : break;
12961 : }
12962 : default:;
12963 : }
12964 : }
12965 9 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12966 : {
12967 1 : switch (TREE_CODE (_p2))
12968 : {
12969 0 : case MAX_EXPR:
12970 0 : {
12971 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12972 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12973 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12974 : {
12975 0 : {
12976 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12977 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
12978 0 : if (res) return res;
12979 : }
12980 : }
12981 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12982 : {
12983 0 : {
12984 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12985 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
12986 0 : if (res) return res;
12987 : }
12988 : }
12989 : break;
12990 : }
12991 1 : default:;
12992 : }
12993 1 : {
12994 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
12995 1 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
12996 1 : if (res) return res;
12997 : }
12998 : }
12999 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13000 : {
13001 8 : switch (TREE_CODE (_p2))
13002 : {
13003 0 : case MAX_EXPR:
13004 0 : {
13005 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13006 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13007 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13008 : {
13009 0 : {
13010 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13011 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13012 0 : if (res) return res;
13013 : }
13014 : }
13015 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13016 : {
13017 0 : {
13018 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13019 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13020 0 : if (res) return res;
13021 : }
13022 : }
13023 : break;
13024 : }
13025 8 : default:;
13026 : }
13027 8 : {
13028 8 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
13029 8 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13030 8 : if (res) return res;
13031 : }
13032 : }
13033 : break;
13034 : }
13035 531953 : default:;
13036 : }
13037 531953 : {
13038 531953 : tree _q20_pops[1];
13039 531953 : if (tree_nop_convert (_q20, _q20_pops))
13040 : {
13041 21836 : tree _q30 = _q20_pops[0];
13042 21836 : if (integer_zerop (_q21))
13043 : {
13044 18644 : switch (TREE_CODE (_p1))
13045 : {
13046 0 : case MAX_EXPR:
13047 0 : {
13048 0 : tree _q60 = TREE_OPERAND (_p1, 0);
13049 0 : tree _q61 = TREE_OPERAND (_p1, 1);
13050 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13051 : {
13052 0 : switch (TREE_CODE (_q61))
13053 : {
13054 0 : case INTEGER_CST:
13055 0 : {
13056 0 : switch (TREE_CODE (_p2))
13057 : {
13058 0 : case INTEGER_CST:
13059 0 : {
13060 0 : {
13061 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
13062 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13063 0 : if (res) return res;
13064 : }
13065 0 : break;
13066 : }
13067 : default:;
13068 : }
13069 : break;
13070 : }
13071 : default:;
13072 : }
13073 : }
13074 : break;
13075 : }
13076 : default:;
13077 : }
13078 : }
13079 : }
13080 : }
13081 531953 : if (tree_expr_nonnegative_p (_q21))
13082 : {
13083 381151 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13084 : {
13085 30209 : switch (TREE_CODE (_p2))
13086 : {
13087 0 : case ABS_EXPR:
13088 0 : {
13089 0 : tree _q60 = TREE_OPERAND (_p2, 0);
13090 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13091 : {
13092 0 : {
13093 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13094 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13095 0 : if (res) return res;
13096 : }
13097 : }
13098 : break;
13099 : }
13100 : default:;
13101 : }
13102 : }
13103 381151 : switch (TREE_CODE (_p1))
13104 : {
13105 12 : case ABS_EXPR:
13106 12 : {
13107 12 : tree _q50 = TREE_OPERAND (_p1, 0);
13108 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13109 : {
13110 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
13111 : {
13112 0 : {
13113 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13114 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13115 0 : if (res) return res;
13116 : }
13117 : }
13118 : }
13119 : break;
13120 : }
13121 : default:;
13122 : }
13123 : }
13124 : break;
13125 : }
13126 895795 : case GT_EXPR:
13127 895795 : {
13128 895795 : tree _q20 = TREE_OPERAND (_p0, 0);
13129 895795 : tree _q21 = TREE_OPERAND (_p0, 1);
13130 895795 : switch (TREE_CODE (_q20))
13131 : {
13132 974 : case MINUS_EXPR:
13133 974 : {
13134 974 : tree _q30 = TREE_OPERAND (_q20, 0);
13135 974 : tree _q31 = TREE_OPERAND (_q20, 1);
13136 974 : switch (TREE_CODE (_q30))
13137 : {
13138 0 : case CALL_EXPR:
13139 0 : switch (get_call_combined_fn (_q30))
13140 : {
13141 0 : case CFN_BUILT_IN_CEIL:
13142 0 : if (call_expr_nargs (_q30) == 1)
13143 : {
13144 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13145 0 : switch (TREE_CODE (_q40))
13146 : {
13147 0 : case SSA_NAME:
13148 0 : {
13149 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13150 : {
13151 0 : switch (TREE_CODE (_q31))
13152 : {
13153 0 : case SSA_NAME:
13154 0 : {
13155 0 : switch (TREE_CODE (_q21))
13156 : {
13157 0 : case MINUS_EXPR:
13158 0 : {
13159 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13160 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13161 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13162 : {
13163 0 : switch (TREE_CODE (_q80))
13164 : {
13165 0 : case SSA_NAME:
13166 0 : {
13167 0 : switch (TREE_CODE (_q81))
13168 : {
13169 0 : case CALL_EXPR:
13170 0 : switch (get_call_combined_fn (_q81))
13171 : {
13172 0 : case CFN_BUILT_IN_FLOOR:
13173 0 : if (call_expr_nargs (_q81) == 1)
13174 : {
13175 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13176 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13177 : {
13178 0 : switch (TREE_CODE (_q110))
13179 : {
13180 0 : case SSA_NAME:
13181 0 : {
13182 0 : switch (TREE_CODE (_p1))
13183 : {
13184 0 : case CALL_EXPR:
13185 0 : switch (get_call_combined_fn (_p1))
13186 : {
13187 0 : case CFN_BUILT_IN_FLOOR:
13188 0 : if (call_expr_nargs (_p1) == 1)
13189 : {
13190 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13191 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13192 : {
13193 0 : switch (TREE_CODE (_q140))
13194 : {
13195 0 : case SSA_NAME:
13196 0 : {
13197 0 : switch (TREE_CODE (_p2))
13198 : {
13199 0 : case CALL_EXPR:
13200 0 : switch (get_call_combined_fn (_p2))
13201 : {
13202 0 : case CFN_BUILT_IN_CEIL:
13203 0 : if (call_expr_nargs (_p2) == 1)
13204 : {
13205 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13206 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13207 : {
13208 0 : switch (TREE_CODE (_q170))
13209 : {
13210 0 : case SSA_NAME:
13211 0 : {
13212 0 : {
13213 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13214 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13215 0 : if (res) return res;
13216 : }
13217 0 : break;
13218 : }
13219 : default:;
13220 : }
13221 : }
13222 : }
13223 : break;
13224 : default:;
13225 : }
13226 : break;
13227 : default:;
13228 : }
13229 : break;
13230 : }
13231 : default:;
13232 : }
13233 : }
13234 : }
13235 : break;
13236 : default:;
13237 : }
13238 : break;
13239 : default:;
13240 : }
13241 : break;
13242 : }
13243 : default:;
13244 : }
13245 : }
13246 : }
13247 : break;
13248 : default:;
13249 : }
13250 : break;
13251 : default:;
13252 : }
13253 : break;
13254 : }
13255 : default:;
13256 : }
13257 : }
13258 : break;
13259 : }
13260 : default:;
13261 : }
13262 : break;
13263 : }
13264 : default:;
13265 : }
13266 : }
13267 : break;
13268 : }
13269 : default:;
13270 : }
13271 : }
13272 : break;
13273 0 : case CFN_CEIL:
13274 0 : if (call_expr_nargs (_q30) == 1)
13275 : {
13276 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13277 0 : switch (TREE_CODE (_q40))
13278 : {
13279 0 : case SSA_NAME:
13280 0 : {
13281 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13282 : {
13283 0 : switch (TREE_CODE (_q31))
13284 : {
13285 0 : case SSA_NAME:
13286 0 : {
13287 0 : switch (TREE_CODE (_q21))
13288 : {
13289 0 : case MINUS_EXPR:
13290 0 : {
13291 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13292 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13293 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13294 : {
13295 0 : switch (TREE_CODE (_q80))
13296 : {
13297 0 : case SSA_NAME:
13298 0 : {
13299 0 : switch (TREE_CODE (_q81))
13300 : {
13301 0 : case CALL_EXPR:
13302 0 : switch (get_call_combined_fn (_q81))
13303 : {
13304 0 : case CFN_FLOOR:
13305 0 : if (call_expr_nargs (_q81) == 1)
13306 : {
13307 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13308 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13309 : {
13310 0 : switch (TREE_CODE (_q110))
13311 : {
13312 0 : case SSA_NAME:
13313 0 : {
13314 0 : switch (TREE_CODE (_p1))
13315 : {
13316 0 : case CALL_EXPR:
13317 0 : switch (get_call_combined_fn (_p1))
13318 : {
13319 0 : case CFN_FLOOR:
13320 0 : if (call_expr_nargs (_p1) == 1)
13321 : {
13322 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13323 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13324 : {
13325 0 : switch (TREE_CODE (_q140))
13326 : {
13327 0 : case SSA_NAME:
13328 0 : {
13329 0 : switch (TREE_CODE (_p2))
13330 : {
13331 0 : case CALL_EXPR:
13332 0 : switch (get_call_combined_fn (_p2))
13333 : {
13334 0 : case CFN_CEIL:
13335 0 : if (call_expr_nargs (_p2) == 1)
13336 : {
13337 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13338 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13339 : {
13340 0 : switch (TREE_CODE (_q170))
13341 : {
13342 0 : case SSA_NAME:
13343 0 : {
13344 0 : {
13345 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13346 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
13347 0 : if (res) return res;
13348 : }
13349 0 : break;
13350 : }
13351 : default:;
13352 : }
13353 : }
13354 : }
13355 : break;
13356 : default:;
13357 : }
13358 : break;
13359 : default:;
13360 : }
13361 : break;
13362 : }
13363 : default:;
13364 : }
13365 : }
13366 : }
13367 : break;
13368 : default:;
13369 : }
13370 : break;
13371 : default:;
13372 : }
13373 : break;
13374 : }
13375 : default:;
13376 : }
13377 : }
13378 : }
13379 : break;
13380 : default:;
13381 : }
13382 : break;
13383 : default:;
13384 : }
13385 : break;
13386 : }
13387 : default:;
13388 : }
13389 : }
13390 : break;
13391 : }
13392 : default:;
13393 : }
13394 : break;
13395 : }
13396 : default:;
13397 : }
13398 : }
13399 : break;
13400 : }
13401 : default:;
13402 : }
13403 : }
13404 : break;
13405 0 : case CFN_BUILT_IN_CEILF:
13406 0 : if (call_expr_nargs (_q30) == 1)
13407 : {
13408 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13409 0 : switch (TREE_CODE (_q40))
13410 : {
13411 0 : case SSA_NAME:
13412 0 : {
13413 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13414 : {
13415 0 : switch (TREE_CODE (_q31))
13416 : {
13417 0 : case SSA_NAME:
13418 0 : {
13419 0 : switch (TREE_CODE (_q21))
13420 : {
13421 0 : case MINUS_EXPR:
13422 0 : {
13423 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13424 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13425 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13426 : {
13427 0 : switch (TREE_CODE (_q80))
13428 : {
13429 0 : case SSA_NAME:
13430 0 : {
13431 0 : switch (TREE_CODE (_q81))
13432 : {
13433 0 : case CALL_EXPR:
13434 0 : switch (get_call_combined_fn (_q81))
13435 : {
13436 0 : case CFN_BUILT_IN_FLOORF:
13437 0 : if (call_expr_nargs (_q81) == 1)
13438 : {
13439 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13440 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13441 : {
13442 0 : switch (TREE_CODE (_q110))
13443 : {
13444 0 : case SSA_NAME:
13445 0 : {
13446 0 : switch (TREE_CODE (_p1))
13447 : {
13448 0 : case CALL_EXPR:
13449 0 : switch (get_call_combined_fn (_p1))
13450 : {
13451 0 : case CFN_BUILT_IN_FLOORF:
13452 0 : if (call_expr_nargs (_p1) == 1)
13453 : {
13454 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13455 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13456 : {
13457 0 : switch (TREE_CODE (_q140))
13458 : {
13459 0 : case SSA_NAME:
13460 0 : {
13461 0 : switch (TREE_CODE (_p2))
13462 : {
13463 0 : case CALL_EXPR:
13464 0 : switch (get_call_combined_fn (_p2))
13465 : {
13466 0 : case CFN_BUILT_IN_CEILF:
13467 0 : if (call_expr_nargs (_p2) == 1)
13468 : {
13469 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13470 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13471 : {
13472 0 : switch (TREE_CODE (_q170))
13473 : {
13474 0 : case SSA_NAME:
13475 0 : {
13476 0 : {
13477 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13478 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
13479 0 : if (res) return res;
13480 : }
13481 0 : break;
13482 : }
13483 : default:;
13484 : }
13485 : }
13486 : }
13487 : break;
13488 : default:;
13489 : }
13490 : break;
13491 : default:;
13492 : }
13493 : break;
13494 : }
13495 : default:;
13496 : }
13497 : }
13498 : }
13499 : break;
13500 : default:;
13501 : }
13502 : break;
13503 : default:;
13504 : }
13505 : break;
13506 : }
13507 : default:;
13508 : }
13509 : }
13510 : }
13511 : break;
13512 : default:;
13513 : }
13514 : break;
13515 : default:;
13516 : }
13517 : break;
13518 : }
13519 : default:;
13520 : }
13521 : }
13522 : break;
13523 : }
13524 : default:;
13525 : }
13526 : break;
13527 : }
13528 : default:;
13529 : }
13530 : }
13531 : break;
13532 : }
13533 : default:;
13534 : }
13535 : }
13536 : break;
13537 0 : case CFN_BUILT_IN_CEILL:
13538 0 : if (call_expr_nargs (_q30) == 1)
13539 : {
13540 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13541 0 : switch (TREE_CODE (_q40))
13542 : {
13543 0 : case SSA_NAME:
13544 0 : {
13545 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13546 : {
13547 0 : switch (TREE_CODE (_q31))
13548 : {
13549 0 : case SSA_NAME:
13550 0 : {
13551 0 : switch (TREE_CODE (_q21))
13552 : {
13553 0 : case MINUS_EXPR:
13554 0 : {
13555 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13556 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13557 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13558 : {
13559 0 : switch (TREE_CODE (_q80))
13560 : {
13561 0 : case SSA_NAME:
13562 0 : {
13563 0 : switch (TREE_CODE (_q81))
13564 : {
13565 0 : case CALL_EXPR:
13566 0 : switch (get_call_combined_fn (_q81))
13567 : {
13568 0 : case CFN_BUILT_IN_FLOORL:
13569 0 : if (call_expr_nargs (_q81) == 1)
13570 : {
13571 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13572 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13573 : {
13574 0 : switch (TREE_CODE (_q110))
13575 : {
13576 0 : case SSA_NAME:
13577 0 : {
13578 0 : switch (TREE_CODE (_p1))
13579 : {
13580 0 : case CALL_EXPR:
13581 0 : switch (get_call_combined_fn (_p1))
13582 : {
13583 0 : case CFN_BUILT_IN_FLOORL:
13584 0 : if (call_expr_nargs (_p1) == 1)
13585 : {
13586 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13587 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13588 : {
13589 0 : switch (TREE_CODE (_q140))
13590 : {
13591 0 : case SSA_NAME:
13592 0 : {
13593 0 : switch (TREE_CODE (_p2))
13594 : {
13595 0 : case CALL_EXPR:
13596 0 : switch (get_call_combined_fn (_p2))
13597 : {
13598 0 : case CFN_BUILT_IN_CEILL:
13599 0 : if (call_expr_nargs (_p2) == 1)
13600 : {
13601 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13602 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13603 : {
13604 0 : switch (TREE_CODE (_q170))
13605 : {
13606 0 : case SSA_NAME:
13607 0 : {
13608 0 : {
13609 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13610 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
13611 0 : if (res) return res;
13612 : }
13613 0 : break;
13614 : }
13615 : default:;
13616 : }
13617 : }
13618 : }
13619 : break;
13620 : default:;
13621 : }
13622 : break;
13623 : default:;
13624 : }
13625 : break;
13626 : }
13627 : default:;
13628 : }
13629 : }
13630 : }
13631 : break;
13632 : default:;
13633 : }
13634 : break;
13635 : default:;
13636 : }
13637 : break;
13638 : }
13639 : default:;
13640 : }
13641 : }
13642 : }
13643 : break;
13644 : default:;
13645 : }
13646 : break;
13647 : default:;
13648 : }
13649 : break;
13650 : }
13651 : default:;
13652 : }
13653 : }
13654 : break;
13655 : }
13656 : default:;
13657 : }
13658 : break;
13659 : }
13660 : default:;
13661 : }
13662 : }
13663 : break;
13664 : }
13665 : default:;
13666 : }
13667 : }
13668 : break;
13669 : default:;
13670 : }
13671 : break;
13672 : default:;
13673 : }
13674 : break;
13675 : }
13676 895795 : default:;
13677 : }
13678 895795 : switch (TREE_CODE (_p1))
13679 : {
13680 0 : case BIT_IOR_EXPR:
13681 0 : {
13682 0 : tree _q50 = TREE_OPERAND (_p1, 0);
13683 0 : tree _q51 = TREE_OPERAND (_p1, 1);
13684 0 : switch (TREE_CODE (_q51))
13685 : {
13686 0 : case INTEGER_CST:
13687 0 : {
13688 0 : switch (TREE_CODE (_p2))
13689 : {
13690 0 : case BIT_AND_EXPR:
13691 0 : {
13692 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13693 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13694 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13695 : {
13696 0 : switch (TREE_CODE (_q81))
13697 : {
13698 0 : case INTEGER_CST:
13699 0 : {
13700 0 : {
13701 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
13702 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
13703 0 : if (res) return res;
13704 : }
13705 0 : break;
13706 : }
13707 : default:;
13708 : }
13709 : }
13710 : break;
13711 : }
13712 : default:;
13713 : }
13714 : break;
13715 : }
13716 : default:;
13717 : }
13718 : break;
13719 : }
13720 895795 : default:;
13721 : }
13722 895795 : switch (TREE_CODE (_q20))
13723 : {
13724 85857 : CASE_CONVERT:
13725 85857 : {
13726 85857 : tree _q30 = TREE_OPERAND (_q20, 0);
13727 85857 : switch (TREE_CODE (_q21))
13728 : {
13729 4201 : case INTEGER_CST:
13730 4201 : {
13731 4201 : switch (TREE_CODE (_p1))
13732 : {
13733 169 : CASE_CONVERT:
13734 169 : {
13735 169 : tree _q60 = TREE_OPERAND (_p1, 0);
13736 169 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13737 : {
13738 63 : switch (TREE_CODE (_p2))
13739 : {
13740 62 : case INTEGER_CST:
13741 62 : {
13742 62 : {
13743 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13744 62 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
13745 62 : if (res) return res;
13746 : }
13747 62 : break;
13748 : }
13749 : default:;
13750 : }
13751 : }
13752 : break;
13753 : }
13754 4201 : default:;
13755 : }
13756 4201 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
13757 : {
13758 5 : switch (TREE_CODE (_p2))
13759 : {
13760 3 : case INTEGER_CST:
13761 3 : {
13762 3 : {
13763 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13764 3 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
13765 3 : if (res) return res;
13766 : }
13767 3 : break;
13768 : }
13769 : default:;
13770 : }
13771 : }
13772 4201 : switch (TREE_CODE (_p1))
13773 : {
13774 1265 : case PLUS_EXPR:
13775 1265 : {
13776 1265 : tree _q60 = TREE_OPERAND (_p1, 0);
13777 1265 : tree _q61 = TREE_OPERAND (_p1, 1);
13778 1265 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13779 : {
13780 24 : switch (TREE_CODE (_q61))
13781 : {
13782 24 : case INTEGER_CST:
13783 24 : {
13784 24 : switch (TREE_CODE (_p2))
13785 : {
13786 24 : case INTEGER_CST:
13787 24 : {
13788 24 : {
13789 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13790 24 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
13791 24 : if (res) return res;
13792 : }
13793 24 : break;
13794 : }
13795 : default:;
13796 : }
13797 : break;
13798 : }
13799 : default:;
13800 : }
13801 : }
13802 : break;
13803 : }
13804 0 : case MINUS_EXPR:
13805 0 : {
13806 0 : tree _q60 = TREE_OPERAND (_p1, 0);
13807 0 : tree _q61 = TREE_OPERAND (_p1, 1);
13808 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13809 : {
13810 0 : switch (TREE_CODE (_q61))
13811 : {
13812 0 : case INTEGER_CST:
13813 0 : {
13814 0 : switch (TREE_CODE (_p2))
13815 : {
13816 0 : case INTEGER_CST:
13817 0 : {
13818 0 : {
13819 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13820 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
13821 0 : if (res) return res;
13822 : }
13823 0 : break;
13824 : }
13825 : default:;
13826 : }
13827 : break;
13828 : }
13829 : default:;
13830 : }
13831 : }
13832 : break;
13833 : }
13834 : default:;
13835 : }
13836 : break;
13837 : }
13838 : default:;
13839 : }
13840 : break;
13841 : }
13842 895795 : default:;
13843 : }
13844 895795 : switch (TREE_CODE (_q21))
13845 : {
13846 463843 : case INTEGER_CST:
13847 463843 : {
13848 463843 : switch (TREE_CODE (_p1))
13849 : {
13850 50039 : CASE_CONVERT:
13851 50039 : {
13852 50039 : tree _q50 = TREE_OPERAND (_p1, 0);
13853 50039 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13854 : {
13855 9992 : switch (TREE_CODE (_p2))
13856 : {
13857 9956 : case INTEGER_CST:
13858 9956 : {
13859 9956 : {
13860 9956 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13861 9956 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
13862 9956 : if (res) return res;
13863 : }
13864 9640 : break;
13865 : }
13866 : default:;
13867 : }
13868 : }
13869 : break;
13870 : }
13871 463527 : default:;
13872 : }
13873 463527 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13874 : {
13875 8818 : switch (TREE_CODE (_p2))
13876 : {
13877 8664 : case INTEGER_CST:
13878 8664 : {
13879 8664 : {
13880 8664 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13881 8664 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
13882 8664 : if (res) return res;
13883 : }
13884 31 : break;
13885 : }
13886 : default:;
13887 : }
13888 : }
13889 454894 : switch (TREE_CODE (_p1))
13890 : {
13891 42892 : case PLUS_EXPR:
13892 42892 : {
13893 42892 : tree _q50 = TREE_OPERAND (_p1, 0);
13894 42892 : tree _q51 = TREE_OPERAND (_p1, 1);
13895 42892 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13896 : {
13897 735 : switch (TREE_CODE (_q51))
13898 : {
13899 735 : case INTEGER_CST:
13900 735 : {
13901 735 : switch (TREE_CODE (_p2))
13902 : {
13903 727 : case INTEGER_CST:
13904 727 : {
13905 727 : {
13906 727 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13907 727 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
13908 727 : if (res) return res;
13909 : }
13910 17 : break;
13911 : }
13912 : default:;
13913 : }
13914 : break;
13915 : }
13916 : default:;
13917 : }
13918 : }
13919 : break;
13920 : }
13921 200 : case MINUS_EXPR:
13922 200 : {
13923 200 : tree _q50 = TREE_OPERAND (_p1, 0);
13924 200 : tree _q51 = TREE_OPERAND (_p1, 1);
13925 200 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13926 : {
13927 4 : switch (TREE_CODE (_q51))
13928 : {
13929 0 : case INTEGER_CST:
13930 0 : {
13931 0 : switch (TREE_CODE (_p2))
13932 : {
13933 0 : case INTEGER_CST:
13934 0 : {
13935 0 : {
13936 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13937 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
13938 0 : if (res) return res;
13939 : }
13940 0 : break;
13941 : }
13942 : default:;
13943 : }
13944 : break;
13945 : }
13946 : default:;
13947 : }
13948 : }
13949 : break;
13950 : }
13951 : default:;
13952 : }
13953 : break;
13954 : }
13955 886136 : default:;
13956 : }
13957 886136 : switch (TREE_CODE (_p1))
13958 : {
13959 18 : case MIN_EXPR:
13960 18 : {
13961 18 : tree _q50 = TREE_OPERAND (_p1, 0);
13962 18 : tree _q51 = TREE_OPERAND (_p1, 1);
13963 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13964 : {
13965 7 : switch (TREE_CODE (_p2))
13966 : {
13967 0 : case MIN_EXPR:
13968 0 : {
13969 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13970 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13971 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13972 : {
13973 0 : {
13974 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13975 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
13976 0 : if (res) return res;
13977 : }
13978 : }
13979 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13980 : {
13981 0 : {
13982 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13983 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
13984 0 : if (res) return res;
13985 : }
13986 : }
13987 : break;
13988 : }
13989 7 : default:;
13990 : }
13991 7 : {
13992 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
13993 7 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
13994 7 : if (res) return res;
13995 : }
13996 : }
13997 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13998 : {
13999 0 : switch (TREE_CODE (_p2))
14000 : {
14001 0 : case MIN_EXPR:
14002 0 : {
14003 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14004 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14005 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14006 : {
14007 0 : {
14008 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14009 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14010 0 : if (res) return res;
14011 : }
14012 : }
14013 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14014 : {
14015 0 : {
14016 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14017 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14018 0 : if (res) return res;
14019 : }
14020 : }
14021 : break;
14022 : }
14023 : default:;
14024 : }
14025 : }
14026 18 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14027 : {
14028 8 : switch (TREE_CODE (_p2))
14029 : {
14030 0 : case MIN_EXPR:
14031 0 : {
14032 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14033 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14034 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14035 : {
14036 0 : {
14037 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14038 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14039 0 : if (res) return res;
14040 : }
14041 : }
14042 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14043 : {
14044 0 : {
14045 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14046 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14047 0 : if (res) return res;
14048 : }
14049 : }
14050 : break;
14051 : }
14052 : default:;
14053 : }
14054 : }
14055 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14056 : {
14057 7 : switch (TREE_CODE (_p2))
14058 : {
14059 0 : case MIN_EXPR:
14060 0 : {
14061 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14062 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14063 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14064 : {
14065 0 : {
14066 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14067 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14068 0 : if (res) return res;
14069 : }
14070 : }
14071 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14072 : {
14073 0 : {
14074 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14075 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14076 0 : if (res) return res;
14077 : }
14078 : }
14079 : break;
14080 : }
14081 : default:;
14082 : }
14083 : }
14084 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14085 : {
14086 0 : {
14087 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
14088 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14089 0 : if (res) return res;
14090 : }
14091 : }
14092 : break;
14093 : }
14094 100 : case MAX_EXPR:
14095 100 : {
14096 100 : tree _q50 = TREE_OPERAND (_p1, 0);
14097 100 : tree _q51 = TREE_OPERAND (_p1, 1);
14098 100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14099 : {
14100 0 : switch (TREE_CODE (_p2))
14101 : {
14102 0 : case MAX_EXPR:
14103 0 : {
14104 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14105 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14106 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14107 : {
14108 0 : {
14109 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14110 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14111 0 : if (res) return res;
14112 : }
14113 : }
14114 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14115 : {
14116 0 : {
14117 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14118 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14119 0 : if (res) return res;
14120 : }
14121 : }
14122 : break;
14123 : }
14124 : default:;
14125 : }
14126 : }
14127 100 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14128 : {
14129 2 : switch (TREE_CODE (_p2))
14130 : {
14131 1 : case MAX_EXPR:
14132 1 : {
14133 1 : tree _q80 = TREE_OPERAND (_p2, 0);
14134 1 : tree _q81 = TREE_OPERAND (_p2, 1);
14135 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14136 : {
14137 0 : {
14138 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14139 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14140 0 : if (res) return res;
14141 : }
14142 : }
14143 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14144 : {
14145 1 : {
14146 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14147 1 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14148 1 : if (res) return res;
14149 : }
14150 : }
14151 : break;
14152 : }
14153 : default:;
14154 : }
14155 : }
14156 99 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14157 : {
14158 1 : switch (TREE_CODE (_p2))
14159 : {
14160 0 : case MAX_EXPR:
14161 0 : {
14162 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14163 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14164 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14165 : {
14166 0 : {
14167 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14168 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14169 0 : if (res) return res;
14170 : }
14171 : }
14172 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14173 : {
14174 0 : {
14175 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14176 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14177 0 : if (res) return res;
14178 : }
14179 : }
14180 : break;
14181 : }
14182 1 : default:;
14183 : }
14184 1 : {
14185 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
14186 1 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14187 1 : if (res) return res;
14188 : }
14189 : }
14190 98 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14191 : {
14192 0 : switch (TREE_CODE (_p2))
14193 : {
14194 0 : case MAX_EXPR:
14195 0 : {
14196 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14197 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14198 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14199 : {
14200 0 : {
14201 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14202 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14203 0 : if (res) return res;
14204 : }
14205 : }
14206 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14207 : {
14208 0 : {
14209 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14210 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14211 0 : if (res) return res;
14212 : }
14213 : }
14214 : break;
14215 : }
14216 0 : default:;
14217 : }
14218 0 : {
14219 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
14220 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14221 0 : if (res) return res;
14222 : }
14223 : }
14224 : break;
14225 : }
14226 886134 : default:;
14227 : }
14228 886134 : if (integer_zerop (_q20))
14229 : {
14230 0 : {
14231 0 : tree _q21_pops[1];
14232 0 : if (tree_nop_convert (_q21, _q21_pops))
14233 : {
14234 0 : tree _q40 = _q21_pops[0];
14235 0 : switch (TREE_CODE (_p1))
14236 : {
14237 0 : case MIN_EXPR:
14238 0 : {
14239 0 : tree _q60 = TREE_OPERAND (_p1, 0);
14240 0 : tree _q61 = TREE_OPERAND (_p1, 1);
14241 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
14242 : {
14243 0 : switch (TREE_CODE (_q61))
14244 : {
14245 0 : case INTEGER_CST:
14246 0 : {
14247 0 : switch (TREE_CODE (_p2))
14248 : {
14249 0 : case INTEGER_CST:
14250 0 : {
14251 0 : {
14252 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
14253 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14254 0 : if (res) return res;
14255 : }
14256 0 : break;
14257 : }
14258 : default:;
14259 : }
14260 : break;
14261 : }
14262 : default:;
14263 : }
14264 : }
14265 : break;
14266 : }
14267 : default:;
14268 : }
14269 : }
14270 : }
14271 : }
14272 886134 : if (tree_expr_nonnegative_p (_q21))
14273 : {
14274 570640 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14275 : {
14276 578 : switch (TREE_CODE (_p2))
14277 : {
14278 0 : case ABS_EXPR:
14279 0 : {
14280 0 : tree _q60 = TREE_OPERAND (_p2, 0);
14281 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
14282 : {
14283 0 : {
14284 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14285 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14286 0 : if (res) return res;
14287 : }
14288 : }
14289 : break;
14290 : }
14291 : default:;
14292 : }
14293 : }
14294 570640 : switch (TREE_CODE (_p1))
14295 : {
14296 1 : case ABS_EXPR:
14297 1 : {
14298 1 : tree _q50 = TREE_OPERAND (_p1, 0);
14299 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14300 : {
14301 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
14302 : {
14303 0 : {
14304 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14305 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14306 0 : if (res) return res;
14307 : }
14308 : }
14309 : }
14310 : break;
14311 : }
14312 : default:;
14313 : }
14314 : }
14315 886134 : switch (TREE_CODE (_q20))
14316 : {
14317 56814 : case PLUS_EXPR:
14318 56814 : {
14319 56814 : tree _q30 = TREE_OPERAND (_q20, 0);
14320 56814 : tree _q31 = TREE_OPERAND (_q20, 1);
14321 56814 : if (integer_onep (_q31))
14322 : {
14323 28680 : switch (TREE_CODE (_p1))
14324 : {
14325 2 : case NEGATE_EXPR:
14326 2 : {
14327 2 : tree _q70 = TREE_OPERAND (_p1, 0);
14328 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
14329 : {
14330 2 : if (integer_onep (_p2))
14331 : {
14332 2 : {
14333 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14334 2 : if (TYPE_UNSIGNED (type)
14335 : )
14336 : {
14337 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1813;
14338 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1813;
14339 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1813;
14340 2 : {
14341 2 : tree res_op0;
14342 2 : {
14343 2 : tree _o1[2], _r1;
14344 2 : _o1[0] = unshare_expr (captures[0]);
14345 2 : _o1[1] = captures[1];
14346 2 : _r1 = fold_build2_loc (loc, GE_EXPR, boolean_type_node, _o1[0], _o1[1]);
14347 2 : res_op0 = _r1;
14348 : }
14349 2 : tree res_op1;
14350 2 : {
14351 2 : tree _o1[1], _r1;
14352 2 : _o1[0] = captures[0];
14353 2 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
14354 2 : res_op1 = _r1;
14355 : }
14356 2 : tree res_op2;
14357 2 : res_op2 = captures[2];
14358 2 : tree _r;
14359 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
14360 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
14361 2 : return _r;
14362 : }
14363 0 : next_after_fail1813:;
14364 : }
14365 : }
14366 : }
14367 : }
14368 : break;
14369 : }
14370 : default:;
14371 : }
14372 : }
14373 : break;
14374 : }
14375 : default:;
14376 : }
14377 : break;
14378 : }
14379 1361528 : case LE_EXPR:
14380 1361528 : {
14381 1361528 : tree _q20 = TREE_OPERAND (_p0, 0);
14382 1361528 : tree _q21 = TREE_OPERAND (_p0, 1);
14383 1361528 : switch (TREE_CODE (_q20))
14384 : {
14385 201 : case MINUS_EXPR:
14386 201 : {
14387 201 : tree _q30 = TREE_OPERAND (_q20, 0);
14388 201 : tree _q31 = TREE_OPERAND (_q20, 1);
14389 201 : switch (TREE_CODE (_q30))
14390 : {
14391 0 : case CALL_EXPR:
14392 0 : switch (get_call_combined_fn (_q30))
14393 : {
14394 0 : case CFN_BUILT_IN_CEIL:
14395 0 : if (call_expr_nargs (_q30) == 1)
14396 : {
14397 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14398 0 : switch (TREE_CODE (_q40))
14399 : {
14400 0 : case SSA_NAME:
14401 0 : {
14402 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14403 : {
14404 0 : switch (TREE_CODE (_q31))
14405 : {
14406 0 : case SSA_NAME:
14407 0 : {
14408 0 : switch (TREE_CODE (_q21))
14409 : {
14410 0 : case MINUS_EXPR:
14411 0 : {
14412 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14413 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14414 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14415 : {
14416 0 : switch (TREE_CODE (_q80))
14417 : {
14418 0 : case SSA_NAME:
14419 0 : {
14420 0 : switch (TREE_CODE (_q81))
14421 : {
14422 0 : case CALL_EXPR:
14423 0 : switch (get_call_combined_fn (_q81))
14424 : {
14425 0 : case CFN_BUILT_IN_FLOOR:
14426 0 : if (call_expr_nargs (_q81) == 1)
14427 : {
14428 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14429 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14430 : {
14431 0 : switch (TREE_CODE (_q110))
14432 : {
14433 0 : case SSA_NAME:
14434 0 : {
14435 0 : switch (TREE_CODE (_p1))
14436 : {
14437 0 : case CALL_EXPR:
14438 0 : switch (get_call_combined_fn (_p1))
14439 : {
14440 0 : case CFN_BUILT_IN_CEIL:
14441 0 : if (call_expr_nargs (_p1) == 1)
14442 : {
14443 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14444 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14445 : {
14446 0 : switch (TREE_CODE (_q140))
14447 : {
14448 0 : case SSA_NAME:
14449 0 : {
14450 0 : switch (TREE_CODE (_p2))
14451 : {
14452 0 : case CALL_EXPR:
14453 0 : switch (get_call_combined_fn (_p2))
14454 : {
14455 0 : case CFN_BUILT_IN_FLOOR:
14456 0 : if (call_expr_nargs (_p2) == 1)
14457 : {
14458 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14459 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14460 : {
14461 0 : switch (TREE_CODE (_q170))
14462 : {
14463 0 : case SSA_NAME:
14464 0 : {
14465 0 : {
14466 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14467 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
14468 0 : if (res) return res;
14469 : }
14470 0 : break;
14471 : }
14472 : default:;
14473 : }
14474 : }
14475 : }
14476 : break;
14477 : default:;
14478 : }
14479 : break;
14480 : default:;
14481 : }
14482 : break;
14483 : }
14484 : default:;
14485 : }
14486 : }
14487 : }
14488 : break;
14489 : default:;
14490 : }
14491 : break;
14492 : default:;
14493 : }
14494 : break;
14495 : }
14496 : default:;
14497 : }
14498 : }
14499 : }
14500 : break;
14501 : default:;
14502 : }
14503 : break;
14504 : default:;
14505 : }
14506 : break;
14507 : }
14508 : default:;
14509 : }
14510 : }
14511 : break;
14512 : }
14513 : default:;
14514 : }
14515 : break;
14516 : }
14517 : default:;
14518 : }
14519 : }
14520 : break;
14521 : }
14522 : default:;
14523 : }
14524 : }
14525 : break;
14526 0 : case CFN_CEIL:
14527 0 : if (call_expr_nargs (_q30) == 1)
14528 : {
14529 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14530 0 : switch (TREE_CODE (_q40))
14531 : {
14532 0 : case SSA_NAME:
14533 0 : {
14534 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14535 : {
14536 0 : switch (TREE_CODE (_q31))
14537 : {
14538 0 : case SSA_NAME:
14539 0 : {
14540 0 : switch (TREE_CODE (_q21))
14541 : {
14542 0 : case MINUS_EXPR:
14543 0 : {
14544 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14545 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14546 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14547 : {
14548 0 : switch (TREE_CODE (_q80))
14549 : {
14550 0 : case SSA_NAME:
14551 0 : {
14552 0 : switch (TREE_CODE (_q81))
14553 : {
14554 0 : case CALL_EXPR:
14555 0 : switch (get_call_combined_fn (_q81))
14556 : {
14557 0 : case CFN_FLOOR:
14558 0 : if (call_expr_nargs (_q81) == 1)
14559 : {
14560 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14561 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14562 : {
14563 0 : switch (TREE_CODE (_q110))
14564 : {
14565 0 : case SSA_NAME:
14566 0 : {
14567 0 : switch (TREE_CODE (_p1))
14568 : {
14569 0 : case CALL_EXPR:
14570 0 : switch (get_call_combined_fn (_p1))
14571 : {
14572 0 : case CFN_CEIL:
14573 0 : if (call_expr_nargs (_p1) == 1)
14574 : {
14575 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14576 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14577 : {
14578 0 : switch (TREE_CODE (_q140))
14579 : {
14580 0 : case SSA_NAME:
14581 0 : {
14582 0 : switch (TREE_CODE (_p2))
14583 : {
14584 0 : case CALL_EXPR:
14585 0 : switch (get_call_combined_fn (_p2))
14586 : {
14587 0 : case CFN_FLOOR:
14588 0 : if (call_expr_nargs (_p2) == 1)
14589 : {
14590 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14591 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14592 : {
14593 0 : switch (TREE_CODE (_q170))
14594 : {
14595 0 : case SSA_NAME:
14596 0 : {
14597 0 : {
14598 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14599 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
14600 0 : if (res) return res;
14601 : }
14602 0 : break;
14603 : }
14604 : default:;
14605 : }
14606 : }
14607 : }
14608 : break;
14609 : default:;
14610 : }
14611 : break;
14612 : default:;
14613 : }
14614 : break;
14615 : }
14616 : default:;
14617 : }
14618 : }
14619 : }
14620 : break;
14621 : default:;
14622 : }
14623 : break;
14624 : default:;
14625 : }
14626 : break;
14627 : }
14628 : default:;
14629 : }
14630 : }
14631 : }
14632 : break;
14633 : default:;
14634 : }
14635 : break;
14636 : default:;
14637 : }
14638 : break;
14639 : }
14640 : default:;
14641 : }
14642 : }
14643 : break;
14644 : }
14645 : default:;
14646 : }
14647 : break;
14648 : }
14649 : default:;
14650 : }
14651 : }
14652 : break;
14653 : }
14654 : default:;
14655 : }
14656 : }
14657 : break;
14658 0 : case CFN_BUILT_IN_CEILF:
14659 0 : if (call_expr_nargs (_q30) == 1)
14660 : {
14661 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14662 0 : switch (TREE_CODE (_q40))
14663 : {
14664 0 : case SSA_NAME:
14665 0 : {
14666 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14667 : {
14668 0 : switch (TREE_CODE (_q31))
14669 : {
14670 0 : case SSA_NAME:
14671 0 : {
14672 0 : switch (TREE_CODE (_q21))
14673 : {
14674 0 : case MINUS_EXPR:
14675 0 : {
14676 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14677 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14678 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14679 : {
14680 0 : switch (TREE_CODE (_q80))
14681 : {
14682 0 : case SSA_NAME:
14683 0 : {
14684 0 : switch (TREE_CODE (_q81))
14685 : {
14686 0 : case CALL_EXPR:
14687 0 : switch (get_call_combined_fn (_q81))
14688 : {
14689 0 : case CFN_BUILT_IN_FLOORF:
14690 0 : if (call_expr_nargs (_q81) == 1)
14691 : {
14692 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14693 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14694 : {
14695 0 : switch (TREE_CODE (_q110))
14696 : {
14697 0 : case SSA_NAME:
14698 0 : {
14699 0 : switch (TREE_CODE (_p1))
14700 : {
14701 0 : case CALL_EXPR:
14702 0 : switch (get_call_combined_fn (_p1))
14703 : {
14704 0 : case CFN_BUILT_IN_CEILF:
14705 0 : if (call_expr_nargs (_p1) == 1)
14706 : {
14707 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14708 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14709 : {
14710 0 : switch (TREE_CODE (_q140))
14711 : {
14712 0 : case SSA_NAME:
14713 0 : {
14714 0 : switch (TREE_CODE (_p2))
14715 : {
14716 0 : case CALL_EXPR:
14717 0 : switch (get_call_combined_fn (_p2))
14718 : {
14719 0 : case CFN_BUILT_IN_FLOORF:
14720 0 : if (call_expr_nargs (_p2) == 1)
14721 : {
14722 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14723 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14724 : {
14725 0 : switch (TREE_CODE (_q170))
14726 : {
14727 0 : case SSA_NAME:
14728 0 : {
14729 0 : {
14730 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14731 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
14732 0 : if (res) return res;
14733 : }
14734 0 : break;
14735 : }
14736 : default:;
14737 : }
14738 : }
14739 : }
14740 : break;
14741 : default:;
14742 : }
14743 : break;
14744 : default:;
14745 : }
14746 : break;
14747 : }
14748 : default:;
14749 : }
14750 : }
14751 : }
14752 : break;
14753 : default:;
14754 : }
14755 : break;
14756 : default:;
14757 : }
14758 : break;
14759 : }
14760 : default:;
14761 : }
14762 : }
14763 : }
14764 : break;
14765 : default:;
14766 : }
14767 : break;
14768 : default:;
14769 : }
14770 : break;
14771 : }
14772 : default:;
14773 : }
14774 : }
14775 : break;
14776 : }
14777 : default:;
14778 : }
14779 : break;
14780 : }
14781 : default:;
14782 : }
14783 : }
14784 : break;
14785 : }
14786 : default:;
14787 : }
14788 : }
14789 : break;
14790 0 : case CFN_BUILT_IN_CEILL:
14791 0 : if (call_expr_nargs (_q30) == 1)
14792 : {
14793 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14794 0 : switch (TREE_CODE (_q40))
14795 : {
14796 0 : case SSA_NAME:
14797 0 : {
14798 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14799 : {
14800 0 : switch (TREE_CODE (_q31))
14801 : {
14802 0 : case SSA_NAME:
14803 0 : {
14804 0 : switch (TREE_CODE (_q21))
14805 : {
14806 0 : case MINUS_EXPR:
14807 0 : {
14808 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14809 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14810 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14811 : {
14812 0 : switch (TREE_CODE (_q80))
14813 : {
14814 0 : case SSA_NAME:
14815 0 : {
14816 0 : switch (TREE_CODE (_q81))
14817 : {
14818 0 : case CALL_EXPR:
14819 0 : switch (get_call_combined_fn (_q81))
14820 : {
14821 0 : case CFN_BUILT_IN_FLOORL:
14822 0 : if (call_expr_nargs (_q81) == 1)
14823 : {
14824 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14825 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14826 : {
14827 0 : switch (TREE_CODE (_q110))
14828 : {
14829 0 : case SSA_NAME:
14830 0 : {
14831 0 : switch (TREE_CODE (_p1))
14832 : {
14833 0 : case CALL_EXPR:
14834 0 : switch (get_call_combined_fn (_p1))
14835 : {
14836 0 : case CFN_BUILT_IN_CEILL:
14837 0 : if (call_expr_nargs (_p1) == 1)
14838 : {
14839 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14840 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14841 : {
14842 0 : switch (TREE_CODE (_q140))
14843 : {
14844 0 : case SSA_NAME:
14845 0 : {
14846 0 : switch (TREE_CODE (_p2))
14847 : {
14848 0 : case CALL_EXPR:
14849 0 : switch (get_call_combined_fn (_p2))
14850 : {
14851 0 : case CFN_BUILT_IN_FLOORL:
14852 0 : if (call_expr_nargs (_p2) == 1)
14853 : {
14854 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14855 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14856 : {
14857 0 : switch (TREE_CODE (_q170))
14858 : {
14859 0 : case SSA_NAME:
14860 0 : {
14861 0 : {
14862 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14863 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
14864 0 : if (res) return res;
14865 : }
14866 0 : break;
14867 : }
14868 : default:;
14869 : }
14870 : }
14871 : }
14872 : break;
14873 : default:;
14874 : }
14875 : break;
14876 : default:;
14877 : }
14878 : break;
14879 : }
14880 : default:;
14881 : }
14882 : }
14883 : }
14884 : break;
14885 : default:;
14886 : }
14887 : break;
14888 : default:;
14889 : }
14890 : break;
14891 : }
14892 : default:;
14893 : }
14894 : }
14895 : }
14896 : break;
14897 : default:;
14898 : }
14899 : break;
14900 : default:;
14901 : }
14902 : break;
14903 : }
14904 : default:;
14905 : }
14906 : }
14907 : break;
14908 : }
14909 : default:;
14910 : }
14911 : break;
14912 : }
14913 : default:;
14914 : }
14915 : }
14916 : break;
14917 : }
14918 : default:;
14919 : }
14920 : }
14921 : break;
14922 : default:;
14923 : }
14924 : break;
14925 : default:;
14926 : }
14927 : break;
14928 : }
14929 1361528 : default:;
14930 : }
14931 1361528 : if (integer_zerop (_q21))
14932 : {
14933 122261 : switch (TREE_CODE (_p1))
14934 : {
14935 245 : case NEGATE_EXPR:
14936 245 : {
14937 245 : tree _q50 = TREE_OPERAND (_p1, 0);
14938 245 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14939 : {
14940 70 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
14941 : {
14942 70 : if (integer_zerop (_p2))
14943 : {
14944 70 : {
14945 70 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
14946 70 : if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)
14947 : )
14948 : {
14949 68 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1814;
14950 68 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1814;
14951 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1814;
14952 68 : {
14953 68 : tree res_op0;
14954 68 : res_op0 = captures[2];
14955 68 : tree res_op1;
14956 68 : res_op1 = captures[1];
14957 68 : tree _r;
14958 68 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
14959 68 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
14960 68 : return _r;
14961 : }
14962 2 : next_after_fail1814:;
14963 : }
14964 : }
14965 : }
14966 : }
14967 : }
14968 : break;
14969 : }
14970 : default:;
14971 : }
14972 : }
14973 1361460 : switch (TREE_CODE (_p1))
14974 : {
14975 9 : case BIT_IOR_EXPR:
14976 9 : {
14977 9 : tree _q50 = TREE_OPERAND (_p1, 0);
14978 9 : tree _q51 = TREE_OPERAND (_p1, 1);
14979 9 : switch (TREE_CODE (_q51))
14980 : {
14981 9 : case INTEGER_CST:
14982 9 : {
14983 9 : switch (TREE_CODE (_p2))
14984 : {
14985 0 : case BIT_AND_EXPR:
14986 0 : {
14987 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14988 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14989 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14990 : {
14991 0 : switch (TREE_CODE (_q81))
14992 : {
14993 0 : case INTEGER_CST:
14994 0 : {
14995 0 : {
14996 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
14997 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
14998 0 : if (res) return res;
14999 : }
15000 0 : break;
15001 : }
15002 : default:;
15003 : }
15004 : }
15005 : break;
15006 : }
15007 : default:;
15008 : }
15009 : break;
15010 : }
15011 : default:;
15012 : }
15013 : break;
15014 : }
15015 1361460 : default:;
15016 : }
15017 1361460 : switch (TREE_CODE (_q20))
15018 : {
15019 140853 : CASE_CONVERT:
15020 140853 : {
15021 140853 : tree _q30 = TREE_OPERAND (_q20, 0);
15022 140853 : switch (TREE_CODE (_q21))
15023 : {
15024 104904 : case INTEGER_CST:
15025 104904 : {
15026 104904 : switch (TREE_CODE (_p1))
15027 : {
15028 623 : CASE_CONVERT:
15029 623 : {
15030 623 : tree _q60 = TREE_OPERAND (_p1, 0);
15031 623 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15032 : {
15033 8 : switch (TREE_CODE (_p2))
15034 : {
15035 8 : case INTEGER_CST:
15036 8 : {
15037 8 : {
15038 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15039 8 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15040 8 : if (res) return res;
15041 : }
15042 8 : break;
15043 : }
15044 : default:;
15045 : }
15046 : }
15047 : break;
15048 : }
15049 104904 : default:;
15050 : }
15051 104904 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
15052 : {
15053 21 : switch (TREE_CODE (_p2))
15054 : {
15055 21 : case INTEGER_CST:
15056 21 : {
15057 21 : {
15058 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15059 21 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15060 21 : if (res) return res;
15061 : }
15062 21 : break;
15063 : }
15064 : default:;
15065 : }
15066 : }
15067 104904 : switch (TREE_CODE (_p1))
15068 : {
15069 130 : case PLUS_EXPR:
15070 130 : {
15071 130 : tree _q60 = TREE_OPERAND (_p1, 0);
15072 130 : tree _q61 = TREE_OPERAND (_p1, 1);
15073 130 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15074 : {
15075 6 : switch (TREE_CODE (_q61))
15076 : {
15077 6 : case INTEGER_CST:
15078 6 : {
15079 6 : switch (TREE_CODE (_p2))
15080 : {
15081 6 : case INTEGER_CST:
15082 6 : {
15083 6 : {
15084 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15085 6 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15086 6 : if (res) return res;
15087 : }
15088 6 : break;
15089 : }
15090 : default:;
15091 : }
15092 : break;
15093 : }
15094 : default:;
15095 : }
15096 : }
15097 : break;
15098 : }
15099 730 : case MINUS_EXPR:
15100 730 : {
15101 730 : tree _q60 = TREE_OPERAND (_p1, 0);
15102 730 : tree _q61 = TREE_OPERAND (_p1, 1);
15103 730 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15104 : {
15105 0 : switch (TREE_CODE (_q61))
15106 : {
15107 0 : case INTEGER_CST:
15108 0 : {
15109 0 : switch (TREE_CODE (_p2))
15110 : {
15111 0 : case INTEGER_CST:
15112 0 : {
15113 0 : {
15114 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15115 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15116 0 : if (res) return res;
15117 : }
15118 0 : break;
15119 : }
15120 : default:;
15121 : }
15122 : break;
15123 : }
15124 : default:;
15125 : }
15126 : }
15127 : break;
15128 : }
15129 : default:;
15130 : }
15131 : break;
15132 : }
15133 : default:;
15134 : }
15135 : break;
15136 : }
15137 1361460 : default:;
15138 : }
15139 1361460 : switch (TREE_CODE (_q21))
15140 : {
15141 972186 : case INTEGER_CST:
15142 972186 : {
15143 972186 : switch (TREE_CODE (_p1))
15144 : {
15145 23804 : CASE_CONVERT:
15146 23804 : {
15147 23804 : tree _q50 = TREE_OPERAND (_p1, 0);
15148 23804 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15149 : {
15150 228 : switch (TREE_CODE (_p2))
15151 : {
15152 210 : case INTEGER_CST:
15153 210 : {
15154 210 : {
15155 210 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15156 210 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15157 210 : if (res) return res;
15158 : }
15159 110 : break;
15160 : }
15161 : default:;
15162 : }
15163 : }
15164 : break;
15165 : }
15166 972086 : default:;
15167 : }
15168 972086 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15169 : {
15170 274 : switch (TREE_CODE (_p2))
15171 : {
15172 237 : case INTEGER_CST:
15173 237 : {
15174 237 : {
15175 237 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15176 237 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15177 237 : if (res) return res;
15178 : }
15179 93 : break;
15180 : }
15181 : default:;
15182 : }
15183 : }
15184 971942 : switch (TREE_CODE (_p1))
15185 : {
15186 3072 : case PLUS_EXPR:
15187 3072 : {
15188 3072 : tree _q50 = TREE_OPERAND (_p1, 0);
15189 3072 : tree _q51 = TREE_OPERAND (_p1, 1);
15190 3072 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15191 : {
15192 181 : switch (TREE_CODE (_q51))
15193 : {
15194 181 : case INTEGER_CST:
15195 181 : {
15196 181 : switch (TREE_CODE (_p2))
15197 : {
15198 170 : case INTEGER_CST:
15199 170 : {
15200 170 : {
15201 170 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15202 170 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15203 170 : if (res) return res;
15204 : }
15205 170 : break;
15206 : }
15207 : default:;
15208 : }
15209 : break;
15210 : }
15211 : default:;
15212 : }
15213 : }
15214 : break;
15215 : }
15216 7361 : case MINUS_EXPR:
15217 7361 : {
15218 7361 : tree _q50 = TREE_OPERAND (_p1, 0);
15219 7361 : tree _q51 = TREE_OPERAND (_p1, 1);
15220 7361 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15221 : {
15222 0 : switch (TREE_CODE (_q51))
15223 : {
15224 0 : case INTEGER_CST:
15225 0 : {
15226 0 : switch (TREE_CODE (_p2))
15227 : {
15228 0 : case INTEGER_CST:
15229 0 : {
15230 0 : {
15231 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15232 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15233 0 : if (res) return res;
15234 : }
15235 0 : break;
15236 : }
15237 : default:;
15238 : }
15239 : break;
15240 : }
15241 : default:;
15242 : }
15243 : }
15244 : break;
15245 : }
15246 : default:;
15247 : }
15248 : break;
15249 : }
15250 1361216 : default:;
15251 : }
15252 1361216 : switch (TREE_CODE (_p1))
15253 : {
15254 37 : case MIN_EXPR:
15255 37 : {
15256 37 : tree _q50 = TREE_OPERAND (_p1, 0);
15257 37 : tree _q51 = TREE_OPERAND (_p1, 1);
15258 37 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15259 : {
15260 1 : switch (TREE_CODE (_p2))
15261 : {
15262 0 : case MIN_EXPR:
15263 0 : {
15264 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15265 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15266 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15267 : {
15268 0 : {
15269 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
15270 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15271 0 : if (res) return res;
15272 : }
15273 : }
15274 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15275 : {
15276 0 : {
15277 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
15278 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15279 0 : if (res) return res;
15280 : }
15281 : }
15282 : break;
15283 : }
15284 : default:;
15285 : }
15286 : }
15287 37 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15288 : {
15289 1 : switch (TREE_CODE (_p2))
15290 : {
15291 0 : case MIN_EXPR:
15292 0 : {
15293 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15294 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15295 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15296 : {
15297 0 : {
15298 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
15299 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15300 0 : if (res) return res;
15301 : }
15302 : }
15303 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15304 : {
15305 0 : {
15306 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
15307 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15308 0 : if (res) return res;
15309 : }
15310 : }
15311 : break;
15312 : }
15313 : default:;
15314 : }
15315 : }
15316 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15317 : {
15318 1 : switch (TREE_CODE (_p2))
15319 : {
15320 0 : case MIN_EXPR:
15321 0 : {
15322 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15323 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15324 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15325 : {
15326 0 : {
15327 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
15328 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15329 0 : if (res) return res;
15330 : }
15331 : }
15332 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15333 : {
15334 0 : {
15335 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
15336 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15337 0 : if (res) return res;
15338 : }
15339 : }
15340 : break;
15341 : }
15342 1 : default:;
15343 : }
15344 1 : {
15345 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
15346 1 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15347 1 : if (res) return res;
15348 : }
15349 : }
15350 36 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15351 : {
15352 1 : switch (TREE_CODE (_p2))
15353 : {
15354 0 : case MIN_EXPR:
15355 0 : {
15356 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15357 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15358 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15359 : {
15360 0 : {
15361 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
15362 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15363 0 : if (res) return res;
15364 : }
15365 : }
15366 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15367 : {
15368 0 : {
15369 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
15370 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15371 0 : if (res) return res;
15372 : }
15373 : }
15374 : break;
15375 : }
15376 1 : default:;
15377 : }
15378 1 : {
15379 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
15380 1 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15381 1 : if (res) return res;
15382 : }
15383 : }
15384 : break;
15385 : }
15386 12 : case MAX_EXPR:
15387 12 : {
15388 12 : tree _q50 = TREE_OPERAND (_p1, 0);
15389 12 : tree _q51 = TREE_OPERAND (_p1, 1);
15390 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15391 : {
15392 0 : switch (TREE_CODE (_p2))
15393 : {
15394 0 : case MAX_EXPR:
15395 0 : {
15396 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15397 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15398 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15399 : {
15400 0 : {
15401 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
15402 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15403 0 : if (res) return res;
15404 : }
15405 : }
15406 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15407 : {
15408 0 : {
15409 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
15410 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15411 0 : if (res) return res;
15412 : }
15413 : }
15414 : break;
15415 : }
15416 0 : default:;
15417 : }
15418 0 : {
15419 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
15420 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15421 0 : if (res) return res;
15422 : }
15423 : }
15424 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15425 : {
15426 0 : switch (TREE_CODE (_p2))
15427 : {
15428 0 : case MAX_EXPR:
15429 0 : {
15430 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15431 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15432 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15433 : {
15434 0 : {
15435 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
15436 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15437 0 : if (res) return res;
15438 : }
15439 : }
15440 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15441 : {
15442 0 : {
15443 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
15444 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15445 0 : if (res) return res;
15446 : }
15447 : }
15448 : break;
15449 : }
15450 : default:;
15451 : }
15452 : }
15453 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15454 : {
15455 0 : switch (TREE_CODE (_p2))
15456 : {
15457 0 : case MAX_EXPR:
15458 0 : {
15459 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15460 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15461 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15462 : {
15463 0 : {
15464 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
15465 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15466 0 : if (res) return res;
15467 : }
15468 : }
15469 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15470 : {
15471 0 : {
15472 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
15473 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15474 0 : if (res) return res;
15475 : }
15476 : }
15477 : break;
15478 : }
15479 : default:;
15480 : }
15481 : }
15482 12 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15483 : {
15484 0 : switch (TREE_CODE (_p2))
15485 : {
15486 0 : case MAX_EXPR:
15487 0 : {
15488 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15489 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15490 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15491 : {
15492 0 : {
15493 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
15494 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15495 0 : if (res) return res;
15496 : }
15497 : }
15498 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15499 : {
15500 0 : {
15501 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
15502 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15503 0 : if (res) return res;
15504 : }
15505 : }
15506 : break;
15507 : }
15508 : default:;
15509 : }
15510 : }
15511 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15512 : {
15513 0 : {
15514 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
15515 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15516 0 : if (res) return res;
15517 : }
15518 : }
15519 : break;
15520 : }
15521 1361214 : default:;
15522 : }
15523 1361214 : if (integer_zerop (_q20))
15524 : {
15525 2 : {
15526 2 : tree _q21_pops[1];
15527 2 : if (tree_nop_convert (_q21, _q21_pops))
15528 : {
15529 0 : tree _q40 = _q21_pops[0];
15530 0 : switch (TREE_CODE (_p1))
15531 : {
15532 0 : case MAX_EXPR:
15533 0 : {
15534 0 : tree _q60 = TREE_OPERAND (_p1, 0);
15535 0 : tree _q61 = TREE_OPERAND (_p1, 1);
15536 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
15537 : {
15538 0 : switch (TREE_CODE (_q61))
15539 : {
15540 0 : case INTEGER_CST:
15541 0 : {
15542 0 : switch (TREE_CODE (_p2))
15543 : {
15544 0 : case INTEGER_CST:
15545 0 : {
15546 0 : {
15547 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
15548 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15549 0 : if (res) return res;
15550 : }
15551 0 : break;
15552 : }
15553 : default:;
15554 : }
15555 : break;
15556 : }
15557 : default:;
15558 : }
15559 : }
15560 : break;
15561 : }
15562 : default:;
15563 : }
15564 : }
15565 : }
15566 : }
15567 1361214 : if (tree_expr_nonnegative_p (_q20))
15568 : {
15569 863996 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
15570 : {
15571 12 : switch (TREE_CODE (_p2))
15572 : {
15573 0 : case ABS_EXPR:
15574 0 : {
15575 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15576 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
15577 : {
15578 0 : {
15579 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
15580 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
15581 0 : if (res) return res;
15582 : }
15583 : }
15584 : break;
15585 : }
15586 : default:;
15587 : }
15588 : }
15589 863996 : switch (TREE_CODE (_p1))
15590 : {
15591 0 : case ABS_EXPR:
15592 0 : {
15593 0 : tree _q50 = TREE_OPERAND (_p1, 0);
15594 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15595 : {
15596 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
15597 : {
15598 0 : {
15599 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
15600 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
15601 0 : if (res) return res;
15602 : }
15603 : }
15604 : }
15605 : break;
15606 : }
15607 : default:;
15608 : }
15609 : }
15610 : break;
15611 : }
15612 1682537 : case EQ_EXPR:
15613 1682537 : {
15614 1682537 : tree _q20 = TREE_OPERAND (_p0, 0);
15615 1682537 : tree _q21 = TREE_OPERAND (_p0, 1);
15616 1682537 : if (tree_zero_one_valued_p (_q20))
15617 : {
15618 158325 : if (integer_zerop (_q21))
15619 : {
15620 976 : switch (TREE_CODE (_p2))
15621 : {
15622 1 : case BIT_XOR_EXPR:
15623 1 : {
15624 1 : tree _q60 = TREE_OPERAND (_p2, 0);
15625 1 : tree _q61 = TREE_OPERAND (_p2, 1);
15626 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15627 : {
15628 1 : {
15629 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
15630 1 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
15631 1 : if (res) return res;
15632 : }
15633 : }
15634 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15635 : {
15636 0 : {
15637 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
15638 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
15639 0 : if (res) return res;
15640 : }
15641 : }
15642 : break;
15643 : }
15644 1 : case BIT_IOR_EXPR:
15645 1 : {
15646 1 : tree _q60 = TREE_OPERAND (_p2, 0);
15647 1 : tree _q61 = TREE_OPERAND (_p2, 1);
15648 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15649 : {
15650 1 : {
15651 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
15652 1 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
15653 1 : if (res) return res;
15654 : }
15655 : }
15656 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15657 : {
15658 0 : {
15659 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
15660 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
15661 0 : if (res) return res;
15662 : }
15663 : }
15664 : break;
15665 : }
15666 1 : case PLUS_EXPR:
15667 1 : {
15668 1 : tree _q60 = TREE_OPERAND (_p2, 0);
15669 1 : tree _q61 = TREE_OPERAND (_p2, 1);
15670 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15671 : {
15672 1 : {
15673 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
15674 1 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
15675 1 : if (res) return res;
15676 : }
15677 : }
15678 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15679 : {
15680 0 : {
15681 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
15682 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
15683 0 : if (res) return res;
15684 : }
15685 : }
15686 : break;
15687 : }
15688 : default:;
15689 : }
15690 : }
15691 : }
15692 1682534 : if (integer_zerop (_q21))
15693 : {
15694 565357 : switch (TREE_CODE (_p2))
15695 : {
15696 16788 : case PLUS_EXPR:
15697 16788 : {
15698 16788 : tree _q60 = TREE_OPERAND (_p2, 0);
15699 16788 : tree _q61 = TREE_OPERAND (_p2, 1);
15700 16788 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15701 : {
15702 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15703 : {
15704 0 : {
15705 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15706 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
15707 0 : if (res) return res;
15708 : }
15709 : }
15710 : }
15711 16788 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15712 : {
15713 1998 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15714 : {
15715 0 : {
15716 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15717 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
15718 0 : if (res) return res;
15719 : }
15720 : }
15721 : }
15722 : break;
15723 : }
15724 108 : case BIT_IOR_EXPR:
15725 108 : {
15726 108 : tree _q60 = TREE_OPERAND (_p2, 0);
15727 108 : tree _q61 = TREE_OPERAND (_p2, 1);
15728 108 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15729 : {
15730 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15731 : {
15732 0 : {
15733 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15734 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
15735 0 : if (res) return res;
15736 : }
15737 : }
15738 : }
15739 108 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15740 : {
15741 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15742 : {
15743 0 : {
15744 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15745 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
15746 0 : if (res) return res;
15747 : }
15748 : }
15749 : }
15750 : break;
15751 : }
15752 0 : case BIT_XOR_EXPR:
15753 0 : {
15754 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15755 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15756 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15757 : {
15758 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15759 : {
15760 0 : {
15761 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15762 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
15763 0 : if (res) return res;
15764 : }
15765 : }
15766 : }
15767 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15768 : {
15769 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15770 : {
15771 0 : {
15772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15773 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
15774 0 : if (res) return res;
15775 : }
15776 : }
15777 : }
15778 : break;
15779 : }
15780 1 : case LROTATE_EXPR:
15781 1 : {
15782 1 : tree _q60 = TREE_OPERAND (_p2, 0);
15783 1 : tree _q61 = TREE_OPERAND (_p2, 1);
15784 1 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15785 : {
15786 1 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15787 : {
15788 1 : {
15789 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15790 1 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15791 1 : if (res) return res;
15792 : }
15793 : }
15794 : }
15795 : break;
15796 : }
15797 0 : case RROTATE_EXPR:
15798 0 : {
15799 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15800 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15801 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15802 : {
15803 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15804 : {
15805 0 : {
15806 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15807 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15808 0 : if (res) return res;
15809 : }
15810 : }
15811 : }
15812 : break;
15813 : }
15814 48 : case LSHIFT_EXPR:
15815 48 : {
15816 48 : tree _q60 = TREE_OPERAND (_p2, 0);
15817 48 : tree _q61 = TREE_OPERAND (_p2, 1);
15818 48 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15819 : {
15820 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15821 : {
15822 0 : {
15823 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15824 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15825 0 : if (res) return res;
15826 : }
15827 : }
15828 : }
15829 : break;
15830 : }
15831 46 : case RSHIFT_EXPR:
15832 46 : {
15833 46 : tree _q60 = TREE_OPERAND (_p2, 0);
15834 46 : tree _q61 = TREE_OPERAND (_p2, 1);
15835 46 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15836 : {
15837 20 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15838 : {
15839 20 : {
15840 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15841 20 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15842 20 : if (res) return res;
15843 : }
15844 : }
15845 : }
15846 : break;
15847 : }
15848 183 : case MINUS_EXPR:
15849 183 : {
15850 183 : tree _q60 = TREE_OPERAND (_p2, 0);
15851 183 : tree _q61 = TREE_OPERAND (_p2, 1);
15852 183 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15853 : {
15854 7 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15855 : {
15856 0 : {
15857 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15858 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15859 0 : if (res) return res;
15860 : }
15861 : }
15862 : }
15863 : break;
15864 : }
15865 151514 : case POINTER_PLUS_EXPR:
15866 151514 : {
15867 151514 : tree _q60 = TREE_OPERAND (_p2, 0);
15868 151514 : tree _q61 = TREE_OPERAND (_p2, 1);
15869 151514 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15870 : {
15871 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15872 : {
15873 0 : {
15874 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15875 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures);
15876 0 : if (res) return res;
15877 : }
15878 : }
15879 : }
15880 : break;
15881 : }
15882 : default:;
15883 : }
15884 : }
15885 1682513 : if (integer_onep (_q21))
15886 : {
15887 48193 : switch (TREE_CODE (_p2))
15888 : {
15889 91 : case TRUNC_DIV_EXPR:
15890 91 : {
15891 91 : tree _q60 = TREE_OPERAND (_p2, 0);
15892 91 : tree _q61 = TREE_OPERAND (_p2, 1);
15893 91 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15894 : {
15895 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15896 : {
15897 0 : {
15898 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15899 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
15900 0 : if (res) return res;
15901 : }
15902 : }
15903 : }
15904 : break;
15905 : }
15906 0 : case CEIL_DIV_EXPR:
15907 0 : {
15908 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15909 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15910 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15911 : {
15912 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15913 : {
15914 0 : {
15915 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15916 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
15917 0 : if (res) return res;
15918 : }
15919 : }
15920 : }
15921 : break;
15922 : }
15923 0 : case FLOOR_DIV_EXPR:
15924 0 : {
15925 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15926 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15927 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15928 : {
15929 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15930 : {
15931 0 : {
15932 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15933 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
15934 0 : if (res) return res;
15935 : }
15936 : }
15937 : }
15938 : break;
15939 : }
15940 0 : case ROUND_DIV_EXPR:
15941 0 : {
15942 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15943 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15944 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15945 : {
15946 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15947 : {
15948 0 : {
15949 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15950 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
15951 0 : if (res) return res;
15952 : }
15953 : }
15954 : }
15955 : break;
15956 : }
15957 0 : case EXACT_DIV_EXPR:
15958 0 : {
15959 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15960 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15961 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15962 : {
15963 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15964 : {
15965 0 : {
15966 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15967 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
15968 0 : if (res) return res;
15969 : }
15970 : }
15971 : }
15972 : break;
15973 : }
15974 0 : case MULT_EXPR:
15975 0 : {
15976 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15977 0 : tree _q61 = TREE_OPERAND (_p2, 1);
15978 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
15979 : {
15980 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
15981 : {
15982 0 : {
15983 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15984 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
15985 0 : if (res) return res;
15986 : }
15987 : }
15988 : }
15989 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15990 : {
15991 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
15992 : {
15993 0 : {
15994 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
15995 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
15996 0 : if (res) return res;
15997 : }
15998 : }
15999 : }
16000 : break;
16001 : }
16002 : default:;
16003 : }
16004 : }
16005 1682513 : if (integer_all_onesp (_q21))
16006 : {
16007 42037 : switch (TREE_CODE (_p2))
16008 : {
16009 0 : case BIT_AND_EXPR:
16010 0 : {
16011 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16012 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16013 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16014 : {
16015 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16016 : {
16017 0 : {
16018 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16019 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16020 0 : if (res) return res;
16021 : }
16022 : }
16023 : }
16024 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16025 : {
16026 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16027 : {
16028 0 : {
16029 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16030 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16031 0 : if (res) return res;
16032 : }
16033 : }
16034 : }
16035 : break;
16036 : }
16037 : default:;
16038 : }
16039 : }
16040 1682513 : switch (TREE_CODE (_q20))
16041 : {
16042 87034 : case BIT_AND_EXPR:
16043 87034 : {
16044 87034 : tree _q30 = TREE_OPERAND (_q20, 0);
16045 87034 : tree _q31 = TREE_OPERAND (_q20, 1);
16046 87034 : switch (TREE_CODE (_q31))
16047 : {
16048 86781 : case INTEGER_CST:
16049 86781 : {
16050 86781 : if (integer_zerop (_q21))
16051 : {
16052 1581 : switch (TREE_CODE (_p1))
16053 : {
16054 0 : case BIT_IOR_EXPR:
16055 0 : {
16056 0 : tree _q70 = TREE_OPERAND (_p1, 0);
16057 0 : tree _q71 = TREE_OPERAND (_p1, 1);
16058 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16059 : {
16060 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
16061 : {
16062 0 : switch (TREE_CODE (_q71))
16063 : {
16064 0 : case INTEGER_CST:
16065 0 : {
16066 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
16067 : {
16068 0 : {
16069 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
16070 0 : if (wi::popcount (wi::to_wide (captures[1])) == 1
16071 : )
16072 : {
16073 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1815;
16074 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1815;
16075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1815;
16076 0 : {
16077 0 : tree _r;
16078 0 : _r = captures[2];
16079 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
16080 0 : return _r;
16081 : }
16082 0 : next_after_fail1815:;
16083 : }
16084 : }
16085 : }
16086 : break;
16087 : }
16088 : default:;
16089 : }
16090 : }
16091 : }
16092 : break;
16093 : }
16094 : default:;
16095 : }
16096 : }
16097 : break;
16098 : }
16099 : default:;
16100 : }
16101 : break;
16102 : }
16103 1682513 : default:;
16104 : }
16105 1682513 : switch (TREE_CODE (_p1))
16106 : {
16107 0 : case BIT_IOR_EXPR:
16108 0 : {
16109 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16110 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16111 0 : switch (TREE_CODE (_q51))
16112 : {
16113 0 : case INTEGER_CST:
16114 0 : {
16115 0 : switch (TREE_CODE (_p2))
16116 : {
16117 0 : case BIT_AND_EXPR:
16118 0 : {
16119 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16120 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16121 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16122 : {
16123 0 : switch (TREE_CODE (_q81))
16124 : {
16125 0 : case INTEGER_CST:
16126 0 : {
16127 0 : {
16128 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
16129 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16130 0 : if (res) return res;
16131 : }
16132 0 : break;
16133 : }
16134 : default:;
16135 : }
16136 : }
16137 : break;
16138 : }
16139 : default:;
16140 : }
16141 : break;
16142 : }
16143 : default:;
16144 : }
16145 : break;
16146 : }
16147 1682513 : default:;
16148 : }
16149 1682513 : switch (TREE_CODE (_q20))
16150 : {
16151 71510 : CASE_CONVERT:
16152 71510 : {
16153 71510 : tree _q30 = TREE_OPERAND (_q20, 0);
16154 71510 : switch (TREE_CODE (_q21))
16155 : {
16156 24764 : case INTEGER_CST:
16157 24764 : {
16158 24764 : switch (TREE_CODE (_p1))
16159 : {
16160 11090 : CASE_CONVERT:
16161 11090 : {
16162 11090 : tree _q60 = TREE_OPERAND (_p1, 0);
16163 11090 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
16164 : {
16165 57 : switch (TREE_CODE (_p2))
16166 : {
16167 56 : case INTEGER_CST:
16168 56 : {
16169 56 : {
16170 56 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16171 56 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16172 56 : if (res) return res;
16173 : }
16174 56 : break;
16175 : }
16176 : default:;
16177 : }
16178 : }
16179 : break;
16180 : }
16181 24764 : default:;
16182 : }
16183 24764 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
16184 : {
16185 118 : switch (TREE_CODE (_p2))
16186 : {
16187 112 : case INTEGER_CST:
16188 112 : {
16189 112 : {
16190 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16191 112 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16192 112 : if (res) return res;
16193 : }
16194 112 : break;
16195 : }
16196 : default:;
16197 : }
16198 : }
16199 : break;
16200 : }
16201 : default:;
16202 : }
16203 : break;
16204 : }
16205 1682513 : default:;
16206 : }
16207 1682513 : switch (TREE_CODE (_q21))
16208 : {
16209 874224 : case INTEGER_CST:
16210 874224 : {
16211 874224 : switch (TREE_CODE (_p1))
16212 : {
16213 195898 : CASE_CONVERT:
16214 195898 : {
16215 195898 : tree _q50 = TREE_OPERAND (_p1, 0);
16216 195898 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16217 : {
16218 321 : switch (TREE_CODE (_p2))
16219 : {
16220 7 : case INTEGER_CST:
16221 7 : {
16222 7 : {
16223 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16224 7 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16225 7 : if (res) return res;
16226 : }
16227 0 : break;
16228 : }
16229 : default:;
16230 : }
16231 : }
16232 : break;
16233 : }
16234 874217 : default:;
16235 : }
16236 874217 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16237 : {
16238 58 : switch (TREE_CODE (_p2))
16239 : {
16240 5 : case INTEGER_CST:
16241 5 : {
16242 5 : {
16243 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16244 5 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16245 5 : if (res) return res;
16246 : }
16247 0 : break;
16248 : }
16249 : default:;
16250 : }
16251 : }
16252 : break;
16253 : }
16254 1682501 : default:;
16255 : }
16256 1682501 : if (tree_expr_nonnegative_p (_q21))
16257 : {
16258 1526756 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16259 : {
16260 80 : switch (TREE_CODE (_p2))
16261 : {
16262 0 : case ABS_EXPR:
16263 0 : {
16264 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16265 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16266 : {
16267 0 : {
16268 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16269 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16270 0 : if (res) return res;
16271 : }
16272 : }
16273 : break;
16274 : }
16275 : default:;
16276 : }
16277 : }
16278 : }
16279 1682501 : if (tree_expr_nonnegative_p (_q20))
16280 : {
16281 987448 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16282 : {
16283 22629 : switch (TREE_CODE (_p2))
16284 : {
16285 0 : case ABS_EXPR:
16286 0 : {
16287 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16288 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16289 : {
16290 0 : {
16291 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16292 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16293 0 : if (res) return res;
16294 : }
16295 : }
16296 : break;
16297 : }
16298 : default:;
16299 : }
16300 : }
16301 987448 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16302 : {
16303 25 : switch (TREE_CODE (_p2))
16304 : {
16305 0 : case ABS_EXPR:
16306 0 : {
16307 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16308 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16309 : {
16310 0 : {
16311 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16312 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16313 0 : if (res) return res;
16314 : }
16315 : }
16316 : break;
16317 : }
16318 : default:;
16319 : }
16320 : }
16321 : }
16322 1682501 : if (tree_expr_nonnegative_p (_q21))
16323 : {
16324 1526756 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16325 : {
16326 23083 : switch (TREE_CODE (_p2))
16327 : {
16328 0 : case ABS_EXPR:
16329 0 : {
16330 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16331 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16332 : {
16333 0 : {
16334 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16335 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16336 0 : if (res) return res;
16337 : }
16338 : }
16339 : break;
16340 : }
16341 : default:;
16342 : }
16343 : }
16344 : }
16345 : break;
16346 : }
16347 2805228 : case NE_EXPR:
16348 2805228 : {
16349 2805228 : tree _q20 = TREE_OPERAND (_p0, 0);
16350 2805228 : tree _q21 = TREE_OPERAND (_p0, 1);
16351 2805228 : if (tree_zero_one_valued_p (_q20))
16352 : {
16353 157569 : if (integer_zerop (_q21))
16354 : {
16355 155802 : switch (TREE_CODE (_p1))
16356 : {
16357 5 : case BIT_XOR_EXPR:
16358 5 : {
16359 5 : tree _q50 = TREE_OPERAND (_p1, 0);
16360 5 : tree _q51 = TREE_OPERAND (_p1, 1);
16361 5 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16362 : {
16363 1 : {
16364 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16365 1 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16366 1 : if (res) return res;
16367 : }
16368 : }
16369 4 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16370 : {
16371 4 : {
16372 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16373 4 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16374 4 : if (res) return res;
16375 : }
16376 : }
16377 : break;
16378 : }
16379 1 : case BIT_IOR_EXPR:
16380 1 : {
16381 1 : tree _q50 = TREE_OPERAND (_p1, 0);
16382 1 : tree _q51 = TREE_OPERAND (_p1, 1);
16383 1 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16384 : {
16385 1 : {
16386 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16387 1 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16388 1 : if (res) return res;
16389 : }
16390 : }
16391 0 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16392 : {
16393 0 : {
16394 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16395 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16396 0 : if (res) return res;
16397 : }
16398 : }
16399 : break;
16400 : }
16401 110 : case PLUS_EXPR:
16402 110 : {
16403 110 : tree _q50 = TREE_OPERAND (_p1, 0);
16404 110 : tree _q51 = TREE_OPERAND (_p1, 1);
16405 110 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16406 : {
16407 8 : {
16408 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16409 8 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16410 8 : if (res) return res;
16411 : }
16412 : }
16413 109 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16414 : {
16415 1 : {
16416 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16417 1 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16418 1 : if (res) return res;
16419 : }
16420 : }
16421 : break;
16422 : }
16423 : default:;
16424 : }
16425 : }
16426 : }
16427 2805220 : if (integer_zerop (_q21))
16428 : {
16429 1855915 : switch (TREE_CODE (_p1))
16430 : {
16431 89 : case TRUNC_DIV_EXPR:
16432 89 : {
16433 89 : tree _q50 = TREE_OPERAND (_p1, 0);
16434 89 : tree _q51 = TREE_OPERAND (_p1, 1);
16435 89 : if (integer_zerop (_p2))
16436 : {
16437 51 : {
16438 51 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16439 51 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
16440 51 : if (res) return res;
16441 : }
16442 : }
16443 : break;
16444 : }
16445 0 : case CEIL_DIV_EXPR:
16446 0 : {
16447 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16448 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16449 0 : if (integer_zerop (_p2))
16450 : {
16451 0 : {
16452 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16453 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
16454 0 : if (res) return res;
16455 : }
16456 : }
16457 : break;
16458 : }
16459 0 : case FLOOR_DIV_EXPR:
16460 0 : {
16461 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16462 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16463 0 : if (integer_zerop (_p2))
16464 : {
16465 0 : {
16466 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16467 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
16468 0 : if (res) return res;
16469 : }
16470 : }
16471 : break;
16472 : }
16473 0 : case ROUND_DIV_EXPR:
16474 0 : {
16475 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16476 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16477 0 : if (integer_zerop (_p2))
16478 : {
16479 0 : {
16480 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16481 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
16482 0 : if (res) return res;
16483 : }
16484 : }
16485 : break;
16486 : }
16487 31 : case EXACT_DIV_EXPR:
16488 31 : {
16489 31 : tree _q50 = TREE_OPERAND (_p1, 0);
16490 31 : tree _q51 = TREE_OPERAND (_p1, 1);
16491 31 : if (integer_zerop (_p2))
16492 : {
16493 0 : {
16494 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16495 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
16496 0 : if (res) return res;
16497 : }
16498 : }
16499 : break;
16500 : }
16501 596 : case MULT_EXPR:
16502 596 : {
16503 596 : tree _q50 = TREE_OPERAND (_p1, 0);
16504 596 : tree _q51 = TREE_OPERAND (_p1, 1);
16505 596 : if (integer_zerop (_p2))
16506 : {
16507 40 : {
16508 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16509 40 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16510 40 : if (res) return res;
16511 : }
16512 40 : {
16513 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
16514 40 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16515 40 : if (res) return res;
16516 : }
16517 : }
16518 : break;
16519 : }
16520 278 : case BIT_AND_EXPR:
16521 278 : {
16522 278 : tree _q50 = TREE_OPERAND (_p1, 0);
16523 278 : tree _q51 = TREE_OPERAND (_p1, 1);
16524 278 : if (integer_zerop (_p2))
16525 : {
16526 52 : {
16527 52 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16528 52 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16529 52 : if (res) return res;
16530 : }
16531 52 : {
16532 52 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
16533 52 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16534 52 : if (res) return res;
16535 : }
16536 : }
16537 : break;
16538 : }
16539 : default:;
16540 : }
16541 : }
16542 2805218 : if (uniform_integer_cst_p (_q21))
16543 : {
16544 2154440 : switch (TREE_CODE (_p1))
16545 : {
16546 108734 : case PLUS_EXPR:
16547 108734 : {
16548 108734 : tree _q50 = TREE_OPERAND (_p1, 0);
16549 108734 : tree _q51 = TREE_OPERAND (_p1, 1);
16550 108734 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16551 : {
16552 2614 : if (uniform_integer_cst_p (_q51))
16553 : {
16554 2614 : if (uniform_integer_cst_p (_p2))
16555 : {
16556 2612 : {
16557 2612 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
16558 2612 : {
16559 2612 : tree cst1 = uniform_integer_cst_p (captures[1]);
16560 2612 : tree cst2 = uniform_integer_cst_p (captures[3]);
16561 2612 : tree cst3 = uniform_integer_cst_p (captures[4]);
16562 2612 : if (wi::to_wide (cst1) + wi::to_wide (cst2) == wi::to_wide (cst3)
16563 : )
16564 : {
16565 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1816;
16566 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1816;
16567 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1816;
16568 10 : {
16569 10 : tree _r;
16570 10 : _r = captures[2];
16571 10 : if (TREE_SIDE_EFFECTS (captures[1]))
16572 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
16573 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1038, __FILE__, __LINE__, true);
16574 10 : return _r;
16575 : }
16576 2602 : next_after_fail1816:;
16577 : }
16578 : }
16579 : }
16580 : }
16581 : }
16582 : }
16583 : break;
16584 : }
16585 : default:;
16586 : }
16587 : }
16588 2805208 : switch (TREE_CODE (_q20))
16589 : {
16590 275087 : case BIT_AND_EXPR:
16591 275087 : {
16592 275087 : tree _q30 = TREE_OPERAND (_q20, 0);
16593 275087 : tree _q31 = TREE_OPERAND (_q20, 1);
16594 275087 : switch (TREE_CODE (_q31))
16595 : {
16596 204558 : case INTEGER_CST:
16597 204558 : {
16598 204558 : if (integer_zerop (_q21))
16599 : {
16600 204545 : switch (TREE_CODE (_p1))
16601 : {
16602 44 : case BIT_AND_EXPR:
16603 44 : {
16604 44 : tree _q70 = TREE_OPERAND (_p1, 0);
16605 44 : tree _q71 = TREE_OPERAND (_p1, 1);
16606 44 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16607 : {
16608 18 : switch (TREE_CODE (_q71))
16609 : {
16610 18 : case INTEGER_CST:
16611 18 : {
16612 18 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
16613 : {
16614 0 : {
16615 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _p1, _q71 };
16616 0 : if (wi::to_wide (captures[3]) == ~wi::to_wide (captures[1])
16617 : )
16618 : {
16619 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1817;
16620 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1817;
16621 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1817;
16622 0 : {
16623 0 : tree _r;
16624 0 : _r = captures[2];
16625 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1039, __FILE__, __LINE__, true);
16626 0 : return _r;
16627 : }
16628 0 : next_after_fail1817:;
16629 : }
16630 : }
16631 : }
16632 18 : switch (TREE_CODE (_p2))
16633 : {
16634 18 : case BIT_IOR_EXPR:
16635 18 : {
16636 18 : tree _q100 = TREE_OPERAND (_p2, 0);
16637 18 : tree _q101 = TREE_OPERAND (_p2, 1);
16638 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
16639 : {
16640 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
16641 : {
16642 18 : {
16643 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
16644 18 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16645 18 : if (res) return res;
16646 : }
16647 : }
16648 : }
16649 : break;
16650 : }
16651 : default:;
16652 : }
16653 : break;
16654 : }
16655 : default:;
16656 : }
16657 : }
16658 : break;
16659 : }
16660 139 : case PLUS_EXPR:
16661 139 : {
16662 139 : tree _q70 = TREE_OPERAND (_p1, 0);
16663 139 : tree _q71 = TREE_OPERAND (_p1, 1);
16664 139 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16665 : {
16666 18 : switch (TREE_CODE (_q71))
16667 : {
16668 18 : case INTEGER_CST:
16669 18 : {
16670 18 : switch (TREE_CODE (_p2))
16671 : {
16672 18 : case BIT_IOR_EXPR:
16673 18 : {
16674 18 : tree _q100 = TREE_OPERAND (_p2, 0);
16675 18 : tree _q101 = TREE_OPERAND (_p2, 1);
16676 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
16677 : {
16678 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
16679 : {
16680 18 : {
16681 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
16682 18 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16683 18 : if (res) return res;
16684 : }
16685 : }
16686 : }
16687 : break;
16688 : }
16689 : default:;
16690 : }
16691 : break;
16692 : }
16693 : default:;
16694 : }
16695 : }
16696 : break;
16697 : }
16698 : default:;
16699 : }
16700 : }
16701 : break;
16702 : }
16703 : default:;
16704 : }
16705 : break;
16706 : }
16707 2805184 : default:;
16708 : }
16709 2805184 : switch (TREE_CODE (_p1))
16710 : {
16711 9285 : case BIT_IOR_EXPR:
16712 9285 : {
16713 9285 : tree _q50 = TREE_OPERAND (_p1, 0);
16714 9285 : tree _q51 = TREE_OPERAND (_p1, 1);
16715 9285 : switch (TREE_CODE (_q51))
16716 : {
16717 9060 : case INTEGER_CST:
16718 9060 : {
16719 9060 : switch (TREE_CODE (_p2))
16720 : {
16721 0 : case BIT_AND_EXPR:
16722 0 : {
16723 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16724 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16725 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16726 : {
16727 0 : switch (TREE_CODE (_q81))
16728 : {
16729 0 : case INTEGER_CST:
16730 0 : {
16731 0 : {
16732 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q51, _p2, _q81 };
16733 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
16734 0 : if (res) return res;
16735 : }
16736 0 : break;
16737 : }
16738 : default:;
16739 : }
16740 : }
16741 : break;
16742 : }
16743 : default:;
16744 : }
16745 : break;
16746 : }
16747 : default:;
16748 : }
16749 : break;
16750 : }
16751 2805184 : default:;
16752 : }
16753 2805184 : switch (TREE_CODE (_q20))
16754 : {
16755 349296 : CASE_CONVERT:
16756 349296 : {
16757 349296 : tree _q30 = TREE_OPERAND (_q20, 0);
16758 349296 : switch (TREE_CODE (_q21))
16759 : {
16760 295724 : case INTEGER_CST:
16761 295724 : {
16762 295724 : switch (TREE_CODE (_p1))
16763 : {
16764 96493 : CASE_CONVERT:
16765 96493 : {
16766 96493 : tree _q60 = TREE_OPERAND (_p1, 0);
16767 96493 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
16768 : {
16769 57 : switch (TREE_CODE (_p2))
16770 : {
16771 9 : case INTEGER_CST:
16772 9 : {
16773 9 : {
16774 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16775 9 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
16776 9 : if (res) return res;
16777 : }
16778 9 : break;
16779 : }
16780 : default:;
16781 : }
16782 : }
16783 : break;
16784 : }
16785 295724 : default:;
16786 : }
16787 295724 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
16788 : {
16789 48 : switch (TREE_CODE (_p2))
16790 : {
16791 0 : case INTEGER_CST:
16792 0 : {
16793 0 : {
16794 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16795 0 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
16796 0 : if (res) return res;
16797 : }
16798 0 : break;
16799 : }
16800 : default:;
16801 : }
16802 : }
16803 : break;
16804 : }
16805 : default:;
16806 : }
16807 : break;
16808 : }
16809 2805184 : default:;
16810 : }
16811 2805184 : switch (TREE_CODE (_q21))
16812 : {
16813 2154406 : case INTEGER_CST:
16814 2154406 : {
16815 2154406 : switch (TREE_CODE (_p1))
16816 : {
16817 360796 : CASE_CONVERT:
16818 360796 : {
16819 360796 : tree _q50 = TREE_OPERAND (_p1, 0);
16820 360796 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16821 : {
16822 71713 : switch (TREE_CODE (_p2))
16823 : {
16824 70518 : case INTEGER_CST:
16825 70518 : {
16826 70518 : {
16827 70518 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16828 70518 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
16829 70518 : if (res) return res;
16830 : }
16831 70518 : break;
16832 : }
16833 : default:;
16834 : }
16835 : }
16836 : break;
16837 : }
16838 2154406 : default:;
16839 : }
16840 2154406 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16841 : {
16842 52911 : switch (TREE_CODE (_p2))
16843 : {
16844 50435 : case INTEGER_CST:
16845 50435 : {
16846 50435 : {
16847 50435 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16848 50435 : tree res = generic_simplify_342 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
16849 50435 : if (res) return res;
16850 : }
16851 50435 : break;
16852 : }
16853 : default:;
16854 : }
16855 : }
16856 : break;
16857 : }
16858 2805184 : default:;
16859 : }
16860 2805184 : switch (TREE_CODE (_p1))
16861 : {
16862 12380 : case MINUS_EXPR:
16863 12380 : {
16864 12380 : tree _q50 = TREE_OPERAND (_p1, 0);
16865 12380 : tree _q51 = TREE_OPERAND (_p1, 1);
16866 12380 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16867 : {
16868 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16869 : {
16870 0 : if (integer_zerop (_p2))
16871 : {
16872 0 : {
16873 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16874 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures);
16875 0 : if (res) return res;
16876 : }
16877 : }
16878 : }
16879 : }
16880 12380 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16881 : {
16882 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16883 : {
16884 19 : if (integer_zerop (_p2))
16885 : {
16886 0 : {
16887 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
16888 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures);
16889 0 : if (res) return res;
16890 : }
16891 : }
16892 : }
16893 : }
16894 : break;
16895 : }
16896 14 : case BIT_XOR_EXPR:
16897 14 : {
16898 14 : tree _q50 = TREE_OPERAND (_p1, 0);
16899 14 : tree _q51 = TREE_OPERAND (_p1, 1);
16900 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16901 : {
16902 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16903 : {
16904 7 : if (integer_zerop (_p2))
16905 : {
16906 0 : {
16907 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16908 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures);
16909 0 : if (res) return res;
16910 : }
16911 : }
16912 : }
16913 : }
16914 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16915 : {
16916 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16917 : {
16918 0 : if (integer_zerop (_p2))
16919 : {
16920 0 : {
16921 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
16922 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures);
16923 0 : if (res) return res;
16924 : }
16925 : }
16926 : }
16927 : }
16928 : break;
16929 : }
16930 265 : case BIT_AND_EXPR:
16931 265 : {
16932 265 : tree _q50 = TREE_OPERAND (_p1, 0);
16933 265 : tree _q51 = TREE_OPERAND (_p1, 1);
16934 265 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16935 : {
16936 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16937 : {
16938 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16939 : {
16940 0 : {
16941 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16942 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16943 0 : if (res) return res;
16944 : }
16945 : }
16946 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
16947 : {
16948 0 : {
16949 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
16950 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16951 0 : if (res) return res;
16952 : }
16953 : }
16954 : }
16955 : }
16956 265 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16957 : {
16958 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16959 : {
16960 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16961 : {
16962 0 : {
16963 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16964 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16965 0 : if (res) return res;
16966 : }
16967 : }
16968 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
16969 : {
16970 0 : {
16971 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
16972 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16973 0 : if (res) return res;
16974 : }
16975 : }
16976 : }
16977 : }
16978 : break;
16979 : }
16980 9285 : case BIT_IOR_EXPR:
16981 9285 : {
16982 9285 : tree _q50 = TREE_OPERAND (_p1, 0);
16983 9285 : tree _q51 = TREE_OPERAND (_p1, 1);
16984 9285 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16985 : {
16986 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16987 : {
16988 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16989 : {
16990 0 : {
16991 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
16992 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16993 0 : if (res) return res;
16994 : }
16995 : }
16996 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
16997 : {
16998 0 : {
16999 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17000 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17001 0 : if (res) return res;
17002 : }
17003 : }
17004 : }
17005 : }
17006 9285 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17007 : {
17008 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17009 : {
17010 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17011 : {
17012 0 : {
17013 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17014 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17015 0 : if (res) return res;
17016 : }
17017 : }
17018 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17019 : {
17020 0 : {
17021 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17022 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17023 0 : if (res) return res;
17024 : }
17025 : }
17026 : }
17027 : }
17028 : break;
17029 : }
17030 0 : case MIN_EXPR:
17031 0 : {
17032 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17033 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17034 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17035 : {
17036 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17037 : {
17038 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17039 : {
17040 0 : {
17041 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17042 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17043 0 : if (res) return res;
17044 : }
17045 : }
17046 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17047 : {
17048 0 : {
17049 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17050 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17051 0 : if (res) return res;
17052 : }
17053 : }
17054 : }
17055 0 : switch (TREE_CODE (_p2))
17056 : {
17057 0 : case MIN_EXPR:
17058 0 : {
17059 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17060 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17061 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17062 : {
17063 0 : {
17064 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17065 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17066 0 : if (res) return res;
17067 : }
17068 : }
17069 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17070 : {
17071 0 : {
17072 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17073 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17074 0 : if (res) return res;
17075 : }
17076 : }
17077 : break;
17078 : }
17079 : default:;
17080 : }
17081 : }
17082 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17083 : {
17084 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17085 : {
17086 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17087 : {
17088 0 : {
17089 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17090 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17091 0 : if (res) return res;
17092 : }
17093 : }
17094 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17095 : {
17096 0 : {
17097 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17098 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17099 0 : if (res) return res;
17100 : }
17101 : }
17102 : }
17103 0 : switch (TREE_CODE (_p2))
17104 : {
17105 0 : case MIN_EXPR:
17106 0 : {
17107 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17108 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17109 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17110 : {
17111 0 : {
17112 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17113 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17114 0 : if (res) return res;
17115 : }
17116 : }
17117 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17118 : {
17119 0 : {
17120 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17121 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17122 0 : if (res) return res;
17123 : }
17124 : }
17125 : break;
17126 : }
17127 : default:;
17128 : }
17129 : }
17130 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17131 : {
17132 0 : switch (TREE_CODE (_p2))
17133 : {
17134 0 : case MIN_EXPR:
17135 0 : {
17136 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17137 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17138 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17139 : {
17140 0 : {
17141 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17142 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17143 0 : if (res) return res;
17144 : }
17145 : }
17146 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17147 : {
17148 0 : {
17149 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17150 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17151 0 : if (res) return res;
17152 : }
17153 : }
17154 : break;
17155 : }
17156 : default:;
17157 : }
17158 : }
17159 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17160 : {
17161 0 : switch (TREE_CODE (_p2))
17162 : {
17163 0 : case MIN_EXPR:
17164 0 : {
17165 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17166 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17167 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17168 : {
17169 0 : {
17170 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17171 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17172 0 : if (res) return res;
17173 : }
17174 : }
17175 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17176 : {
17177 0 : {
17178 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17179 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17180 0 : if (res) return res;
17181 : }
17182 : }
17183 : break;
17184 : }
17185 : default:;
17186 : }
17187 : }
17188 : break;
17189 : }
17190 0 : case MAX_EXPR:
17191 0 : {
17192 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17193 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17194 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17195 : {
17196 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17197 : {
17198 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17199 : {
17200 0 : {
17201 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17202 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17203 0 : if (res) return res;
17204 : }
17205 : }
17206 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17207 : {
17208 0 : {
17209 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17210 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17211 0 : if (res) return res;
17212 : }
17213 : }
17214 : }
17215 0 : switch (TREE_CODE (_p2))
17216 : {
17217 0 : case MAX_EXPR:
17218 0 : {
17219 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17220 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17221 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17222 : {
17223 0 : {
17224 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17225 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17226 0 : if (res) return res;
17227 : }
17228 : }
17229 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17230 : {
17231 0 : {
17232 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17233 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17234 0 : if (res) return res;
17235 : }
17236 : }
17237 : break;
17238 : }
17239 : default:;
17240 : }
17241 : }
17242 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17243 : {
17244 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17245 : {
17246 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17247 : {
17248 0 : {
17249 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17250 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17251 0 : if (res) return res;
17252 : }
17253 : }
17254 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17255 : {
17256 0 : {
17257 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17258 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17259 0 : if (res) return res;
17260 : }
17261 : }
17262 : }
17263 0 : switch (TREE_CODE (_p2))
17264 : {
17265 0 : case MAX_EXPR:
17266 0 : {
17267 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17268 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17269 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17270 : {
17271 0 : {
17272 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17273 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17274 0 : if (res) return res;
17275 : }
17276 : }
17277 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17278 : {
17279 0 : {
17280 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17281 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17282 0 : if (res) return res;
17283 : }
17284 : }
17285 : break;
17286 : }
17287 : default:;
17288 : }
17289 : }
17290 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17291 : {
17292 0 : switch (TREE_CODE (_p2))
17293 : {
17294 0 : case MAX_EXPR:
17295 0 : {
17296 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17297 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17298 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17299 : {
17300 0 : {
17301 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17302 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17303 0 : if (res) return res;
17304 : }
17305 : }
17306 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17307 : {
17308 0 : {
17309 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17310 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17311 0 : if (res) return res;
17312 : }
17313 : }
17314 : break;
17315 : }
17316 : default:;
17317 : }
17318 : }
17319 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17320 : {
17321 0 : switch (TREE_CODE (_p2))
17322 : {
17323 0 : case MAX_EXPR:
17324 0 : {
17325 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17326 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17327 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17328 : {
17329 0 : {
17330 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17331 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17332 0 : if (res) return res;
17333 : }
17334 : }
17335 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17336 : {
17337 0 : {
17338 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17339 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17340 0 : if (res) return res;
17341 : }
17342 : }
17343 : break;
17344 : }
17345 : default:;
17346 : }
17347 : }
17348 : break;
17349 : }
17350 24064 : case MULT_EXPR:
17351 24064 : {
17352 24064 : tree _q50 = TREE_OPERAND (_p1, 0);
17353 24064 : tree _q51 = TREE_OPERAND (_p1, 1);
17354 24064 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17355 : {
17356 19377 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17357 : {
17358 0 : switch (TREE_CODE (_p2))
17359 : {
17360 0 : case MULT_EXPR:
17361 0 : {
17362 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17363 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17364 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17365 : {
17366 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
17367 : {
17368 0 : {
17369 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17370 0 : const enum tree_code op = MULT_EXPR;
17371 0 : if (ANY_INTEGRAL_TYPE_P (type)
17372 : )
17373 : {
17374 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1818;
17375 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1818;
17376 0 : {
17377 0 : tree _r;
17378 0 : _r = captures[2];
17379 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1040, __FILE__, __LINE__, true);
17380 0 : return _r;
17381 : }
17382 0 : next_after_fail1818:;
17383 : }
17384 : }
17385 : }
17386 : }
17387 : break;
17388 : }
17389 : default:;
17390 : }
17391 : }
17392 : }
17393 24064 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17394 : {
17395 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17396 : {
17397 0 : switch (TREE_CODE (_p2))
17398 : {
17399 0 : case MULT_EXPR:
17400 0 : {
17401 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17402 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17403 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17404 : {
17405 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
17406 : {
17407 0 : {
17408 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17409 0 : const enum tree_code op = MULT_EXPR;
17410 0 : if (ANY_INTEGRAL_TYPE_P (type)
17411 : )
17412 : {
17413 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1819;
17414 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1819;
17415 0 : {
17416 0 : tree _r;
17417 0 : _r = captures[2];
17418 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1040, __FILE__, __LINE__, true);
17419 0 : return _r;
17420 : }
17421 0 : next_after_fail1819:;
17422 : }
17423 : }
17424 : }
17425 : }
17426 : break;
17427 : }
17428 : default:;
17429 : }
17430 : }
17431 : }
17432 : break;
17433 : }
17434 108784 : case PLUS_EXPR:
17435 108784 : {
17436 108784 : tree _q50 = TREE_OPERAND (_p1, 0);
17437 108784 : tree _q51 = TREE_OPERAND (_p1, 1);
17438 108784 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17439 : {
17440 2612 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17441 : {
17442 0 : switch (TREE_CODE (_p2))
17443 : {
17444 0 : case PLUS_EXPR:
17445 0 : {
17446 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17447 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17448 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17449 : {
17450 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
17451 : {
17452 0 : {
17453 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17454 0 : const enum tree_code op = PLUS_EXPR;
17455 0 : if (ANY_INTEGRAL_TYPE_P (type)
17456 : )
17457 : {
17458 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1820;
17459 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1820;
17460 0 : {
17461 0 : tree _r;
17462 0 : _r = captures[2];
17463 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1040, __FILE__, __LINE__, true);
17464 0 : return _r;
17465 : }
17466 0 : next_after_fail1820:;
17467 : }
17468 : }
17469 : }
17470 : }
17471 : break;
17472 : }
17473 0 : case MULT_EXPR:
17474 0 : {
17475 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17476 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17477 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17478 : {
17479 0 : if (uniform_integer_cst_p (_q81))
17480 : {
17481 0 : {
17482 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
17483 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17484 : )
17485 : {
17486 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1821;
17487 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1821;
17488 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1821;
17489 0 : {
17490 0 : tree _r;
17491 0 : _r = captures[2];
17492 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1041, __FILE__, __LINE__, true);
17493 0 : return _r;
17494 : }
17495 0 : next_after_fail1821:;
17496 : }
17497 : }
17498 : }
17499 : }
17500 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17501 : {
17502 0 : if (uniform_integer_cst_p (_q81))
17503 : {
17504 0 : {
17505 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
17506 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17507 : )
17508 : {
17509 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1822;
17510 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1822;
17511 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1822;
17512 0 : {
17513 0 : tree _r;
17514 0 : _r = captures[2];
17515 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1041, __FILE__, __LINE__, true);
17516 0 : return _r;
17517 : }
17518 0 : next_after_fail1822:;
17519 : }
17520 : }
17521 : }
17522 : }
17523 : break;
17524 : }
17525 : default:;
17526 : }
17527 : }
17528 : }
17529 108784 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17530 : {
17531 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17532 : {
17533 0 : switch (TREE_CODE (_p2))
17534 : {
17535 0 : case PLUS_EXPR:
17536 0 : {
17537 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17538 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17539 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17540 : {
17541 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
17542 : {
17543 0 : {
17544 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17545 0 : const enum tree_code op = PLUS_EXPR;
17546 0 : if (ANY_INTEGRAL_TYPE_P (type)
17547 : )
17548 : {
17549 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1823;
17550 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1823;
17551 0 : {
17552 0 : tree _r;
17553 0 : _r = captures[2];
17554 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1040, __FILE__, __LINE__, true);
17555 0 : return _r;
17556 : }
17557 0 : next_after_fail1823:;
17558 : }
17559 : }
17560 : }
17561 : }
17562 : break;
17563 : }
17564 0 : case MULT_EXPR:
17565 0 : {
17566 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17567 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17568 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17569 : {
17570 0 : if (uniform_integer_cst_p (_q81))
17571 : {
17572 0 : {
17573 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
17574 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17575 : )
17576 : {
17577 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1824;
17578 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1824;
17579 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1824;
17580 0 : {
17581 0 : tree _r;
17582 0 : _r = captures[2];
17583 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1041, __FILE__, __LINE__, true);
17584 0 : return _r;
17585 : }
17586 0 : next_after_fail1824:;
17587 : }
17588 : }
17589 : }
17590 : }
17591 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17592 : {
17593 0 : if (uniform_integer_cst_p (_q81))
17594 : {
17595 0 : {
17596 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
17597 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17598 : )
17599 : {
17600 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1825;
17601 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1825;
17602 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1825;
17603 0 : {
17604 0 : tree _r;
17605 0 : _r = captures[2];
17606 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1041, __FILE__, __LINE__, true);
17607 0 : return _r;
17608 : }
17609 0 : next_after_fail1825:;
17610 : }
17611 : }
17612 : }
17613 : }
17614 : break;
17615 : }
17616 : default:;
17617 : }
17618 : }
17619 : }
17620 : break;
17621 : }
17622 2805184 : default:;
17623 : }
17624 2805184 : switch (TREE_CODE (_q21))
17625 : {
17626 2154406 : case INTEGER_CST:
17627 2154406 : {
17628 2154406 : switch (TREE_CODE (_p1))
17629 : {
17630 228 : case NEGATE_EXPR:
17631 228 : {
17632 228 : tree _q50 = TREE_OPERAND (_p1, 0);
17633 228 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17634 : {
17635 42 : switch (TREE_CODE (_p2))
17636 : {
17637 14 : case INTEGER_CST:
17638 14 : {
17639 14 : {
17640 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
17641 14 : if (!TYPE_SATURATING (type)
17642 14 : && (TYPE_OVERFLOW_WRAPS (type)
17643 5 : || !wi::only_sign_bit_p (wi::to_wide (captures[1])))
17644 41 : && wi::eq_p (wi::neg (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
17645 : )
17646 : {
17647 11 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1826;
17648 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1826;
17649 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1826;
17650 11 : {
17651 11 : tree _r;
17652 11 : _r = captures[2];
17653 11 : if (TREE_SIDE_EFFECTS (captures[1]))
17654 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17655 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1042, __FILE__, __LINE__, true);
17656 11 : return _r;
17657 : }
17658 3 : next_after_fail1826:;
17659 : }
17660 : }
17661 3 : break;
17662 : }
17663 : default:;
17664 : }
17665 : }
17666 : break;
17667 : }
17668 97 : case BIT_NOT_EXPR:
17669 97 : {
17670 97 : tree _q50 = TREE_OPERAND (_p1, 0);
17671 97 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17672 : {
17673 20 : switch (TREE_CODE (_p2))
17674 : {
17675 20 : case INTEGER_CST:
17676 20 : {
17677 20 : {
17678 20 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
17679 20 : if (wi::eq_p (wi::bit_not (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
17680 : )
17681 : {
17682 20 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1827;
17683 20 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1827;
17684 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1827;
17685 20 : {
17686 20 : tree _r;
17687 20 : _r = captures[2];
17688 20 : if (TREE_SIDE_EFFECTS (captures[1]))
17689 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17690 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1043, __FILE__, __LINE__, true);
17691 20 : return _r;
17692 : }
17693 0 : next_after_fail1827:;
17694 : }
17695 : }
17696 0 : break;
17697 : }
17698 : default:;
17699 : }
17700 : }
17701 : break;
17702 : }
17703 5 : case ABS_EXPR:
17704 5 : {
17705 5 : tree _q50 = TREE_OPERAND (_p1, 0);
17706 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17707 : {
17708 1 : switch (TREE_CODE (_p2))
17709 : {
17710 1 : case INTEGER_CST:
17711 1 : {
17712 1 : {
17713 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
17714 1 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
17715 : )
17716 : {
17717 0 : if (ABS_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
17718 : )
17719 : {
17720 0 : {
17721 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
17722 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1828;
17723 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1828;
17724 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1828;
17725 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1828;
17726 0 : {
17727 0 : tree res_op0;
17728 0 : {
17729 0 : tree _o1[1], _r1;
17730 0 : _o1[0] = captures[0];
17731 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
17732 0 : res_op0 = _r1;
17733 : }
17734 0 : tree _r;
17735 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
17736 0 : if (TREE_SIDE_EFFECTS (captures[1]))
17737 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17738 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1044, __FILE__, __LINE__, true);
17739 0 : return _r;
17740 : }
17741 1 : next_after_fail1828:;
17742 : }
17743 : }
17744 : else
17745 : {
17746 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1829;
17747 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1829;
17748 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1829;
17749 0 : {
17750 0 : tree _r;
17751 0 : _r = captures[2];
17752 0 : if (TREE_SIDE_EFFECTS (captures[1]))
17753 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17754 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
17755 0 : return _r;
17756 : }
17757 1 : next_after_fail1829:;
17758 : }
17759 : }
17760 : }
17761 1 : break;
17762 : }
17763 : default:;
17764 : }
17765 : }
17766 : break;
17767 : }
17768 0 : case ABSU_EXPR:
17769 0 : {
17770 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17771 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17772 : {
17773 0 : switch (TREE_CODE (_p2))
17774 : {
17775 0 : case INTEGER_CST:
17776 0 : {
17777 0 : {
17778 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
17779 0 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
17780 : )
17781 : {
17782 0 : if (ABSU_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
17783 : )
17784 : {
17785 : {
17786 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
17787 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1830;
17788 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1830;
17789 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1830;
17790 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1830;
17791 : {
17792 : tree res_op0;
17793 : {
17794 : tree _o1[1], _r1;
17795 : _o1[0] = captures[0];
17796 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
17797 : res_op0 = _r1;
17798 : }
17799 : tree _r;
17800 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
17801 : if (TREE_SIDE_EFFECTS (captures[1]))
17802 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17803 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1044, __FILE__, __LINE__, true);
17804 : return _r;
17805 : }
17806 : next_after_fail1830:;
17807 : }
17808 : }
17809 : else
17810 : {
17811 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1831;
17812 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1831;
17813 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1831;
17814 0 : {
17815 0 : tree _r;
17816 0 : _r = captures[2];
17817 0 : if (TREE_SIDE_EFFECTS (captures[1]))
17818 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
17820 0 : return _r;
17821 : }
17822 0 : next_after_fail1831:;
17823 : }
17824 : }
17825 : }
17826 0 : break;
17827 : }
17828 : default:;
17829 : }
17830 : }
17831 : break;
17832 : }
17833 : default:;
17834 : }
17835 : break;
17836 : }
17837 : default:;
17838 : }
17839 : break;
17840 : }
17841 1223103 : case INTEGER_CST:
17842 1223103 : {
17843 1223103 : {
17844 1223103 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
17845 1223103 : if (integer_zerop (captures[0])
17846 : )
17847 : {
17848 641345 : if (!VOID_TYPE_P (TREE_TYPE (captures[2])) || VOID_TYPE_P (type)
17849 : )
17850 : {
17851 633133 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1832;
17852 460810 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1832;
17853 448396 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1832;
17854 448396 : {
17855 448396 : tree _r;
17856 448396 : _r = captures[2];
17857 448396 : if (TREE_SIDE_EFFECTS (captures[0]))
17858 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
17859 448396 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1046, __FILE__, __LINE__, true);
17860 448396 : return _r;
17861 : }
17862 407826 : next_after_fail1832:;
17863 : }
17864 : }
17865 : else
17866 : {
17867 581758 : if (!VOID_TYPE_P (TREE_TYPE (captures[1])) || VOID_TYPE_P (type)
17868 : )
17869 : {
17870 580766 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1833;
17871 457170 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1833;
17872 366881 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1833;
17873 366881 : {
17874 366881 : tree _r;
17875 366881 : _r = captures[1];
17876 366881 : if (TREE_SIDE_EFFECTS (captures[0]))
17877 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
17878 366881 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
17879 366881 : return _r;
17880 : }
17881 407826 : next_after_fail1833:;
17882 : }
17883 : }
17884 : }
17885 407826 : break;
17886 : }
17887 11598468 : default:;
17888 : }
17889 11598468 : switch (TREE_CODE (_p1))
17890 : {
17891 813107 : case COND_EXPR:
17892 813107 : {
17893 813107 : tree _q30 = TREE_OPERAND (_p1, 0);
17894 813107 : tree _q31 = TREE_OPERAND (_p1, 1);
17895 813107 : tree _q32 = TREE_OPERAND (_p1, 2);
17896 813107 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
17897 : {
17898 609 : {
17899 609 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _p2 };
17900 609 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1834;
17901 609 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1834;
17902 55 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1834;
17903 54 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1834;
17904 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1834;
17905 10 : {
17906 10 : tree res_op0;
17907 10 : res_op0 = captures[0];
17908 10 : tree res_op1;
17909 10 : res_op1 = captures[1];
17910 10 : tree res_op2;
17911 10 : res_op2 = captures[3];
17912 10 : tree _r;
17913 10 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
17914 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17915 10 : return _r;
17916 : }
17917 599 : next_after_fail1834:;
17918 : }
17919 : }
17920 : break;
17921 : }
17922 11598458 : default:;
17923 : }
17924 11598458 : switch (TREE_CODE (_p2))
17925 : {
17926 855567 : case COND_EXPR:
17927 855567 : {
17928 855567 : tree _q40 = TREE_OPERAND (_p2, 0);
17929 855567 : tree _q41 = TREE_OPERAND (_p2, 1);
17930 855567 : tree _q42 = TREE_OPERAND (_p2, 2);
17931 855567 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
17932 : {
17933 3762 : {
17934 3762 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q41, _q42 };
17935 3762 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1835;
17936 3762 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1835;
17937 3762 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1835;
17938 184 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1835;
17939 184 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1835;
17940 184 : {
17941 184 : tree res_op0;
17942 184 : res_op0 = captures[0];
17943 184 : tree res_op1;
17944 184 : res_op1 = captures[1];
17945 184 : tree res_op2;
17946 184 : res_op2 = captures[3];
17947 184 : tree _r;
17948 184 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
17949 184 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1049, __FILE__, __LINE__, true);
17950 184 : return _r;
17951 : }
17952 3578 : next_after_fail1835:;
17953 : }
17954 : }
17955 855383 : {
17956 855383 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
17957 855383 : if (inverse_conditions_p (captures[0], captures[2])
17958 : )
17959 : {
17960 1186 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1836;
17961 1186 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1836;
17962 1186 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1836;
17963 1186 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1836;
17964 1186 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
17965 1186 : {
17966 1186 : tree res_op0;
17967 1186 : res_op0 = captures[0];
17968 1186 : tree res_op1;
17969 1186 : res_op1 = captures[1];
17970 1186 : tree res_op2;
17971 1186 : res_op2 = captures[3];
17972 1186 : tree _r;
17973 1186 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
17974 1186 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
17975 1186 : return _r;
17976 : }
17977 854197 : next_after_fail1836:;
17978 : }
17979 : }
17980 854197 : break;
17981 : }
17982 11597088 : default:;
17983 : }
17984 11597088 : switch (TREE_CODE (_p1))
17985 : {
17986 813097 : case COND_EXPR:
17987 813097 : {
17988 813097 : tree _q30 = TREE_OPERAND (_p1, 0);
17989 813097 : tree _q31 = TREE_OPERAND (_p1, 1);
17990 813097 : tree _q32 = TREE_OPERAND (_p1, 2);
17991 813097 : {
17992 813097 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q32, _p2 };
17993 813097 : if (inverse_conditions_p (captures[0], captures[1])
17994 : )
17995 : {
17996 172 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1837;
17997 172 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1837;
17998 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1837;
17999 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1837;
18000 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
18001 2 : {
18002 2 : tree res_op0;
18003 2 : res_op0 = captures[0];
18004 2 : tree res_op1;
18005 2 : res_op1 = captures[3];
18006 2 : tree res_op2;
18007 2 : res_op2 = captures[4];
18008 2 : tree _r;
18009 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18010 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18011 2 : return _r;
18012 : }
18013 813095 : next_after_fail1837:;
18014 : }
18015 : }
18016 813095 : break;
18017 : }
18018 11597086 : default:;
18019 : }
18020 11597086 : if ((_p2 == _p1 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _p1, 0) && types_match (_p2, _p1)))
18021 : {
18022 50776 : {
18023 50776 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18024 50776 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1838;
18025 50776 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
18026 50776 : {
18027 50776 : tree _r;
18028 50776 : _r = captures[1];
18029 50776 : if (TREE_SIDE_EFFECTS (captures[0]))
18030 357 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18031 50776 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
18032 50776 : return _r;
18033 : }
18034 0 : next_after_fail1838:;
18035 : }
18036 : }
18037 11546310 : switch (TREE_CODE (_p0))
18038 : {
18039 1652564 : case EQ_EXPR:
18040 1652564 : {
18041 1652564 : tree _q20 = TREE_OPERAND (_p0, 0);
18042 1652564 : tree _q21 = TREE_OPERAND (_p0, 1);
18043 1652564 : if (zerop (_q21))
18044 : {
18045 755232 : switch (TREE_CODE (_p2))
18046 : {
18047 36 : case NEGATE_EXPR:
18048 36 : {
18049 36 : tree _q60 = TREE_OPERAND (_p2, 0);
18050 36 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18051 : {
18052 16 : {
18053 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18054 16 : const enum tree_code cmp = EQ_EXPR;
18055 16 : if (!HONOR_SIGNED_ZEROS (type)
18056 16 : && bitwise_equal_p (captures[0], captures[1])
18057 : )
18058 : {
18059 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1839;
18060 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1839;
18061 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
18062 0 : {
18063 0 : tree _r;
18064 0 : _r = captures[2];
18065 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
18066 0 : return _r;
18067 : }
18068 16 : next_after_fail1839:;
18069 : }
18070 : }
18071 : }
18072 : break;
18073 : }
18074 755232 : default:;
18075 : }
18076 755232 : if (zerop (_p1))
18077 : {
18078 44304 : switch (TREE_CODE (_p2))
18079 : {
18080 14 : case NEGATE_EXPR:
18081 14 : {
18082 14 : tree _q60 = TREE_OPERAND (_p2, 0);
18083 14 : {
18084 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18085 14 : const enum tree_code cmp = EQ_EXPR;
18086 14 : if (!HONOR_SIGNED_ZEROS (type)
18087 14 : && bitwise_equal_p (captures[0], captures[2])
18088 : )
18089 : {
18090 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1840;
18091 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1840;
18092 7 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1840;
18093 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1840;
18094 7 : {
18095 7 : tree _r;
18096 7 : _r = captures[1];
18097 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18098 7 : return _r;
18099 : }
18100 7 : next_after_fail1840:;
18101 : }
18102 : }
18103 7 : break;
18104 : }
18105 : default:;
18106 : }
18107 : }
18108 : }
18109 1652557 : switch (TREE_CODE (_q20))
18110 : {
18111 28 : case MINUS_EXPR:
18112 28 : {
18113 28 : tree _q30 = TREE_OPERAND (_q20, 0);
18114 28 : tree _q31 = TREE_OPERAND (_q20, 1);
18115 28 : if (zerop (_q21))
18116 : {
18117 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18118 : {
18119 0 : switch (TREE_CODE (_p2))
18120 : {
18121 0 : case MINUS_EXPR:
18122 0 : {
18123 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18124 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18125 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18126 : {
18127 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18128 : {
18129 0 : {
18130 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18131 0 : const enum tree_code cmp = EQ_EXPR;
18132 0 : if (!HONOR_SIGNED_ZEROS (type)
18133 : )
18134 : {
18135 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1841;
18136 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1841;
18137 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1841;
18138 0 : {
18139 0 : tree _r;
18140 0 : _r = captures[3];
18141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18142 0 : return _r;
18143 : }
18144 0 : next_after_fail1841:;
18145 : }
18146 : }
18147 : }
18148 : }
18149 : break;
18150 : }
18151 : default:;
18152 : }
18153 : }
18154 : }
18155 28 : if (integer_zerop (_q21))
18156 : {
18157 0 : if (integer_zerop (_p1))
18158 : {
18159 0 : switch (TREE_CODE (_p2))
18160 : {
18161 0 : case MINUS_EXPR:
18162 0 : {
18163 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18164 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18165 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18166 : {
18167 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18168 : {
18169 0 : {
18170 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18171 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
18172 0 : if (res) return res;
18173 : }
18174 : }
18175 : }
18176 : break;
18177 : }
18178 : default:;
18179 : }
18180 : }
18181 : }
18182 : break;
18183 : }
18184 59912 : case CALL_EXPR:
18185 59912 : switch (get_call_combined_fn (_q20))
18186 : {
18187 0 : case CFN_BUILT_IN_SIGNBITF:
18188 0 : if (call_expr_nargs (_q20) == 1)
18189 : {
18190 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18191 0 : if (integer_zerop (_q21))
18192 : {
18193 0 : switch (TREE_CODE (_p1))
18194 : {
18195 0 : case NEGATE_EXPR:
18196 0 : {
18197 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18198 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18199 : {
18200 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18201 : {
18202 0 : {
18203 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18204 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITF);
18205 0 : if (res) return res;
18206 : }
18207 : }
18208 : }
18209 : break;
18210 : }
18211 : default:;
18212 : }
18213 : }
18214 : }
18215 : break;
18216 0 : case CFN_BUILT_IN_SIGNBITL:
18217 0 : if (call_expr_nargs (_q20) == 1)
18218 : {
18219 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18220 0 : if (integer_zerop (_q21))
18221 : {
18222 0 : switch (TREE_CODE (_p1))
18223 : {
18224 0 : case NEGATE_EXPR:
18225 0 : {
18226 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18227 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18228 : {
18229 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18230 : {
18231 0 : {
18232 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18233 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITL);
18234 0 : if (res) return res;
18235 : }
18236 : }
18237 : }
18238 : break;
18239 : }
18240 : default:;
18241 : }
18242 : }
18243 : }
18244 : break;
18245 0 : case CFN_SIGNBIT:
18246 0 : if (call_expr_nargs (_q20) == 1)
18247 : {
18248 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18249 0 : if (integer_zerop (_q21))
18250 : {
18251 0 : switch (TREE_CODE (_p1))
18252 : {
18253 0 : case NEGATE_EXPR:
18254 0 : {
18255 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18256 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18257 : {
18258 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18259 : {
18260 0 : {
18261 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18262 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_SIGNBIT);
18263 0 : if (res) return res;
18264 : }
18265 : }
18266 : }
18267 : break;
18268 : }
18269 : default:;
18270 : }
18271 : }
18272 : }
18273 : break;
18274 411 : case CFN_BUILT_IN_SIGNBIT:
18275 411 : if (call_expr_nargs (_q20) == 1)
18276 : {
18277 411 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18278 411 : if (integer_zerop (_q21))
18279 : {
18280 411 : switch (TREE_CODE (_p1))
18281 : {
18282 3 : case NEGATE_EXPR:
18283 3 : {
18284 3 : tree _q60 = TREE_OPERAND (_p1, 0);
18285 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18286 : {
18287 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18288 : {
18289 3 : {
18290 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18291 3 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBIT);
18292 3 : if (res) return res;
18293 : }
18294 : }
18295 : }
18296 : break;
18297 : }
18298 : default:;
18299 : }
18300 : }
18301 : }
18302 : break;
18303 : default:;
18304 : }
18305 : break;
18306 : default:;
18307 : }
18308 : break;
18309 : }
18310 164 : case UNEQ_EXPR:
18311 164 : {
18312 164 : tree _q20 = TREE_OPERAND (_p0, 0);
18313 164 : tree _q21 = TREE_OPERAND (_p0, 1);
18314 164 : if (zerop (_q21))
18315 : {
18316 1 : switch (TREE_CODE (_p2))
18317 : {
18318 0 : case NEGATE_EXPR:
18319 0 : {
18320 0 : tree _q60 = TREE_OPERAND (_p2, 0);
18321 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18322 : {
18323 0 : {
18324 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18325 0 : const enum tree_code cmp = UNEQ_EXPR;
18326 0 : if (!HONOR_SIGNED_ZEROS (type)
18327 0 : && bitwise_equal_p (captures[0], captures[1])
18328 : )
18329 : {
18330 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1842;
18331 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1842;
18332 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1842;
18333 0 : {
18334 0 : tree _r;
18335 0 : _r = captures[2];
18336 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
18337 0 : return _r;
18338 : }
18339 0 : next_after_fail1842:;
18340 : }
18341 : }
18342 : }
18343 : break;
18344 : }
18345 1 : default:;
18346 : }
18347 1 : if (zerop (_p1))
18348 : {
18349 0 : switch (TREE_CODE (_p2))
18350 : {
18351 0 : case NEGATE_EXPR:
18352 0 : {
18353 0 : tree _q60 = TREE_OPERAND (_p2, 0);
18354 0 : {
18355 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18356 0 : const enum tree_code cmp = UNEQ_EXPR;
18357 0 : if (!HONOR_SIGNED_ZEROS (type)
18358 0 : && bitwise_equal_p (captures[0], captures[2])
18359 : )
18360 : {
18361 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1843;
18362 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1843;
18363 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1843;
18364 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1843;
18365 0 : {
18366 0 : tree _r;
18367 0 : _r = captures[1];
18368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18369 0 : return _r;
18370 : }
18371 0 : next_after_fail1843:;
18372 : }
18373 : }
18374 0 : break;
18375 : }
18376 : default:;
18377 : }
18378 : }
18379 : }
18380 164 : switch (TREE_CODE (_q20))
18381 : {
18382 0 : case MINUS_EXPR:
18383 0 : {
18384 0 : tree _q30 = TREE_OPERAND (_q20, 0);
18385 0 : tree _q31 = TREE_OPERAND (_q20, 1);
18386 0 : if (zerop (_q21))
18387 : {
18388 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18389 : {
18390 0 : switch (TREE_CODE (_p2))
18391 : {
18392 0 : case MINUS_EXPR:
18393 0 : {
18394 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18395 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18396 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18397 : {
18398 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18399 : {
18400 0 : {
18401 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18402 0 : const enum tree_code cmp = UNEQ_EXPR;
18403 0 : if (!HONOR_SIGNED_ZEROS (type)
18404 : )
18405 : {
18406 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1844;
18407 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1844;
18408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1844;
18409 0 : {
18410 0 : tree _r;
18411 0 : _r = captures[3];
18412 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18413 0 : return _r;
18414 : }
18415 0 : next_after_fail1844:;
18416 : }
18417 : }
18418 : }
18419 : }
18420 : break;
18421 : }
18422 : default:;
18423 : }
18424 : }
18425 : }
18426 0 : if (integer_zerop (_q21))
18427 : {
18428 0 : if (integer_zerop (_p1))
18429 : {
18430 0 : switch (TREE_CODE (_p2))
18431 : {
18432 0 : case MINUS_EXPR:
18433 0 : {
18434 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18435 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18436 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18437 : {
18438 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18439 : {
18440 0 : {
18441 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18442 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, UNEQ_EXPR);
18443 0 : if (res) return res;
18444 : }
18445 : }
18446 : }
18447 : break;
18448 : }
18449 : default:;
18450 : }
18451 : }
18452 : }
18453 : break;
18454 : }
18455 : default:;
18456 : }
18457 : break;
18458 : }
18459 2803046 : case NE_EXPR:
18460 2803046 : {
18461 2803046 : tree _q20 = TREE_OPERAND (_p0, 0);
18462 2803046 : tree _q21 = TREE_OPERAND (_p0, 1);
18463 2803046 : if (zerop (_q21))
18464 : {
18465 1923614 : switch (TREE_CODE (_p2))
18466 : {
18467 50 : case NEGATE_EXPR:
18468 50 : {
18469 50 : tree _q60 = TREE_OPERAND (_p2, 0);
18470 50 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18471 : {
18472 10 : {
18473 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18474 10 : const enum tree_code cmp = NE_EXPR;
18475 10 : if (!HONOR_SIGNED_ZEROS (type)
18476 10 : && bitwise_equal_p (captures[0], captures[1])
18477 : )
18478 : {
18479 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1845;
18480 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1845;
18481 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1845;
18482 0 : {
18483 0 : tree _r;
18484 0 : _r = captures[1];
18485 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
18486 0 : return _r;
18487 : }
18488 10 : next_after_fail1845:;
18489 : }
18490 : }
18491 : }
18492 : break;
18493 : }
18494 1923614 : default:;
18495 : }
18496 1923614 : if (integer_zerop (_p2))
18497 : {
18498 327706 : {
18499 327706 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18500 327706 : const enum tree_code cmp = NE_EXPR;
18501 327706 : if (!HONOR_SIGNED_ZEROS (type)
18502 327706 : && bitwise_equal_p (captures[0], captures[1])
18503 : )
18504 : {
18505 530 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1846;
18506 498 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1846;
18507 498 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1846;
18508 498 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1846;
18509 498 : {
18510 498 : tree _r;
18511 498 : _r = captures[1];
18512 498 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18513 498 : return _r;
18514 : }
18515 327208 : next_after_fail1846:;
18516 : }
18517 : }
18518 : }
18519 : }
18520 2802548 : switch (TREE_CODE (_q20))
18521 : {
18522 562 : case MINUS_EXPR:
18523 562 : {
18524 562 : tree _q30 = TREE_OPERAND (_q20, 0);
18525 562 : tree _q31 = TREE_OPERAND (_q20, 1);
18526 562 : if (zerop (_q21))
18527 : {
18528 76 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18529 : {
18530 0 : switch (TREE_CODE (_p2))
18531 : {
18532 0 : case MINUS_EXPR:
18533 0 : {
18534 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18535 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18536 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18537 : {
18538 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18539 : {
18540 0 : {
18541 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
18542 0 : const enum tree_code cmp = NE_EXPR;
18543 0 : if (!HONOR_SIGNED_ZEROS (type)
18544 : )
18545 : {
18546 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1847;
18547 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1847;
18548 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1847;
18549 0 : {
18550 0 : tree _r;
18551 0 : _r = captures[0];
18552 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18553 0 : return _r;
18554 : }
18555 0 : next_after_fail1847:;
18556 : }
18557 : }
18558 : }
18559 : }
18560 : break;
18561 : }
18562 : default:;
18563 : }
18564 : }
18565 : }
18566 562 : if (integer_zerop (_q21))
18567 : {
18568 25 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18569 : {
18570 0 : if (integer_zerop (_p2))
18571 : {
18572 0 : {
18573 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
18574 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
18575 0 : if (res) return res;
18576 : }
18577 : }
18578 : }
18579 : }
18580 : break;
18581 : }
18582 275063 : case BIT_AND_EXPR:
18583 275063 : {
18584 275063 : tree _q30 = TREE_OPERAND (_q20, 0);
18585 275063 : tree _q31 = TREE_OPERAND (_q20, 1);
18586 275063 : if (integer_pow2p (_q31))
18587 : {
18588 202770 : if (integer_zerop (_q21))
18589 : {
18590 202770 : switch (TREE_CODE (_p1))
18591 : {
18592 2327 : case INTEGER_CST:
18593 2327 : {
18594 2327 : if (integer_zerop (_p2))
18595 : {
18596 1404 : {
18597 1404 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
18598 1404 : if (!POINTER_TYPE_P (type) && integer_pow2p (captures[2])
18599 : )
18600 : {
18601 652 : {
18602 652 : int shift = (wi::exact_log2 (wi::to_wide (captures[2]))
18603 652 : - wi::exact_log2 (wi::to_wide (captures[1])));
18604 652 : if (shift > 0
18605 : )
18606 : {
18607 377 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1848;
18608 377 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1848;
18609 377 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1848;
18610 377 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1848;
18611 377 : {
18612 377 : tree res_op0;
18613 377 : {
18614 377 : tree _o1[2], _r1;
18615 377 : {
18616 377 : tree _o2[1], _r2;
18617 377 : _o2[0] = captures[0];
18618 377 : if (TREE_TYPE (_o2[0]) != type)
18619 : {
18620 374 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
18621 : }
18622 : else
18623 : _r2 = _o2[0];
18624 377 : _o1[0] = _r2;
18625 : }
18626 377 : _o1[1] = build_int_cst (integer_type_node, shift);
18627 377 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
18628 377 : res_op0 = _r1;
18629 : }
18630 377 : tree res_op1;
18631 377 : res_op1 = captures[2];
18632 377 : tree _r;
18633 377 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
18634 377 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
18635 652 : return _r;
18636 : }
18637 : next_after_fail1848:;
18638 : }
18639 : else
18640 : {
18641 275 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1849;
18642 275 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1849;
18643 275 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1849;
18644 275 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1849;
18645 275 : {
18646 275 : tree res_op0;
18647 275 : {
18648 275 : tree _o1[1], _r1;
18649 275 : {
18650 275 : tree _o2[2], _r2;
18651 275 : _o2[0] = captures[0];
18652 275 : _o2[1] = build_int_cst (integer_type_node, -shift);
18653 275 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
18654 275 : _o1[0] = _r2;
18655 : }
18656 275 : if (TREE_TYPE (_o1[0]) != type)
18657 : {
18658 139 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
18659 : }
18660 : else
18661 : _r1 = _o1[0];
18662 275 : res_op0 = _r1;
18663 : }
18664 275 : tree res_op1;
18665 275 : res_op1 = captures[2];
18666 275 : tree _r;
18667 275 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
18668 275 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
18669 275 : return _r;
18670 : }
18671 : next_after_fail1849:;
18672 : }
18673 : }
18674 : }
18675 : }
18676 : }
18677 : break;
18678 : }
18679 : default:;
18680 : }
18681 : }
18682 : }
18683 : break;
18684 : }
18685 317638 : case CALL_EXPR:
18686 317638 : switch (get_call_combined_fn (_q20))
18687 : {
18688 30 : case CFN_BUILT_IN_SIGNBITF:
18689 30 : if (call_expr_nargs (_q20) == 1)
18690 : {
18691 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18692 30 : if (integer_zerop (_q21))
18693 : {
18694 30 : switch (TREE_CODE (_p1))
18695 : {
18696 0 : case NEGATE_EXPR:
18697 0 : {
18698 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18699 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18700 : {
18701 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18702 : {
18703 0 : {
18704 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18705 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITF);
18706 0 : if (res) return res;
18707 : }
18708 : }
18709 : }
18710 : break;
18711 : }
18712 : default:;
18713 : }
18714 : }
18715 : }
18716 : break;
18717 30 : case CFN_BUILT_IN_SIGNBITL:
18718 30 : if (call_expr_nargs (_q20) == 1)
18719 : {
18720 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18721 30 : if (integer_zerop (_q21))
18722 : {
18723 30 : switch (TREE_CODE (_p1))
18724 : {
18725 0 : case NEGATE_EXPR:
18726 0 : {
18727 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18728 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18729 : {
18730 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18731 : {
18732 0 : {
18733 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18734 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITL);
18735 0 : if (res) return res;
18736 : }
18737 : }
18738 : }
18739 : break;
18740 : }
18741 : default:;
18742 : }
18743 : }
18744 : }
18745 : break;
18746 0 : case CFN_SIGNBIT:
18747 0 : if (call_expr_nargs (_q20) == 1)
18748 : {
18749 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18750 0 : if (integer_zerop (_q21))
18751 : {
18752 0 : switch (TREE_CODE (_p1))
18753 : {
18754 0 : case NEGATE_EXPR:
18755 0 : {
18756 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18757 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18758 : {
18759 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18760 : {
18761 0 : {
18762 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18763 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_SIGNBIT);
18764 0 : if (res) return res;
18765 : }
18766 : }
18767 : }
18768 : break;
18769 : }
18770 : default:;
18771 : }
18772 : }
18773 : }
18774 : break;
18775 2896 : case CFN_BUILT_IN_SIGNBIT:
18776 2896 : if (call_expr_nargs (_q20) == 1)
18777 : {
18778 2896 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18779 2896 : if (integer_zerop (_q21))
18780 : {
18781 2896 : switch (TREE_CODE (_p1))
18782 : {
18783 4 : case NEGATE_EXPR:
18784 4 : {
18785 4 : tree _q60 = TREE_OPERAND (_p1, 0);
18786 4 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18787 : {
18788 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18789 : {
18790 3 : {
18791 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18792 3 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBIT);
18793 3 : if (res) return res;
18794 : }
18795 : }
18796 : }
18797 : break;
18798 : }
18799 : default:;
18800 : }
18801 : }
18802 : }
18803 : break;
18804 : default:;
18805 : }
18806 : break;
18807 2801893 : default:;
18808 : }
18809 2801893 : if (integer_zerop (_q21))
18810 : {
18811 1852741 : switch (TREE_CODE (_p1))
18812 : {
18813 95162 : case PLUS_EXPR:
18814 95162 : {
18815 95162 : tree _q50 = TREE_OPERAND (_p1, 0);
18816 95162 : tree _q51 = TREE_OPERAND (_p1, 1);
18817 95162 : {
18818 95162 : tree _q50_pops[1];
18819 95162 : if (tree_nop_convert (_q50, _q50_pops))
18820 : {
18821 11556 : tree _q60 = _q50_pops[0];
18822 11556 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
18823 : {
18824 1650 : if (integer_all_onesp (_q51))
18825 : {
18826 1650 : if (integer_zerop (_p2))
18827 : {
18828 1644 : {
18829 1644 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
18830 1644 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures);
18831 1644 : if (res) return res;
18832 : }
18833 : }
18834 : }
18835 : }
18836 : }
18837 : }
18838 93518 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18839 : {
18840 2028 : if (integer_all_onesp (_q51))
18841 : {
18842 1993 : if (integer_zerop (_p2))
18843 : {
18844 1985 : {
18845 1985 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
18846 1985 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures);
18847 1985 : if (res) return res;
18848 : }
18849 : }
18850 : }
18851 : }
18852 : break;
18853 : }
18854 568055 : case CALL_EXPR:
18855 568055 : switch (get_call_combined_fn (_p1))
18856 : {
18857 0 : case CFN_PARITY:
18858 0 : if (call_expr_nargs (_p1) == 1)
18859 : {
18860 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
18861 0 : switch (TREE_CODE (_q50))
18862 : {
18863 0 : CASE_CONVERT:
18864 0 : {
18865 0 : tree _q60 = TREE_OPERAND (_q50, 0);
18866 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
18867 : {
18868 0 : if (integer_zerop (_p2))
18869 : {
18870 0 : {
18871 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18872 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
18873 0 : if (res) return res;
18874 : }
18875 : }
18876 : }
18877 : break;
18878 : }
18879 0 : default:;
18880 : }
18881 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18882 : {
18883 0 : if (integer_zerop (_p2))
18884 : {
18885 0 : {
18886 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18887 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
18888 0 : if (res) return res;
18889 : }
18890 : }
18891 : }
18892 : }
18893 : break;
18894 7 : case CFN_BUILT_IN_FFS:
18895 7 : if (call_expr_nargs (_p1) == 1)
18896 : {
18897 7 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
18898 7 : switch (TREE_CODE (_q50))
18899 : {
18900 0 : CASE_CONVERT:
18901 0 : {
18902 0 : tree _q60 = TREE_OPERAND (_q50, 0);
18903 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
18904 : {
18905 0 : if (integer_zerop (_p2))
18906 : {
18907 0 : {
18908 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18909 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
18910 0 : if (res) return res;
18911 : }
18912 : }
18913 : }
18914 : break;
18915 : }
18916 7 : default:;
18917 : }
18918 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18919 : {
18920 0 : if (integer_zerop (_p2))
18921 : {
18922 0 : {
18923 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18924 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
18925 0 : if (res) return res;
18926 : }
18927 : }
18928 : }
18929 : }
18930 : break;
18931 0 : case CFN_BUILT_IN_FFSIMAX:
18932 0 : if (call_expr_nargs (_p1) == 1)
18933 : {
18934 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
18935 0 : switch (TREE_CODE (_q50))
18936 : {
18937 0 : CASE_CONVERT:
18938 0 : {
18939 0 : tree _q60 = TREE_OPERAND (_q50, 0);
18940 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
18941 : {
18942 0 : if (integer_zerop (_p2))
18943 : {
18944 0 : {
18945 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18946 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
18947 0 : if (res) return res;
18948 : }
18949 : }
18950 : }
18951 : break;
18952 : }
18953 0 : default:;
18954 : }
18955 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18956 : {
18957 0 : if (integer_zerop (_p2))
18958 : {
18959 0 : {
18960 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18961 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
18962 0 : if (res) return res;
18963 : }
18964 : }
18965 : }
18966 : }
18967 : break;
18968 2 : case CFN_BUILT_IN_POPCOUNT:
18969 2 : if (call_expr_nargs (_p1) == 1)
18970 : {
18971 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
18972 2 : switch (TREE_CODE (_q50))
18973 : {
18974 1 : CASE_CONVERT:
18975 1 : {
18976 1 : tree _q60 = TREE_OPERAND (_q50, 0);
18977 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
18978 : {
18979 1 : if (integer_zerop (_p2))
18980 : {
18981 1 : {
18982 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18983 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
18984 1 : if (res) return res;
18985 : }
18986 : }
18987 : }
18988 : break;
18989 : }
18990 1 : default:;
18991 : }
18992 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18993 : {
18994 0 : if (integer_zerop (_p2))
18995 : {
18996 0 : {
18997 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18998 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
18999 0 : if (res) return res;
19000 : }
19001 : }
19002 : }
19003 : }
19004 : break;
19005 2 : case CFN_BUILT_IN_PARITYL:
19006 2 : if (call_expr_nargs (_p1) == 1)
19007 : {
19008 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19009 2 : switch (TREE_CODE (_q50))
19010 : {
19011 1 : CASE_CONVERT:
19012 1 : {
19013 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19014 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19015 : {
19016 1 : if (integer_zerop (_p2))
19017 : {
19018 1 : {
19019 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19020 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19021 1 : if (res) return res;
19022 : }
19023 : }
19024 : }
19025 : break;
19026 : }
19027 1 : default:;
19028 : }
19029 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19030 : {
19031 0 : if (integer_zerop (_p2))
19032 : {
19033 0 : {
19034 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19035 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19036 0 : if (res) return res;
19037 : }
19038 : }
19039 : }
19040 : }
19041 : break;
19042 16 : case CFN_BUILT_IN_FFSL:
19043 16 : if (call_expr_nargs (_p1) == 1)
19044 : {
19045 16 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19046 16 : switch (TREE_CODE (_q50))
19047 : {
19048 16 : CASE_CONVERT:
19049 16 : {
19050 16 : tree _q60 = TREE_OPERAND (_q50, 0);
19051 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19052 : {
19053 0 : if (integer_zerop (_p2))
19054 : {
19055 0 : {
19056 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19057 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19058 0 : if (res) return res;
19059 : }
19060 : }
19061 : }
19062 : break;
19063 : }
19064 16 : default:;
19065 : }
19066 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19067 : {
19068 0 : if (integer_zerop (_p2))
19069 : {
19070 0 : {
19071 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19072 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19073 0 : if (res) return res;
19074 : }
19075 : }
19076 : }
19077 : }
19078 : break;
19079 2 : case CFN_BUILT_IN_POPCOUNTLL:
19080 2 : if (call_expr_nargs (_p1) == 1)
19081 : {
19082 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19083 2 : switch (TREE_CODE (_q50))
19084 : {
19085 1 : CASE_CONVERT:
19086 1 : {
19087 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19088 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19089 : {
19090 1 : if (integer_zerop (_p2))
19091 : {
19092 1 : {
19093 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19094 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19095 1 : if (res) return res;
19096 : }
19097 : }
19098 : }
19099 : break;
19100 : }
19101 1 : default:;
19102 : }
19103 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19104 : {
19105 0 : if (integer_zerop (_p2))
19106 : {
19107 0 : {
19108 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19109 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19110 0 : if (res) return res;
19111 : }
19112 : }
19113 : }
19114 : }
19115 : break;
19116 0 : case CFN_POPCOUNT:
19117 0 : if (call_expr_nargs (_p1) == 1)
19118 : {
19119 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19120 0 : switch (TREE_CODE (_q50))
19121 : {
19122 0 : CASE_CONVERT:
19123 0 : {
19124 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19125 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19126 : {
19127 0 : if (integer_zerop (_p2))
19128 : {
19129 0 : {
19130 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19131 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19132 0 : if (res) return res;
19133 : }
19134 : }
19135 : }
19136 : break;
19137 : }
19138 0 : default:;
19139 : }
19140 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19141 : {
19142 0 : if (integer_zerop (_p2))
19143 : {
19144 0 : {
19145 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19146 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19147 0 : if (res) return res;
19148 : }
19149 : }
19150 : }
19151 : }
19152 : break;
19153 0 : case CFN_BUILT_IN_PARITYIMAX:
19154 0 : if (call_expr_nargs (_p1) == 1)
19155 : {
19156 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19157 0 : switch (TREE_CODE (_q50))
19158 : {
19159 0 : CASE_CONVERT:
19160 0 : {
19161 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19162 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19163 : {
19164 0 : if (integer_zerop (_p2))
19165 : {
19166 0 : {
19167 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19168 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19169 0 : if (res) return res;
19170 : }
19171 : }
19172 : }
19173 : break;
19174 : }
19175 0 : default:;
19176 : }
19177 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19178 : {
19179 0 : if (integer_zerop (_p2))
19180 : {
19181 0 : {
19182 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19183 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19184 0 : if (res) return res;
19185 : }
19186 : }
19187 : }
19188 : }
19189 : break;
19190 2 : case CFN_BUILT_IN_CLRSBL:
19191 2 : if (call_expr_nargs (_p1) == 1)
19192 : {
19193 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19194 2 : switch (TREE_CODE (_q50))
19195 : {
19196 0 : CASE_CONVERT:
19197 0 : {
19198 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19199 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19200 : {
19201 0 : switch (TREE_CODE (_p2))
19202 : {
19203 0 : case INTEGER_CST:
19204 0 : {
19205 0 : {
19206 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19207 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19208 0 : if (res) return res;
19209 : }
19210 0 : break;
19211 : }
19212 : default:;
19213 : }
19214 : }
19215 : break;
19216 : }
19217 2 : default:;
19218 : }
19219 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19220 : {
19221 1 : switch (TREE_CODE (_p2))
19222 : {
19223 1 : case INTEGER_CST:
19224 1 : {
19225 1 : {
19226 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19227 1 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19228 1 : if (res) return res;
19229 : }
19230 0 : break;
19231 : }
19232 : default:;
19233 : }
19234 : }
19235 : }
19236 : break;
19237 0 : case CFN_FFS:
19238 0 : if (call_expr_nargs (_p1) == 1)
19239 : {
19240 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19241 0 : switch (TREE_CODE (_q50))
19242 : {
19243 0 : CASE_CONVERT:
19244 0 : {
19245 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19246 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19247 : {
19248 0 : if (integer_zerop (_p2))
19249 : {
19250 0 : {
19251 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19252 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19253 0 : if (res) return res;
19254 : }
19255 : }
19256 : }
19257 : break;
19258 : }
19259 0 : default:;
19260 : }
19261 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19262 : {
19263 0 : if (integer_zerop (_p2))
19264 : {
19265 0 : {
19266 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19267 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19268 0 : if (res) return res;
19269 : }
19270 : }
19271 : }
19272 : }
19273 : break;
19274 2 : case CFN_BUILT_IN_PARITY:
19275 2 : if (call_expr_nargs (_p1) == 1)
19276 : {
19277 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19278 2 : switch (TREE_CODE (_q50))
19279 : {
19280 1 : CASE_CONVERT:
19281 1 : {
19282 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19283 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19284 : {
19285 1 : if (integer_zerop (_p2))
19286 : {
19287 1 : {
19288 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19289 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19290 1 : if (res) return res;
19291 : }
19292 : }
19293 : }
19294 : break;
19295 : }
19296 1 : default:;
19297 : }
19298 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19299 : {
19300 0 : if (integer_zerop (_p2))
19301 : {
19302 0 : {
19303 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19304 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19305 0 : if (res) return res;
19306 : }
19307 : }
19308 : }
19309 : }
19310 : break;
19311 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
19312 0 : if (call_expr_nargs (_p1) == 1)
19313 : {
19314 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19315 0 : switch (TREE_CODE (_q50))
19316 : {
19317 0 : CASE_CONVERT:
19318 0 : {
19319 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19320 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19321 : {
19322 0 : if (integer_zerop (_p2))
19323 : {
19324 0 : {
19325 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19326 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19327 0 : if (res) return res;
19328 : }
19329 : }
19330 : }
19331 : break;
19332 : }
19333 0 : default:;
19334 : }
19335 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19336 : {
19337 0 : if (integer_zerop (_p2))
19338 : {
19339 0 : {
19340 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19341 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19342 0 : if (res) return res;
19343 : }
19344 : }
19345 : }
19346 : }
19347 : break;
19348 0 : case CFN_BUILT_IN_CLRSBIMAX:
19349 0 : if (call_expr_nargs (_p1) == 1)
19350 : {
19351 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19352 0 : switch (TREE_CODE (_q50))
19353 : {
19354 0 : CASE_CONVERT:
19355 0 : {
19356 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19357 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19358 : {
19359 0 : switch (TREE_CODE (_p2))
19360 : {
19361 0 : case INTEGER_CST:
19362 0 : {
19363 0 : {
19364 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19365 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19366 0 : if (res) return res;
19367 : }
19368 0 : break;
19369 : }
19370 : default:;
19371 : }
19372 : }
19373 : break;
19374 : }
19375 0 : default:;
19376 : }
19377 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19378 : {
19379 0 : switch (TREE_CODE (_p2))
19380 : {
19381 0 : case INTEGER_CST:
19382 0 : {
19383 0 : {
19384 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19385 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19386 0 : if (res) return res;
19387 : }
19388 0 : break;
19389 : }
19390 : default:;
19391 : }
19392 : }
19393 : }
19394 : break;
19395 2 : case CFN_BUILT_IN_CLRSBLL:
19396 2 : if (call_expr_nargs (_p1) == 1)
19397 : {
19398 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19399 2 : switch (TREE_CODE (_q50))
19400 : {
19401 0 : CASE_CONVERT:
19402 0 : {
19403 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19404 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19405 : {
19406 0 : switch (TREE_CODE (_p2))
19407 : {
19408 0 : case INTEGER_CST:
19409 0 : {
19410 0 : {
19411 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19412 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
19413 0 : if (res) return res;
19414 : }
19415 0 : break;
19416 : }
19417 : default:;
19418 : }
19419 : }
19420 : break;
19421 : }
19422 2 : default:;
19423 : }
19424 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19425 : {
19426 1 : switch (TREE_CODE (_p2))
19427 : {
19428 1 : case INTEGER_CST:
19429 1 : {
19430 1 : {
19431 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19432 1 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
19433 1 : if (res) return res;
19434 : }
19435 0 : break;
19436 : }
19437 : default:;
19438 : }
19439 : }
19440 : }
19441 : break;
19442 0 : case CFN_CLRSB:
19443 0 : if (call_expr_nargs (_p1) == 1)
19444 : {
19445 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19446 0 : switch (TREE_CODE (_q50))
19447 : {
19448 0 : CASE_CONVERT:
19449 0 : {
19450 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19451 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19452 : {
19453 0 : switch (TREE_CODE (_p2))
19454 : {
19455 0 : case INTEGER_CST:
19456 0 : {
19457 0 : {
19458 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19459 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
19460 0 : if (res) return res;
19461 : }
19462 0 : break;
19463 : }
19464 : default:;
19465 : }
19466 : }
19467 : break;
19468 : }
19469 0 : default:;
19470 : }
19471 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19472 : {
19473 0 : switch (TREE_CODE (_p2))
19474 : {
19475 0 : case INTEGER_CST:
19476 0 : {
19477 0 : {
19478 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19479 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
19480 0 : if (res) return res;
19481 : }
19482 0 : break;
19483 : }
19484 : default:;
19485 : }
19486 : }
19487 : }
19488 : break;
19489 0 : case CFN_BUILT_IN_BSWAP128:
19490 0 : if (call_expr_nargs (_p1) == 1)
19491 : {
19492 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19493 0 : switch (TREE_CODE (_q50))
19494 : {
19495 0 : CASE_CONVERT:
19496 0 : {
19497 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19498 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19499 : {
19500 0 : if (integer_zerop (_p2))
19501 : {
19502 0 : {
19503 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19504 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
19505 0 : if (res) return res;
19506 : }
19507 : }
19508 : }
19509 : break;
19510 : }
19511 0 : default:;
19512 : }
19513 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19514 : {
19515 0 : if (integer_zerop (_p2))
19516 : {
19517 0 : {
19518 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19519 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
19520 0 : if (res) return res;
19521 : }
19522 : }
19523 : }
19524 : }
19525 : break;
19526 2 : case CFN_BUILT_IN_POPCOUNTL:
19527 2 : if (call_expr_nargs (_p1) == 1)
19528 : {
19529 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19530 2 : switch (TREE_CODE (_q50))
19531 : {
19532 1 : CASE_CONVERT:
19533 1 : {
19534 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19535 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19536 : {
19537 1 : if (integer_zerop (_p2))
19538 : {
19539 1 : {
19540 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19541 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
19542 1 : if (res) return res;
19543 : }
19544 : }
19545 : }
19546 : break;
19547 : }
19548 1 : default:;
19549 : }
19550 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19551 : {
19552 0 : if (integer_zerop (_p2))
19553 : {
19554 0 : {
19555 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19556 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
19557 0 : if (res) return res;
19558 : }
19559 : }
19560 : }
19561 : }
19562 : break;
19563 2 : case CFN_BUILT_IN_CLRSB:
19564 2 : if (call_expr_nargs (_p1) == 1)
19565 : {
19566 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19567 2 : switch (TREE_CODE (_q50))
19568 : {
19569 0 : CASE_CONVERT:
19570 0 : {
19571 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19572 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19573 : {
19574 0 : switch (TREE_CODE (_p2))
19575 : {
19576 0 : case INTEGER_CST:
19577 0 : {
19578 0 : {
19579 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19580 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
19581 0 : if (res) return res;
19582 : }
19583 0 : break;
19584 : }
19585 : default:;
19586 : }
19587 : }
19588 : break;
19589 : }
19590 2 : default:;
19591 : }
19592 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19593 : {
19594 1 : switch (TREE_CODE (_p2))
19595 : {
19596 1 : case INTEGER_CST:
19597 1 : {
19598 1 : {
19599 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19600 1 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
19601 1 : if (res) return res;
19602 : }
19603 0 : break;
19604 : }
19605 : default:;
19606 : }
19607 : }
19608 : }
19609 : break;
19610 0 : case CFN_BUILT_IN_FFSLL:
19611 0 : if (call_expr_nargs (_p1) == 1)
19612 : {
19613 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19614 0 : switch (TREE_CODE (_q50))
19615 : {
19616 0 : CASE_CONVERT:
19617 0 : {
19618 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19619 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19620 : {
19621 0 : if (integer_zerop (_p2))
19622 : {
19623 0 : {
19624 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19625 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
19626 0 : if (res) return res;
19627 : }
19628 : }
19629 : }
19630 : break;
19631 : }
19632 0 : default:;
19633 : }
19634 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19635 : {
19636 0 : if (integer_zerop (_p2))
19637 : {
19638 0 : {
19639 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19640 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
19641 0 : if (res) return res;
19642 : }
19643 : }
19644 : }
19645 : }
19646 : break;
19647 2 : case CFN_BUILT_IN_PARITYLL:
19648 2 : if (call_expr_nargs (_p1) == 1)
19649 : {
19650 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19651 2 : switch (TREE_CODE (_q50))
19652 : {
19653 1 : CASE_CONVERT:
19654 1 : {
19655 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19656 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19657 : {
19658 1 : if (integer_zerop (_p2))
19659 : {
19660 1 : {
19661 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19662 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
19663 1 : if (res) return res;
19664 : }
19665 : }
19666 : }
19667 : break;
19668 : }
19669 1 : default:;
19670 : }
19671 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19672 : {
19673 0 : if (integer_zerop (_p2))
19674 : {
19675 0 : {
19676 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19677 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
19678 0 : if (res) return res;
19679 : }
19680 : }
19681 : }
19682 : }
19683 : break;
19684 3 : case CFN_BUILT_IN_BSWAP16:
19685 3 : if (call_expr_nargs (_p1) == 1)
19686 : {
19687 3 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19688 3 : switch (TREE_CODE (_q50))
19689 : {
19690 0 : CASE_CONVERT:
19691 0 : {
19692 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19693 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19694 : {
19695 0 : if (integer_zerop (_p2))
19696 : {
19697 0 : {
19698 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19699 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
19700 0 : if (res) return res;
19701 : }
19702 : }
19703 : }
19704 : break;
19705 : }
19706 3 : default:;
19707 : }
19708 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19709 : {
19710 1 : if (integer_zerop (_p2))
19711 : {
19712 1 : {
19713 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19714 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
19715 1 : if (res) return res;
19716 : }
19717 : }
19718 : }
19719 : }
19720 : break;
19721 2 : case CFN_BUILT_IN_BSWAP32:
19722 2 : if (call_expr_nargs (_p1) == 1)
19723 : {
19724 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19725 2 : switch (TREE_CODE (_q50))
19726 : {
19727 0 : CASE_CONVERT:
19728 0 : {
19729 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19730 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19731 : {
19732 0 : if (integer_zerop (_p2))
19733 : {
19734 0 : {
19735 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19736 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
19737 0 : if (res) return res;
19738 : }
19739 : }
19740 : }
19741 : break;
19742 : }
19743 2 : default:;
19744 : }
19745 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19746 : {
19747 1 : if (integer_zerop (_p2))
19748 : {
19749 1 : {
19750 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19751 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
19752 1 : if (res) return res;
19753 : }
19754 : }
19755 : }
19756 : }
19757 : break;
19758 2 : case CFN_BUILT_IN_BSWAP64:
19759 2 : if (call_expr_nargs (_p1) == 1)
19760 : {
19761 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19762 2 : switch (TREE_CODE (_q50))
19763 : {
19764 1 : CASE_CONVERT:
19765 1 : {
19766 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19767 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19768 : {
19769 1 : if (integer_zerop (_p2))
19770 : {
19771 1 : {
19772 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19773 1 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
19774 1 : if (res) return res;
19775 : }
19776 : }
19777 : }
19778 : break;
19779 : }
19780 1 : default:;
19781 : }
19782 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19783 : {
19784 0 : if (integer_zerop (_p2))
19785 : {
19786 0 : {
19787 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19788 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
19789 0 : if (res) return res;
19790 : }
19791 : }
19792 : }
19793 : }
19794 : break;
19795 : default:;
19796 : }
19797 : break;
19798 1849100 : default:;
19799 : }
19800 1849100 : {
19801 1849100 : tree _p1_pops[1];
19802 1849100 : if (tree_nop_convert (_p1, _p1_pops))
19803 : {
19804 153618 : tree _q50 = _p1_pops[0];
19805 153618 : switch (TREE_CODE (_q50))
19806 : {
19807 339 : case PLUS_EXPR:
19808 339 : {
19809 339 : tree _q60 = TREE_OPERAND (_q50, 0);
19810 339 : tree _q61 = TREE_OPERAND (_q50, 1);
19811 339 : {
19812 339 : tree _q60_pops[1];
19813 339 : if (tree_nop_convert (_q60, _q60_pops))
19814 : {
19815 52 : tree _q70 = _q60_pops[0];
19816 52 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
19817 : {
19818 2 : if (integer_all_onesp (_q61))
19819 : {
19820 2 : if (integer_zerop (_p2))
19821 : {
19822 2 : {
19823 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
19824 2 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures);
19825 2 : if (res) return res;
19826 : }
19827 : }
19828 : }
19829 : }
19830 : }
19831 : }
19832 337 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19833 : {
19834 14 : if (integer_all_onesp (_q61))
19835 : {
19836 0 : if (integer_zerop (_p2))
19837 : {
19838 0 : {
19839 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
19840 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures);
19841 0 : if (res) return res;
19842 : }
19843 : }
19844 : }
19845 : }
19846 : break;
19847 : }
19848 : default:;
19849 : }
19850 : }
19851 : }
19852 : }
19853 : break;
19854 : }
19855 7 : case LTGT_EXPR:
19856 7 : {
19857 7 : tree _q20 = TREE_OPERAND (_p0, 0);
19858 7 : tree _q21 = TREE_OPERAND (_p0, 1);
19859 7 : if (zerop (_q21))
19860 : {
19861 0 : switch (TREE_CODE (_p2))
19862 : {
19863 0 : case NEGATE_EXPR:
19864 0 : {
19865 0 : tree _q60 = TREE_OPERAND (_p2, 0);
19866 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
19867 : {
19868 0 : {
19869 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19870 0 : const enum tree_code cmp = LTGT_EXPR;
19871 0 : if (!HONOR_SIGNED_ZEROS (type)
19872 0 : && bitwise_equal_p (captures[0], captures[1])
19873 : )
19874 : {
19875 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1850;
19876 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1850;
19877 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1850;
19878 0 : {
19879 0 : tree _r;
19880 0 : _r = captures[1];
19881 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
19882 0 : return _r;
19883 : }
19884 0 : next_after_fail1850:;
19885 : }
19886 : }
19887 : }
19888 : break;
19889 : }
19890 0 : default:;
19891 : }
19892 0 : if (integer_zerop (_p2))
19893 : {
19894 0 : {
19895 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19896 0 : const enum tree_code cmp = LTGT_EXPR;
19897 0 : if (!HONOR_SIGNED_ZEROS (type)
19898 0 : && bitwise_equal_p (captures[0], captures[1])
19899 : )
19900 : {
19901 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1851;
19902 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1851;
19903 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1851;
19904 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1851;
19905 0 : {
19906 0 : tree _r;
19907 0 : _r = captures[1];
19908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
19909 0 : return _r;
19910 : }
19911 0 : next_after_fail1851:;
19912 : }
19913 : }
19914 : }
19915 : }
19916 7 : switch (TREE_CODE (_q20))
19917 : {
19918 0 : case MINUS_EXPR:
19919 0 : {
19920 0 : tree _q30 = TREE_OPERAND (_q20, 0);
19921 0 : tree _q31 = TREE_OPERAND (_q20, 1);
19922 0 : if (zerop (_q21))
19923 : {
19924 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19925 : {
19926 0 : switch (TREE_CODE (_p2))
19927 : {
19928 0 : case MINUS_EXPR:
19929 0 : {
19930 0 : tree _q80 = TREE_OPERAND (_p2, 0);
19931 0 : tree _q81 = TREE_OPERAND (_p2, 1);
19932 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
19933 : {
19934 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
19935 : {
19936 0 : {
19937 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19938 0 : const enum tree_code cmp = LTGT_EXPR;
19939 0 : if (!HONOR_SIGNED_ZEROS (type)
19940 : )
19941 : {
19942 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1852;
19943 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1852;
19944 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1852;
19945 0 : {
19946 0 : tree _r;
19947 0 : _r = captures[0];
19948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
19949 0 : return _r;
19950 : }
19951 0 : next_after_fail1852:;
19952 : }
19953 : }
19954 : }
19955 : }
19956 : break;
19957 : }
19958 : default:;
19959 : }
19960 : }
19961 : }
19962 0 : if (integer_zerop (_q21))
19963 : {
19964 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19965 : {
19966 0 : if (integer_zerop (_p2))
19967 : {
19968 0 : {
19969 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19970 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, LTGT_EXPR);
19971 0 : if (res) return res;
19972 : }
19973 : }
19974 : }
19975 : }
19976 : break;
19977 : }
19978 : default:;
19979 : }
19980 : break;
19981 : }
19982 531929 : case GE_EXPR:
19983 531929 : {
19984 531929 : tree _q20 = TREE_OPERAND (_p0, 0);
19985 531929 : tree _q21 = TREE_OPERAND (_p0, 1);
19986 531929 : switch (TREE_CODE (_q20))
19987 : {
19988 55543 : CASE_CONVERT:
19989 55543 : {
19990 55543 : tree _q30 = TREE_OPERAND (_q20, 0);
19991 55543 : if (zerop (_q21))
19992 : {
19993 24738 : switch (TREE_CODE (_p2))
19994 : {
19995 13 : case NEGATE_EXPR:
19996 13 : {
19997 13 : tree _q70 = TREE_OPERAND (_p2, 0);
19998 13 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
19999 : {
20000 13 : {
20001 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20002 13 : const enum tree_code cmp = GE_EXPR;
20003 13 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20004 13 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20005 0 : && element_precision (captures[1])
20006 0 : <= element_precision (captures[0])
20007 0 : && bitwise_equal_p (captures[1], captures[2])
20008 13 : && (!VECTOR_TYPE_P (type)
20009 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20010 : )
20011 : {
20012 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20013 : )
20014 : {
20015 0 : {
20016 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20017 0 : if (types_match (captures[0], stype)
20018 : )
20019 : {
20020 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1853;
20021 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1853;
20022 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1853;
20023 0 : {
20024 0 : tree res_op0;
20025 0 : res_op0 = captures[0];
20026 0 : tree _r;
20027 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20028 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20029 0 : return _r;
20030 : }
20031 13 : next_after_fail1853:;
20032 : }
20033 : else
20034 : {
20035 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1854;
20036 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1854;
20037 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1854;
20038 0 : {
20039 0 : tree res_op0;
20040 0 : {
20041 0 : tree _o1[1], _r1;
20042 0 : _o1[0] = captures[2];
20043 0 : if (TREE_TYPE (_o1[0]) != stype)
20044 : {
20045 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20046 : }
20047 : else
20048 : _r1 = _o1[0];
20049 0 : res_op0 = _r1;
20050 : }
20051 0 : tree _r;
20052 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20053 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
20054 0 : return _r;
20055 : }
20056 13 : next_after_fail1854:;
20057 : }
20058 : }
20059 : }
20060 : else
20061 : {
20062 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1855;
20063 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1855;
20064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1855;
20065 0 : {
20066 0 : tree res_op0;
20067 0 : res_op0 = captures[2];
20068 0 : tree _r;
20069 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20070 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
20071 0 : return _r;
20072 : }
20073 13 : next_after_fail1855:;
20074 : }
20075 : }
20076 : }
20077 : }
20078 : break;
20079 : }
20080 : default:;
20081 : }
20082 : }
20083 : break;
20084 : }
20085 531929 : default:;
20086 : }
20087 531929 : if (zerop (_q21))
20088 : {
20089 142023 : switch (TREE_CODE (_p2))
20090 : {
20091 30277 : case NEGATE_EXPR:
20092 30277 : {
20093 30277 : tree _q60 = TREE_OPERAND (_p2, 0);
20094 30277 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20095 : {
20096 30271 : {
20097 30271 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20098 30271 : const enum tree_code cmp = GE_EXPR;
20099 30271 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20100 30263 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20101 60526 : && element_precision (captures[1])
20102 30263 : <= element_precision (captures[0])
20103 30263 : && bitwise_equal_p (captures[1], captures[2])
20104 60436 : && (!VECTOR_TYPE_P (type)
20105 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20106 : )
20107 : {
20108 30165 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20109 : )
20110 : {
20111 46 : {
20112 46 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20113 46 : if (types_match (captures[0], stype)
20114 : )
20115 : {
20116 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1856;
20117 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1856;
20118 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1856;
20119 13 : {
20120 13 : tree res_op0;
20121 13 : res_op0 = captures[0];
20122 13 : tree _r;
20123 13 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20124 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20125 13 : return _r;
20126 : }
20127 106 : next_after_fail1856:;
20128 : }
20129 : else
20130 : {
20131 33 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1857;
20132 33 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1857;
20133 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1857;
20134 33 : {
20135 33 : tree res_op0;
20136 33 : {
20137 33 : tree _o1[1], _r1;
20138 33 : _o1[0] = captures[2];
20139 33 : if (TREE_TYPE (_o1[0]) != stype)
20140 : {
20141 33 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20142 : }
20143 : else
20144 : _r1 = _o1[0];
20145 33 : res_op0 = _r1;
20146 : }
20147 33 : tree _r;
20148 33 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20149 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
20150 33 : return _r;
20151 : }
20152 106 : next_after_fail1857:;
20153 : }
20154 : }
20155 : }
20156 : else
20157 : {
20158 30119 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1858;
20159 30119 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1858;
20160 30119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1858;
20161 30119 : {
20162 30119 : tree res_op0;
20163 30119 : res_op0 = captures[2];
20164 30119 : tree _r;
20165 30119 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20166 30119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
20167 30119 : return _r;
20168 : }
20169 106 : next_after_fail1858:;
20170 : }
20171 : }
20172 : }
20173 : }
20174 : break;
20175 : }
20176 : default:;
20177 : }
20178 : }
20179 501764 : switch (TREE_CODE (_q20))
20180 : {
20181 31898 : case MINUS_EXPR:
20182 31898 : {
20183 31898 : tree _q30 = TREE_OPERAND (_q20, 0);
20184 31898 : tree _q31 = TREE_OPERAND (_q20, 1);
20185 31898 : if (zerop (_q21))
20186 : {
20187 31108 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20188 : {
20189 1 : switch (TREE_CODE (_p2))
20190 : {
20191 1 : case MINUS_EXPR:
20192 1 : {
20193 1 : tree _q80 = TREE_OPERAND (_p2, 0);
20194 1 : tree _q81 = TREE_OPERAND (_p2, 1);
20195 1 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20196 : {
20197 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20198 : {
20199 1 : {
20200 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20201 1 : const enum tree_code cmp = GE_EXPR;
20202 1 : if (!HONOR_SIGNED_ZEROS (type)
20203 1 : && !TYPE_UNSIGNED (type)
20204 2 : && (!VECTOR_TYPE_P (type)
20205 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20206 : )
20207 : {
20208 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1859;
20209 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1859;
20210 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1859;
20211 1 : {
20212 1 : tree res_op0;
20213 1 : res_op0 = captures[0];
20214 1 : tree _r;
20215 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20216 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
20217 1 : return _r;
20218 : }
20219 0 : next_after_fail1859:;
20220 : }
20221 : }
20222 : }
20223 : }
20224 : break;
20225 : }
20226 : default:;
20227 : }
20228 : }
20229 : }
20230 : break;
20231 : }
20232 501763 : default:;
20233 : }
20234 501763 : if (integer_zerop (_q21))
20235 : {
20236 111306 : switch (TREE_CODE (_p1))
20237 : {
20238 65 : case BIT_NOT_EXPR:
20239 65 : {
20240 65 : tree _q50 = TREE_OPERAND (_p1, 0);
20241 65 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
20242 : {
20243 9 : {
20244 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
20245 9 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
20246 9 : if (res) return res;
20247 : }
20248 : }
20249 : break;
20250 : }
20251 111297 : default:;
20252 : }
20253 111297 : switch (TREE_CODE (_p2))
20254 : {
20255 30 : case BIT_NOT_EXPR:
20256 30 : {
20257 30 : tree _q60 = TREE_OPERAND (_p2, 0);
20258 30 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20259 : {
20260 9 : {
20261 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20262 9 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
20263 9 : if (res) return res;
20264 : }
20265 : }
20266 : break;
20267 : }
20268 : default:;
20269 : }
20270 : }
20271 : break;
20272 : }
20273 886064 : case GT_EXPR:
20274 886064 : {
20275 886064 : tree _q20 = TREE_OPERAND (_p0, 0);
20276 886064 : tree _q21 = TREE_OPERAND (_p0, 1);
20277 886064 : switch (TREE_CODE (_q20))
20278 : {
20279 85818 : CASE_CONVERT:
20280 85818 : {
20281 85818 : tree _q30 = TREE_OPERAND (_q20, 0);
20282 85818 : if (zerop (_q21))
20283 : {
20284 1562 : switch (TREE_CODE (_p2))
20285 : {
20286 20 : case NEGATE_EXPR:
20287 20 : {
20288 20 : tree _q70 = TREE_OPERAND (_p2, 0);
20289 20 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20290 : {
20291 0 : {
20292 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20293 0 : const enum tree_code cmp = GT_EXPR;
20294 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20295 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20296 0 : && element_precision (captures[1])
20297 0 : <= element_precision (captures[0])
20298 0 : && bitwise_equal_p (captures[1], captures[2])
20299 0 : && (!VECTOR_TYPE_P (type)
20300 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20301 : )
20302 : {
20303 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20304 : )
20305 : {
20306 0 : {
20307 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20308 0 : if (types_match (captures[0], stype)
20309 : )
20310 : {
20311 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1860;
20312 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1860;
20313 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1860;
20314 0 : {
20315 0 : tree res_op0;
20316 0 : res_op0 = captures[0];
20317 0 : tree _r;
20318 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20319 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20320 0 : return _r;
20321 : }
20322 0 : next_after_fail1860:;
20323 : }
20324 : else
20325 : {
20326 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1861;
20327 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1861;
20328 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1861;
20329 0 : {
20330 0 : tree res_op0;
20331 0 : {
20332 0 : tree _o1[1], _r1;
20333 0 : _o1[0] = captures[2];
20334 0 : if (TREE_TYPE (_o1[0]) != stype)
20335 : {
20336 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20337 : }
20338 : else
20339 : _r1 = _o1[0];
20340 0 : res_op0 = _r1;
20341 : }
20342 0 : tree _r;
20343 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20344 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
20345 0 : return _r;
20346 : }
20347 0 : next_after_fail1861:;
20348 : }
20349 : }
20350 : }
20351 : else
20352 : {
20353 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1862;
20354 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1862;
20355 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1862;
20356 0 : {
20357 0 : tree res_op0;
20358 0 : res_op0 = captures[2];
20359 0 : tree _r;
20360 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20361 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
20362 0 : return _r;
20363 : }
20364 0 : next_after_fail1862:;
20365 : }
20366 : }
20367 : }
20368 : }
20369 : break;
20370 : }
20371 : default:;
20372 : }
20373 : }
20374 : break;
20375 : }
20376 886064 : default:;
20377 : }
20378 886064 : if (zerop (_q21))
20379 : {
20380 195815 : switch (TREE_CODE (_p2))
20381 : {
20382 306 : case NEGATE_EXPR:
20383 306 : {
20384 306 : tree _q60 = TREE_OPERAND (_p2, 0);
20385 306 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20386 : {
20387 131 : {
20388 131 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20389 131 : const enum tree_code cmp = GT_EXPR;
20390 131 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20391 99 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20392 198 : && element_precision (captures[1])
20393 99 : <= element_precision (captures[0])
20394 99 : && bitwise_equal_p (captures[1], captures[2])
20395 225 : && (!VECTOR_TYPE_P (type)
20396 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20397 : )
20398 : {
20399 94 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20400 : )
20401 : {
20402 0 : {
20403 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20404 0 : if (types_match (captures[0], stype)
20405 : )
20406 : {
20407 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1863;
20408 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1863;
20409 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1863;
20410 0 : {
20411 0 : tree res_op0;
20412 0 : res_op0 = captures[0];
20413 0 : tree _r;
20414 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
20416 0 : return _r;
20417 : }
20418 37 : next_after_fail1863:;
20419 : }
20420 : else
20421 : {
20422 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1864;
20423 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1864;
20424 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1864;
20425 0 : {
20426 0 : tree res_op0;
20427 0 : {
20428 0 : tree _o1[1], _r1;
20429 0 : _o1[0] = captures[2];
20430 0 : if (TREE_TYPE (_o1[0]) != stype)
20431 : {
20432 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20433 : }
20434 : else
20435 : _r1 = _o1[0];
20436 0 : res_op0 = _r1;
20437 : }
20438 0 : tree _r;
20439 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20440 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
20441 0 : return _r;
20442 : }
20443 37 : next_after_fail1864:;
20444 : }
20445 : }
20446 : }
20447 : else
20448 : {
20449 94 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1865;
20450 94 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1865;
20451 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1865;
20452 94 : {
20453 94 : tree res_op0;
20454 94 : res_op0 = captures[2];
20455 94 : tree _r;
20456 94 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20457 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
20458 94 : return _r;
20459 : }
20460 37 : next_after_fail1865:;
20461 : }
20462 : }
20463 : }
20464 : }
20465 : break;
20466 : }
20467 : default:;
20468 : }
20469 : }
20470 885970 : switch (TREE_CODE (_q20))
20471 : {
20472 956 : case MINUS_EXPR:
20473 956 : {
20474 956 : tree _q30 = TREE_OPERAND (_q20, 0);
20475 956 : tree _q31 = TREE_OPERAND (_q20, 1);
20476 956 : if (zerop (_q21))
20477 : {
20478 160 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20479 : {
20480 15 : switch (TREE_CODE (_p2))
20481 : {
20482 9 : case MINUS_EXPR:
20483 9 : {
20484 9 : tree _q80 = TREE_OPERAND (_p2, 0);
20485 9 : tree _q81 = TREE_OPERAND (_p2, 1);
20486 9 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20487 : {
20488 9 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20489 : {
20490 9 : {
20491 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20492 9 : const enum tree_code cmp = GT_EXPR;
20493 9 : if (!HONOR_SIGNED_ZEROS (type)
20494 9 : && !TYPE_UNSIGNED (type)
20495 18 : && (!VECTOR_TYPE_P (type)
20496 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20497 : )
20498 : {
20499 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1866;
20500 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1866;
20501 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1866;
20502 9 : {
20503 9 : tree res_op0;
20504 9 : res_op0 = captures[0];
20505 9 : tree _r;
20506 9 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20507 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
20508 9 : return _r;
20509 : }
20510 0 : next_after_fail1866:;
20511 : }
20512 : }
20513 : }
20514 : }
20515 : break;
20516 : }
20517 : default:;
20518 : }
20519 : }
20520 : }
20521 : break;
20522 : }
20523 : default:;
20524 : }
20525 : break;
20526 : }
20527 1361178 : case LE_EXPR:
20528 1361178 : {
20529 1361178 : tree _q20 = TREE_OPERAND (_p0, 0);
20530 1361178 : tree _q21 = TREE_OPERAND (_p0, 1);
20531 1361178 : switch (TREE_CODE (_q20))
20532 : {
20533 140853 : CASE_CONVERT:
20534 140853 : {
20535 140853 : tree _q30 = TREE_OPERAND (_q20, 0);
20536 140853 : if (zerop (_q21))
20537 : {
20538 1303 : switch (TREE_CODE (_p2))
20539 : {
20540 0 : case NEGATE_EXPR:
20541 0 : {
20542 0 : tree _q70 = TREE_OPERAND (_p2, 0);
20543 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20544 : {
20545 0 : {
20546 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20547 0 : const enum tree_code cmp = LE_EXPR;
20548 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20549 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20550 0 : && element_precision (captures[1])
20551 0 : <= element_precision (captures[0])
20552 0 : && bitwise_equal_p (captures[1], captures[2])
20553 0 : && (!VECTOR_TYPE_P (type)
20554 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
20555 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
20556 : )
20557 : {
20558 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
20559 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
20560 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20561 : )
20562 : {
20563 0 : {
20564 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20565 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
20566 0 : if (types_match (captures[0], stype)
20567 : )
20568 : {
20569 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1867;
20570 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1867;
20571 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1867;
20572 0 : {
20573 0 : tree res_op0;
20574 0 : {
20575 0 : tree _o1[1], _r1;
20576 0 : {
20577 0 : tree _o2[1], _r2;
20578 0 : _o2[0] = captures[0];
20579 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20580 0 : _o1[0] = _r2;
20581 : }
20582 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20583 0 : res_op0 = _r1;
20584 : }
20585 0 : tree _r;
20586 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20587 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
20588 0 : return _r;
20589 : }
20590 0 : next_after_fail1867:;
20591 : }
20592 : else
20593 : {
20594 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1868;
20595 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1868;
20596 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1868;
20597 0 : {
20598 0 : tree res_op0;
20599 0 : {
20600 0 : tree _o1[1], _r1;
20601 0 : {
20602 0 : tree _o2[1], _r2;
20603 0 : {
20604 0 : tree _o3[1], _r3;
20605 0 : _o3[0] = captures[2];
20606 0 : if (TREE_TYPE (_o3[0]) != stype)
20607 : {
20608 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
20609 : }
20610 : else
20611 : _r3 = _o3[0];
20612 0 : _o2[0] = _r3;
20613 : }
20614 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20615 0 : _o1[0] = _r2;
20616 : }
20617 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20618 0 : res_op0 = _r1;
20619 : }
20620 0 : tree _r;
20621 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
20623 0 : return _r;
20624 : }
20625 0 : next_after_fail1868:;
20626 : }
20627 : }
20628 : }
20629 : else
20630 : {
20631 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1869;
20632 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1869;
20633 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1869;
20634 0 : {
20635 0 : tree res_op0;
20636 0 : {
20637 0 : tree _o1[1], _r1;
20638 0 : {
20639 0 : tree _o2[1], _r2;
20640 0 : _o2[0] = captures[2];
20641 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
20642 0 : _o1[0] = _r2;
20643 : }
20644 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20645 0 : res_op0 = _r1;
20646 : }
20647 0 : tree _r;
20648 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20649 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
20650 0 : return _r;
20651 : }
20652 0 : next_after_fail1869:;
20653 : }
20654 : }
20655 : }
20656 : }
20657 : break;
20658 : }
20659 : default:;
20660 : }
20661 : }
20662 : break;
20663 : }
20664 1361178 : default:;
20665 : }
20666 1361178 : if (zerop (_q21))
20667 : {
20668 122696 : switch (TREE_CODE (_p2))
20669 : {
20670 7 : case NEGATE_EXPR:
20671 7 : {
20672 7 : tree _q60 = TREE_OPERAND (_p2, 0);
20673 7 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20674 : {
20675 7 : {
20676 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20677 7 : const enum tree_code cmp = LE_EXPR;
20678 7 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20679 7 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20680 14 : && element_precision (captures[1])
20681 7 : <= element_precision (captures[0])
20682 7 : && bitwise_equal_p (captures[1], captures[2])
20683 14 : && (!VECTOR_TYPE_P (type)
20684 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
20685 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
20686 : )
20687 : {
20688 14 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
20689 7 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
20690 7 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20691 : )
20692 : {
20693 7 : {
20694 7 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20695 7 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
20696 7 : if (types_match (captures[0], stype)
20697 : )
20698 : {
20699 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1870;
20700 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1870;
20701 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1870;
20702 7 : {
20703 7 : tree res_op0;
20704 7 : {
20705 7 : tree _o1[1], _r1;
20706 7 : {
20707 7 : tree _o2[1], _r2;
20708 7 : _o2[0] = captures[0];
20709 7 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20710 7 : _o1[0] = _r2;
20711 : }
20712 7 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20713 7 : res_op0 = _r1;
20714 : }
20715 7 : tree _r;
20716 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20717 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
20718 7 : return _r;
20719 : }
20720 0 : next_after_fail1870:;
20721 : }
20722 : else
20723 : {
20724 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1871;
20725 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1871;
20726 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1871;
20727 0 : {
20728 0 : tree res_op0;
20729 0 : {
20730 0 : tree _o1[1], _r1;
20731 0 : {
20732 0 : tree _o2[1], _r2;
20733 0 : {
20734 0 : tree _o3[1], _r3;
20735 0 : _o3[0] = captures[2];
20736 0 : if (TREE_TYPE (_o3[0]) != stype)
20737 : {
20738 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
20739 : }
20740 : else
20741 : _r3 = _o3[0];
20742 0 : _o2[0] = _r3;
20743 : }
20744 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20745 0 : _o1[0] = _r2;
20746 : }
20747 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20748 0 : res_op0 = _r1;
20749 : }
20750 0 : tree _r;
20751 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20752 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
20753 0 : return _r;
20754 : }
20755 0 : next_after_fail1871:;
20756 : }
20757 : }
20758 : }
20759 : else
20760 : {
20761 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1872;
20762 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1872;
20763 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1872;
20764 0 : {
20765 0 : tree res_op0;
20766 0 : {
20767 0 : tree _o1[1], _r1;
20768 0 : {
20769 0 : tree _o2[1], _r2;
20770 0 : _o2[0] = captures[2];
20771 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
20772 0 : _o1[0] = _r2;
20773 : }
20774 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20775 0 : res_op0 = _r1;
20776 : }
20777 0 : tree _r;
20778 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20779 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
20780 0 : return _r;
20781 : }
20782 0 : next_after_fail1872:;
20783 : }
20784 : }
20785 : }
20786 : }
20787 : break;
20788 : }
20789 : default:;
20790 : }
20791 : }
20792 1361171 : switch (TREE_CODE (_q20))
20793 : {
20794 193 : case MINUS_EXPR:
20795 193 : {
20796 193 : tree _q30 = TREE_OPERAND (_q20, 0);
20797 193 : tree _q31 = TREE_OPERAND (_q20, 1);
20798 193 : if (zerop (_q21))
20799 : {
20800 148 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20801 : {
20802 0 : switch (TREE_CODE (_p2))
20803 : {
20804 0 : case MINUS_EXPR:
20805 0 : {
20806 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20807 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20808 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20809 : {
20810 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20811 : {
20812 0 : {
20813 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20814 0 : const enum tree_code cmp = LE_EXPR;
20815 0 : if (!HONOR_SIGNED_ZEROS (type)
20816 0 : && !TYPE_UNSIGNED (type)
20817 : )
20818 : {
20819 0 : if (ANY_INTEGRAL_TYPE_P (type)
20820 0 : && !TYPE_OVERFLOW_WRAPS (type)
20821 0 : && (!VECTOR_TYPE_P (type)
20822 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
20823 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
20824 : )
20825 : {
20826 0 : {
20827 0 : tree utype = unsigned_type_for (type);
20828 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1873;
20829 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1873;
20830 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1873;
20831 0 : {
20832 0 : tree res_op0;
20833 0 : {
20834 0 : tree _o1[1], _r1;
20835 0 : {
20836 0 : tree _o2[1], _r2;
20837 0 : _o2[0] = captures[0];
20838 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20839 0 : _o1[0] = _r2;
20840 : }
20841 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20842 0 : res_op0 = _r1;
20843 : }
20844 0 : tree _r;
20845 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20846 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
20847 0 : return _r;
20848 : }
20849 0 : next_after_fail1873:;
20850 : }
20851 : }
20852 : else
20853 : {
20854 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1874;
20855 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1874;
20856 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1874;
20857 0 : {
20858 0 : tree res_op0;
20859 0 : {
20860 0 : tree _o1[1], _r1;
20861 0 : _o1[0] = captures[0];
20862 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20863 0 : res_op0 = _r1;
20864 : }
20865 0 : tree _r;
20866 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
20867 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20868 0 : return _r;
20869 : }
20870 0 : next_after_fail1874:;
20871 : }
20872 : }
20873 : }
20874 : }
20875 : }
20876 : break;
20877 : }
20878 : default:;
20879 : }
20880 : }
20881 : }
20882 : break;
20883 : }
20884 : default:;
20885 : }
20886 : break;
20887 : }
20888 1751751 : case LT_EXPR:
20889 1751751 : {
20890 1751751 : tree _q20 = TREE_OPERAND (_p0, 0);
20891 1751751 : tree _q21 = TREE_OPERAND (_p0, 1);
20892 1751751 : switch (TREE_CODE (_q20))
20893 : {
20894 102906 : CASE_CONVERT:
20895 102906 : {
20896 102906 : tree _q30 = TREE_OPERAND (_q20, 0);
20897 102906 : if (zerop (_q21))
20898 : {
20899 15435 : switch (TREE_CODE (_p2))
20900 : {
20901 8 : case NEGATE_EXPR:
20902 8 : {
20903 8 : tree _q70 = TREE_OPERAND (_p2, 0);
20904 8 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20905 : {
20906 0 : {
20907 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20908 0 : const enum tree_code cmp = LT_EXPR;
20909 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20910 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20911 0 : && element_precision (captures[1])
20912 0 : <= element_precision (captures[0])
20913 0 : && bitwise_equal_p (captures[1], captures[2])
20914 0 : && (!VECTOR_TYPE_P (type)
20915 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
20916 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
20917 : )
20918 : {
20919 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
20920 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
20921 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20922 : )
20923 : {
20924 0 : {
20925 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20926 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
20927 0 : if (types_match (captures[0], stype)
20928 : )
20929 : {
20930 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1875;
20931 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1875;
20932 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1875;
20933 0 : {
20934 0 : tree res_op0;
20935 0 : {
20936 0 : tree _o1[1], _r1;
20937 0 : {
20938 0 : tree _o2[1], _r2;
20939 0 : _o2[0] = captures[0];
20940 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20941 0 : _o1[0] = _r2;
20942 : }
20943 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20944 0 : res_op0 = _r1;
20945 : }
20946 0 : tree _r;
20947 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
20949 0 : return _r;
20950 : }
20951 0 : next_after_fail1875:;
20952 : }
20953 : else
20954 : {
20955 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1876;
20956 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1876;
20957 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1876;
20958 0 : {
20959 0 : tree res_op0;
20960 0 : {
20961 0 : tree _o1[1], _r1;
20962 0 : {
20963 0 : tree _o2[1], _r2;
20964 0 : {
20965 0 : tree _o3[1], _r3;
20966 0 : _o3[0] = captures[2];
20967 0 : if (TREE_TYPE (_o3[0]) != stype)
20968 : {
20969 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
20970 : }
20971 : else
20972 : _r3 = _o3[0];
20973 0 : _o2[0] = _r3;
20974 : }
20975 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
20976 0 : _o1[0] = _r2;
20977 : }
20978 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
20979 0 : res_op0 = _r1;
20980 : }
20981 0 : tree _r;
20982 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
20983 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
20984 0 : return _r;
20985 : }
20986 0 : next_after_fail1876:;
20987 : }
20988 : }
20989 : }
20990 : else
20991 : {
20992 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1877;
20993 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1877;
20994 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1877;
20995 0 : {
20996 0 : tree res_op0;
20997 0 : {
20998 0 : tree _o1[1], _r1;
20999 0 : {
21000 0 : tree _o2[1], _r2;
21001 0 : _o2[0] = captures[2];
21002 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21003 0 : _o1[0] = _r2;
21004 : }
21005 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21006 0 : res_op0 = _r1;
21007 : }
21008 0 : tree _r;
21009 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21010 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
21011 0 : return _r;
21012 : }
21013 0 : next_after_fail1877:;
21014 : }
21015 : }
21016 : }
21017 : }
21018 : break;
21019 : }
21020 : default:;
21021 : }
21022 : }
21023 : break;
21024 : }
21025 1751751 : default:;
21026 : }
21027 1751751 : if (zerop (_q21))
21028 : {
21029 373223 : switch (TREE_CODE (_p2))
21030 : {
21031 33 : case NEGATE_EXPR:
21032 33 : {
21033 33 : tree _q60 = TREE_OPERAND (_p2, 0);
21034 33 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21035 : {
21036 25 : {
21037 25 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21038 25 : const enum tree_code cmp = LT_EXPR;
21039 25 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21040 25 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21041 50 : && element_precision (captures[1])
21042 25 : <= element_precision (captures[0])
21043 25 : && bitwise_equal_p (captures[1], captures[2])
21044 50 : && (!VECTOR_TYPE_P (type)
21045 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21046 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21047 : )
21048 : {
21049 50 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21050 25 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21051 26 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21052 : )
21053 : {
21054 24 : {
21055 24 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21056 24 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21057 24 : if (types_match (captures[0], stype)
21058 : )
21059 : {
21060 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1878;
21061 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1878;
21062 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1878;
21063 24 : {
21064 24 : tree res_op0;
21065 24 : {
21066 24 : tree _o1[1], _r1;
21067 24 : {
21068 24 : tree _o2[1], _r2;
21069 24 : _o2[0] = captures[0];
21070 24 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21071 24 : _o1[0] = _r2;
21072 : }
21073 24 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21074 24 : res_op0 = _r1;
21075 : }
21076 24 : tree _r;
21077 24 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21078 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
21079 24 : return _r;
21080 : }
21081 0 : next_after_fail1878:;
21082 : }
21083 : else
21084 : {
21085 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1879;
21086 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1879;
21087 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1879;
21088 0 : {
21089 0 : tree res_op0;
21090 0 : {
21091 0 : tree _o1[1], _r1;
21092 0 : {
21093 0 : tree _o2[1], _r2;
21094 0 : {
21095 0 : tree _o3[1], _r3;
21096 0 : _o3[0] = captures[2];
21097 0 : if (TREE_TYPE (_o3[0]) != stype)
21098 : {
21099 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21100 : }
21101 : else
21102 : _r3 = _o3[0];
21103 0 : _o2[0] = _r3;
21104 : }
21105 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21106 0 : _o1[0] = _r2;
21107 : }
21108 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21109 0 : res_op0 = _r1;
21110 : }
21111 0 : tree _r;
21112 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21113 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
21114 0 : return _r;
21115 : }
21116 0 : next_after_fail1879:;
21117 : }
21118 : }
21119 : }
21120 : else
21121 : {
21122 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1880;
21123 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1880;
21124 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1880;
21125 1 : {
21126 1 : tree res_op0;
21127 1 : {
21128 1 : tree _o1[1], _r1;
21129 1 : {
21130 1 : tree _o2[1], _r2;
21131 1 : _o2[0] = captures[2];
21132 1 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21133 1 : _o1[0] = _r2;
21134 : }
21135 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21136 1 : res_op0 = _r1;
21137 : }
21138 1 : tree _r;
21139 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21140 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
21141 1 : return _r;
21142 : }
21143 0 : next_after_fail1880:;
21144 : }
21145 : }
21146 : }
21147 : }
21148 : break;
21149 : }
21150 : default:;
21151 : }
21152 : }
21153 1751726 : switch (TREE_CODE (_q20))
21154 : {
21155 11286 : case MINUS_EXPR:
21156 11286 : {
21157 11286 : tree _q30 = TREE_OPERAND (_q20, 0);
21158 11286 : tree _q31 = TREE_OPERAND (_q20, 1);
21159 11286 : if (zerop (_q21))
21160 : {
21161 7376 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21162 : {
21163 0 : switch (TREE_CODE (_p2))
21164 : {
21165 0 : case MINUS_EXPR:
21166 0 : {
21167 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21168 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21169 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21170 : {
21171 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21172 : {
21173 0 : {
21174 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21175 0 : const enum tree_code cmp = LT_EXPR;
21176 0 : if (!HONOR_SIGNED_ZEROS (type)
21177 0 : && !TYPE_UNSIGNED (type)
21178 : )
21179 : {
21180 0 : if (ANY_INTEGRAL_TYPE_P (type)
21181 0 : && !TYPE_OVERFLOW_WRAPS (type)
21182 0 : && (!VECTOR_TYPE_P (type)
21183 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21184 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21185 : )
21186 : {
21187 0 : {
21188 0 : tree utype = unsigned_type_for (type);
21189 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1881;
21190 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1881;
21191 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1881;
21192 0 : {
21193 0 : tree res_op0;
21194 0 : {
21195 0 : tree _o1[1], _r1;
21196 0 : {
21197 0 : tree _o2[1], _r2;
21198 0 : _o2[0] = captures[0];
21199 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21200 0 : _o1[0] = _r2;
21201 : }
21202 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21203 0 : res_op0 = _r1;
21204 : }
21205 0 : tree _r;
21206 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21207 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
21208 0 : return _r;
21209 : }
21210 0 : next_after_fail1881:;
21211 : }
21212 : }
21213 : else
21214 : {
21215 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1882;
21216 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1882;
21217 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1882;
21218 0 : {
21219 0 : tree res_op0;
21220 0 : {
21221 0 : tree _o1[1], _r1;
21222 0 : _o1[0] = captures[0];
21223 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21224 0 : res_op0 = _r1;
21225 : }
21226 0 : tree _r;
21227 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21228 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
21229 0 : return _r;
21230 : }
21231 0 : next_after_fail1882:;
21232 : }
21233 : }
21234 : }
21235 : }
21236 : }
21237 : break;
21238 : }
21239 : default:;
21240 : }
21241 : }
21242 : }
21243 : break;
21244 : }
21245 1751726 : default:;
21246 : }
21247 1751726 : if (integer_zerop (_q21))
21248 : {
21249 317212 : switch (TREE_CODE (_p1))
21250 : {
21251 21 : case BIT_NOT_EXPR:
21252 21 : {
21253 21 : tree _q50 = TREE_OPERAND (_p1, 0);
21254 21 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
21255 : {
21256 13 : {
21257 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
21258 13 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
21259 13 : if (res) return res;
21260 : }
21261 : }
21262 : break;
21263 : }
21264 317199 : default:;
21265 : }
21266 317199 : switch (TREE_CODE (_p2))
21267 : {
21268 8 : case BIT_NOT_EXPR:
21269 8 : {
21270 8 : tree _q60 = TREE_OPERAND (_p2, 0);
21271 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21272 : {
21273 8 : {
21274 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21275 8 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
21276 8 : if (res) return res;
21277 : }
21278 : }
21279 : break;
21280 : }
21281 317191 : default:;
21282 : }
21283 317191 : switch (TREE_CODE (_p1))
21284 : {
21285 281039 : case INTEGER_CST:
21286 281039 : {
21287 281039 : if (integer_zerop (_p2))
21288 : {
21289 8685 : {
21290 8685 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21291 8685 : if (integer_pow2p (captures[1])
21292 8685 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
21293 : )
21294 : {
21295 8468 : {
21296 8468 : int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1;
21297 8468 : if (shift >= 0
21298 : )
21299 : {
21300 8453 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1883;
21301 8453 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1883;
21302 8453 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1883;
21303 8453 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1883;
21304 8453 : {
21305 8453 : tree res_op0;
21306 8453 : {
21307 8453 : tree _o1[1], _r1;
21308 8453 : {
21309 8453 : tree _o2[2], _r2;
21310 8453 : _o2[0] = captures[0];
21311 8453 : _o2[1] = build_int_cst (integer_type_node, shift);
21312 8453 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
21313 8453 : _o1[0] = _r2;
21314 : }
21315 8453 : if (TREE_TYPE (_o1[0]) != type)
21316 : {
21317 8428 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
21318 : }
21319 : else
21320 : _r1 = _o1[0];
21321 8453 : res_op0 = _r1;
21322 : }
21323 8453 : tree res_op1;
21324 8453 : res_op1 = captures[1];
21325 8453 : tree _r;
21326 8453 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
21327 8453 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
21328 8468 : return _r;
21329 : }
21330 : next_after_fail1883:;
21331 : }
21332 : else
21333 : {
21334 15 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1884;
21335 15 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1884;
21336 15 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1884;
21337 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1884;
21338 15 : {
21339 15 : tree res_op0;
21340 15 : {
21341 15 : tree _o1[1], _r1;
21342 15 : _o1[0] = captures[0];
21343 15 : if (TREE_TYPE (_o1[0]) != type)
21344 : {
21345 15 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
21346 : }
21347 : else
21348 : _r1 = _o1[0];
21349 15 : res_op0 = _r1;
21350 : }
21351 15 : tree res_op1;
21352 15 : res_op1 = captures[1];
21353 15 : tree _r;
21354 15 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
21355 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
21356 15 : return _r;
21357 : }
21358 : next_after_fail1884:;
21359 : }
21360 : }
21361 : }
21362 : }
21363 : }
21364 : break;
21365 : }
21366 : default:;
21367 : }
21368 : }
21369 : break;
21370 : }
21371 11502696 : default:;
21372 : }
21373 11502696 : {
21374 11502696 : tree _p0_pops[1];
21375 11502696 : if (tree_logical_inverted_value (_p0, _p0_pops))
21376 : {
21377 466917 : tree _q20 = _p0_pops[0];
21378 466917 : if (tree_truth_valued_p (_q20))
21379 : {
21380 4464 : {
21381 4464 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
21382 8928 : if (COND_EXPR == VEC_COND_EXPR
21383 4464 : || TYPE_UNSIGNED (TREE_TYPE (captures[0]))
21384 : )
21385 : {
21386 3150 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1885;
21387 46 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1885;
21388 37 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1885;
21389 37 : {
21390 37 : tree res_op0;
21391 37 : res_op0 = captures[0];
21392 37 : tree res_op1;
21393 37 : res_op1 = captures[2];
21394 37 : tree res_op2;
21395 37 : res_op2 = captures[1];
21396 37 : tree _r;
21397 37 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
21398 37 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
21399 37 : return _r;
21400 : }
21401 4427 : next_after_fail1885:;
21402 : }
21403 : }
21404 : }
21405 : }
21406 : }
21407 11502659 : return NULL_TREE;
21408 : }
21409 : #pragma GCC diagnostic pop
|