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 1902357 : tree_power_of_two_cand (tree t, tree *res_ops)
11 : {
12 1902357 : const tree type = TREE_TYPE (t);
13 1902357 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1902357 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1901592 : switch (TREE_CODE (t))
16 : {
17 1573142 : case INTEGER_CST:
18 1573142 : {
19 1573142 : {
20 1573142 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 1573142 : {
22 1573142 : res_ops[0] = captures[0];
23 1573142 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 16 : break;
28 : }
29 16 : case LSHIFT_EXPR:
30 16 : {
31 16 : tree _p0 = TREE_OPERAND (t, 0);
32 16 : tree _p1 = TREE_OPERAND (t, 1);
33 16 : switch (TREE_CODE (_p0))
34 : {
35 16 : case INTEGER_CST:
36 16 : {
37 16 : {
38 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
39 16 : {
40 16 : res_ops[0] = captures[0];
41 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 13, __FILE__, __LINE__, false);
42 16 : return true;
43 : }
44 : }
45 : break;
46 : }
47 : default:;
48 : }
49 : break;
50 : }
51 : default:;
52 : }
53 : return false;
54 : }
55 :
56 : bool
57 81446232 : tree_with_possible_nonzero_bits (tree t)
58 : {
59 81446232 : const tree type = TREE_TYPE (t);
60 81446232 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
61 81446232 : if (TREE_SIDE_EFFECTS (t)) return false;
62 76448599 : switch (TREE_CODE (t))
63 : {
64 1984091 : case BIT_AND_EXPR:
65 1984091 : {
66 1984091 : tree _p0 = TREE_OPERAND (t, 0);
67 1984091 : tree _p1 = TREE_OPERAND (t, 1);
68 1984091 : if (tree_with_possible_nonzero_bits_1 (_p0))
69 : {
70 865022 : {
71 865022 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
72 865022 : {
73 865022 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
74 865022 : return true;
75 : }
76 : }
77 : }
78 1119069 : if (tree_with_possible_nonzero_bits_1 (_p1))
79 : {
80 943724 : {
81 943724 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
82 943724 : {
83 943724 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
84 943724 : return true;
85 : }
86 : }
87 : }
88 : break;
89 : }
90 74639853 : default:;
91 : }
92 74639853 : if (tree_with_possible_nonzero_bits_1 (t))
93 : {
94 40484739 : {
95 40484739 : tree captures[1] ATTRIBUTE_UNUSED = { t };
96 40484739 : {
97 40484739 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 36, __FILE__, __LINE__, false);
98 40484739 : return true;
99 : }
100 : }
101 : }
102 : return false;
103 : }
104 :
105 : bool
106 750518 : tree_vec_same_elem_p (tree t)
107 : {
108 750518 : const tree type = TREE_TYPE (t);
109 750518 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
110 750518 : if (TREE_SIDE_EFFECTS (t)) return false;
111 750518 : switch (TREE_CODE (t))
112 : {
113 0 : case VEC_DUPLICATE_EXPR:
114 0 : {
115 0 : tree _p0 = TREE_OPERAND (t, 0);
116 0 : {
117 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
118 0 : {
119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
120 0 : return true;
121 : }
122 : }
123 : break;
124 : }
125 : case CONSTRUCTOR:
126 : {
127 : {
128 : tree captures[1] ATTRIBUTE_UNUSED = { t };
129 : if (TREE_CODE (captures[0]) == SSA_NAME
130 : && uniform_vector_p (gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])))
131 : )
132 : {
133 : {
134 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
135 : return true;
136 : }
137 : }
138 : }
139 : break;
140 : }
141 750518 : default:;
142 : }
143 750518 : {
144 750518 : tree captures[1] ATTRIBUTE_UNUSED = { t };
145 750518 : if (uniform_vector_p (captures[0])
146 : )
147 : {
148 13913 : {
149 13913 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
150 13913 : return true;
151 : }
152 : }
153 : }
154 : return false;
155 : }
156 :
157 : tree
158 196 : generic_simplify_14 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
160 : {
161 196 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
162 196 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail89;
163 196 : {
164 196 : if (! tree_invariant_p (captures[3])) goto next_after_fail89;
165 15 : tree res_op0;
166 15 : {
167 15 : tree _o1[2], _r1;
168 15 : _o1[0] = captures[2];
169 15 : _o1[1] = unshare_expr (captures[3]);
170 15 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
171 15 : res_op0 = _r1;
172 : }
173 15 : tree res_op1;
174 15 : {
175 15 : tree _o1[2], _r1;
176 15 : _o1[0] = captures[4];
177 15 : _o1[1] = captures[3];
178 15 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
179 15 : if (EXPR_P (_r1))
180 14 : goto next_after_fail89;
181 1 : res_op1 = _r1;
182 : }
183 1 : tree _r;
184 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
185 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 62, __FILE__, __LINE__, true);
186 : return _r;
187 : }
188 : next_after_fail89:;
189 : return NULL_TREE;
190 : }
191 :
192 : tree
193 0 : generic_simplify_23 (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 (op))
196 : {
197 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
198 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail98;
199 0 : {
200 0 : tree res_op0;
201 0 : res_op0 = captures[0];
202 0 : tree res_op1;
203 0 : res_op1 = captures[1];
204 0 : tree _r;
205 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
206 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 71, __FILE__, __LINE__, true);
207 : return _r;
208 : }
209 0 : next_after_fail98:;
210 0 : return NULL_TREE;
211 : }
212 :
213 : tree
214 390 : generic_simplify_30 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
215 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
216 : const enum tree_code ARG_UNUSED (op),
217 : const enum tree_code ARG_UNUSED (rop))
218 : {
219 390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
220 390 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
221 390 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
222 : )
223 : {
224 390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail105;
225 390 : {
226 390 : tree res_op0;
227 390 : {
228 390 : tree _o1[1], _r1;
229 390 : _o1[0] = captures[0];
230 390 : if (TREE_TYPE (_o1[0]) != type)
231 : {
232 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
233 : }
234 : else
235 : _r1 = _o1[0];
236 390 : res_op0 = _r1;
237 : }
238 390 : tree res_op1;
239 390 : {
240 390 : tree _o1[2], _r1;
241 390 : {
242 390 : tree _o2[1], _r2;
243 390 : _o2[0] = captures[1];
244 390 : if (TREE_TYPE (_o2[0]) != type)
245 : {
246 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
247 : }
248 : else
249 : _r2 = _o2[0];
250 390 : _o1[0] = _r2;
251 : }
252 390 : {
253 390 : tree _o2[1], _r2;
254 390 : _o2[0] = captures[2];
255 390 : if (TREE_TYPE (_o2[0]) != type)
256 : {
257 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
258 : }
259 : else
260 : _r2 = _o2[0];
261 390 : _o1[1] = _r2;
262 : }
263 390 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
264 390 : res_op1 = _r1;
265 : }
266 390 : tree _r;
267 390 : _r = fold_build2_loc (loc, rop, type, res_op0, res_op1);
268 390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 78, __FILE__, __LINE__, true);
269 390 : return _r;
270 : }
271 0 : next_after_fail105:;
272 : }
273 : return NULL_TREE;
274 : }
275 :
276 : tree
277 0 : generic_simplify_42 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
278 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
279 : const enum tree_code ARG_UNUSED (op))
280 : {
281 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
282 0 : if (INTEGRAL_TYPE_P (type)
283 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
284 : )
285 : {
286 0 : {
287 0 : tree t = type;
288 0 : if (!TYPE_OVERFLOW_WRAPS (t))
289 0 : t = unsigned_type_for (t);
290 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
291 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail119;
292 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail119;
293 0 : {
294 0 : tree res_op0;
295 0 : {
296 0 : tree _o1[2], _r1;
297 0 : {
298 0 : tree _o2[1], _r2;
299 0 : _o2[0] = captures[2];
300 0 : if (TREE_TYPE (_o2[0]) != t)
301 : {
302 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
303 : }
304 : else
305 : _r2 = _o2[0];
306 0 : _o1[0] = _r2;
307 : }
308 0 : _o1[1] = wide_int_to_tree (t, c);
309 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
310 0 : res_op0 = _r1;
311 : }
312 0 : tree _r;
313 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 90, __FILE__, __LINE__, true);
315 0 : return _r;
316 : }
317 0 : next_after_fail119:;
318 0 : }
319 : }
320 : return NULL_TREE;
321 : }
322 :
323 : tree
324 64 : generic_simplify_50 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
325 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
326 : const enum tree_code ARG_UNUSED (cmp),
327 : const enum tree_code ARG_UNUSED (icmp),
328 : const enum tree_code ARG_UNUSED (ncmp))
329 : {
330 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
331 64 : {
332 64 : enum tree_code ic = invert_tree_comparison
333 64 : (cmp, HONOR_NANS (captures[0]));
334 64 : if (ic == icmp
335 : )
336 : {
337 64 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail128;
338 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail128;
339 64 : {
340 64 : tree res_op0;
341 64 : res_op0 = captures[0];
342 64 : tree res_op1;
343 64 : res_op1 = captures[1];
344 64 : tree _r;
345 64 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
346 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, true);
347 64 : return _r;
348 : }
349 : next_after_fail128:;
350 : }
351 : else
352 : {
353 0 : if (ic == ncmp
354 : )
355 : {
356 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail129;
357 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail129;
358 0 : {
359 0 : tree res_op0;
360 0 : res_op0 = captures[0];
361 0 : tree res_op1;
362 0 : res_op1 = captures[1];
363 0 : tree _r;
364 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
365 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 97, __FILE__, __LINE__, true);
366 0 : return _r;
367 : }
368 : next_after_fail129:;
369 : }
370 : }
371 : }
372 : return NULL_TREE;
373 : }
374 :
375 : tree
376 239849 : generic_simplify_64 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
377 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
378 : const enum tree_code ARG_UNUSED (outer_op))
379 : {
380 239849 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
381 239849 : if (!TYPE_SATURATING (type)
382 : )
383 : {
384 239849 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
385 479691 : && !FIXED_POINT_TYPE_P (type)
386 : )
387 : {
388 239842 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
389 : )
390 : {
391 226390 : if (!CONSTANT_CLASS_P (captures[1])
392 : )
393 : {
394 226390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail151;
395 226390 : {
396 226390 : tree res_op0;
397 226390 : {
398 226390 : tree _o1[2], _r1;
399 226390 : {
400 226390 : tree _o2[1], _r2;
401 226390 : _o2[0] = captures[0];
402 226390 : if (TREE_TYPE (_o2[0]) != type)
403 : {
404 3335 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
405 : }
406 : else
407 : _r2 = _o2[0];
408 226390 : _o1[0] = _r2;
409 : }
410 226390 : _o1[1] = captures[2];
411 226390 : _r1 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
412 226390 : if (EXPR_P (_r1))
413 0 : goto next_after_fail151;
414 226390 : res_op0 = _r1;
415 : }
416 226390 : tree res_op1;
417 226390 : {
418 226390 : tree _o1[1], _r1;
419 226390 : _o1[0] = captures[1];
420 226390 : if (TREE_TYPE (_o1[0]) != type)
421 : {
422 3362 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
423 : }
424 : else
425 : _r1 = _o1[0];
426 226390 : res_op1 = _r1;
427 : }
428 226390 : tree _r;
429 226390 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
430 226390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 119, __FILE__, __LINE__, true);
431 226390 : return _r;
432 : }
433 : next_after_fail151:;
434 : }
435 : }
436 : else
437 : {
438 26904 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
439 26904 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
440 : )
441 : {
442 2317 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail152;
443 2317 : {
444 2317 : tree res_op0;
445 2317 : {
446 2317 : tree _o1[2], _r1;
447 2317 : {
448 2317 : tree _o2[2], _r2;
449 2317 : _o2[0] = captures[0];
450 2317 : {
451 2317 : tree _o3[1], _r3;
452 2317 : _o3[0] = captures[2];
453 2317 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
454 : {
455 2317 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
456 : }
457 : else
458 : _r3 = _o3[0];
459 2317 : _o2[1] = _r3;
460 : }
461 2317 : _r2 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
462 2317 : if (EXPR_P (_r2))
463 0 : goto next_after_fail152;
464 2317 : _o1[0] = _r2;
465 : }
466 2317 : _o1[1] = captures[1];
467 2317 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
468 2317 : res_op0 = _r1;
469 : }
470 2317 : tree _r;
471 2317 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
472 2317 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 120, __FILE__, __LINE__, true);
473 2317 : return _r;
474 : }
475 : next_after_fail152:;
476 : }
477 : else
478 : {
479 11135 : if (types_match (type, captures[1]) && !TYPE_OVERFLOW_SANITIZED (type)
480 : )
481 : {
482 11107 : {
483 11107 : tree cst = const_binop (outer_op, type, captures[0], captures[2]);
484 11107 : if (cst && !TREE_OVERFLOW (cst)
485 : )
486 : {
487 11100 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail153;
488 11100 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail153;
489 11100 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail153;
490 11100 : {
491 11100 : tree res_op0;
492 11100 : res_op0 = cst;
493 11100 : tree res_op1;
494 11100 : res_op1 = captures[1];
495 11100 : tree _r;
496 11100 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
497 11100 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 121, __FILE__, __LINE__, true);
498 11100 : return _r;
499 : }
500 : next_after_fail153:;
501 : }
502 : }
503 : }
504 : }
505 : }
506 : }
507 : }
508 : return NULL_TREE;
509 : }
510 :
511 : tree
512 1 : generic_simplify_87 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
513 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
514 : {
515 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
516 1 : if (INTEGRAL_TYPE_P (type)
517 : )
518 : {
519 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail178;
520 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail178;
521 1 : {
522 1 : tree res_op0;
523 1 : res_op0 = unshare_expr (captures[1]);
524 1 : tree res_op1;
525 1 : {
526 1 : tree _o1[2], _r1;
527 1 : _o1[0] = captures[4];
528 1 : _o1[1] = captures[1];
529 1 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
530 1 : res_op1 = _r1;
531 : }
532 1 : tree _r;
533 1 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
534 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 146, __FILE__, __LINE__, true);
535 1 : return _r;
536 : }
537 : next_after_fail178:;
538 : }
539 : return NULL_TREE;
540 : }
541 :
542 : tree
543 2661 : generic_simplify_95 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
544 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
545 : {
546 2661 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
547 2661 : if (!TYPE_SATURATING (type)
548 : )
549 : {
550 2661 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
551 2661 : && !TYPE_OVERFLOW_SANITIZED (type)
552 : )
553 : {
554 18 : {
555 18 : tree t1 = type;
556 18 : if (INTEGRAL_TYPE_P (type)
557 31 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
558 13 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
559 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail186;
560 18 : {
561 18 : tree res_op0;
562 18 : {
563 18 : tree _o1[2], _r1;
564 18 : {
565 18 : tree _o2[1], _r2;
566 18 : _o2[0] = captures[0];
567 18 : if (TREE_TYPE (_o2[0]) != t1)
568 : {
569 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
570 : }
571 : else
572 : _r2 = _o2[0];
573 18 : _o1[0] = _r2;
574 : }
575 18 : {
576 18 : tree _o2[1], _r2;
577 18 : _o2[0] = captures[1];
578 18 : if (TREE_TYPE (_o2[0]) != t1)
579 : {
580 5 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
581 : }
582 : else
583 : _r2 = _o2[0];
584 18 : _o1[1] = _r2;
585 : }
586 18 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
587 18 : res_op0 = _r1;
588 : }
589 18 : tree _r;
590 18 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
591 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 153, __FILE__, __LINE__, true);
592 18 : return _r;
593 : }
594 0 : next_after_fail186:;
595 : }
596 : }
597 : }
598 : return NULL_TREE;
599 : }
600 :
601 : tree
602 9 : generic_simplify_106 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
603 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
604 : {
605 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
606 9 : if (INTEGRAL_TYPE_P (type)
607 9 : && (
608 :
609 9 : || !TREE_SIDE_EFFECTS (captures[1]))
610 : )
611 : {
612 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail203;
613 2 : {
614 2 : tree res_op0;
615 2 : {
616 2 : tree _o1[1], _r1;
617 2 : _o1[0] = captures[2];
618 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
619 : {
620 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
621 : }
622 : else
623 : _r1 = _o1[0];
624 2 : res_op0 = _r1;
625 : }
626 2 : tree res_op1;
627 2 : res_op1 = captures[1];
628 2 : tree res_op2;
629 2 : res_op2 = captures[0];
630 2 : tree _r;
631 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
632 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 170, __FILE__, __LINE__, true);
633 2 : return _r;
634 : }
635 0 : next_after_fail203:;
636 : }
637 : return NULL_TREE;
638 : }
639 :
640 : tree
641 36 : generic_simplify_112 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
642 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
643 : const enum tree_code ARG_UNUSED (bitop),
644 : const enum tree_code ARG_UNUSED (cmp))
645 : {
646 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
647 72 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
648 36 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
649 72 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
650 : )
651 : {
652 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail209;
653 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail209;
654 36 : {
655 36 : tree res_op0;
656 36 : {
657 36 : tree _o1[2], _r1;
658 36 : _o1[0] = captures[0];
659 36 : {
660 36 : tree _o2[1], _r2;
661 36 : _o2[0] = captures[2];
662 36 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
663 : {
664 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
665 : }
666 : else
667 : _r2 = _o2[0];
668 36 : _o1[1] = _r2;
669 : }
670 36 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
671 36 : res_op0 = _r1;
672 : }
673 36 : tree res_op1;
674 36 : res_op1 = captures[1];
675 36 : tree _r;
676 36 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
677 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 176, __FILE__, __LINE__, true);
678 36 : return _r;
679 : }
680 : next_after_fail209:;
681 : }
682 : return NULL_TREE;
683 : }
684 :
685 : tree
686 0 : generic_simplify_123 (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 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
690 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail220;
691 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail220;
692 0 : {
693 0 : tree _r;
694 0 : _r = captures[2];
695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 185, __FILE__, __LINE__, true);
696 : return _r;
697 : }
698 : next_after_fail220:;
699 : return NULL_TREE;
700 : }
701 :
702 : tree
703 15 : generic_simplify_130 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
704 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
705 : const enum tree_code ARG_UNUSED (bitop))
706 : {
707 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
708 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail227;
709 15 : {
710 15 : tree res_op0;
711 15 : res_op0 = captures[0];
712 15 : tree res_op1;
713 15 : {
714 15 : tree _o1[1], _r1;
715 15 : _o1[0] = captures[2];
716 15 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
717 15 : res_op1 = _r1;
718 : }
719 15 : tree _r;
720 15 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
721 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 189, __FILE__, __LINE__, true);
722 : return _r;
723 : }
724 0 : next_after_fail227:;
725 0 : return NULL_TREE;
726 : }
727 :
728 : tree
729 0 : generic_simplify_141 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
730 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
731 : const enum tree_code ARG_UNUSED (op))
732 : {
733 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
734 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
735 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
736 : )
737 : {
738 0 : if (single_use (captures[4]) && single_use (captures[5])
739 : )
740 : {
741 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail241;
742 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail241;
743 0 : {
744 0 : tree res_op0;
745 0 : res_op0 = captures[0];
746 0 : tree res_op1;
747 0 : {
748 0 : tree _o1[1], _r1;
749 0 : _o1[0] = captures[6];
750 0 : if (TREE_TYPE (_o1[0]) != type)
751 : {
752 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
753 : }
754 : else
755 : _r1 = _o1[0];
756 0 : res_op1 = _r1;
757 : }
758 0 : tree _r;
759 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
760 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
761 0 : return _r;
762 : }
763 : next_after_fail241:;
764 : }
765 : else
766 : {
767 : if (single_use (captures[0]) && single_use (captures[1])
768 : )
769 : {
770 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail242;
771 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail242;
772 : {
773 : tree res_op0;
774 : {
775 : tree _o1[1], _r1;
776 : _o1[0] = captures[3];
777 : if (TREE_TYPE (_o1[0]) != type)
778 : {
779 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
780 : }
781 : else
782 : _r1 = _o1[0];
783 : res_op0 = _r1;
784 : }
785 : tree res_op1;
786 : res_op1 = captures[4];
787 : tree _r;
788 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
789 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
790 : return _r;
791 : }
792 : next_after_fail242:;
793 : }
794 : }
795 : }
796 : return NULL_TREE;
797 : }
798 :
799 : tree
800 4 : generic_simplify_156 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
801 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
802 : {
803 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
804 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail261;
805 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail261;
806 4 : {
807 4 : tree _r;
808 4 : _r = captures[2];
809 4 : if (TREE_SIDE_EFFECTS (captures[1]))
810 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
811 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 210, __FILE__, __LINE__, true);
812 : return _r;
813 : }
814 : next_after_fail261:;
815 : return NULL_TREE;
816 : }
817 :
818 : tree
819 0 : generic_simplify_161 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
820 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
821 : const enum tree_code ARG_UNUSED (cmp))
822 : {
823 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
824 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail284;
825 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail284;
826 0 : {
827 0 : tree res_op0;
828 0 : {
829 0 : tree _o1[2], _r1;
830 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
831 0 : _o1[1] = captures[3];
832 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
833 0 : res_op0 = _r1;
834 : }
835 0 : tree res_op1;
836 0 : res_op1 = captures[4];
837 0 : tree _r;
838 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
839 0 : if (TREE_SIDE_EFFECTS (captures[2]))
840 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
841 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 226, __FILE__, __LINE__, true);
842 : return _r;
843 : }
844 : next_after_fail284:;
845 : return NULL_TREE;
846 : }
847 :
848 : tree
849 4 : generic_simplify_171 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
850 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
851 : {
852 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
853 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail308;
854 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail308;
855 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail308;
856 4 : {
857 4 : tree _r;
858 4 : _r = captures[0];
859 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 231, __FILE__, __LINE__, true);
860 : return _r;
861 : }
862 : next_after_fail308:;
863 : return NULL_TREE;
864 : }
865 :
866 : tree
867 0 : generic_simplify_173 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
868 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
869 : const enum tree_code ARG_UNUSED (bitop),
870 : const enum tree_code ARG_UNUSED (result),
871 : const enum tree_code ARG_UNUSED (rresult))
872 : {
873 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
874 0 : if (INTEGRAL_TYPE_P (type)
875 0 : && !TYPE_UNSIGNED (type)
876 0 : && wi::eq_p (wi::to_wide (captures[1]), TYPE_PRECISION (type) - 1)
877 : )
878 : {
879 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail310;
880 0 : {
881 0 : tree res_op0;
882 0 : res_op0 = captures[0];
883 0 : tree res_op1;
884 0 : res_op1 = build_int_cst (type, bitop == BIT_IOR_EXPR ? -1 : 0);
885 0 : tree _r;
886 0 : _r = fold_build2_loc (loc, rresult, type, res_op0, res_op1);
887 0 : if (TREE_SIDE_EFFECTS (captures[1]))
888 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
889 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 232, __FILE__, __LINE__, true);
890 0 : return _r;
891 : }
892 0 : next_after_fail310:;
893 : }
894 : return NULL_TREE;
895 : }
896 :
897 : tree
898 4 : generic_simplify_180 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
899 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
900 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
901 : {
902 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
903 4 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
904 : )
905 : {
906 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail317;
907 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail317;
908 0 : {
909 0 : tree res_op0;
910 0 : res_op0 = captures[0];
911 0 : tree _r;
912 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
913 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 237, __FILE__, __LINE__, true);
914 0 : return _r;
915 : }
916 : next_after_fail317:;
917 : }
918 : return NULL_TREE;
919 : }
920 :
921 : tree
922 6184451 : generic_simplify_183 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
923 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
924 : const enum tree_code ARG_UNUSED (op))
925 : {
926 6184451 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
927 6184451 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail320;
928 6184451 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail320;
929 6184451 : {
930 6184451 : tree res_op0;
931 6184451 : res_op0 = captures[0];
932 6184451 : tree _r;
933 6184451 : _r = non_lvalue_loc (loc, res_op0);
934 6184451 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 239, __FILE__, __LINE__, true);
935 : return _r;
936 : }
937 : next_after_fail320:;
938 : return NULL_TREE;
939 : }
940 :
941 : tree
942 0 : generic_simplify_187 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
943 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
944 : {
945 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
946 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail324;
947 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail324;
948 0 : {
949 0 : tree _r;
950 0 : _r = build_zero_cst (type);
951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 242, __FILE__, __LINE__, true);
952 : return _r;
953 : }
954 : next_after_fail324:;
955 : return NULL_TREE;
956 : }
957 :
958 : tree
959 45998 : generic_simplify_190 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
960 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
961 : {
962 45998 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
963 45998 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
964 45998 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
965 : )
966 : {
967 43208 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail329;
968 43208 : {
969 43208 : tree res_op0;
970 43208 : {
971 43208 : tree _o1[1], _r1;
972 43208 : _o1[0] = captures[0];
973 43208 : if (TREE_TYPE (_o1[0]) != type)
974 : {
975 801 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
976 : }
977 : else
978 : _r1 = _o1[0];
979 43208 : res_op0 = _r1;
980 : }
981 43208 : tree res_op1;
982 43208 : {
983 43208 : tree _o1[1], _r1;
984 43208 : {
985 43208 : tree _o2[1], _r2;
986 43208 : _o2[0] = captures[1];
987 43208 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
988 43208 : _o1[0] = _r2;
989 : }
990 43208 : if (TREE_TYPE (_o1[0]) != type)
991 : {
992 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
993 : }
994 : else
995 : _r1 = _o1[0];
996 43208 : res_op1 = _r1;
997 : }
998 43208 : tree _r;
999 43208 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1000 43208 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 245, __FILE__, __LINE__, true);
1001 43208 : return _r;
1002 : }
1003 0 : next_after_fail329:;
1004 : }
1005 : return NULL_TREE;
1006 : }
1007 :
1008 : tree
1009 2 : generic_simplify_199 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1010 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1011 : const combined_fn ARG_UNUSED (SQRT_ALL))
1012 : {
1013 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1014 2 : if (flag_unsafe_math_optimizations
1015 : )
1016 : {
1017 2 : if (!tree_expr_maybe_signaling_nan_p (captures[1])
1018 : )
1019 : {
1020 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail339;
1021 2 : {
1022 2 : tree _r;
1023 2 : _r = captures[1];
1024 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 254, __FILE__, __LINE__, true);
1025 2 : return _r;
1026 : }
1027 0 : next_after_fail339:;
1028 : }
1029 : }
1030 : return NULL_TREE;
1031 : }
1032 :
1033 : tree
1034 9 : generic_simplify_202 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1035 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1036 : const combined_fn ARG_UNUSED (LDEXP))
1037 : {
1038 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1039 9 : if (flag_unsafe_math_optimizations
1040 : )
1041 : {
1042 9 : if (real_equal (TREE_REAL_CST_PTR (captures[1]), &dconst1)
1043 : )
1044 : {
1045 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail342;
1046 9 : {
1047 9 : tree res_op0;
1048 9 : res_op0 = captures[0];
1049 9 : tree res_op1;
1050 9 : res_op1 = captures[2];
1051 9 : tree _r;
1052 9 : _r = maybe_build_call_expr_loc (loc, LDEXP, type, 2, res_op0, res_op1);
1053 9 : if (!_r)
1054 0 : goto next_after_fail342;
1055 9 : if (TREE_SIDE_EFFECTS (captures[1]))
1056 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1057 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 257, __FILE__, __LINE__, true);
1058 9 : return _r;
1059 : }
1060 : next_after_fail342:;
1061 : }
1062 : }
1063 : return NULL_TREE;
1064 : }
1065 :
1066 : tree
1067 166 : generic_simplify_209 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1068 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1069 : const enum tree_code ARG_UNUSED (op))
1070 : {
1071 166 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1072 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1073 332 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
1074 166 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
1075 : && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0])))
1076 166 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1077 498 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
1078 : )
1079 : {
1080 166 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail349;
1081 166 : {
1082 166 : tree res_op0;
1083 166 : res_op0 = captures[2];
1084 166 : tree res_op1;
1085 166 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1086 166 : tree _r;
1087 166 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1088 166 : if (TREE_SIDE_EFFECTS (captures[3]))
1089 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1090 166 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 264, __FILE__, __LINE__, true);
1091 166 : return _r;
1092 : }
1093 0 : next_after_fail349:;
1094 : }
1095 : return NULL_TREE;
1096 : }
1097 :
1098 : tree
1099 7929 : generic_simplify_220 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1100 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1101 : const enum tree_code ARG_UNUSED (op))
1102 : {
1103 7929 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1104 7929 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail376;
1105 7929 : {
1106 7929 : tree res_op0;
1107 7929 : res_op0 = captures[1];
1108 7929 : tree res_op1;
1109 7929 : res_op1 = captures[2];
1110 7929 : tree _r;
1111 7929 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1112 7929 : if (TREE_SIDE_EFFECTS (captures[0]))
1113 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1114 7929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 290, __FILE__, __LINE__, true);
1115 : return _r;
1116 : }
1117 0 : next_after_fail376:;
1118 0 : return NULL_TREE;
1119 : }
1120 :
1121 : tree
1122 61116 : generic_simplify_226 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1123 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1124 : const enum tree_code ARG_UNUSED (neeq))
1125 : {
1126 61116 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1127 61116 : {
1128 61116 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1129 61116 : if (ptr_difference_const (captures[2], captures[0], &diff)
1130 : )
1131 : {
1132 15637 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail382;
1133 15637 : {
1134 15637 : tree res_op0;
1135 15637 : res_op0 = build_int_cst_type (inner_type, diff);
1136 15637 : tree res_op1;
1137 15637 : res_op1 = captures[1];
1138 15637 : tree _r;
1139 15637 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1140 15637 : if (TREE_SIDE_EFFECTS (captures[0]))
1141 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1142 15637 : if (TREE_SIDE_EFFECTS (captures[2]))
1143 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1144 15637 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 295, __FILE__, __LINE__, true);
1145 15637 : return _r;
1146 : }
1147 0 : next_after_fail382:;
1148 : }
1149 : }
1150 45479 : return NULL_TREE;
1151 : }
1152 :
1153 : tree
1154 726 : generic_simplify_234 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1155 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1156 : const enum tree_code ARG_UNUSED (cmp))
1157 : {
1158 726 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1159 726 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1160 726 : TYPE_SIGN (TREE_TYPE (captures[0])))
1161 : )
1162 : {
1163 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail391;
1164 42 : {
1165 42 : tree _r;
1166 42 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1167 42 : if (TREE_SIDE_EFFECTS (captures[0]))
1168 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1169 42 : if (TREE_SIDE_EFFECTS (captures[1]))
1170 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1171 42 : if (TREE_SIDE_EFFECTS (captures[2]))
1172 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1173 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 304, __FILE__, __LINE__, true);
1174 42 : return _r;
1175 : }
1176 0 : next_after_fail391:;
1177 : }
1178 : else
1179 : {
1180 684 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1181 684 : TYPE_SIGN (TREE_TYPE (captures[0])))
1182 : )
1183 : {
1184 684 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail392;
1185 684 : {
1186 684 : tree res_op0;
1187 684 : res_op0 = captures[0];
1188 684 : tree res_op1;
1189 684 : res_op1 = captures[2];
1190 684 : tree _r;
1191 684 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1192 684 : if (TREE_SIDE_EFFECTS (captures[1]))
1193 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1194 684 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 305, __FILE__, __LINE__, true);
1195 684 : return _r;
1196 : }
1197 0 : next_after_fail392:;
1198 : }
1199 : }
1200 : return NULL_TREE;
1201 : }
1202 :
1203 : tree
1204 47 : generic_simplify_245 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1205 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1206 : {
1207 47 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1208 47 : if (TREE_CODE (TREE_TYPE (captures[1])) != COMPLEX_TYPE
1209 47 : && (!VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[1])))
1210 7 : || !target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_DIV_EXPR,
1211 : optab_vector)
1212 0 : || target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_MOD_EXPR,
1213 : optab_vector))
1214 : )
1215 : {
1216 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail413;
1217 47 : {
1218 47 : tree res_op0;
1219 47 : {
1220 47 : tree _o1[2], _r1;
1221 47 : _o1[0] = captures[1];
1222 47 : _o1[1] = captures[2];
1223 47 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1224 47 : res_op0 = _r1;
1225 : }
1226 47 : tree res_op1;
1227 47 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1228 47 : tree _r;
1229 47 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1230 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 326, __FILE__, __LINE__, true);
1231 47 : return _r;
1232 : }
1233 0 : next_after_fail413:;
1234 : }
1235 : return NULL_TREE;
1236 : }
1237 :
1238 : tree
1239 60096 : generic_simplify_253 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1240 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1241 : const enum tree_code ARG_UNUSED (cmp))
1242 : {
1243 60096 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1244 120192 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1245 120192 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1246 136832 : && wi::to_wide (captures[1]) != 0
1247 : )
1248 : {
1249 16640 : {
1250 16640 : widest_int quot;
1251 16640 : if (wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[1]),
1252 16640 : TYPE_SIGN (TREE_TYPE (captures[0])), ")
1253 : )
1254 : {
1255 12596 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail424;
1256 12596 : {
1257 12596 : tree res_op0;
1258 12596 : res_op0 = captures[0];
1259 12596 : tree res_op1;
1260 12596 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), quot);
1261 12596 : tree _r;
1262 12596 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1263 12596 : if (TREE_SIDE_EFFECTS (captures[1]))
1264 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1265 12596 : if (TREE_SIDE_EFFECTS (captures[2]))
1266 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1267 12596 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 336, __FILE__, __LINE__, true);
1268 12596 : return _r;
1269 : }
1270 0 : next_after_fail424:;
1271 : }
1272 : else
1273 : {
1274 4044 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail425;
1275 4044 : {
1276 4044 : tree _r;
1277 4044 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1278 4044 : if (TREE_SIDE_EFFECTS (captures[0]))
1279 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1280 4044 : if (TREE_SIDE_EFFECTS (captures[1]))
1281 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1282 4044 : if (TREE_SIDE_EFFECTS (captures[2]))
1283 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1284 4044 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 337, __FILE__, __LINE__, true);
1285 4044 : return _r;
1286 : }
1287 0 : next_after_fail425:;
1288 : }
1289 16640 : }
1290 : }
1291 : else
1292 : {
1293 86912 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1294 43456 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
1295 86912 : && (wi::bit_and (wi::to_wide (captures[1]), 1) == 1)
1296 : )
1297 : {
1298 1098 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail426;
1299 1098 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail426;
1300 1098 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail426;
1301 1098 : {
1302 1098 : tree res_op0;
1303 1098 : res_op0 = captures[0];
1304 1098 : tree res_op1;
1305 1098 : tree itype = TREE_TYPE (captures[0]);
1306 1098 : int p = TYPE_PRECISION (itype);
1307 1098 : wide_int m = wi::one (p + 1) << p;
1308 1098 : wide_int a = wide_int::from (wi::to_wide (captures[1]), p + 1, UNSIGNED);
1309 1098 : wide_int i = wide_int::from (wi::mod_inv (a, m),
1310 2196 : p, TYPE_SIGN (itype)); res_op1 =
1311 1098 : wide_int_to_tree (itype, wi::mul (i, wi::to_wide (captures[2])));
1312 1098 : tree _r;
1313 1098 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1314 1098 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 338, __FILE__, __LINE__, true);
1315 1098 : return _r;
1316 1098 : }
1317 : next_after_fail426:;
1318 : }
1319 : }
1320 : return NULL_TREE;
1321 : }
1322 :
1323 : tree
1324 7622102 : generic_simplify_269 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1325 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1326 : const enum tree_code ARG_UNUSED (cmp))
1327 : {
1328 7622102 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1329 15244180 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1330 2525521 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1331 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1332 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1333 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1334 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1335 7622102 : && single_use (captures[0])
1336 : )
1337 : {
1338 2525521 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1339 1781161 : && (TREE_CODE (captures[3]) == INTEGER_CST
1340 1781161 : || captures[2] != captures[3])
1341 1781161 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1342 : || cmp == NE_EXPR
1343 1019507 : || cmp == EQ_EXPR)
1344 799879 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1345 3214691 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1346 390 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1347 : )
1348 : {
1349 689170 : if (TREE_CODE (captures[2]) == INTEGER_CST
1350 : )
1351 : {
1352 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail484;
1353 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1354 0 : {
1355 0 : tree res_op0;
1356 0 : res_op0 = captures[1];
1357 0 : tree res_op1;
1358 0 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1359 0 : wide_int::from (wi::to_wide (captures[2]),
1360 0 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1361 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1362 0 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1363 0 : 0, TREE_OVERFLOW (captures[2]));
1364 0 : tree _r;
1365 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1366 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1367 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1369 0 : return _r;
1370 : }
1371 : next_after_fail484:;
1372 : }
1373 : else
1374 : {
1375 689170 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail485;
1376 596921 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1377 596921 : {
1378 596921 : tree res_op0;
1379 596921 : res_op0 = captures[1];
1380 596921 : tree res_op1;
1381 596921 : {
1382 596921 : tree _o1[1], _r1;
1383 596921 : _o1[0] = captures[2];
1384 596921 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1385 : {
1386 596799 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1387 : }
1388 : else
1389 : _r1 = _o1[0];
1390 596921 : res_op1 = _r1;
1391 : }
1392 596921 : tree _r;
1393 596921 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1394 596921 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1395 596921 : return _r;
1396 : }
1397 : next_after_fail485:;
1398 : }
1399 : }
1400 : else
1401 : {
1402 1836351 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1403 : )
1404 : {
1405 691078 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1406 224440 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1407 116178 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1408 115082 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1409 914422 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1410 115523 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1411 115523 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1412 49812 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1413 49812 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1414 77553 : || (TREE_CODE (captures[2]) == INTEGER_CST
1415 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1416 0 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1417 : )
1418 : {
1419 612429 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail486;
1420 612429 : {
1421 612429 : tree res_op0;
1422 612429 : res_op0 = captures[1];
1423 612429 : tree res_op1;
1424 612429 : {
1425 612429 : tree _o1[1], _r1;
1426 612429 : _o1[0] = captures[3];
1427 612429 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1428 : {
1429 132271 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1430 : }
1431 : else
1432 : _r1 = _o1[0];
1433 612429 : res_op1 = _r1;
1434 : }
1435 612429 : tree _r;
1436 612429 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1437 612429 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1438 612429 : return _r;
1439 : }
1440 0 : next_after_fail486:;
1441 : }
1442 : else
1443 : {
1444 78649 : if (TREE_CODE (captures[2]) == INTEGER_CST
1445 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1446 78649 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1447 : )
1448 : {
1449 0 : {
1450 0 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1451 0 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1452 0 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1453 0 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1454 0 : if (above || below
1455 : )
1456 : {
1457 0 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1458 : )
1459 : {
1460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail487;
1461 0 : {
1462 0 : tree _r;
1463 0 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1464 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1465 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1466 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1467 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1468 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 398, __FILE__, __LINE__, true);
1469 0 : return _r;
1470 : }
1471 0 : next_after_fail487:;
1472 : }
1473 : else
1474 : {
1475 0 : if (cmp == LT_EXPR || cmp == LE_EXPR
1476 : )
1477 : {
1478 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail488;
1479 0 : {
1480 0 : tree _r;
1481 0 : _r = constant_boolean_node (above ? true : false, type);
1482 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1483 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1484 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1485 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1486 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 399, __FILE__, __LINE__, true);
1487 0 : return _r;
1488 : }
1489 0 : next_after_fail488:;
1490 : }
1491 : else
1492 : {
1493 0 : if (cmp == GT_EXPR || cmp == GE_EXPR
1494 : )
1495 : {
1496 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail489;
1497 0 : {
1498 0 : tree _r;
1499 0 : _r = constant_boolean_node (above ? false : true, type);
1500 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1501 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1502 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1503 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1504 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 400, __FILE__, __LINE__, true);
1505 0 : return _r;
1506 : }
1507 0 : next_after_fail489:;
1508 : }
1509 : }
1510 : }
1511 : }
1512 : }
1513 : }
1514 : }
1515 : }
1516 : else
1517 : {
1518 2290527 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1519 1031909 : && (TYPE_PRECISION (TREE_TYPE (captures[0]))
1520 1031909 : < TYPE_PRECISION (TREE_TYPE (captures[1])))
1521 53243 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1522 1147306 : && types_match (TREE_TYPE (captures[1]),
1523 2033 : TREE_TYPE (captures[3]))
1524 : )
1525 : {
1526 1621 : {
1527 1621 : tree itype = TREE_TYPE (captures[0]);
1528 1621 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail490;
1529 1621 : {
1530 1621 : tree res_op0;
1531 1621 : {
1532 1621 : tree _o1[1], _r1;
1533 1621 : {
1534 1621 : tree _o2[2], _r2;
1535 1621 : _o2[0] = captures[1];
1536 1621 : _o2[1] = captures[3];
1537 1621 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1538 1621 : _o1[0] = _r2;
1539 : }
1540 1621 : if (TREE_TYPE (_o1[0]) != itype)
1541 : {
1542 1621 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1543 : }
1544 : else
1545 : _r1 = _o1[0];
1546 1621 : res_op0 = _r1;
1547 : }
1548 1621 : tree res_op1;
1549 1621 : res_op1 = build_zero_cst (itype);
1550 1621 : tree _r;
1551 1621 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1552 1621 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 401, __FILE__, __LINE__, true);
1553 1621 : return _r;
1554 : }
1555 0 : next_after_fail490:;
1556 : }
1557 : }
1558 : }
1559 : }
1560 : }
1561 : else
1562 : {
1563 10150464 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1564 85478 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1565 42739 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1566 5182051 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1567 42735 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1568 : )
1569 : {
1570 42731 : {
1571 42731 : tree type1 = TREE_TYPE (captures[3]);
1572 42731 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1573 : {
1574 0 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1575 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1576 0 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1577 0 : type1 = float_type_node;
1578 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1579 0 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1580 0 : type1 = double_type_node;
1581 : }
1582 42731 : tree newtype
1583 42731 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1584 42731 : ? TREE_TYPE (captures[1]) : type1);
1585 42731 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1586 42731 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1587 : )
1588 : {
1589 1527 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail491;
1590 1527 : {
1591 1527 : tree res_op0;
1592 1527 : {
1593 1527 : tree _o1[1], _r1;
1594 1527 : _o1[0] = captures[1];
1595 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1596 : {
1597 9 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1598 : }
1599 : else
1600 : _r1 = _o1[0];
1601 1527 : res_op0 = _r1;
1602 : }
1603 1527 : tree res_op1;
1604 1527 : {
1605 1527 : tree _o1[1], _r1;
1606 1527 : _o1[0] = captures[3];
1607 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1608 : {
1609 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1610 : }
1611 : else
1612 : _r1 = _o1[0];
1613 1527 : res_op1 = _r1;
1614 : }
1615 1527 : tree _r;
1616 1527 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1617 1527 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 402, __FILE__, __LINE__, true);
1618 1527 : return _r;
1619 : }
1620 0 : next_after_fail491:;
1621 : }
1622 : }
1623 : }
1624 : }
1625 : return NULL_TREE;
1626 : }
1627 :
1628 : tree
1629 17 : generic_simplify_301 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1630 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1631 : const enum tree_code ARG_UNUSED (cmp),
1632 : const combined_fn ARG_UNUSED (ffs))
1633 : {
1634 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1635 17 : {
1636 17 : int prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
1637 17 : if (integer_zerop (captures[2])
1638 : )
1639 : {
1640 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail564;
1641 9 : {
1642 9 : tree res_op0;
1643 9 : res_op0 = captures[1];
1644 9 : tree res_op1;
1645 9 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1646 9 : tree _r;
1647 9 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1648 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1649 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1650 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 457, __FILE__, __LINE__, true);
1651 17 : return _r;
1652 : }
1653 0 : next_after_fail564:;
1654 : }
1655 : else
1656 : {
1657 8 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) > prec
1658 : )
1659 : {
1660 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail565;
1661 4 : {
1662 4 : tree _r;
1663 4 : _r = constant_boolean_node (cmp == NE_EXPR ? true : false, type);
1664 4 : if (TREE_SIDE_EFFECTS (captures[1]))
1665 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1666 4 : if (TREE_SIDE_EFFECTS (captures[2]))
1667 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1668 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 458, __FILE__, __LINE__, true);
1669 4 : return _r;
1670 : }
1671 0 : next_after_fail565:;
1672 : }
1673 : else
1674 : {
1675 4 : if (single_use (captures[0])
1676 : )
1677 : {
1678 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail566;
1679 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail566;
1680 4 : {
1681 4 : tree res_op0;
1682 4 : {
1683 4 : tree _o1[2], _r1;
1684 4 : _o1[0] = captures[1];
1685 4 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[1]),
1686 4 : wi::mask (tree_to_uhwi (captures[2]),
1687 : false, prec));
1688 4 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1689 4 : res_op0 = _r1;
1690 : }
1691 4 : tree res_op1;
1692 4 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[1]),
1693 4 : wi::shifted_mask (tree_to_uhwi (captures[2]) - 1, 1,
1694 : false, prec));
1695 4 : tree _r;
1696 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1697 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 459, __FILE__, __LINE__, true);
1698 4 : return _r;
1699 : }
1700 0 : next_after_fail566:;
1701 : }
1702 : }
1703 : }
1704 : }
1705 0 : return NULL_TREE;
1706 : }
1707 :
1708 : tree
1709 1 : generic_simplify_319 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1710 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1711 : const enum tree_code ARG_UNUSED (div))
1712 : {
1713 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1714 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
1715 1 : && TYPE_OVERFLOW_UNDEFINED (type)
1716 1 : && !integer_zerop (captures[0])
1717 2 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1718 : )
1719 : {
1720 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail587;
1721 1 : {
1722 1 : tree _r;
1723 1 : _r = build_minus_one_cst (type);
1724 1 : if (TREE_SIDE_EFFECTS (captures[0]))
1725 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1726 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 478, __FILE__, __LINE__, true);
1727 1 : return _r;
1728 : }
1729 0 : next_after_fail587:;
1730 : }
1731 : return NULL_TREE;
1732 : }
1733 :
1734 : tree
1735 3 : generic_simplify_324 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1736 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1737 : const enum tree_code ARG_UNUSED (div))
1738 : {
1739 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1740 3 : if (INTEGRAL_TYPE_P (type)
1741 3 : && wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[3]), SIGNED)
1742 : )
1743 : {
1744 3 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1745 : )
1746 : {
1747 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail593;
1748 3 : {
1749 3 : tree res_op0;
1750 3 : res_op0 = captures[2];
1751 3 : tree res_op1;
1752 3 : res_op1 = captures[3];
1753 3 : tree _r;
1754 3 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1755 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1756 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1757 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 484, __FILE__, __LINE__, true);
1758 3 : return _r;
1759 : }
1760 0 : next_after_fail593:;
1761 : }
1762 : }
1763 : return NULL_TREE;
1764 : }
1765 :
1766 : tree
1767 0 : generic_simplify_334 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1768 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1769 : {
1770 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1771 0 : if (SCALAR_FLOAT_TYPE_P (type)
1772 0 : && ! HONOR_NANS (type)
1773 0 : && ! HONOR_INFINITIES (type)
1774 : )
1775 : {
1776 0 : if (types_match (type, float_type_node)
1777 : )
1778 : {
1779 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail603;
1780 0 : {
1781 0 : tree res_op0;
1782 0 : res_op0 = build_one_cst (type);
1783 0 : tree res_op1;
1784 0 : {
1785 0 : tree _o1[1], _r1;
1786 0 : _o1[0] = captures[0];
1787 0 : if (TREE_TYPE (_o1[0]) != type)
1788 : {
1789 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1790 : }
1791 : else
1792 : _r1 = _o1[0];
1793 0 : res_op1 = _r1;
1794 : }
1795 0 : tree _r;
1796 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNF, type, 2, res_op0, res_op1);
1797 0 : if (!_r)
1798 0 : goto next_after_fail603;
1799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 494, __FILE__, __LINE__, true);
1800 0 : return _r;
1801 : }
1802 : next_after_fail603:;
1803 : }
1804 : else
1805 : {
1806 0 : if (types_match (type, double_type_node)
1807 : )
1808 : {
1809 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail604;
1810 0 : {
1811 0 : tree res_op0;
1812 0 : res_op0 = build_one_cst (type);
1813 0 : tree res_op1;
1814 0 : {
1815 0 : tree _o1[1], _r1;
1816 0 : _o1[0] = captures[0];
1817 0 : if (TREE_TYPE (_o1[0]) != type)
1818 : {
1819 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1820 : }
1821 : else
1822 : _r1 = _o1[0];
1823 0 : res_op1 = _r1;
1824 : }
1825 0 : tree _r;
1826 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGN, type, 2, res_op0, res_op1);
1827 0 : if (!_r)
1828 0 : goto next_after_fail604;
1829 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 495, __FILE__, __LINE__, true);
1830 0 : return _r;
1831 : }
1832 : next_after_fail604:;
1833 : }
1834 : else
1835 : {
1836 0 : if (types_match (type, long_double_type_node)
1837 : )
1838 : {
1839 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail605;
1840 0 : {
1841 0 : tree res_op0;
1842 0 : res_op0 = build_one_cst (type);
1843 0 : tree res_op1;
1844 0 : {
1845 0 : tree _o1[1], _r1;
1846 0 : _o1[0] = captures[0];
1847 0 : if (TREE_TYPE (_o1[0]) != type)
1848 : {
1849 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1850 : }
1851 : else
1852 : _r1 = _o1[0];
1853 0 : res_op1 = _r1;
1854 : }
1855 0 : tree _r;
1856 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNL, type, 2, res_op0, res_op1);
1857 0 : if (!_r)
1858 0 : goto next_after_fail605;
1859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 496, __FILE__, __LINE__, true);
1860 0 : return _r;
1861 : }
1862 : next_after_fail605:;
1863 : }
1864 : }
1865 : }
1866 : }
1867 : return NULL_TREE;
1868 : }
1869 :
1870 : tree
1871 0 : generic_simplify_354 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1872 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1873 : const enum tree_code ARG_UNUSED (op))
1874 : {
1875 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1876 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail631;
1877 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail631;
1878 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail631;
1879 0 : {
1880 0 : tree _r;
1881 0 : _r = captures[2];
1882 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 522, __FILE__, __LINE__, true);
1883 : return _r;
1884 : }
1885 : next_after_fail631:;
1886 : return NULL_TREE;
1887 : }
1888 :
1889 : tree
1890 0 : generic_simplify_359 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1891 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1892 : {
1893 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1894 0 : if (INTEGRAL_TYPE_P (type)
1895 : )
1896 : {
1897 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail636;
1898 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail636;
1899 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail636;
1900 0 : {
1901 0 : tree _r;
1902 0 : _r = captures[2];
1903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 527, __FILE__, __LINE__, true);
1904 0 : return _r;
1905 : }
1906 : next_after_fail636:;
1907 : }
1908 : return NULL_TREE;
1909 : }
1910 :
1911 : tree
1912 0 : generic_simplify_366 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1913 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1914 : const enum tree_code ARG_UNUSED (op))
1915 : {
1916 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1917 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail643;
1918 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail643;
1919 0 : {
1920 0 : tree _r;
1921 0 : _r = captures[2];
1922 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 534, __FILE__, __LINE__, true);
1923 : return _r;
1924 : }
1925 : next_after_fail643:;
1926 : return NULL_TREE;
1927 : }
1928 :
1929 : tree
1930 3 : generic_simplify_372 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1931 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1932 : const combined_fn ARG_UNUSED (func))
1933 : {
1934 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1935 3 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
1936 : )
1937 : {
1938 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail650;
1939 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail650;
1940 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail650;
1941 3 : {
1942 3 : tree _r;
1943 3 : _r = captures[2];
1944 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1945 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1946 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 540, __FILE__, __LINE__, true);
1947 3 : return _r;
1948 : }
1949 : next_after_fail650:;
1950 : }
1951 : return NULL_TREE;
1952 : }
1953 :
1954 : tree
1955 162262 : generic_simplify_380 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1956 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1957 : const enum tree_code ARG_UNUSED (op))
1958 : {
1959 162262 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1960 324524 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1961 324524 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1962 : )
1963 : {
1964 68364 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail662;
1965 68364 : {
1966 68364 : tree res_op0;
1967 68364 : res_op0 = captures[0];
1968 68364 : tree res_op1;
1969 68364 : res_op1 = captures[2];
1970 68364 : tree _r;
1971 68364 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1972 68364 : if (TREE_SIDE_EFFECTS (captures[1]))
1973 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1974 68364 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 551, __FILE__, __LINE__, true);
1975 68364 : return _r;
1976 : }
1977 0 : next_after_fail662:;
1978 : }
1979 : return NULL_TREE;
1980 : }
1981 :
1982 : tree
1983 5312 : generic_simplify_385 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1984 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1985 : const enum tree_code ARG_UNUSED (cmp),
1986 : const enum tree_code ARG_UNUSED (bitop))
1987 : {
1988 5312 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1989 5312 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1990 : )
1991 : {
1992 5312 : if (bitop == BIT_AND_EXPR || tree_expr_nonnegative_p (captures[1])
1993 : )
1994 : {
1995 5312 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail667;
1996 5312 : {
1997 5312 : tree _r;
1998 5312 : _r = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
1999 5312 : if (TREE_SIDE_EFFECTS (captures[0]))
2000 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2001 5312 : if (TREE_SIDE_EFFECTS (captures[1]))
2002 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2003 5312 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 556, __FILE__, __LINE__, true);
2004 5312 : return _r;
2005 : }
2006 0 : next_after_fail667:;
2007 : }
2008 : else
2009 : {
2010 0 : if (TREE_CODE (captures[1]) == INTEGER_CST && wi::neg_p (wi::to_wide (captures[1]))
2011 : )
2012 : {
2013 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail668;
2014 0 : {
2015 0 : tree _r;
2016 0 : _r = constant_boolean_node (cmp == LT_EXPR, type);
2017 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2018 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2019 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2020 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2021 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
2022 0 : return _r;
2023 : }
2024 0 : next_after_fail668:;
2025 : }
2026 : }
2027 : }
2028 : return NULL_TREE;
2029 : }
2030 :
2031 : tree
2032 2 : generic_simplify_399 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2033 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2034 : const enum tree_code ARG_UNUSED (cmp))
2035 : {
2036 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2037 4 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2038 4 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2039 : )
2040 : {
2041 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail714;
2042 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail714;
2043 2 : {
2044 2 : tree res_op0;
2045 2 : res_op0 = captures[1];
2046 2 : tree res_op1;
2047 2 : res_op1 = captures[0];
2048 2 : tree _r;
2049 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2050 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 586, __FILE__, __LINE__, true);
2051 2 : return _r;
2052 : }
2053 : next_after_fail714:;
2054 : }
2055 : return NULL_TREE;
2056 : }
2057 :
2058 : tree
2059 2449552 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2060 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2061 : const enum tree_code ARG_UNUSED (op),
2062 : const enum tree_code ARG_UNUSED (rop),
2063 : const enum tree_code ARG_UNUSED (cmp),
2064 : const enum tree_code ARG_UNUSED (rcmp))
2065 : {
2066 2449552 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2067 4899090 : if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3])
2068 4899078 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2069 : )
2070 : {
2071 882637 : {
2072 882637 : tree res = int_const_binop (rop, captures[3], captures[2]);
2073 882637 : if (TREE_OVERFLOW (res)
2074 : )
2075 : {
2076 12776 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail720;
2077 12776 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail720;
2078 12776 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail720;
2079 12776 : {
2080 12776 : tree _r;
2081 12776 : bool less = cmp == LE_EXPR || cmp == LT_EXPR;
2082 12776 : bool ovf_high = wi::lt_p (wi::to_wide (captures[2]), 0,
2083 12776 : TYPE_SIGN (TREE_TYPE (captures[2])))
2084 12776 : != (op == MINUS_EXPR); _r =
2085 12776 : constant_boolean_node (less == ovf_high, type);
2086 12776 : if (TREE_SIDE_EFFECTS (captures[1]))
2087 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2088 12776 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 592, __FILE__, __LINE__, true);
2089 12776 : return _r;
2090 : }
2091 : next_after_fail720:;
2092 : }
2093 : else
2094 : {
2095 869861 : if (single_use (captures[0])
2096 : )
2097 : {
2098 869861 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail721;
2099 869861 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail721;
2100 869861 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail721;
2101 869861 : {
2102 869861 : tree res_op0;
2103 869861 : res_op0 = captures[1];
2104 869861 : tree res_op1;
2105 869861 : res_op1 = res;
2106 869861 : tree _r;
2107 869861 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2108 869861 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 593, __FILE__, __LINE__, true);
2109 869861 : return _r;
2110 : }
2111 : next_after_fail721:;
2112 : }
2113 : }
2114 : }
2115 : }
2116 : else
2117 : {
2118 1566915 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2119 : )
2120 : {
2121 1566790 : {
2122 1566790 : wide_int max = wi::max_value (TREE_TYPE (captures[1]));
2123 1566790 : wide_int min = wi::min_value (TREE_TYPE (captures[1]));
2124 1566790 : wide_int c2 = rop == PLUS_EXPR
2125 1566790 : ? wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[2]))
2126 1566790 : : wi::sub (wi::to_wide (captures[3]), wi::to_wide (captures[2]));
2127 1495626 : if (((cmp == LE_EXPR || cmp == GT_EXPR) && wi::eq_p (c2, max))
2128 3047289 : || ((cmp == LT_EXPR || cmp == GE_EXPR) && wi::eq_p (c2, min))
2129 : )
2130 : {
2131 15285 : {
2132 15285 : wide_int c1 = rop == PLUS_EXPR
2133 15285 : ? wi::add (wi::bit_not (c2), wi::to_wide (captures[2]))
2134 30570 : : wi::sub (wi::bit_not (c2), wi::to_wide (captures[2]));
2135 15285 : tree c1_cst = wide_int_to_tree (TREE_TYPE (captures[1]), c1);
2136 15285 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail722;
2137 15285 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail722;
2138 15285 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail722;
2139 15285 : {
2140 15285 : tree res_op0;
2141 15285 : res_op0 = captures[1];
2142 15285 : tree res_op1;
2143 15285 : res_op1 = c1_cst;
2144 15285 : tree _r;
2145 15285 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
2146 15285 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 594, __FILE__, __LINE__, true);
2147 15285 : return _r;
2148 : }
2149 0 : next_after_fail722:;
2150 15285 : }
2151 : }
2152 1566792 : }
2153 : }
2154 : }
2155 : return NULL_TREE;
2156 : }
2157 :
2158 : tree
2159 11 : generic_simplify_420 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2160 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2161 : {
2162 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2163 11 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2164 : )
2165 : {
2166 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail746;
2167 11 : {
2168 11 : tree res_op0;
2169 11 : {
2170 11 : tree _o1[1], _r1;
2171 11 : _o1[0] = captures[0];
2172 11 : if (TREE_TYPE (_o1[0]) != type)
2173 : {
2174 8 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2175 : }
2176 : else
2177 : _r1 = _o1[0];
2178 11 : res_op0 = _r1;
2179 : }
2180 11 : tree res_op1;
2181 11 : {
2182 11 : tree _o1[2], _r1;
2183 11 : _o1[0] = build_minus_one_cst (type);
2184 11 : _o1[1] = captures[1];
2185 11 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2186 11 : res_op1 = _r1;
2187 : }
2188 11 : tree _r;
2189 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2190 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 614, __FILE__, __LINE__, true);
2191 11 : return _r;
2192 : }
2193 0 : next_after_fail746:;
2194 : }
2195 : return NULL_TREE;
2196 : }
2197 :
2198 : tree
2199 271 : generic_simplify_429 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2200 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2201 : const combined_fn ARG_UNUSED (bswap))
2202 : {
2203 271 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2204 271 : if (BITS_PER_UNIT == 8
2205 : && CHAR_TYPE_SIZE == 8
2206 271 : && tree_fits_uhwi_p (captures[2])
2207 : )
2208 : {
2209 271 : {
2210 271 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2211 271 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[2]);
2212 271 : tree st = TYPE_PRECISION (type) > prec ? TREE_TYPE (captures[0]) : type;
2213 271 : if (TYPE_PRECISION (type) > prec
2214 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2215 0 : && TYPE_UNSIGNED (type)
2216 271 : && bits < prec && bits + 8 >= prec
2217 : )
2218 : {
2219 0 : {
2220 0 : tree nst = build_int_cst (integer_type_node, prec - 8);
2221 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail759;
2222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail759;
2223 0 : {
2224 0 : tree res_op0;
2225 0 : {
2226 0 : tree _o1[1], _r1;
2227 0 : {
2228 0 : tree _o2[2], _r2;
2229 0 : {
2230 0 : tree _o3[1], _r3;
2231 0 : _o3[0] = captures[1];
2232 0 : if (TREE_TYPE (_o3[0]) != st)
2233 : {
2234 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, st, _o3[0]);
2235 : }
2236 : else
2237 : _r3 = _o3[0];
2238 0 : _o2[0] = _r3;
2239 : }
2240 0 : _o2[1] = nst;
2241 0 : _r2 = fold_build2_loc (loc, LSHIFT_EXPR, st, _o2[0], _o2[1]);
2242 0 : _o1[0] = _r2;
2243 : }
2244 0 : if (TREE_TYPE (_o1[0]) != type)
2245 : {
2246 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2247 : }
2248 : else
2249 : _r1 = _o1[0];
2250 0 : res_op0 = _r1;
2251 : }
2252 0 : tree res_op1;
2253 0 : res_op1 = captures[2];
2254 0 : tree _r;
2255 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
2256 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 625, __FILE__, __LINE__, true);
2257 0 : return _r;
2258 : }
2259 : next_after_fail759:;
2260 : }
2261 : }
2262 : else
2263 : {
2264 271 : if (bits + 8 == prec
2265 : )
2266 : {
2267 46 : if (TYPE_UNSIGNED (st)
2268 : )
2269 : {
2270 36 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail760;
2271 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail760;
2272 36 : {
2273 36 : tree res_op0;
2274 36 : {
2275 36 : tree _o1[1], _r1;
2276 36 : _o1[0] = captures[1];
2277 36 : if (TREE_TYPE (_o1[0]) != unsigned_char_type_node)
2278 : {
2279 36 : _r1 = fold_build1_loc (loc, NOP_EXPR, unsigned_char_type_node, _o1[0]);
2280 : }
2281 : else
2282 : _r1 = _o1[0];
2283 36 : res_op0 = _r1;
2284 : }
2285 36 : tree _r;
2286 36 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2287 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 626, __FILE__, __LINE__, true);
2288 36 : return _r;
2289 : }
2290 : next_after_fail760:;
2291 : }
2292 : else
2293 : {
2294 10 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail761;
2295 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail761;
2296 10 : {
2297 10 : tree res_op0;
2298 10 : {
2299 10 : tree _o1[1], _r1;
2300 10 : _o1[0] = captures[1];
2301 10 : if (TREE_TYPE (_o1[0]) != signed_char_type_node)
2302 : {
2303 10 : _r1 = fold_build1_loc (loc, NOP_EXPR, signed_char_type_node, _o1[0]);
2304 : }
2305 : else
2306 : _r1 = _o1[0];
2307 10 : res_op0 = _r1;
2308 : }
2309 10 : tree _r;
2310 10 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2311 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 627, __FILE__, __LINE__, true);
2312 10 : return _r;
2313 : }
2314 : next_after_fail761:;
2315 : }
2316 : }
2317 : else
2318 : {
2319 225 : if (bits < prec && bits + 8 > prec
2320 : )
2321 : {
2322 57 : {
2323 57 : tree nst = build_int_cst (integer_type_node, bits & 7);
2324 57 : tree bt = TYPE_UNSIGNED (st) ? unsigned_char_type_node
2325 57 : : signed_char_type_node;
2326 57 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail762;
2327 57 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail762;
2328 57 : {
2329 57 : tree res_op0;
2330 57 : {
2331 57 : tree _o1[2], _r1;
2332 57 : {
2333 57 : tree _o2[1], _r2;
2334 57 : _o2[0] = captures[1];
2335 57 : if (TREE_TYPE (_o2[0]) != bt)
2336 : {
2337 57 : _r2 = fold_build1_loc (loc, NOP_EXPR, bt, _o2[0]);
2338 : }
2339 : else
2340 : _r2 = _o2[0];
2341 57 : _o1[0] = _r2;
2342 : }
2343 57 : _o1[1] = nst;
2344 57 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, bt, _o1[0], _o1[1]);
2345 57 : res_op0 = _r1;
2346 : }
2347 57 : tree _r;
2348 57 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2349 57 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 628, __FILE__, __LINE__, true);
2350 57 : return _r;
2351 : }
2352 : next_after_fail762:;
2353 : }
2354 : }
2355 : }
2356 : }
2357 : }
2358 : }
2359 : return NULL_TREE;
2360 : }
2361 :
2362 : tree
2363 0 : generic_simplify_444 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2364 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2365 : const combined_fn ARG_UNUSED (pow))
2366 : {
2367 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2368 0 : if (flag_unsafe_math_optimizations
2369 : )
2370 : {
2371 0 : if (! HONOR_INFINITIES (type)
2372 0 : && ! flag_trapping_math
2373 0 : && ! flag_errno_math
2374 : )
2375 : {
2376 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail791;
2377 0 : {
2378 0 : tree res_op0;
2379 0 : res_op0 = captures[2];
2380 0 : tree res_op1;
2381 0 : {
2382 0 : tree _o1[1], _r1;
2383 0 : _o1[0] = captures[3];
2384 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2385 0 : res_op1 = _r1;
2386 : }
2387 0 : tree _r;
2388 0 : _r = maybe_build_call_expr_loc (loc, pow, type, 2, res_op0, res_op1);
2389 0 : if (!_r)
2390 0 : goto next_after_fail791;
2391 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2392 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2393 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 645, __FILE__, __LINE__, true);
2394 0 : return _r;
2395 : }
2396 : next_after_fail791:;
2397 : }
2398 : }
2399 : return NULL_TREE;
2400 : }
2401 :
2402 : tree
2403 0 : generic_simplify_450 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2404 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2405 : const combined_fn ARG_UNUSED (HYPOT))
2406 : {
2407 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail797;
2409 0 : {
2410 0 : tree res_op0;
2411 0 : res_op0 = captures[0];
2412 0 : tree _r;
2413 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2414 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2415 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2416 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 651, __FILE__, __LINE__, true);
2417 : return _r;
2418 : }
2419 0 : next_after_fail797:;
2420 0 : return NULL_TREE;
2421 : }
2422 :
2423 : tree
2424 8 : generic_simplify_453 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2425 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2426 : {
2427 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2428 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2429 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
2430 : )
2431 : {
2432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail800;
2433 0 : {
2434 0 : tree res_op0;
2435 0 : res_op0 = captures[0];
2436 0 : tree res_op1;
2437 0 : res_op1 = captures[1];
2438 0 : tree _r;
2439 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2440 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 654, __FILE__, __LINE__, true);
2441 0 : return _r;
2442 : }
2443 0 : next_after_fail800:;
2444 : }
2445 : return NULL_TREE;
2446 : }
2447 :
2448 : tree
2449 2 : generic_simplify_458 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2450 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2451 : {
2452 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2453 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail805;
2454 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail805;
2455 2 : {
2456 2 : tree res_op0;
2457 2 : res_op0 = captures[0];
2458 2 : tree res_op1;
2459 2 : {
2460 2 : tree _o1[1], _r1;
2461 2 : _o1[0] = captures[5];
2462 2 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2463 2 : res_op1 = _r1;
2464 : }
2465 2 : tree _r;
2466 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2467 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 659, __FILE__, __LINE__, true);
2468 : return _r;
2469 : }
2470 : next_after_fail805:;
2471 : return NULL_TREE;
2472 : }
2473 :
2474 : tree
2475 15 : generic_simplify_463 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2476 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2477 : const enum tree_code ARG_UNUSED (bitop))
2478 : {
2479 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2480 15 : {
2481 15 : tree pmop[2];
2482 15 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[4], NEGATE_EXPR, captures[1],
2483 : bitop, captures[2], captures[3], NULL_TREE, ERROR_MARK,
2484 : NULL_TREE, NULL_TREE, pmop);
2485 15 : if (utype
2486 : )
2487 : {
2488 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail810;
2489 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail810;
2490 7 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail810;
2491 7 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail810;
2492 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail810;
2493 7 : {
2494 7 : tree res_op0;
2495 7 : {
2496 7 : tree _o1[2], _r1;
2497 7 : {
2498 7 : tree _o2[1], _r2;
2499 7 : {
2500 7 : tree _o3[1], _r3;
2501 7 : _o3[0] = pmop[0];
2502 7 : if (TREE_TYPE (_o3[0]) != utype)
2503 : {
2504 4 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2505 : }
2506 : else
2507 : _r3 = _o3[0];
2508 7 : _o2[0] = _r3;
2509 : }
2510 7 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2511 7 : _o1[0] = _r2;
2512 : }
2513 7 : {
2514 7 : tree _o2[1], _r2;
2515 7 : _o2[0] = captures[4];
2516 7 : if (TREE_TYPE (_o2[0]) != utype)
2517 : {
2518 4 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2519 : }
2520 : else
2521 : _r2 = _o2[0];
2522 7 : _o1[1] = _r2;
2523 : }
2524 7 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2525 7 : res_op0 = _r1;
2526 : }
2527 7 : tree _r;
2528 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2529 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 663, __FILE__, __LINE__, true);
2530 7 : return _r;
2531 : }
2532 8 : next_after_fail810:;
2533 : }
2534 : }
2535 8 : return NULL_TREE;
2536 : }
2537 :
2538 : tree
2539 0 : generic_simplify_478 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2540 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2541 : const enum tree_code ARG_UNUSED (eqne))
2542 : {
2543 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2544 0 : if (eqne == EQ_EXPR
2545 : )
2546 : {
2547 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail845;
2548 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail845;
2549 0 : {
2550 0 : tree _r;
2551 0 : _r = constant_boolean_node (false, type);
2552 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2553 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2554 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 672, __FILE__, __LINE__, true);
2555 0 : return _r;
2556 : }
2557 : next_after_fail845:;
2558 : }
2559 : else
2560 : {
2561 0 : if (eqne == NE_EXPR
2562 : )
2563 : {
2564 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail846;
2565 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail846;
2566 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail846;
2567 0 : {
2568 0 : tree _r;
2569 0 : _r = captures[0];
2570 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
2571 0 : return _r;
2572 : }
2573 : next_after_fail846:;
2574 : }
2575 : }
2576 : return NULL_TREE;
2577 : }
2578 :
2579 : tree
2580 0 : generic_simplify_487 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2581 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2582 : {
2583 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2584 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2585 0 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2586 : )
2587 : {
2588 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail868;
2589 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail868;
2590 0 : {
2591 0 : tree res_op0;
2592 0 : res_op0 = captures[3];
2593 0 : tree res_op1;
2594 0 : {
2595 0 : tree _o1[2], _r1;
2596 0 : _o1[0] = captures[1];
2597 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
2598 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2599 0 : res_op1 = _r1;
2600 : }
2601 0 : tree _r;
2602 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2603 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 692, __FILE__, __LINE__, true);
2604 0 : return _r;
2605 : }
2606 : next_after_fail868:;
2607 : }
2608 : return NULL_TREE;
2609 : }
2610 :
2611 : tree
2612 234 : generic_simplify_493 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2613 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2614 : const combined_fn ARG_UNUSED (bswap))
2615 : {
2616 234 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2617 234 : if (BITS_PER_UNIT == 8
2618 234 : && tree_fits_uhwi_p (captures[3])
2619 234 : && tree_fits_uhwi_p (captures[4])
2620 : )
2621 : {
2622 234 : {
2623 234 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
2624 234 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[3]);
2625 234 : unsigned HOST_WIDE_INT mask = tree_to_uhwi (captures[4]);
2626 234 : unsigned HOST_WIDE_INT lo = bits & 7;
2627 234 : unsigned HOST_WIDE_INT hi = bits - lo;
2628 234 : if (bits < prec
2629 234 : && mask < (256u>>lo)
2630 468 : && bits < TYPE_PRECISION (TREE_TYPE(captures[0]))
2631 : )
2632 : {
2633 234 : {
2634 234 : unsigned HOST_WIDE_INT ns = (prec - (hi + 8)) + lo;
2635 234 : if (ns == 0
2636 : )
2637 : {
2638 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail882;
2639 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail882;
2640 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail882;
2641 1 : {
2642 1 : tree res_op0;
2643 1 : {
2644 1 : tree _o1[1], _r1;
2645 1 : _o1[0] = captures[2];
2646 1 : if (TREE_TYPE (_o1[0]) != type)
2647 : {
2648 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2649 : }
2650 : else
2651 : _r1 = _o1[0];
2652 1 : res_op0 = _r1;
2653 : }
2654 1 : tree res_op1;
2655 1 : res_op1 = captures[4];
2656 1 : tree _r;
2657 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2658 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 697, __FILE__, __LINE__, true);
2659 1 : return _r;
2660 : }
2661 : next_after_fail882:;
2662 : }
2663 : else
2664 : {
2665 233 : {
2666 233 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2667 233 : tree nst = build_int_cst (integer_type_node, ns);
2668 233 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail883;
2669 233 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail883;
2670 233 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail883;
2671 233 : {
2672 233 : tree res_op0;
2673 233 : {
2674 233 : tree _o1[1], _r1;
2675 233 : {
2676 233 : tree _o2[2], _r2;
2677 233 : {
2678 233 : tree _o3[1], _r3;
2679 233 : _o3[0] = captures[2];
2680 233 : if (TREE_TYPE (_o3[0]) != utype)
2681 : {
2682 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2683 : }
2684 : else
2685 : _r3 = _o3[0];
2686 233 : _o2[0] = _r3;
2687 : }
2688 233 : _o2[1] = nst;
2689 233 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, utype, _o2[0], _o2[1]);
2690 233 : _o1[0] = _r2;
2691 : }
2692 233 : if (TREE_TYPE (_o1[0]) != type)
2693 : {
2694 101 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2695 : }
2696 : else
2697 : _r1 = _o1[0];
2698 233 : res_op0 = _r1;
2699 : }
2700 233 : tree res_op1;
2701 233 : res_op1 = captures[4];
2702 233 : tree _r;
2703 233 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2704 233 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 698, __FILE__, __LINE__, true);
2705 233 : return _r;
2706 : }
2707 : next_after_fail883:;
2708 : }
2709 : }
2710 : }
2711 : }
2712 : }
2713 : }
2714 : return NULL_TREE;
2715 : }
2716 :
2717 : tree
2718 0 : generic_simplify_495 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2719 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2720 : {
2721 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2722 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail885;
2723 0 : {
2724 0 : tree res_op0;
2725 0 : res_op0 = captures[0];
2726 0 : tree res_op1;
2727 0 : res_op1 = captures[1];
2728 0 : tree _r;
2729 0 : _r = fold_build2_loc (loc, LTGT_EXPR, type, res_op0, res_op1);
2730 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 700, __FILE__, __LINE__, true);
2731 : return _r;
2732 : }
2733 0 : next_after_fail885:;
2734 0 : return NULL_TREE;
2735 : }
2736 :
2737 : tree
2738 0 : generic_simplify_496 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2739 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2740 : {
2741 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2742 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail886;
2743 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail886;
2744 0 : {
2745 0 : tree _r;
2746 0 : _r = captures[1];
2747 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 701, __FILE__, __LINE__, true);
2748 : return _r;
2749 : }
2750 : next_after_fail886:;
2751 : return NULL_TREE;
2752 : }
2753 :
2754 : tree
2755 3 : generic_simplify_499 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2756 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2757 : const combined_fn ARG_UNUSED (POPCOUNT),
2758 : const combined_fn ARG_UNUSED (PARITY))
2759 : {
2760 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2761 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail890;
2762 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail890;
2763 3 : {
2764 3 : tree res_op0;
2765 3 : res_op0 = captures[0];
2766 3 : tree _r;
2767 3 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
2768 3 : if (!_r)
2769 0 : goto next_after_fail890;
2770 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 704, __FILE__, __LINE__, true);
2771 : return _r;
2772 : }
2773 : next_after_fail890:;
2774 : return NULL_TREE;
2775 : }
2776 :
2777 : tree
2778 31 : generic_simplify_505 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2779 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2780 : {
2781 31 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2782 31 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2783 54 : && (element_precision (TREE_TYPE (captures[2]))
2784 23 : <= element_precision (TREE_TYPE (captures[3]))
2785 1 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2786 : )
2787 : {
2788 22 : {
2789 22 : tree shift_type = TREE_TYPE (captures[2]);
2790 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail896;
2791 22 : {
2792 22 : tree res_op0;
2793 22 : {
2794 22 : tree _o1[2], _r1;
2795 22 : {
2796 22 : tree _o2[1], _r2;
2797 22 : _o2[0] = captures[3];
2798 22 : if (TREE_TYPE (_o2[0]) != shift_type)
2799 : {
2800 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2801 : }
2802 : else
2803 : _r2 = _o2[0];
2804 22 : _o1[0] = _r2;
2805 : }
2806 22 : _o1[1] = captures[4];
2807 22 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2808 22 : res_op0 = _r1;
2809 : }
2810 22 : tree _r;
2811 22 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2812 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 710, __FILE__, __LINE__, true);
2813 22 : return _r;
2814 : }
2815 0 : next_after_fail896:;
2816 : }
2817 : }
2818 : return NULL_TREE;
2819 : }
2820 :
2821 : tree
2822 3799 : generic_simplify_517 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2823 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2824 : {
2825 3799 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2826 3799 : if (!TYPE_SATURATING (type)
2827 : )
2828 : {
2829 3764 : if (!TYPE_OVERFLOW_SANITIZED (type)
2830 7550 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
2831 : )
2832 : {
2833 3786 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail909;
2834 3786 : {
2835 3786 : tree res_op0;
2836 3786 : {
2837 3786 : tree _o1[1], _r1;
2838 3786 : _o1[0] = captures[0];
2839 3786 : if (TREE_TYPE (_o1[0]) != type)
2840 : {
2841 31 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2842 : }
2843 : else
2844 : _r1 = _o1[0];
2845 3786 : res_op0 = _r1;
2846 : }
2847 3786 : tree _r;
2848 3786 : _r = non_lvalue_loc (loc, res_op0);
2849 3786 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 721, __FILE__, __LINE__, true);
2850 3786 : return _r;
2851 : }
2852 0 : next_after_fail909:;
2853 : }
2854 : }
2855 : return NULL_TREE;
2856 : }
2857 :
2858 : tree
2859 4 : generic_simplify_524 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2860 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2861 : {
2862 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2863 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail917;
2864 4 : {
2865 4 : tree _r;
2866 4 : _r = captures[1];
2867 4 : if (TREE_SIDE_EFFECTS (captures[0]))
2868 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2869 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 728, __FILE__, __LINE__, true);
2870 : return _r;
2871 : }
2872 0 : next_after_fail917:;
2873 0 : return NULL_TREE;
2874 : }
2875 :
2876 : tree
2877 20 : generic_simplify_533 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2878 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2879 : const enum tree_code ARG_UNUSED (minmax),
2880 : const enum tree_code ARG_UNUSED (cmp))
2881 : {
2882 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2883 20 : {
2884 20 : poly_int64 off0, off1;
2885 20 : tree base0, base1;
2886 20 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2887 : off0, off1,
2888 : 1
2889 : );
2890 20 : if (equal == 1
2891 : )
2892 : {
2893 0 : if (minmax == MIN_EXPR
2894 : )
2895 : {
2896 0 : if (known_le (off0, off1)
2897 : )
2898 : {
2899 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail937;
2900 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail937;
2901 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail937;
2902 0 : {
2903 0 : tree _r;
2904 0 : _r = captures[0];
2905 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 736, __FILE__, __LINE__, true);
2906 0 : return _r;
2907 : }
2908 20 : next_after_fail937:;
2909 : }
2910 : else
2911 : {
2912 0 : if (known_gt (off0, off1)
2913 : )
2914 : {
2915 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail938;
2916 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail938;
2917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail938;
2918 0 : {
2919 0 : tree _r;
2920 0 : _r = captures[2];
2921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 737, __FILE__, __LINE__, true);
2922 0 : return _r;
2923 : }
2924 20 : next_after_fail938:;
2925 : }
2926 : }
2927 : }
2928 : else
2929 : {
2930 0 : if (known_ge (off0, off1)
2931 : )
2932 : {
2933 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail939;
2934 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail939;
2935 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail939;
2936 0 : {
2937 0 : tree _r;
2938 0 : _r = captures[0];
2939 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2940 0 : return _r;
2941 : }
2942 20 : next_after_fail939:;
2943 : }
2944 : else
2945 : {
2946 0 : if (known_lt (off0, off1)
2947 : )
2948 : {
2949 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail940;
2950 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail940;
2951 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail940;
2952 0 : {
2953 0 : tree _r;
2954 0 : _r = captures[2];
2955 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 739, __FILE__, __LINE__, true);
2956 0 : return _r;
2957 : }
2958 20 : next_after_fail940:;
2959 : }
2960 : }
2961 : }
2962 : }
2963 : }
2964 20 : return NULL_TREE;
2965 : }
2966 :
2967 : tree
2968 0 : generic_simplify_554 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2969 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2970 : const combined_fn ARG_UNUSED (cond_len_op))
2971 : {
2972 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2973 0 : {
2974 0 : tree op_type = TREE_TYPE (captures[6]);
2975 0 : if (inverse_conditions_p (captures[0], captures[2])
2976 0 : && element_precision (type) == element_precision (op_type)
2977 : )
2978 : {
2979 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail961;
2980 0 : {
2981 0 : tree res_op0;
2982 0 : {
2983 0 : tree _o1[7], _r1;
2984 0 : _o1[0] = captures[2];
2985 0 : _o1[1] = captures[3];
2986 0 : _o1[2] = captures[4];
2987 0 : _o1[3] = captures[5];
2988 0 : {
2989 0 : tree _o2[1], _r2;
2990 0 : _o2[0] = captures[1];
2991 0 : if (TREE_TYPE (_o2[0]) != op_type)
2992 : {
2993 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2994 : }
2995 : else
2996 : _r2 = _o2[0];
2997 0 : _o1[4] = _r2;
2998 : }
2999 0 : _o1[5] = captures[7];
3000 0 : _o1[6] = captures[8];
3001 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 7, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5], _o1[6]);
3002 0 : if (!_r1)
3003 0 : goto next_after_fail961;
3004 0 : res_op0 = _r1;
3005 : }
3006 0 : tree _r;
3007 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3008 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3009 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3010 0 : if (TREE_SIDE_EFFECTS (captures[6]))
3011 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
3012 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 755, __FILE__, __LINE__, true);
3013 0 : return _r;
3014 : }
3015 : next_after_fail961:;
3016 : }
3017 : }
3018 : return NULL_TREE;
3019 : }
3020 :
3021 : tree
3022 0 : generic_simplify_567 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3023 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3024 : const combined_fn ARG_UNUSED (ovf))
3025 : {
3026 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3027 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3028 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3029 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3030 0 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) || TYPE_UNSIGNED (TREE_TYPE (captures[1])))
3031 : )
3032 : {
3033 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail977;
3034 0 : {
3035 0 : tree res_op0;
3036 0 : res_op0 = captures[1];
3037 0 : tree res_op1;
3038 0 : res_op1 = captures[2];
3039 0 : tree _r;
3040 0 : _r = maybe_build_call_expr_loc (loc, ovf, type, 2, res_op0, res_op1);
3041 0 : if (!_r)
3042 0 : goto next_after_fail977;
3043 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 771, __FILE__, __LINE__, true);
3044 0 : return _r;
3045 : }
3046 : next_after_fail977:;
3047 : }
3048 : return NULL_TREE;
3049 : }
3050 :
3051 : tree
3052 0 : generic_simplify_575 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3053 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3054 : const combined_fn ARG_UNUSED (fns))
3055 : {
3056 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3057 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail985;
3058 0 : {
3059 0 : tree res_op0;
3060 0 : res_op0 = captures[0];
3061 0 : tree _r;
3062 0 : _r = maybe_build_call_expr_loc (loc, fns, type, 1, res_op0);
3063 0 : if (!_r)
3064 0 : goto next_after_fail985;
3065 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
3066 : return _r;
3067 : }
3068 : next_after_fail985:;
3069 : return NULL_TREE;
3070 : }
3071 :
3072 : tree
3073 0 : generic_simplify_582 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3074 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3075 : const combined_fn ARG_UNUSED (froms),
3076 : const combined_fn ARG_UNUSED (tos))
3077 : {
3078 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3079 0 : if (optimize && canonicalize_math_p ()
3080 : )
3081 : {
3082 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail992;
3083 0 : {
3084 0 : tree res_op0;
3085 0 : res_op0 = captures[0];
3086 0 : tree _r;
3087 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3088 0 : if (!_r)
3089 0 : goto next_after_fail992;
3090 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 786, __FILE__, __LINE__, true);
3091 0 : return _r;
3092 : }
3093 : next_after_fail992:;
3094 : }
3095 : return NULL_TREE;
3096 : }
3097 :
3098 : tree
3099 0 : generic_simplify_590 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3100 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3101 : const combined_fn ARG_UNUSED (SIGNBIT))
3102 : {
3103 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3104 0 : if (!HONOR_SIGNED_ZEROS (captures[0])
3105 : )
3106 : {
3107 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1000;
3108 0 : {
3109 0 : tree res_op0;
3110 0 : {
3111 0 : tree _o1[2], _r1;
3112 0 : _o1[0] = captures[0];
3113 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
3114 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3115 0 : res_op0 = _r1;
3116 : }
3117 0 : tree _r;
3118 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 794, __FILE__, __LINE__, true);
3120 0 : return _r;
3121 : }
3122 0 : next_after_fail1000:;
3123 : }
3124 : return NULL_TREE;
3125 : }
3126 :
3127 : tree
3128 0 : generic_simplify_600 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3129 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3130 : {
3131 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3132 0 : if (canonicalize_math_after_vectorization_p ()
3133 : )
3134 : {
3135 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1010;
3136 : {
3137 : tree res_op0;
3138 : res_op0 = captures[0];
3139 : tree res_op1;
3140 : res_op1 = captures[1];
3141 : tree res_op2;
3142 : res_op2 = captures[2];
3143 : tree _r;
3144 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3145 : if (!_r)
3146 : goto next_after_fail1010;
3147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 804, __FILE__, __LINE__, true);
3148 : return _r;
3149 : }
3150 0 : next_after_fail1010:;
3151 : }
3152 0 : return NULL_TREE;
3153 : }
3154 :
3155 : tree
3156 0 : generic_simplify_609 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3157 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3158 : const combined_fn ARG_UNUSED (ctz))
3159 : {
3160 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3161 0 : {
3162 0 : tree t = TREE_TYPE (captures[0]);
3163 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1019;
3164 0 : {
3165 0 : tree res_op0;
3166 0 : {
3167 0 : tree _o1[1], _r1;
3168 0 : _o1[0] = captures[1];
3169 0 : if (TREE_TYPE (_o1[0]) != t)
3170 : {
3171 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3172 : }
3173 : else
3174 : _r1 = _o1[0];
3175 0 : res_op0 = _r1;
3176 : }
3177 0 : tree _r;
3178 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3179 0 : if (!_r)
3180 0 : goto next_after_fail1019;
3181 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
3182 : return _r;
3183 : }
3184 : next_after_fail1019:;
3185 : }
3186 : return NULL_TREE;
3187 : }
3188 :
3189 : tree
3190 0 : generic_simplify_618 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3191 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3192 : const combined_fn ARG_UNUSED (pfun))
3193 : {
3194 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3195 0 : if (INTEGRAL_TYPE_P (type)
3196 : )
3197 : {
3198 0 : {
3199 0 : wide_int nz = tree_nonzero_bits (captures[0]);
3200 0 : if (nz == 1
3201 : )
3202 : {
3203 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1028;
3204 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1028;
3205 0 : {
3206 0 : tree res_op0;
3207 0 : res_op0 = captures[0];
3208 0 : tree _r;
3209 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 817, __FILE__, __LINE__, true);
3211 0 : return _r;
3212 : }
3213 0 : next_after_fail1028:;
3214 : }
3215 : else
3216 : {
3217 0 : if (wi::popcount (nz) == 1
3218 : )
3219 : {
3220 0 : {
3221 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
3222 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1029;
3223 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3224 0 : {
3225 0 : tree res_op0;
3226 0 : {
3227 0 : tree _o1[2], _r1;
3228 0 : {
3229 0 : tree _o2[1], _r2;
3230 0 : _o2[0] = captures[0];
3231 0 : if (TREE_TYPE (_o2[0]) != utype)
3232 : {
3233 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3234 : }
3235 : else
3236 : _r2 = _o2[0];
3237 0 : _o1[0] = _r2;
3238 : }
3239 0 : _o1[1] = build_int_cst (integer_type_node,
3240 0 : wi::ctz (nz));
3241 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, utype, _o1[0], _o1[1]);
3242 0 : res_op0 = _r1;
3243 : }
3244 0 : tree _r;
3245 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3246 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3247 0 : return _r;
3248 : }
3249 0 : next_after_fail1029:;
3250 : }
3251 : }
3252 : }
3253 0 : }
3254 : }
3255 : return NULL_TREE;
3256 : }
3257 :
3258 : tree
3259 2775958 : generic_simplify_BIT_NOT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3260 : {
3261 2775958 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3262 2775958 : switch (TREE_CODE (_p0))
3263 : {
3264 1134 : case BIT_AND_EXPR:
3265 1134 : {
3266 1134 : tree _q20 = TREE_OPERAND (_p0, 0);
3267 1134 : tree _q21 = TREE_OPERAND (_p0, 1);
3268 1134 : switch (TREE_CODE (_q20))
3269 : {
3270 33 : case BIT_NOT_EXPR:
3271 33 : {
3272 33 : tree _q30 = TREE_OPERAND (_q20, 0);
3273 33 : {
3274 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3275 33 : tree res = generic_simplify_500 (loc, type, _p0, captures);
3276 33 : if (res) return res;
3277 : }
3278 0 : break;
3279 : }
3280 1101 : default:;
3281 : }
3282 1101 : switch (TREE_CODE (_q21))
3283 : {
3284 9 : case BIT_NOT_EXPR:
3285 9 : {
3286 9 : tree _q40 = TREE_OPERAND (_q21, 0);
3287 9 : {
3288 9 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3289 9 : tree res = generic_simplify_500 (loc, type, _p0, captures);
3290 9 : if (res) return res;
3291 : }
3292 0 : break;
3293 : }
3294 : default:;
3295 : }
3296 : break;
3297 : }
3298 1209 : case BIT_IOR_EXPR:
3299 1209 : {
3300 1209 : tree _q20 = TREE_OPERAND (_p0, 0);
3301 1209 : tree _q21 = TREE_OPERAND (_p0, 1);
3302 1209 : switch (TREE_CODE (_q20))
3303 : {
3304 68 : case BIT_NOT_EXPR:
3305 68 : {
3306 68 : tree _q30 = TREE_OPERAND (_q20, 0);
3307 68 : {
3308 68 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3309 68 : tree res = generic_simplify_501 (loc, type, _p0, captures);
3310 68 : if (res) return res;
3311 : }
3312 0 : break;
3313 : }
3314 1141 : default:;
3315 : }
3316 1141 : switch (TREE_CODE (_q21))
3317 : {
3318 40 : case BIT_NOT_EXPR:
3319 40 : {
3320 40 : tree _q40 = TREE_OPERAND (_q21, 0);
3321 40 : {
3322 40 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3323 40 : tree res = generic_simplify_501 (loc, type, _p0, captures);
3324 40 : if (res) return res;
3325 : }
3326 0 : break;
3327 : }
3328 : default:;
3329 : }
3330 : break;
3331 : }
3332 137 : case MINUS_EXPR:
3333 137 : {
3334 137 : tree _q20 = TREE_OPERAND (_p0, 0);
3335 137 : tree _q21 = TREE_OPERAND (_p0, 1);
3336 137 : switch (TREE_CODE (_q20))
3337 : {
3338 1 : case BIT_NOT_EXPR:
3339 1 : {
3340 1 : tree _q30 = TREE_OPERAND (_q20, 0);
3341 1 : {
3342 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3343 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1068;
3344 1 : {
3345 1 : tree res_op0;
3346 1 : res_op0 = captures[0];
3347 1 : tree res_op1;
3348 1 : res_op1 = captures[1];
3349 1 : tree _r;
3350 1 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3351 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
3352 1 : return _r;
3353 : }
3354 0 : next_after_fail1068:;
3355 : }
3356 0 : break;
3357 : }
3358 136 : default:;
3359 : }
3360 136 : {
3361 136 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3362 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1069;
3363 136 : {
3364 136 : tree res_op0;
3365 136 : {
3366 136 : tree _o1[1], _r1;
3367 136 : _o1[0] = captures[1];
3368 136 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3369 136 : res_op0 = _r1;
3370 : }
3371 136 : tree res_op1;
3372 136 : res_op1 = captures[2];
3373 136 : tree _r;
3374 136 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3375 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
3376 136 : return _r;
3377 : }
3378 0 : next_after_fail1069:;
3379 : }
3380 0 : if (integer_each_onep (_q21))
3381 : {
3382 0 : {
3383 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3384 0 : tree res = generic_simplify_502 (loc, type, _p0, captures);
3385 0 : if (res) return res;
3386 : }
3387 : }
3388 : break;
3389 : }
3390 90948 : case PLUS_EXPR:
3391 90948 : {
3392 90948 : tree _q20 = TREE_OPERAND (_p0, 0);
3393 90948 : tree _q21 = TREE_OPERAND (_p0, 1);
3394 90948 : switch (TREE_CODE (_q20))
3395 : {
3396 16 : case BIT_NOT_EXPR:
3397 16 : {
3398 16 : tree _q30 = TREE_OPERAND (_q20, 0);
3399 16 : {
3400 16 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3401 16 : tree res = generic_simplify_503 (loc, type, _p0, captures);
3402 16 : if (res) return res;
3403 : }
3404 0 : break;
3405 : }
3406 90932 : default:;
3407 : }
3408 90932 : switch (TREE_CODE (_q21))
3409 : {
3410 1 : case BIT_NOT_EXPR:
3411 1 : {
3412 1 : tree _q40 = TREE_OPERAND (_q21, 0);
3413 1 : {
3414 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
3415 1 : tree res = generic_simplify_503 (loc, type, _p0, captures);
3416 1 : if (res) return res;
3417 : }
3418 0 : break;
3419 : }
3420 76006 : case INTEGER_CST:
3421 76006 : {
3422 76006 : {
3423 76006 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3424 76006 : if ((INTEGRAL_TYPE_P (type)
3425 76006 : && TYPE_UNSIGNED (type))
3426 89876 : || (!TYPE_OVERFLOW_SANITIZED (type)
3427 13862 : && may_negate_without_overflow_p (captures[2]))
3428 : )
3429 : {
3430 75991 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1070;
3431 75991 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1070;
3432 75991 : {
3433 75991 : tree res_op0;
3434 75991 : {
3435 75991 : tree _o1[1], _r1;
3436 75991 : _o1[0] = captures[1];
3437 75991 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3438 75991 : res_op0 = _r1;
3439 : }
3440 75991 : tree res_op1;
3441 75991 : res_op1 = const_unop (NEGATE_EXPR, type, captures[2]);
3442 75991 : tree _r;
3443 75991 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3444 75991 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
3445 75991 : return _r;
3446 : }
3447 15 : next_after_fail1070:;
3448 : }
3449 : }
3450 15 : break;
3451 : }
3452 14940 : default:;
3453 : }
3454 14940 : if (integer_all_onesp (_q21))
3455 : {
3456 0 : {
3457 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3458 0 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3459 0 : if (res) return res;
3460 : }
3461 : }
3462 : break;
3463 : }
3464 398 : case RSHIFT_EXPR:
3465 398 : {
3466 398 : tree _q20 = TREE_OPERAND (_p0, 0);
3467 398 : tree _q21 = TREE_OPERAND (_p0, 1);
3468 398 : {
3469 398 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3470 398 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3471 : )
3472 : {
3473 295 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1071;
3474 295 : {
3475 295 : tree res_op0;
3476 295 : {
3477 295 : tree _o1[1], _r1;
3478 295 : _o1[0] = captures[1];
3479 295 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3480 295 : if (EXPR_P (_r1))
3481 289 : goto next_after_fail1071;
3482 6 : res_op0 = _r1;
3483 : }
3484 6 : tree res_op1;
3485 6 : res_op1 = captures[2];
3486 6 : tree _r;
3487 6 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
3488 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3489 6 : return _r;
3490 : }
3491 377 : next_after_fail1071:;
3492 : }
3493 : else
3494 : {
3495 206 : if (INTEGRAL_TYPE_P (type)
3496 206 : && !wi::neg_p (tree_nonzero_bits (captures[1]))
3497 : )
3498 : {
3499 15 : {
3500 15 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
3501 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1072;
3502 15 : {
3503 15 : tree res_op0;
3504 15 : {
3505 15 : tree _o1[2], _r1;
3506 15 : {
3507 15 : tree _o2[1], _r2;
3508 15 : {
3509 15 : tree _o3[1], _r3;
3510 15 : _o3[0] = captures[1];
3511 15 : if (TREE_TYPE (_o3[0]) != stype)
3512 : {
3513 15 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
3514 : }
3515 : else
3516 : _r3 = _o3[0];
3517 15 : _o2[0] = _r3;
3518 : }
3519 15 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3520 15 : if (EXPR_P (_r2))
3521 0 : goto next_after_fail1072;
3522 15 : _o1[0] = _r2;
3523 : }
3524 15 : _o1[1] = captures[2];
3525 15 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3526 15 : res_op0 = _r1;
3527 : }
3528 15 : tree _r;
3529 15 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3530 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
3531 15 : return _r;
3532 : }
3533 377 : next_after_fail1072:;
3534 : }
3535 : }
3536 : }
3537 : }
3538 377 : switch (TREE_CODE (_q20))
3539 : {
3540 40 : CASE_CONVERT:
3541 40 : {
3542 40 : tree _q30 = TREE_OPERAND (_q20, 0);
3543 40 : switch (TREE_CODE (_q30))
3544 : {
3545 2 : case BIT_NOT_EXPR:
3546 2 : {
3547 2 : tree _q40 = TREE_OPERAND (_q30, 0);
3548 2 : {
3549 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
3550 2 : tree res = generic_simplify_505 (loc, type, _p0, captures);
3551 2 : if (res) return res;
3552 : }
3553 1 : break;
3554 : }
3555 : default:;
3556 : }
3557 : break;
3558 : }
3559 29 : case BIT_NOT_EXPR:
3560 29 : {
3561 29 : tree _q30 = TREE_OPERAND (_q20, 0);
3562 29 : {
3563 29 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
3564 29 : tree res = generic_simplify_505 (loc, type, _p0, captures);
3565 29 : if (res) return res;
3566 : }
3567 8 : break;
3568 : }
3569 : default:;
3570 : }
3571 : break;
3572 : }
3573 102 : case BIT_NOT_EXPR:
3574 102 : {
3575 102 : tree _q20 = TREE_OPERAND (_p0, 0);
3576 102 : {
3577 102 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3578 102 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1073;
3579 102 : {
3580 102 : tree res_op0;
3581 102 : res_op0 = captures[0];
3582 102 : tree _r;
3583 102 : _r = non_lvalue_loc (loc, res_op0);
3584 102 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
3585 2775958 : return _r;
3586 : }
3587 0 : next_after_fail1073:;
3588 : }
3589 0 : break;
3590 : }
3591 1004527 : CASE_CONVERT:
3592 1004527 : {
3593 1004527 : tree _q20 = TREE_OPERAND (_p0, 0);
3594 1004527 : switch (TREE_CODE (_q20))
3595 : {
3596 25 : case NEGATE_EXPR:
3597 25 : {
3598 25 : tree _q30 = TREE_OPERAND (_q20, 0);
3599 25 : {
3600 25 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3601 25 : tree res = generic_simplify_506 (loc, type, _p0, captures);
3602 25 : if (res) return res;
3603 : }
3604 0 : break;
3605 : }
3606 842 : case MINUS_EXPR:
3607 842 : {
3608 842 : tree _q30 = TREE_OPERAND (_q20, 0);
3609 842 : tree _q31 = TREE_OPERAND (_q20, 1);
3610 842 : if (integer_each_onep (_q31))
3611 : {
3612 28 : {
3613 28 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3614 28 : tree res = generic_simplify_502 (loc, type, _p0, captures);
3615 28 : if (res) return res;
3616 : }
3617 : }
3618 : break;
3619 : }
3620 56646 : case PLUS_EXPR:
3621 56646 : {
3622 56646 : tree _q30 = TREE_OPERAND (_q20, 0);
3623 56646 : tree _q31 = TREE_OPERAND (_q20, 1);
3624 56646 : if (integer_all_onesp (_q31))
3625 : {
3626 3790 : {
3627 3790 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3628 3790 : tree res = generic_simplify_504 (loc, type, _p0, captures);
3629 3790 : if (res) return res;
3630 : }
3631 : }
3632 : break;
3633 : }
3634 145 : case BIT_XOR_EXPR:
3635 145 : {
3636 145 : tree _q30 = TREE_OPERAND (_q20, 0);
3637 145 : tree _q31 = TREE_OPERAND (_q20, 1);
3638 145 : switch (TREE_CODE (_q31))
3639 : {
3640 7 : case INTEGER_CST:
3641 7 : {
3642 7 : {
3643 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
3644 7 : tree res = generic_simplify_507 (loc, type, _p0, captures);
3645 7 : if (res) return res;
3646 : }
3647 0 : break;
3648 : }
3649 138 : default:;
3650 : }
3651 138 : switch (TREE_CODE (_q30))
3652 : {
3653 0 : case BIT_NOT_EXPR:
3654 0 : {
3655 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3656 0 : {
3657 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q31 };
3658 0 : tree res = generic_simplify_508 (loc, type, _p0, captures);
3659 0 : if (res) return res;
3660 : }
3661 0 : break;
3662 : }
3663 138 : default:;
3664 : }
3665 138 : switch (TREE_CODE (_q31))
3666 : {
3667 0 : case BIT_NOT_EXPR:
3668 0 : {
3669 0 : tree _q50 = TREE_OPERAND (_q31, 0);
3670 0 : {
3671 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
3672 0 : tree res = generic_simplify_508 (loc, type, _p0, captures);
3673 0 : if (res) return res;
3674 : }
3675 0 : break;
3676 : }
3677 : default:;
3678 : }
3679 : break;
3680 : }
3681 93 : case RSHIFT_EXPR:
3682 93 : {
3683 93 : tree _q30 = TREE_OPERAND (_q20, 0);
3684 93 : tree _q31 = TREE_OPERAND (_q20, 1);
3685 93 : switch (TREE_CODE (_q30))
3686 : {
3687 17 : CASE_CONVERT:
3688 17 : {
3689 17 : tree _q40 = TREE_OPERAND (_q30, 0);
3690 17 : switch (TREE_CODE (_q40))
3691 : {
3692 1 : case BIT_NOT_EXPR:
3693 1 : {
3694 1 : tree _q50 = TREE_OPERAND (_q40, 0);
3695 1 : {
3696 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3697 1 : tree res = generic_simplify_509 (loc, type, _p0, captures);
3698 1 : if (res) return res;
3699 : }
3700 0 : break;
3701 : }
3702 : default:;
3703 : }
3704 : break;
3705 : }
3706 3 : case BIT_NOT_EXPR:
3707 3 : {
3708 3 : tree _q40 = TREE_OPERAND (_q30, 0);
3709 3 : {
3710 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3711 3 : tree res = generic_simplify_509 (loc, type, _p0, captures);
3712 3 : if (res) return res;
3713 : }
3714 1 : break;
3715 : }
3716 : default:;
3717 : }
3718 : break;
3719 : }
3720 0 : case LROTATE_EXPR:
3721 0 : {
3722 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3723 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3724 0 : switch (TREE_CODE (_q30))
3725 : {
3726 0 : CASE_CONVERT:
3727 0 : {
3728 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3729 0 : switch (TREE_CODE (_q40))
3730 : {
3731 0 : case BIT_NOT_EXPR:
3732 0 : {
3733 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3734 0 : {
3735 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3736 0 : tree res = generic_simplify_510 (loc, type, _p0, captures, LROTATE_EXPR);
3737 0 : if (res) return res;
3738 : }
3739 0 : break;
3740 : }
3741 : default:;
3742 : }
3743 : break;
3744 : }
3745 0 : case BIT_NOT_EXPR:
3746 0 : {
3747 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3748 0 : {
3749 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3750 0 : tree res = generic_simplify_510 (loc, type, _p0, captures, LROTATE_EXPR);
3751 0 : if (res) return res;
3752 : }
3753 0 : break;
3754 : }
3755 : default:;
3756 : }
3757 : break;
3758 : }
3759 0 : case RROTATE_EXPR:
3760 0 : {
3761 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3762 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3763 0 : switch (TREE_CODE (_q30))
3764 : {
3765 0 : CASE_CONVERT:
3766 0 : {
3767 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3768 0 : switch (TREE_CODE (_q40))
3769 : {
3770 0 : case BIT_NOT_EXPR:
3771 0 : {
3772 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3773 0 : {
3774 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q31 };
3775 0 : tree res = generic_simplify_510 (loc, type, _p0, captures, RROTATE_EXPR);
3776 0 : if (res) return res;
3777 : }
3778 0 : break;
3779 : }
3780 : default:;
3781 : }
3782 : break;
3783 : }
3784 0 : case BIT_NOT_EXPR:
3785 0 : {
3786 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3787 0 : {
3788 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
3789 0 : tree res = generic_simplify_510 (loc, type, _p0, captures, RROTATE_EXPR);
3790 0 : if (res) return res;
3791 : }
3792 0 : break;
3793 : }
3794 : default:;
3795 : }
3796 : break;
3797 : }
3798 : default:;
3799 : }
3800 : break;
3801 : }
3802 120 : case NEGATE_EXPR:
3803 120 : {
3804 120 : tree _q20 = TREE_OPERAND (_p0, 0);
3805 120 : {
3806 120 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3807 120 : tree res = generic_simplify_506 (loc, type, _p0, captures);
3808 120 : if (res) return res;
3809 : }
3810 0 : break;
3811 : }
3812 1572 : case BIT_XOR_EXPR:
3813 1572 : {
3814 1572 : tree _q20 = TREE_OPERAND (_p0, 0);
3815 1572 : tree _q21 = TREE_OPERAND (_p0, 1);
3816 1572 : switch (TREE_CODE (_q21))
3817 : {
3818 22 : case INTEGER_CST:
3819 22 : {
3820 22 : {
3821 22 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3822 22 : tree res = generic_simplify_507 (loc, type, _p0, captures);
3823 22 : if (res) return res;
3824 : }
3825 0 : break;
3826 : }
3827 1550 : default:;
3828 : }
3829 1550 : switch (TREE_CODE (_q20))
3830 : {
3831 0 : case BIT_NOT_EXPR:
3832 0 : {
3833 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3834 0 : {
3835 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
3836 0 : tree res = generic_simplify_508 (loc, type, _p0, captures);
3837 0 : if (res) return res;
3838 : }
3839 0 : break;
3840 : }
3841 1550 : default:;
3842 : }
3843 1550 : switch (TREE_CODE (_q21))
3844 : {
3845 0 : case BIT_NOT_EXPR:
3846 0 : {
3847 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3848 0 : {
3849 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
3850 0 : tree res = generic_simplify_508 (loc, type, _p0, captures);
3851 0 : if (res) return res;
3852 : }
3853 0 : break;
3854 : }
3855 1550 : default:;
3856 : }
3857 1550 : if (tree_truth_valued_p (_q20))
3858 : {
3859 31 : if (tree_truth_valued_p (_q21))
3860 : {
3861 7 : {
3862 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3863 14 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3864 14 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
3865 : )
3866 : {
3867 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1074;
3868 0 : {
3869 0 : tree res_op0;
3870 0 : {
3871 0 : tree _o1[2], _r1;
3872 0 : _o1[0] = captures[1];
3873 0 : _o1[1] = captures[2];
3874 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
3875 0 : res_op0 = _r1;
3876 : }
3877 0 : tree _r;
3878 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3879 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
3880 0 : return _r;
3881 : }
3882 0 : next_after_fail1074:;
3883 : }
3884 : }
3885 : }
3886 : }
3887 : break;
3888 : }
3889 0 : case MIN_EXPR:
3890 0 : {
3891 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3892 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3893 0 : switch (TREE_CODE (_q20))
3894 : {
3895 0 : case BIT_NOT_EXPR:
3896 0 : {
3897 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3898 0 : {
3899 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3900 0 : tree res = generic_simplify_511 (loc, type, _p0, captures, MIN_EXPR, MAX_EXPR);
3901 0 : if (res) return res;
3902 : }
3903 0 : break;
3904 : }
3905 0 : default:;
3906 : }
3907 0 : switch (TREE_CODE (_q21))
3908 : {
3909 0 : case BIT_NOT_EXPR:
3910 0 : {
3911 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3912 0 : {
3913 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3914 0 : tree res = generic_simplify_511 (loc, type, _p0, captures, MIN_EXPR, MAX_EXPR);
3915 0 : if (res) return res;
3916 : }
3917 0 : break;
3918 : }
3919 : default:;
3920 : }
3921 : break;
3922 : }
3923 0 : case MAX_EXPR:
3924 0 : {
3925 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3926 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3927 0 : switch (TREE_CODE (_q20))
3928 : {
3929 0 : case BIT_NOT_EXPR:
3930 0 : {
3931 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3932 0 : {
3933 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3934 0 : tree res = generic_simplify_511 (loc, type, _p0, captures, MAX_EXPR, MIN_EXPR);
3935 0 : if (res) return res;
3936 : }
3937 0 : break;
3938 : }
3939 0 : default:;
3940 : }
3941 0 : switch (TREE_CODE (_q21))
3942 : {
3943 0 : case BIT_NOT_EXPR:
3944 0 : {
3945 0 : tree _q40 = TREE_OPERAND (_q21, 0);
3946 0 : {
3947 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3948 0 : tree res = generic_simplify_511 (loc, type, _p0, captures, MAX_EXPR, MIN_EXPR);
3949 0 : if (res) return res;
3950 : }
3951 0 : break;
3952 : }
3953 : default:;
3954 : }
3955 : break;
3956 : }
3957 1 : case LROTATE_EXPR:
3958 1 : {
3959 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3960 1 : tree _q21 = TREE_OPERAND (_p0, 1);
3961 1 : switch (TREE_CODE (_q20))
3962 : {
3963 0 : CASE_CONVERT:
3964 0 : {
3965 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3966 0 : switch (TREE_CODE (_q30))
3967 : {
3968 0 : case BIT_NOT_EXPR:
3969 0 : {
3970 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3971 0 : {
3972 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
3973 0 : tree res = generic_simplify_512 (loc, type, _p0, captures, LROTATE_EXPR);
3974 0 : if (res) return res;
3975 : }
3976 0 : break;
3977 : }
3978 : default:;
3979 : }
3980 : break;
3981 : }
3982 1 : case BIT_NOT_EXPR:
3983 1 : {
3984 1 : tree _q30 = TREE_OPERAND (_q20, 0);
3985 1 : {
3986 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
3987 1 : tree res = generic_simplify_512 (loc, type, _p0, captures, LROTATE_EXPR);
3988 1 : if (res) return res;
3989 : }
3990 0 : break;
3991 : }
3992 : default:;
3993 : }
3994 : break;
3995 : }
3996 1 : case RROTATE_EXPR:
3997 1 : {
3998 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3999 1 : tree _q21 = TREE_OPERAND (_p0, 1);
4000 1 : switch (TREE_CODE (_q20))
4001 : {
4002 0 : CASE_CONVERT:
4003 0 : {
4004 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4005 0 : switch (TREE_CODE (_q30))
4006 : {
4007 0 : case BIT_NOT_EXPR:
4008 0 : {
4009 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4010 0 : {
4011 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q21 };
4012 0 : tree res = generic_simplify_512 (loc, type, _p0, captures, RROTATE_EXPR);
4013 0 : if (res) return res;
4014 : }
4015 0 : break;
4016 : }
4017 : default:;
4018 : }
4019 : break;
4020 : }
4021 1 : case BIT_NOT_EXPR:
4022 1 : {
4023 1 : tree _q30 = TREE_OPERAND (_q20, 0);
4024 1 : {
4025 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q30, _q21 };
4026 1 : tree res = generic_simplify_512 (loc, type, _p0, captures, RROTATE_EXPR);
4027 1 : if (res) return res;
4028 : }
4029 0 : break;
4030 : }
4031 : default:;
4032 : }
4033 : break;
4034 : }
4035 32 : case VEC_COND_EXPR:
4036 32 : {
4037 32 : tree _q20 = TREE_OPERAND (_p0, 0);
4038 32 : tree _q21 = TREE_OPERAND (_p0, 1);
4039 32 : tree _q22 = TREE_OPERAND (_p0, 2);
4040 32 : {
4041 32 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4042 32 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1075;
4043 32 : {
4044 32 : tree res_op0;
4045 32 : res_op0 = captures[1];
4046 32 : tree res_op1;
4047 32 : {
4048 32 : tree _o1[1], _r1;
4049 32 : _o1[0] = captures[2];
4050 32 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, type, _o1[0]);
4051 32 : if (EXPR_P (_r1))
4052 0 : goto next_after_fail1075;
4053 32 : res_op1 = _r1;
4054 : }
4055 32 : tree res_op2;
4056 32 : {
4057 32 : tree _o1[1], _r1;
4058 32 : _o1[0] = captures[3];
4059 32 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, type, _o1[0]);
4060 32 : if (EXPR_P (_r1))
4061 0 : goto next_after_fail1075;
4062 32 : res_op2 = _r1;
4063 : }
4064 32 : tree _r;
4065 32 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4066 32 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
4067 32 : return _r;
4068 : }
4069 0 : next_after_fail1075:;
4070 : }
4071 0 : break;
4072 : }
4073 4 : case LT_EXPR:
4074 4 : {
4075 4 : tree _q20 = TREE_OPERAND (_p0, 0);
4076 4 : tree _q21 = TREE_OPERAND (_p0, 1);
4077 4 : {
4078 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4079 4 : tree res = generic_simplify_513 (loc, type, _p0, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
4080 4 : if (res) return res;
4081 : }
4082 4 : break;
4083 : }
4084 4 : case LE_EXPR:
4085 4 : {
4086 4 : tree _q20 = TREE_OPERAND (_p0, 0);
4087 4 : tree _q21 = TREE_OPERAND (_p0, 1);
4088 4 : {
4089 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4090 4 : tree res = generic_simplify_513 (loc, type, _p0, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
4091 4 : if (res) return res;
4092 : }
4093 4 : break;
4094 : }
4095 63 : case EQ_EXPR:
4096 63 : {
4097 63 : tree _q20 = TREE_OPERAND (_p0, 0);
4098 63 : tree _q21 = TREE_OPERAND (_p0, 1);
4099 63 : {
4100 63 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4101 63 : tree res = generic_simplify_513 (loc, type, _p0, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
4102 63 : if (res) return res;
4103 : }
4104 56 : break;
4105 : }
4106 112 : case NE_EXPR:
4107 112 : {
4108 112 : tree _q20 = TREE_OPERAND (_p0, 0);
4109 112 : tree _q21 = TREE_OPERAND (_p0, 1);
4110 112 : {
4111 112 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4112 112 : tree res = generic_simplify_513 (loc, type, _p0, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
4113 112 : if (res) return res;
4114 : }
4115 107 : break;
4116 : }
4117 0 : case GE_EXPR:
4118 0 : {
4119 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4120 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4121 0 : {
4122 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4123 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
4124 0 : if (res) return res;
4125 : }
4126 0 : break;
4127 : }
4128 66 : case GT_EXPR:
4129 66 : {
4130 66 : tree _q20 = TREE_OPERAND (_p0, 0);
4131 66 : tree _q21 = TREE_OPERAND (_p0, 1);
4132 66 : {
4133 66 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4134 66 : tree res = generic_simplify_513 (loc, type, _p0, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
4135 66 : if (res) return res;
4136 : }
4137 66 : break;
4138 : }
4139 0 : case UNORDERED_EXPR:
4140 0 : {
4141 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4142 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4143 0 : {
4144 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4145 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
4146 0 : if (res) return res;
4147 : }
4148 0 : break;
4149 : }
4150 0 : case ORDERED_EXPR:
4151 0 : {
4152 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4153 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4154 0 : {
4155 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4156 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
4157 0 : if (res) return res;
4158 : }
4159 0 : break;
4160 : }
4161 0 : case UNLT_EXPR:
4162 0 : {
4163 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4164 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4165 0 : {
4166 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4167 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
4168 0 : if (res) return res;
4169 : }
4170 0 : break;
4171 : }
4172 0 : case UNLE_EXPR:
4173 0 : {
4174 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4175 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4176 0 : {
4177 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4178 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
4179 0 : if (res) return res;
4180 : }
4181 0 : break;
4182 : }
4183 0 : case UNGT_EXPR:
4184 0 : {
4185 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4186 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4187 0 : {
4188 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4189 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
4190 0 : if (res) return res;
4191 : }
4192 0 : break;
4193 : }
4194 0 : case UNGE_EXPR:
4195 0 : {
4196 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4197 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4198 0 : {
4199 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4200 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
4201 0 : if (res) return res;
4202 : }
4203 0 : break;
4204 : }
4205 0 : case UNEQ_EXPR:
4206 0 : {
4207 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4208 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4209 0 : {
4210 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4211 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
4212 0 : if (res) return res;
4213 : }
4214 0 : break;
4215 : }
4216 0 : case LTGT_EXPR:
4217 0 : {
4218 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4219 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4220 0 : {
4221 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4222 0 : tree res = generic_simplify_513 (loc, type, _p0, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
4223 0 : if (res) return res;
4224 : }
4225 0 : break;
4226 : }
4227 : default:;
4228 : }
4229 : return NULL_TREE;
4230 : }
4231 :
4232 : tree
4233 2227189 : generic_simplify_TRUNC_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4234 : {
4235 2227189 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4236 2227189 : if (integer_onep (_p1))
4237 : {
4238 21670 : {
4239 21670 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4240 21670 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4241 21670 : if (res) return res;
4242 : }
4243 : }
4244 2205519 : switch (TREE_CODE (_p0))
4245 : {
4246 159740 : CASE_CONVERT:
4247 159740 : {
4248 159740 : tree _q20 = TREE_OPERAND (_p0, 0);
4249 159740 : switch (TREE_CODE (_p1))
4250 : {
4251 36951 : CASE_CONVERT:
4252 36951 : {
4253 36951 : tree _q40 = TREE_OPERAND (_p1, 0);
4254 36951 : switch (TREE_CODE (_q40))
4255 : {
4256 0 : case LSHIFT_EXPR:
4257 0 : {
4258 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4259 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4260 0 : if (integer_onep (_q50))
4261 : {
4262 0 : {
4263 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
4264 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4265 0 : if (res) return res;
4266 : }
4267 : }
4268 : break;
4269 : }
4270 : default:;
4271 : }
4272 : break;
4273 : }
4274 8 : case LSHIFT_EXPR:
4275 8 : {
4276 8 : tree _q40 = TREE_OPERAND (_p1, 0);
4277 8 : tree _q41 = TREE_OPERAND (_p1, 1);
4278 8 : if (integer_onep (_q40))
4279 : {
4280 7 : {
4281 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
4282 7 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4283 7 : if (res) return res;
4284 : }
4285 : }
4286 : break;
4287 : }
4288 : default:;
4289 : }
4290 : break;
4291 : }
4292 2205519 : default:;
4293 : }
4294 2205519 : switch (TREE_CODE (_p1))
4295 : {
4296 132058 : CASE_CONVERT:
4297 132058 : {
4298 132058 : tree _q30 = TREE_OPERAND (_p1, 0);
4299 132058 : switch (TREE_CODE (_q30))
4300 : {
4301 7 : case LSHIFT_EXPR:
4302 7 : {
4303 7 : tree _q40 = TREE_OPERAND (_q30, 0);
4304 7 : tree _q41 = TREE_OPERAND (_q30, 1);
4305 7 : if (integer_onep (_q40))
4306 : {
4307 7 : {
4308 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
4309 7 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4310 7 : if (res) return res;
4311 : }
4312 : }
4313 : break;
4314 : }
4315 : default:;
4316 : }
4317 : break;
4318 : }
4319 33 : case LSHIFT_EXPR:
4320 33 : {
4321 33 : tree _q30 = TREE_OPERAND (_p1, 0);
4322 33 : tree _q31 = TREE_OPERAND (_p1, 1);
4323 33 : if (integer_onep (_q30))
4324 : {
4325 16 : {
4326 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
4327 16 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4328 16 : if (res) return res;
4329 : }
4330 : }
4331 : break;
4332 : }
4333 2205510 : default:;
4334 : }
4335 2205510 : if (integer_zerop (_p0))
4336 : {
4337 2359 : {
4338 2359 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4339 2359 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4340 2359 : if (res) return res;
4341 : }
4342 : }
4343 2203777 : switch (TREE_CODE (_p1))
4344 : {
4345 13398 : case SSA_NAME:
4346 13398 : {
4347 13398 : {
4348 13398 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4349 13398 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4350 13398 : if (res) return res;
4351 : }
4352 13398 : break;
4353 : }
4354 2203777 : default:;
4355 : }
4356 2203777 : if (integer_minus_onep (_p1))
4357 : {
4358 2520 : {
4359 2520 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4360 2520 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4361 2520 : if (res) return res;
4362 : }
4363 : }
4364 2202155 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4365 : {
4366 893 : {
4367 893 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4368 893 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4369 893 : if (res) return res;
4370 : }
4371 : }
4372 2202044 : switch (TREE_CODE (_p1))
4373 : {
4374 1 : case ABS_EXPR:
4375 1 : {
4376 1 : tree _q30 = TREE_OPERAND (_p1, 0);
4377 1 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4378 : {
4379 1 : {
4380 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4381 1 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4382 1 : if (res) return res;
4383 : }
4384 : }
4385 : break;
4386 : }
4387 2202043 : default:;
4388 : }
4389 2202043 : switch (TREE_CODE (_p0))
4390 : {
4391 0 : case ABS_EXPR:
4392 0 : {
4393 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4394 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4395 : {
4396 0 : {
4397 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4398 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4399 0 : if (res) return res;
4400 : }
4401 : }
4402 : break;
4403 : }
4404 2202043 : default:;
4405 : }
4406 2202043 : switch (TREE_CODE (_p1))
4407 : {
4408 658 : case NEGATE_EXPR:
4409 658 : {
4410 658 : tree _q30 = TREE_OPERAND (_p1, 0);
4411 658 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4412 : {
4413 1 : {
4414 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4415 1 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4416 1 : if (res) return res;
4417 : }
4418 : }
4419 : break;
4420 : }
4421 2202042 : default:;
4422 : }
4423 2202042 : switch (TREE_CODE (_p0))
4424 : {
4425 374 : case NEGATE_EXPR:
4426 374 : {
4427 374 : tree _q20 = TREE_OPERAND (_p0, 0);
4428 374 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4429 : {
4430 0 : {
4431 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4432 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4433 0 : if (res) return res;
4434 : }
4435 : }
4436 : break;
4437 : }
4438 9139 : case TRUNC_DIV_EXPR:
4439 9139 : {
4440 9139 : tree _q20 = TREE_OPERAND (_p0, 0);
4441 9139 : tree _q21 = TREE_OPERAND (_p0, 1);
4442 9139 : switch (TREE_CODE (_q21))
4443 : {
4444 9050 : case INTEGER_CST:
4445 9050 : {
4446 9050 : switch (TREE_CODE (_p1))
4447 : {
4448 9049 : case INTEGER_CST:
4449 9049 : {
4450 9049 : {
4451 9049 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4452 9049 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4453 9049 : if (res) return res;
4454 : }
4455 9049 : break;
4456 : }
4457 : default:;
4458 : }
4459 : break;
4460 : }
4461 : default:;
4462 : }
4463 : break;
4464 : }
4465 159699 : CASE_CONVERT:
4466 159699 : {
4467 159699 : tree _q20 = TREE_OPERAND (_p0, 0);
4468 159699 : switch (TREE_CODE (_q20))
4469 : {
4470 0 : case BIT_AND_EXPR:
4471 0 : {
4472 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4473 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4474 0 : switch (TREE_CODE (_q31))
4475 : {
4476 0 : case INTEGER_CST:
4477 0 : {
4478 0 : switch (TREE_CODE (_p1))
4479 : {
4480 0 : case INTEGER_CST:
4481 0 : {
4482 0 : {
4483 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4484 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4485 0 : if (res) return res;
4486 : }
4487 0 : break;
4488 : }
4489 : default:;
4490 : }
4491 : break;
4492 : }
4493 : default:;
4494 : }
4495 : break;
4496 : }
4497 : default:;
4498 : }
4499 : break;
4500 : }
4501 45382 : case BIT_AND_EXPR:
4502 45382 : {
4503 45382 : tree _q20 = TREE_OPERAND (_p0, 0);
4504 45382 : tree _q21 = TREE_OPERAND (_p0, 1);
4505 45382 : switch (TREE_CODE (_q21))
4506 : {
4507 45356 : case INTEGER_CST:
4508 45356 : {
4509 45356 : switch (TREE_CODE (_p1))
4510 : {
4511 45352 : case INTEGER_CST:
4512 45352 : {
4513 45352 : {
4514 45352 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4515 45352 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4516 45352 : if (res) return res;
4517 : }
4518 45351 : break;
4519 : }
4520 : default:;
4521 : }
4522 : break;
4523 : }
4524 : default:;
4525 : }
4526 : break;
4527 : }
4528 38092 : case MULT_EXPR:
4529 38092 : {
4530 38092 : tree _q20 = TREE_OPERAND (_p0, 0);
4531 38092 : tree _q21 = TREE_OPERAND (_p0, 1);
4532 38092 : if (integer_pow2p (_q21))
4533 : {
4534 7722 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4535 : {
4536 7206 : {
4537 7206 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4538 7206 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4539 7206 : if (res) return res;
4540 : }
4541 : }
4542 : }
4543 31027 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4544 : {
4545 163 : {
4546 163 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4547 163 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4548 163 : if (res) return res;
4549 : }
4550 : }
4551 30879 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4552 : {
4553 22 : {
4554 22 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4555 22 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4556 22 : if (res) return res;
4557 : }
4558 : }
4559 30870 : switch (TREE_CODE (_q21))
4560 : {
4561 30544 : case INTEGER_CST:
4562 30544 : {
4563 30544 : switch (TREE_CODE (_p1))
4564 : {
4565 3 : case MULT_EXPR:
4566 3 : {
4567 3 : tree _q50 = TREE_OPERAND (_p1, 0);
4568 3 : tree _q51 = TREE_OPERAND (_p1, 1);
4569 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4570 : {
4571 3 : switch (TREE_CODE (_q51))
4572 : {
4573 3 : case INTEGER_CST:
4574 3 : {
4575 3 : {
4576 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4577 3 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR);
4578 3 : if (res) return res;
4579 : }
4580 0 : break;
4581 : }
4582 : default:;
4583 : }
4584 : }
4585 : break;
4586 : }
4587 : default:;
4588 : }
4589 : break;
4590 : }
4591 : default:;
4592 : }
4593 : break;
4594 : }
4595 0 : case VEC_COND_EXPR:
4596 0 : {
4597 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4598 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4599 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4600 0 : switch (TREE_CODE (_p1))
4601 : {
4602 0 : case VEC_COND_EXPR:
4603 0 : {
4604 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4605 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4606 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4607 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4608 : {
4609 0 : {
4610 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4611 0 : if (VECTOR_TYPE_P (type)
4612 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4613 : || types_match (type, TREE_TYPE (captures[2]))
4614 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4615 : || (optimize_vectors_before_lowering_p ()
4616 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4617 : )
4618 : {
4619 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1577;
4620 0 : {
4621 0 : tree res_op0;
4622 0 : res_op0 = captures[1];
4623 0 : tree res_op1;
4624 0 : {
4625 0 : tree _o1[2], _r1;
4626 0 : _o1[0] = captures[2];
4627 0 : _o1[1] = captures[5];
4628 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4629 0 : if (EXPR_P (_r1))
4630 0 : goto next_after_fail1577;
4631 0 : res_op1 = _r1;
4632 : }
4633 0 : tree res_op2;
4634 0 : {
4635 0 : tree _o1[2], _r1;
4636 0 : _o1[0] = captures[3];
4637 0 : _o1[1] = captures[6];
4638 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4639 0 : if (EXPR_P (_r1))
4640 0 : goto next_after_fail1577;
4641 0 : res_op2 = _r1;
4642 : }
4643 0 : tree _r;
4644 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4645 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
4646 0 : return _r;
4647 : }
4648 0 : next_after_fail1577:;
4649 : }
4650 : }
4651 : }
4652 : break;
4653 : }
4654 0 : default:;
4655 : }
4656 0 : {
4657 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4658 0 : if (VECTOR_TYPE_P (type)
4659 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4660 : || types_match (type, TREE_TYPE (captures[2]))
4661 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4662 : || (optimize_vectors_before_lowering_p ()
4663 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4664 : )
4665 : {
4666 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1578;
4667 0 : {
4668 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1578;
4669 0 : tree res_op0;
4670 0 : res_op0 = captures[1];
4671 0 : tree res_op1;
4672 0 : {
4673 0 : tree _o1[2], _r1;
4674 0 : _o1[0] = captures[2];
4675 0 : _o1[1] = unshare_expr (captures[4]);
4676 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4677 0 : if (EXPR_P (_r1))
4678 0 : goto next_after_fail1578;
4679 0 : res_op1 = _r1;
4680 : }
4681 0 : tree res_op2;
4682 0 : {
4683 0 : tree _o1[2], _r1;
4684 0 : _o1[0] = captures[3];
4685 0 : _o1[1] = captures[4];
4686 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4687 0 : if (EXPR_P (_r1))
4688 0 : goto next_after_fail1578;
4689 0 : res_op2 = _r1;
4690 : }
4691 0 : tree _r;
4692 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4693 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
4694 0 : return _r;
4695 : }
4696 0 : next_after_fail1578:;
4697 : }
4698 : }
4699 0 : break;
4700 : }
4701 2194816 : default:;
4702 : }
4703 2194816 : if (integer_onep (_p0))
4704 : {
4705 1228 : {
4706 1228 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4707 1228 : if (INTEGRAL_TYPE_P (type)
4708 1225 : && TYPE_PRECISION (type) > 1
4709 1225 : && !integer_zerop (captures[1])
4710 1699 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[1]))
4711 : )
4712 : {
4713 414 : if (TYPE_UNSIGNED (type)
4714 : )
4715 : {
4716 54 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1579;
4717 54 : {
4718 54 : tree res_op0;
4719 54 : {
4720 54 : tree _o1[2], _r1;
4721 54 : _o1[0] = captures[1];
4722 54 : _o1[1] = build_one_cst (type);
4723 54 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
4724 54 : res_op0 = _r1;
4725 : }
4726 54 : tree _r;
4727 54 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4728 54 : if (TREE_SIDE_EFFECTS (captures[0]))
4729 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4730 54 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
4731 54 : return _r;
4732 : }
4733 0 : next_after_fail1579:;
4734 : }
4735 : else
4736 : {
4737 360 : if (fold_before_rtl_expansion_p ()
4738 : )
4739 : {
4740 0 : {
4741 0 : tree utype = unsigned_type_for (type);
4742 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1580;
4743 0 : {
4744 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail1580;
4745 0 : tree res_op0;
4746 0 : {
4747 0 : tree _o1[2], _r1;
4748 0 : {
4749 0 : tree _o2[2], _r2;
4750 0 : {
4751 0 : tree _o3[1], _r3;
4752 0 : _o3[0] = unshare_expr (captures[1]);
4753 0 : if (TREE_TYPE (_o3[0]) != utype)
4754 : {
4755 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
4756 : }
4757 : else
4758 : _r3 = _o3[0];
4759 0 : _o2[0] = _r3;
4760 : }
4761 0 : _o2[1] = build_one_cst (utype);
4762 0 : _r2 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4763 0 : _o1[0] = _r2;
4764 : }
4765 0 : _o1[1] = build_int_cst (utype, 2);
4766 0 : _r1 = fold_build2_loc (loc, LE_EXPR, boolean_type_node, _o1[0], _o1[1]);
4767 0 : res_op0 = _r1;
4768 : }
4769 0 : tree res_op1;
4770 0 : res_op1 = captures[1];
4771 0 : tree res_op2;
4772 0 : res_op2 = build_zero_cst (type);
4773 0 : tree _r;
4774 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4775 0 : if (TREE_SIDE_EFFECTS (captures[0]))
4776 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4777 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
4778 0 : return _r;
4779 : }
4780 1174 : next_after_fail1580:;
4781 : }
4782 : }
4783 : }
4784 : }
4785 : }
4786 : }
4787 2194762 : switch (TREE_CODE (_p1))
4788 : {
4789 0 : case VEC_COND_EXPR:
4790 0 : {
4791 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4792 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4793 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4794 0 : {
4795 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4796 0 : if (VECTOR_TYPE_P (type)
4797 0 : && (TREE_CODE_CLASS (TRUNC_DIV_EXPR) != tcc_comparison
4798 : || types_match (type, TREE_TYPE (captures[3]))
4799 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4800 : || (optimize_vectors_before_lowering_p ()
4801 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4802 : )
4803 : {
4804 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1581;
4805 0 : {
4806 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1581;
4807 0 : tree res_op0;
4808 0 : res_op0 = captures[2];
4809 0 : tree res_op1;
4810 0 : {
4811 0 : tree _o1[2], _r1;
4812 0 : _o1[0] = unshare_expr (captures[0]);
4813 0 : _o1[1] = captures[3];
4814 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4815 0 : if (EXPR_P (_r1))
4816 0 : goto next_after_fail1581;
4817 0 : res_op1 = _r1;
4818 : }
4819 0 : tree res_op2;
4820 0 : {
4821 0 : tree _o1[2], _r1;
4822 0 : _o1[0] = captures[0];
4823 0 : _o1[1] = captures[4];
4824 0 : _r1 = fold_build2_loc (loc, TRUNC_DIV_EXPR, type, _o1[0], _o1[1]);
4825 0 : if (EXPR_P (_r1))
4826 0 : goto next_after_fail1581;
4827 0 : res_op2 = _r1;
4828 : }
4829 0 : tree _r;
4830 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4831 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
4832 0 : return _r;
4833 : }
4834 0 : next_after_fail1581:;
4835 : }
4836 : }
4837 0 : break;
4838 : }
4839 : default:;
4840 : }
4841 : return NULL_TREE;
4842 : }
4843 :
4844 : tree
4845 0 : generic_simplify_ROUND_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4846 : {
4847 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4848 0 : if (integer_onep (_p1))
4849 : {
4850 0 : {
4851 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4852 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4853 0 : if (res) return res;
4854 : }
4855 : }
4856 0 : if (integer_zerop (_p0))
4857 : {
4858 0 : {
4859 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4860 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4861 0 : if (res) return res;
4862 : }
4863 : }
4864 0 : switch (TREE_CODE (_p1))
4865 : {
4866 0 : case SSA_NAME:
4867 0 : {
4868 0 : {
4869 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4870 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4871 0 : if (res) return res;
4872 : }
4873 0 : break;
4874 : }
4875 0 : default:;
4876 : }
4877 0 : if (integer_minus_onep (_p1))
4878 : {
4879 0 : {
4880 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4881 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4882 0 : if (res) return res;
4883 : }
4884 : }
4885 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4886 : {
4887 0 : {
4888 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4889 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4890 0 : if (res) return res;
4891 : }
4892 : }
4893 0 : switch (TREE_CODE (_p1))
4894 : {
4895 0 : case ABS_EXPR:
4896 0 : {
4897 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4898 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4899 : {
4900 0 : {
4901 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4902 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4903 0 : if (res) return res;
4904 : }
4905 : }
4906 : break;
4907 : }
4908 0 : default:;
4909 : }
4910 0 : switch (TREE_CODE (_p0))
4911 : {
4912 0 : case ABS_EXPR:
4913 0 : {
4914 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4915 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4916 : {
4917 0 : {
4918 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4919 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4920 0 : if (res) return res;
4921 : }
4922 : }
4923 : break;
4924 : }
4925 0 : default:;
4926 : }
4927 0 : switch (TREE_CODE (_p1))
4928 : {
4929 0 : case NEGATE_EXPR:
4930 0 : {
4931 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4932 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4933 : {
4934 0 : {
4935 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4936 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4937 0 : if (res) return res;
4938 : }
4939 : }
4940 : break;
4941 : }
4942 0 : default:;
4943 : }
4944 0 : switch (TREE_CODE (_p0))
4945 : {
4946 0 : case NEGATE_EXPR:
4947 0 : {
4948 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4949 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4950 : {
4951 0 : {
4952 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4953 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4954 0 : if (res) return res;
4955 : }
4956 : }
4957 : break;
4958 : }
4959 0 : CASE_CONVERT:
4960 0 : {
4961 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4962 0 : switch (TREE_CODE (_q20))
4963 : {
4964 0 : case BIT_AND_EXPR:
4965 0 : {
4966 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4967 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4968 0 : switch (TREE_CODE (_q31))
4969 : {
4970 0 : case INTEGER_CST:
4971 0 : {
4972 0 : switch (TREE_CODE (_p1))
4973 : {
4974 0 : case INTEGER_CST:
4975 0 : {
4976 0 : {
4977 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4978 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
4979 0 : if (res) return res;
4980 : }
4981 0 : break;
4982 : }
4983 : default:;
4984 : }
4985 : break;
4986 : }
4987 : default:;
4988 : }
4989 : break;
4990 : }
4991 : default:;
4992 : }
4993 : break;
4994 : }
4995 0 : case BIT_AND_EXPR:
4996 0 : {
4997 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4998 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4999 0 : switch (TREE_CODE (_q21))
5000 : {
5001 0 : case INTEGER_CST:
5002 0 : {
5003 0 : switch (TREE_CODE (_p1))
5004 : {
5005 0 : case INTEGER_CST:
5006 0 : {
5007 0 : {
5008 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5009 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
5010 0 : if (res) return res;
5011 : }
5012 0 : break;
5013 : }
5014 : default:;
5015 : }
5016 : break;
5017 : }
5018 : default:;
5019 : }
5020 : break;
5021 : }
5022 0 : case MULT_EXPR:
5023 0 : {
5024 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5025 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5026 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5027 : {
5028 0 : {
5029 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5030 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
5031 0 : if (res) return res;
5032 : }
5033 : }
5034 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5035 : {
5036 0 : {
5037 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5038 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
5039 0 : if (res) return res;
5040 : }
5041 : }
5042 0 : switch (TREE_CODE (_q21))
5043 : {
5044 0 : case INTEGER_CST:
5045 0 : {
5046 0 : switch (TREE_CODE (_p1))
5047 : {
5048 0 : case MULT_EXPR:
5049 0 : {
5050 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5051 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5052 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5053 : {
5054 0 : switch (TREE_CODE (_q51))
5055 : {
5056 0 : case INTEGER_CST:
5057 0 : {
5058 0 : {
5059 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5060 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR);
5061 0 : if (res) return res;
5062 : }
5063 0 : break;
5064 : }
5065 : default:;
5066 : }
5067 : }
5068 : break;
5069 : }
5070 : default:;
5071 : }
5072 : break;
5073 : }
5074 : default:;
5075 : }
5076 : break;
5077 : }
5078 0 : case VEC_COND_EXPR:
5079 0 : {
5080 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5081 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5082 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5083 0 : switch (TREE_CODE (_p1))
5084 : {
5085 0 : case VEC_COND_EXPR:
5086 0 : {
5087 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5088 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5089 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5090 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5091 : {
5092 0 : {
5093 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5094 0 : if (VECTOR_TYPE_P (type)
5095 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5096 : || types_match (type, TREE_TYPE (captures[2]))
5097 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5098 : || (optimize_vectors_before_lowering_p ()
5099 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5100 : )
5101 : {
5102 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1588;
5103 0 : {
5104 0 : tree res_op0;
5105 0 : res_op0 = captures[1];
5106 0 : tree res_op1;
5107 0 : {
5108 0 : tree _o1[2], _r1;
5109 0 : _o1[0] = captures[2];
5110 0 : _o1[1] = captures[5];
5111 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5112 0 : if (EXPR_P (_r1))
5113 0 : goto next_after_fail1588;
5114 0 : res_op1 = _r1;
5115 : }
5116 0 : tree res_op2;
5117 0 : {
5118 0 : tree _o1[2], _r1;
5119 0 : _o1[0] = captures[3];
5120 0 : _o1[1] = captures[6];
5121 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5122 0 : if (EXPR_P (_r1))
5123 0 : goto next_after_fail1588;
5124 0 : res_op2 = _r1;
5125 : }
5126 0 : tree _r;
5127 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5128 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
5129 0 : return _r;
5130 : }
5131 0 : next_after_fail1588:;
5132 : }
5133 : }
5134 : }
5135 : break;
5136 : }
5137 0 : default:;
5138 : }
5139 0 : {
5140 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5141 0 : if (VECTOR_TYPE_P (type)
5142 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5143 : || types_match (type, TREE_TYPE (captures[2]))
5144 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5145 : || (optimize_vectors_before_lowering_p ()
5146 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5147 : )
5148 : {
5149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1589;
5150 0 : {
5151 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1589;
5152 0 : tree res_op0;
5153 0 : res_op0 = captures[1];
5154 0 : tree res_op1;
5155 0 : {
5156 0 : tree _o1[2], _r1;
5157 0 : _o1[0] = captures[2];
5158 0 : _o1[1] = unshare_expr (captures[4]);
5159 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5160 0 : if (EXPR_P (_r1))
5161 0 : goto next_after_fail1589;
5162 0 : res_op1 = _r1;
5163 : }
5164 0 : tree res_op2;
5165 0 : {
5166 0 : tree _o1[2], _r1;
5167 0 : _o1[0] = captures[3];
5168 0 : _o1[1] = captures[4];
5169 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5170 0 : if (EXPR_P (_r1))
5171 0 : goto next_after_fail1589;
5172 0 : res_op2 = _r1;
5173 : }
5174 0 : tree _r;
5175 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5176 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
5177 0 : return _r;
5178 : }
5179 0 : next_after_fail1589:;
5180 : }
5181 : }
5182 0 : break;
5183 : }
5184 0 : default:;
5185 : }
5186 0 : switch (TREE_CODE (_p1))
5187 : {
5188 0 : case VEC_COND_EXPR:
5189 0 : {
5190 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5191 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5192 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5193 0 : {
5194 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5195 0 : if (VECTOR_TYPE_P (type)
5196 0 : && (TREE_CODE_CLASS (ROUND_DIV_EXPR) != tcc_comparison
5197 : || types_match (type, TREE_TYPE (captures[3]))
5198 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5199 : || (optimize_vectors_before_lowering_p ()
5200 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5201 : )
5202 : {
5203 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
5204 0 : {
5205 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1590;
5206 0 : tree res_op0;
5207 0 : res_op0 = captures[2];
5208 0 : tree res_op1;
5209 0 : {
5210 0 : tree _o1[2], _r1;
5211 0 : _o1[0] = unshare_expr (captures[0]);
5212 0 : _o1[1] = captures[3];
5213 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5214 0 : if (EXPR_P (_r1))
5215 0 : goto next_after_fail1590;
5216 0 : res_op1 = _r1;
5217 : }
5218 0 : tree res_op2;
5219 0 : {
5220 0 : tree _o1[2], _r1;
5221 0 : _o1[0] = captures[0];
5222 0 : _o1[1] = captures[4];
5223 0 : _r1 = fold_build2_loc (loc, ROUND_DIV_EXPR, type, _o1[0], _o1[1]);
5224 0 : if (EXPR_P (_r1))
5225 0 : goto next_after_fail1590;
5226 0 : res_op2 = _r1;
5227 : }
5228 0 : tree _r;
5229 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5230 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
5231 0 : return _r;
5232 : }
5233 0 : next_after_fail1590:;
5234 : }
5235 : }
5236 0 : break;
5237 : }
5238 : default:;
5239 : }
5240 : return NULL_TREE;
5241 : }
5242 :
5243 : tree
5244 6185216 : generic_simplify_RDIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5245 : {
5246 6185216 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5247 6185216 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5248 : {
5249 762 : {
5250 762 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5251 3 : if (FLOAT_TYPE_P (type)
5252 762 : && ! HONOR_NANS (type)
5253 764 : && ! HONOR_INFINITIES (type)
5254 : )
5255 : {
5256 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1597;
5257 2 : {
5258 2 : tree _r;
5259 2 : _r = build_one_cst (type);
5260 2 : if (TREE_SIDE_EFFECTS (captures[0]))
5261 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5262 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
5263 2 : return _r;
5264 : }
5265 0 : next_after_fail1597:;
5266 : }
5267 : }
5268 : }
5269 6185214 : switch (TREE_CODE (_p1))
5270 : {
5271 18732 : case NEGATE_EXPR:
5272 18732 : {
5273 18732 : tree _q30 = TREE_OPERAND (_p1, 0);
5274 18732 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5275 : {
5276 0 : {
5277 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5278 0 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures);
5279 0 : if (res) return res;
5280 : }
5281 : }
5282 : break;
5283 : }
5284 6185214 : default:;
5285 : }
5286 6185214 : switch (TREE_CODE (_p0))
5287 : {
5288 93751 : case NEGATE_EXPR:
5289 93751 : {
5290 93751 : tree _q20 = TREE_OPERAND (_p0, 0);
5291 93751 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5292 : {
5293 2 : {
5294 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5295 2 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures);
5296 2 : if (res) return res;
5297 : }
5298 : }
5299 : break;
5300 : }
5301 538142 : CASE_CONVERT:
5302 538142 : {
5303 538142 : tree _q20 = TREE_OPERAND (_p0, 0);
5304 538142 : switch (TREE_CODE (_p1))
5305 : {
5306 25458 : CASE_CONVERT:
5307 25458 : {
5308 25458 : tree _q40 = TREE_OPERAND (_p1, 0);
5309 25458 : switch (TREE_CODE (_q40))
5310 : {
5311 0 : case ABS_EXPR:
5312 0 : {
5313 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5314 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5315 : {
5316 0 : {
5317 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5318 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures);
5319 0 : if (res) return res;
5320 : }
5321 : }
5322 : break;
5323 : }
5324 : default:;
5325 : }
5326 : break;
5327 : }
5328 538142 : default:;
5329 : }
5330 538142 : switch (TREE_CODE (_q20))
5331 : {
5332 0 : case ABS_EXPR:
5333 0 : {
5334 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5335 0 : switch (TREE_CODE (_p1))
5336 : {
5337 0 : CASE_CONVERT:
5338 0 : {
5339 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5340 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
5341 : {
5342 0 : {
5343 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
5344 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures);
5345 0 : if (res) return res;
5346 : }
5347 : }
5348 : break;
5349 : }
5350 : default:;
5351 : }
5352 : break;
5353 : }
5354 : default:;
5355 : }
5356 : break;
5357 : }
5358 6185214 : default:;
5359 : }
5360 6185214 : switch (TREE_CODE (_p1))
5361 : {
5362 48 : case ABS_EXPR:
5363 48 : {
5364 48 : tree _q30 = TREE_OPERAND (_p1, 0);
5365 48 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5366 : {
5367 0 : {
5368 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5369 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures);
5370 0 : if (res) return res;
5371 : }
5372 : }
5373 : break;
5374 : }
5375 6185214 : default:;
5376 : }
5377 6185214 : switch (TREE_CODE (_p0))
5378 : {
5379 146 : case ABS_EXPR:
5380 146 : {
5381 146 : tree _q20 = TREE_OPERAND (_p0, 0);
5382 146 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5383 : {
5384 0 : {
5385 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5386 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures);
5387 0 : if (res) return res;
5388 : }
5389 : }
5390 : break;
5391 : }
5392 6185214 : default:;
5393 : }
5394 6185214 : if (real_onep (_p1))
5395 : {
5396 86 : {
5397 86 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5398 86 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
5399 : )
5400 : {
5401 86 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1598;
5402 86 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1598;
5403 86 : {
5404 86 : tree res_op0;
5405 86 : res_op0 = captures[0];
5406 86 : tree _r;
5407 86 : _r = non_lvalue_loc (loc, res_op0);
5408 86 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 996, __FILE__, __LINE__, true);
5409 86 : return _r;
5410 : }
5411 : next_after_fail1598:;
5412 : }
5413 : }
5414 : }
5415 6185128 : if (real_minus_onep (_p1))
5416 : {
5417 36 : {
5418 36 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5419 36 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
5420 : )
5421 : {
5422 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1599;
5423 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
5424 36 : {
5425 36 : tree res_op0;
5426 36 : res_op0 = captures[0];
5427 36 : tree _r;
5428 36 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
5429 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
5430 36 : return _r;
5431 : }
5432 : next_after_fail1599:;
5433 : }
5434 : }
5435 : }
5436 6185092 : switch (TREE_CODE (_p0))
5437 : {
5438 37050 : case RDIV_EXPR:
5439 37050 : {
5440 37050 : tree _q20 = TREE_OPERAND (_p0, 0);
5441 37050 : tree _q21 = TREE_OPERAND (_p0, 1);
5442 37050 : {
5443 37050 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5444 37050 : if (flag_reciprocal_math
5445 : )
5446 : {
5447 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1600;
5448 12 : {
5449 12 : tree res_op0;
5450 12 : res_op0 = captures[1];
5451 12 : tree res_op1;
5452 12 : {
5453 12 : tree _o1[2], _r1;
5454 12 : _o1[0] = captures[2];
5455 12 : _o1[1] = captures[3];
5456 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5457 12 : res_op1 = _r1;
5458 : }
5459 12 : tree _r;
5460 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5461 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
5462 12 : return _r;
5463 : }
5464 0 : next_after_fail1600:;
5465 : }
5466 : }
5467 37038 : break;
5468 : }
5469 6185080 : default:;
5470 : }
5471 6185080 : switch (TREE_CODE (_p1))
5472 : {
5473 949208 : case MULT_EXPR:
5474 949208 : {
5475 949208 : tree _q30 = TREE_OPERAND (_p1, 0);
5476 949208 : tree _q31 = TREE_OPERAND (_p1, 1);
5477 949208 : switch (TREE_CODE (_q31))
5478 : {
5479 372555 : case REAL_CST:
5480 372555 : {
5481 372555 : {
5482 372555 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
5483 372555 : if (flag_reciprocal_math
5484 : )
5485 : {
5486 224 : {
5487 224 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[3]);
5488 224 : if (tem
5489 : )
5490 : {
5491 224 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1601;
5492 224 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
5493 224 : {
5494 224 : tree res_op0;
5495 224 : {
5496 224 : tree _o1[2], _r1;
5497 224 : _o1[0] = captures[0];
5498 224 : _o1[1] = tem;
5499 224 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5500 224 : res_op0 = _r1;
5501 : }
5502 224 : tree res_op1;
5503 224 : res_op1 = captures[2];
5504 224 : tree _r;
5505 224 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5506 224 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 999, __FILE__, __LINE__, true);
5507 224 : return _r;
5508 : }
5509 372331 : next_after_fail1601:;
5510 : }
5511 : }
5512 : }
5513 : }
5514 372331 : break;
5515 : }
5516 : default:;
5517 : }
5518 : break;
5519 : }
5520 1 : case RDIV_EXPR:
5521 1 : {
5522 1 : tree _q30 = TREE_OPERAND (_p1, 0);
5523 1 : tree _q31 = TREE_OPERAND (_p1, 1);
5524 1 : {
5525 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
5526 1 : if (flag_reciprocal_math
5527 : )
5528 : {
5529 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1602;
5530 1 : {
5531 1 : tree res_op0;
5532 1 : {
5533 1 : tree _o1[2], _r1;
5534 1 : _o1[0] = captures[0];
5535 1 : _o1[1] = captures[2];
5536 1 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5537 1 : res_op0 = _r1;
5538 : }
5539 1 : tree res_op1;
5540 1 : res_op1 = captures[3];
5541 1 : tree _r;
5542 1 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5543 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1000, __FILE__, __LINE__, true);
5544 1 : return _r;
5545 : }
5546 0 : next_after_fail1602:;
5547 : }
5548 : }
5549 0 : break;
5550 : }
5551 18732 : case NEGATE_EXPR:
5552 18732 : {
5553 18732 : tree _q30 = TREE_OPERAND (_p1, 0);
5554 18732 : {
5555 18732 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5556 18732 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1603;
5557 18732 : {
5558 18732 : tree res_op0;
5559 18732 : {
5560 18732 : tree _o1[1], _r1;
5561 18732 : _o1[0] = captures[0];
5562 18732 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5563 18732 : res_op0 = _r1;
5564 : }
5565 18732 : tree res_op1;
5566 18732 : res_op1 = captures[1];
5567 18732 : tree _r;
5568 18732 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
5569 18732 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1001, __FILE__, __LINE__, true);
5570 18732 : return _r;
5571 : }
5572 0 : next_after_fail1603:;
5573 : }
5574 0 : break;
5575 : }
5576 1051986 : case REAL_CST:
5577 1051986 : {
5578 1051986 : {
5579 1051986 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5580 1051986 : if (optimize
5581 : )
5582 : {
5583 1045466 : if (flag_reciprocal_math
5584 1045466 : && !real_zerop (captures[1])
5585 : )
5586 : {
5587 571 : {
5588 571 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5589 571 : if (tem
5590 : )
5591 : {
5592 570 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1604;
5593 570 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1604;
5594 570 : {
5595 570 : tree res_op0;
5596 570 : res_op0 = captures[0];
5597 570 : tree res_op1;
5598 570 : res_op1 = tem;
5599 570 : tree _r;
5600 570 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5601 570 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
5602 570 : return _r;
5603 : }
5604 734925 : next_after_fail1604:;
5605 : }
5606 : }
5607 : }
5608 : else
5609 : {
5610 1044895 : if (REAL_CST != COMPLEX_CST
5611 : )
5612 : {
5613 1044895 : {
5614 1044895 : tree inverse = exact_inverse (type, captures[1]);
5615 1044895 : if (inverse
5616 : )
5617 : {
5618 316491 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1605;
5619 316491 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1605;
5620 316491 : {
5621 316491 : tree res_op0;
5622 316491 : res_op0 = captures[0];
5623 316491 : tree res_op1;
5624 316491 : res_op1 = inverse;
5625 316491 : tree _r;
5626 316491 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5627 316491 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
5628 316491 : return _r;
5629 : }
5630 734925 : next_after_fail1605:;
5631 : }
5632 : }
5633 : }
5634 : }
5635 : }
5636 : }
5637 734925 : break;
5638 : }
5639 114 : case COMPLEX_CST:
5640 114 : {
5641 114 : {
5642 114 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5643 114 : if (optimize
5644 : )
5645 : {
5646 106 : if (flag_reciprocal_math
5647 106 : && !real_zerop (captures[1])
5648 : )
5649 : {
5650 7 : {
5651 7 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5652 7 : if (tem
5653 : )
5654 : {
5655 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1606;
5656 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1606;
5657 7 : {
5658 7 : tree res_op0;
5659 7 : res_op0 = captures[0];
5660 7 : tree res_op1;
5661 7 : res_op1 = tem;
5662 7 : tree _r;
5663 7 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5664 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
5665 7 : return _r;
5666 : }
5667 107 : next_after_fail1606:;
5668 : }
5669 : }
5670 : }
5671 : else
5672 : {
5673 : if (COMPLEX_CST != COMPLEX_CST
5674 : )
5675 : {
5676 : {
5677 : tree inverse = exact_inverse (type, captures[1]);
5678 : if (inverse
5679 : )
5680 : {
5681 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1607;
5682 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1607;
5683 : {
5684 : tree res_op0;
5685 : res_op0 = captures[0];
5686 : tree res_op1;
5687 : res_op1 = inverse;
5688 : tree _r;
5689 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5690 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
5691 : return _r;
5692 : }
5693 : next_after_fail1607:;
5694 : }
5695 : }
5696 : }
5697 : }
5698 : }
5699 : }
5700 107 : break;
5701 : }
5702 45 : case VECTOR_CST:
5703 45 : {
5704 45 : {
5705 45 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5706 45 : if (optimize
5707 : )
5708 : {
5709 41 : if (flag_reciprocal_math
5710 41 : && !real_zerop (captures[1])
5711 : )
5712 : {
5713 4 : {
5714 4 : tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]);
5715 4 : if (tem
5716 : )
5717 : {
5718 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1608;
5719 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
5720 0 : {
5721 0 : tree res_op0;
5722 0 : res_op0 = captures[0];
5723 0 : tree res_op1;
5724 0 : res_op1 = tem;
5725 0 : tree _r;
5726 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5727 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1002, __FILE__, __LINE__, true);
5728 0 : return _r;
5729 : }
5730 15 : next_after_fail1608:;
5731 : }
5732 : }
5733 : }
5734 : else
5735 : {
5736 37 : if (VECTOR_CST != COMPLEX_CST
5737 : )
5738 : {
5739 37 : {
5740 37 : tree inverse = exact_inverse (type, captures[1]);
5741 37 : if (inverse
5742 : )
5743 : {
5744 30 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1609;
5745 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1609;
5746 30 : {
5747 30 : tree res_op0;
5748 30 : res_op0 = captures[0];
5749 30 : tree res_op1;
5750 30 : res_op1 = inverse;
5751 30 : tree _r;
5752 30 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5753 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1003, __FILE__, __LINE__, true);
5754 30 : return _r;
5755 : }
5756 15 : next_after_fail1609:;
5757 : }
5758 : }
5759 : }
5760 : }
5761 : }
5762 : }
5763 15 : break;
5764 : }
5765 5849025 : default:;
5766 : }
5767 5849025 : switch (TREE_CODE (_p0))
5768 : {
5769 0 : case VEC_COND_EXPR:
5770 0 : {
5771 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5772 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5773 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5774 0 : switch (TREE_CODE (_p1))
5775 : {
5776 0 : case VEC_COND_EXPR:
5777 0 : {
5778 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5779 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5780 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5781 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5782 : {
5783 0 : {
5784 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5785 0 : if (VECTOR_TYPE_P (type)
5786 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5787 : || types_match (type, TREE_TYPE (captures[2]))
5788 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5789 : || (optimize_vectors_before_lowering_p ()
5790 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5791 : )
5792 : {
5793 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1610;
5794 0 : {
5795 0 : tree res_op0;
5796 0 : res_op0 = captures[1];
5797 0 : tree res_op1;
5798 0 : {
5799 0 : tree _o1[2], _r1;
5800 0 : _o1[0] = captures[2];
5801 0 : _o1[1] = captures[5];
5802 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5803 0 : if (EXPR_P (_r1))
5804 0 : goto next_after_fail1610;
5805 0 : res_op1 = _r1;
5806 : }
5807 0 : tree res_op2;
5808 0 : {
5809 0 : tree _o1[2], _r1;
5810 0 : _o1[0] = captures[3];
5811 0 : _o1[1] = captures[6];
5812 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5813 0 : if (EXPR_P (_r1))
5814 0 : goto next_after_fail1610;
5815 0 : res_op2 = _r1;
5816 : }
5817 0 : tree _r;
5818 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
5820 0 : return _r;
5821 : }
5822 0 : next_after_fail1610:;
5823 : }
5824 : }
5825 : }
5826 : break;
5827 : }
5828 0 : default:;
5829 : }
5830 0 : {
5831 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5832 0 : if (VECTOR_TYPE_P (type)
5833 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5834 : || types_match (type, TREE_TYPE (captures[2]))
5835 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5836 : || (optimize_vectors_before_lowering_p ()
5837 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5838 : )
5839 : {
5840 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1611;
5841 0 : {
5842 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1611;
5843 0 : tree res_op0;
5844 0 : res_op0 = captures[1];
5845 0 : tree res_op1;
5846 0 : {
5847 0 : tree _o1[2], _r1;
5848 0 : _o1[0] = captures[2];
5849 0 : _o1[1] = unshare_expr (captures[4]);
5850 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5851 0 : if (EXPR_P (_r1))
5852 0 : goto next_after_fail1611;
5853 0 : res_op1 = _r1;
5854 : }
5855 0 : tree res_op2;
5856 0 : {
5857 0 : tree _o1[2], _r1;
5858 0 : _o1[0] = captures[3];
5859 0 : _o1[1] = captures[4];
5860 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5861 0 : if (EXPR_P (_r1))
5862 0 : goto next_after_fail1611;
5863 0 : res_op2 = _r1;
5864 : }
5865 0 : tree _r;
5866 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5867 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
5868 0 : return _r;
5869 : }
5870 0 : next_after_fail1611:;
5871 : }
5872 : }
5873 0 : break;
5874 : }
5875 5849025 : default:;
5876 : }
5877 5849025 : switch (TREE_CODE (_p1))
5878 : {
5879 0 : case VEC_COND_EXPR:
5880 0 : {
5881 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5882 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5883 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5884 0 : {
5885 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5886 0 : if (VECTOR_TYPE_P (type)
5887 0 : && (TREE_CODE_CLASS (RDIV_EXPR) != tcc_comparison
5888 : || types_match (type, TREE_TYPE (captures[3]))
5889 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5890 : || (optimize_vectors_before_lowering_p ()
5891 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5892 : )
5893 : {
5894 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1612;
5895 0 : {
5896 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1612;
5897 0 : tree res_op0;
5898 0 : res_op0 = captures[2];
5899 0 : tree res_op1;
5900 0 : {
5901 0 : tree _o1[2], _r1;
5902 0 : _o1[0] = unshare_expr (captures[0]);
5903 0 : _o1[1] = captures[3];
5904 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5905 0 : if (EXPR_P (_r1))
5906 0 : goto next_after_fail1612;
5907 0 : res_op1 = _r1;
5908 : }
5909 0 : tree res_op2;
5910 0 : {
5911 0 : tree _o1[2], _r1;
5912 0 : _o1[0] = captures[0];
5913 0 : _o1[1] = captures[4];
5914 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, type, _o1[0], _o1[1]);
5915 0 : if (EXPR_P (_r1))
5916 0 : goto next_after_fail1612;
5917 0 : res_op2 = _r1;
5918 : }
5919 0 : tree _r;
5920 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
5922 0 : return _r;
5923 : }
5924 0 : next_after_fail1612:;
5925 : }
5926 : }
5927 0 : break;
5928 : }
5929 784162 : case CALL_EXPR:
5930 784162 : switch (get_call_combined_fn (_p1))
5931 : {
5932 20 : case CFN_BUILT_IN_SQRTF:
5933 20 : if (call_expr_nargs (_p1) == 1)
5934 : {
5935 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5936 20 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5937 : {
5938 0 : {
5939 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5940 0 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
5941 0 : if (res) return res;
5942 : }
5943 : }
5944 20 : switch (TREE_CODE (_q30))
5945 : {
5946 0 : case RDIV_EXPR:
5947 0 : {
5948 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5949 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5950 0 : {
5951 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
5952 0 : if (flag_unsafe_math_optimizations
5953 : )
5954 : {
5955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1613;
5956 0 : {
5957 0 : tree res_op0;
5958 0 : res_op0 = captures[0];
5959 0 : tree res_op1;
5960 0 : {
5961 0 : tree _o1[1], _r1;
5962 0 : {
5963 0 : tree _o2[2], _r2;
5964 0 : _o2[0] = captures[4];
5965 0 : _o2[1] = captures[3];
5966 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5967 0 : _o1[0] = _r2;
5968 : }
5969 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, TREE_TYPE (_o1[0]), 1, _o1[0]);
5970 0 : if (!_r1)
5971 0 : goto next_after_fail1613;
5972 0 : res_op1 = _r1;
5973 : }
5974 0 : tree _r;
5975 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5976 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
5977 0 : return _r;
5978 : }
5979 0 : next_after_fail1613:;
5980 : }
5981 : }
5982 0 : break;
5983 : }
5984 : default:;
5985 : }
5986 : }
5987 : break;
5988 0 : case CFN_BUILT_IN_SQRTL:
5989 0 : if (call_expr_nargs (_p1) == 1)
5990 : {
5991 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5992 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5993 : {
5994 0 : {
5995 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5996 0 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
5997 0 : if (res) return res;
5998 : }
5999 : }
6000 0 : switch (TREE_CODE (_q30))
6001 : {
6002 0 : case RDIV_EXPR:
6003 0 : {
6004 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6005 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6006 0 : {
6007 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6008 0 : if (flag_unsafe_math_optimizations
6009 : )
6010 : {
6011 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1614;
6012 0 : {
6013 0 : tree res_op0;
6014 0 : res_op0 = captures[0];
6015 0 : tree res_op1;
6016 0 : {
6017 0 : tree _o1[1], _r1;
6018 0 : {
6019 0 : tree _o2[2], _r2;
6020 0 : _o2[0] = captures[4];
6021 0 : _o2[1] = captures[3];
6022 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6023 0 : _o1[0] = _r2;
6024 : }
6025 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, TREE_TYPE (_o1[0]), 1, _o1[0]);
6026 0 : if (!_r1)
6027 0 : goto next_after_fail1614;
6028 0 : res_op1 = _r1;
6029 : }
6030 0 : tree _r;
6031 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6032 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6033 0 : return _r;
6034 : }
6035 0 : next_after_fail1614:;
6036 : }
6037 : }
6038 0 : break;
6039 : }
6040 : default:;
6041 : }
6042 : }
6043 : break;
6044 27 : case CFN_BUILT_IN_EXP:
6045 27 : if (call_expr_nargs (_p1) == 1)
6046 : {
6047 27 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6048 27 : {
6049 27 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6050 27 : if (flag_unsafe_math_optimizations
6051 : )
6052 : {
6053 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1615;
6054 27 : {
6055 27 : tree res_op0;
6056 27 : res_op0 = captures[0];
6057 27 : tree res_op1;
6058 27 : {
6059 27 : tree _o1[1], _r1;
6060 27 : {
6061 27 : tree _o2[1], _r2;
6062 27 : _o2[0] = captures[2];
6063 27 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6064 27 : _o1[0] = _r2;
6065 : }
6066 27 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, TREE_TYPE (_o1[0]), 1, _o1[0]);
6067 27 : if (!_r1)
6068 0 : goto next_after_fail1615;
6069 27 : res_op1 = _r1;
6070 : }
6071 27 : tree _r;
6072 27 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6073 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6074 27 : return _r;
6075 : }
6076 0 : next_after_fail1615:;
6077 : }
6078 : }
6079 : }
6080 : break;
6081 24 : case CFN_BUILT_IN_EXP10F:
6082 24 : if (call_expr_nargs (_p1) == 1)
6083 : {
6084 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6085 24 : {
6086 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6087 24 : if (flag_unsafe_math_optimizations
6088 : )
6089 : {
6090 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1616;
6091 24 : {
6092 24 : tree res_op0;
6093 24 : res_op0 = captures[0];
6094 24 : tree res_op1;
6095 24 : {
6096 24 : tree _o1[1], _r1;
6097 24 : {
6098 24 : tree _o2[1], _r2;
6099 24 : _o2[0] = captures[2];
6100 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6101 24 : _o1[0] = _r2;
6102 : }
6103 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6104 24 : if (!_r1)
6105 0 : goto next_after_fail1616;
6106 24 : res_op1 = _r1;
6107 : }
6108 24 : tree _r;
6109 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6110 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6111 24 : return _r;
6112 : }
6113 0 : next_after_fail1616:;
6114 : }
6115 : }
6116 : }
6117 : break;
6118 24 : case CFN_BUILT_IN_EXP10L:
6119 24 : if (call_expr_nargs (_p1) == 1)
6120 : {
6121 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6122 24 : {
6123 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6124 24 : if (flag_unsafe_math_optimizations
6125 : )
6126 : {
6127 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1617;
6128 24 : {
6129 24 : tree res_op0;
6130 24 : res_op0 = captures[0];
6131 24 : tree res_op1;
6132 24 : {
6133 24 : tree _o1[1], _r1;
6134 24 : {
6135 24 : tree _o2[1], _r2;
6136 24 : _o2[0] = captures[2];
6137 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6138 24 : _o1[0] = _r2;
6139 : }
6140 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6141 24 : if (!_r1)
6142 0 : goto next_after_fail1617;
6143 24 : res_op1 = _r1;
6144 : }
6145 24 : tree _r;
6146 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6147 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6148 24 : return _r;
6149 : }
6150 0 : next_after_fail1617:;
6151 : }
6152 : }
6153 : }
6154 : break;
6155 3 : case CFN_BUILT_IN_CBRT:
6156 3 : if (call_expr_nargs (_p1) == 1)
6157 : {
6158 3 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6159 3 : switch (TREE_CODE (_q30))
6160 : {
6161 2 : case RDIV_EXPR:
6162 2 : {
6163 2 : tree _q40 = TREE_OPERAND (_q30, 0);
6164 2 : tree _q41 = TREE_OPERAND (_q30, 1);
6165 2 : {
6166 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6167 2 : if (flag_unsafe_math_optimizations
6168 : )
6169 : {
6170 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1618;
6171 2 : {
6172 2 : tree res_op0;
6173 2 : res_op0 = captures[0];
6174 2 : tree res_op1;
6175 2 : {
6176 2 : tree _o1[1], _r1;
6177 2 : {
6178 2 : tree _o2[2], _r2;
6179 2 : _o2[0] = captures[4];
6180 2 : _o2[1] = captures[3];
6181 2 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6182 2 : _o1[0] = _r2;
6183 : }
6184 2 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6185 2 : if (!_r1)
6186 0 : goto next_after_fail1618;
6187 2 : res_op1 = _r1;
6188 : }
6189 2 : tree _r;
6190 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6191 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6192 2 : return _r;
6193 : }
6194 0 : next_after_fail1618:;
6195 : }
6196 : }
6197 0 : break;
6198 : }
6199 : default:;
6200 : }
6201 : }
6202 : break;
6203 24 : case CFN_BUILT_IN_EXP2:
6204 24 : if (call_expr_nargs (_p1) == 1)
6205 : {
6206 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6207 24 : {
6208 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6209 24 : if (flag_unsafe_math_optimizations
6210 : )
6211 : {
6212 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1619;
6213 24 : {
6214 24 : tree res_op0;
6215 24 : res_op0 = captures[0];
6216 24 : tree res_op1;
6217 24 : {
6218 24 : tree _o1[1], _r1;
6219 24 : {
6220 24 : tree _o2[1], _r2;
6221 24 : _o2[0] = captures[2];
6222 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6223 24 : _o1[0] = _r2;
6224 : }
6225 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, TREE_TYPE (_o1[0]), 1, _o1[0]);
6226 24 : if (!_r1)
6227 0 : goto next_after_fail1619;
6228 24 : res_op1 = _r1;
6229 : }
6230 24 : tree _r;
6231 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6232 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6233 24 : return _r;
6234 : }
6235 0 : next_after_fail1619:;
6236 : }
6237 : }
6238 : }
6239 : break;
6240 25 : case CFN_BUILT_IN_EXPF:
6241 25 : if (call_expr_nargs (_p1) == 1)
6242 : {
6243 25 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6244 25 : {
6245 25 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6246 25 : if (flag_unsafe_math_optimizations
6247 : )
6248 : {
6249 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1620;
6250 25 : {
6251 25 : tree res_op0;
6252 25 : res_op0 = captures[0];
6253 25 : tree res_op1;
6254 25 : {
6255 25 : tree _o1[1], _r1;
6256 25 : {
6257 25 : tree _o2[1], _r2;
6258 25 : _o2[0] = captures[2];
6259 25 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6260 25 : _o1[0] = _r2;
6261 : }
6262 25 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, TREE_TYPE (_o1[0]), 1, _o1[0]);
6263 25 : if (!_r1)
6264 0 : goto next_after_fail1620;
6265 25 : res_op1 = _r1;
6266 : }
6267 25 : tree _r;
6268 25 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6269 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6270 25 : return _r;
6271 : }
6272 0 : next_after_fail1620:;
6273 : }
6274 : }
6275 : }
6276 : break;
6277 25 : case CFN_BUILT_IN_EXPL:
6278 25 : if (call_expr_nargs (_p1) == 1)
6279 : {
6280 25 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6281 25 : {
6282 25 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6283 25 : if (flag_unsafe_math_optimizations
6284 : )
6285 : {
6286 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1621;
6287 25 : {
6288 25 : tree res_op0;
6289 25 : res_op0 = captures[0];
6290 25 : tree res_op1;
6291 25 : {
6292 25 : tree _o1[1], _r1;
6293 25 : {
6294 25 : tree _o2[1], _r2;
6295 25 : _o2[0] = captures[2];
6296 25 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6297 25 : _o1[0] = _r2;
6298 : }
6299 25 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, TREE_TYPE (_o1[0]), 1, _o1[0]);
6300 25 : if (!_r1)
6301 0 : goto next_after_fail1621;
6302 25 : res_op1 = _r1;
6303 : }
6304 25 : tree _r;
6305 25 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6306 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6307 25 : return _r;
6308 : }
6309 0 : next_after_fail1621:;
6310 : }
6311 : }
6312 : }
6313 : break;
6314 298 : case CFN_BUILT_IN_SQRT:
6315 298 : if (call_expr_nargs (_p1) == 1)
6316 : {
6317 298 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6318 298 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6319 : {
6320 0 : {
6321 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6322 0 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
6323 0 : if (res) return res;
6324 : }
6325 : }
6326 298 : switch (TREE_CODE (_q30))
6327 : {
6328 2 : case RDIV_EXPR:
6329 2 : {
6330 2 : tree _q40 = TREE_OPERAND (_q30, 0);
6331 2 : tree _q41 = TREE_OPERAND (_q30, 1);
6332 2 : {
6333 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6334 2 : if (flag_unsafe_math_optimizations
6335 : )
6336 : {
6337 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1622;
6338 2 : {
6339 2 : tree res_op0;
6340 2 : res_op0 = captures[0];
6341 2 : tree res_op1;
6342 2 : {
6343 2 : tree _o1[1], _r1;
6344 2 : {
6345 2 : tree _o2[2], _r2;
6346 2 : _o2[0] = captures[4];
6347 2 : _o2[1] = captures[3];
6348 2 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6349 2 : _o1[0] = _r2;
6350 : }
6351 2 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6352 2 : if (!_r1)
6353 0 : goto next_after_fail1622;
6354 2 : res_op1 = _r1;
6355 : }
6356 2 : tree _r;
6357 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6358 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6359 2 : return _r;
6360 : }
6361 0 : next_after_fail1622:;
6362 : }
6363 : }
6364 0 : break;
6365 : }
6366 : default:;
6367 : }
6368 : }
6369 : break;
6370 0 : case CFN_EXP:
6371 0 : if (call_expr_nargs (_p1) == 1)
6372 : {
6373 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6374 0 : {
6375 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6376 0 : if (flag_unsafe_math_optimizations
6377 : )
6378 : {
6379 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1623;
6380 0 : {
6381 0 : tree res_op0;
6382 0 : res_op0 = captures[0];
6383 0 : tree res_op1;
6384 0 : {
6385 0 : tree _o1[1], _r1;
6386 0 : {
6387 0 : tree _o2[1], _r2;
6388 0 : _o2[0] = captures[2];
6389 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6390 0 : _o1[0] = _r2;
6391 : }
6392 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP, TREE_TYPE (_o1[0]), 1, _o1[0]);
6393 0 : if (!_r1)
6394 0 : goto next_after_fail1623;
6395 0 : res_op1 = _r1;
6396 : }
6397 0 : tree _r;
6398 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6399 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6400 0 : return _r;
6401 : }
6402 0 : next_after_fail1623:;
6403 : }
6404 : }
6405 : }
6406 : break;
6407 24 : case CFN_BUILT_IN_POW10F:
6408 24 : if (call_expr_nargs (_p1) == 1)
6409 : {
6410 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6411 24 : {
6412 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6413 24 : if (flag_unsafe_math_optimizations
6414 : )
6415 : {
6416 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1624;
6417 24 : {
6418 24 : tree res_op0;
6419 24 : res_op0 = captures[0];
6420 24 : tree res_op1;
6421 24 : {
6422 24 : tree _o1[1], _r1;
6423 24 : {
6424 24 : tree _o2[1], _r2;
6425 24 : _o2[0] = captures[2];
6426 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6427 24 : _o1[0] = _r2;
6428 : }
6429 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6430 24 : if (!_r1)
6431 24 : goto next_after_fail1624;
6432 0 : res_op1 = _r1;
6433 : }
6434 0 : tree _r;
6435 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6436 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6437 0 : return _r;
6438 : }
6439 24 : next_after_fail1624:;
6440 : }
6441 : }
6442 : }
6443 : break;
6444 24 : case CFN_BUILT_IN_POW10L:
6445 24 : if (call_expr_nargs (_p1) == 1)
6446 : {
6447 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6448 24 : {
6449 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6450 24 : if (flag_unsafe_math_optimizations
6451 : )
6452 : {
6453 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1625;
6454 24 : {
6455 24 : tree res_op0;
6456 24 : res_op0 = captures[0];
6457 24 : tree res_op1;
6458 24 : {
6459 24 : tree _o1[1], _r1;
6460 24 : {
6461 24 : tree _o2[1], _r2;
6462 24 : _o2[0] = captures[2];
6463 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6464 24 : _o1[0] = _r2;
6465 : }
6466 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6467 24 : if (!_r1)
6468 24 : goto next_after_fail1625;
6469 0 : res_op1 = _r1;
6470 : }
6471 0 : tree _r;
6472 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6473 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6474 0 : return _r;
6475 : }
6476 24 : next_after_fail1625:;
6477 : }
6478 : }
6479 : }
6480 : break;
6481 0 : case CFN_EXP2:
6482 0 : if (call_expr_nargs (_p1) == 1)
6483 : {
6484 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6485 0 : {
6486 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6487 0 : if (flag_unsafe_math_optimizations
6488 : )
6489 : {
6490 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1626;
6491 0 : {
6492 0 : tree res_op0;
6493 0 : res_op0 = captures[0];
6494 0 : tree res_op1;
6495 0 : {
6496 0 : tree _o1[1], _r1;
6497 0 : {
6498 0 : tree _o2[1], _r2;
6499 0 : _o2[0] = captures[2];
6500 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6501 0 : _o1[0] = _r2;
6502 : }
6503 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP2, TREE_TYPE (_o1[0]), 1, _o1[0]);
6504 0 : if (!_r1)
6505 0 : goto next_after_fail1626;
6506 0 : res_op1 = _r1;
6507 : }
6508 0 : tree _r;
6509 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6510 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6511 0 : return _r;
6512 : }
6513 0 : next_after_fail1626:;
6514 : }
6515 : }
6516 : }
6517 : break;
6518 0 : case CFN_SQRT:
6519 0 : if (call_expr_nargs (_p1) == 1)
6520 : {
6521 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6522 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6523 : {
6524 0 : {
6525 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6526 0 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, CFN_SQRT);
6527 0 : if (res) return res;
6528 : }
6529 : }
6530 0 : switch (TREE_CODE (_q30))
6531 : {
6532 0 : case RDIV_EXPR:
6533 0 : {
6534 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6535 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6536 0 : {
6537 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6538 0 : if (flag_unsafe_math_optimizations
6539 : )
6540 : {
6541 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1627;
6542 0 : {
6543 0 : tree res_op0;
6544 0 : res_op0 = captures[0];
6545 0 : tree res_op1;
6546 0 : {
6547 0 : tree _o1[1], _r1;
6548 0 : {
6549 0 : tree _o2[2], _r2;
6550 0 : _o2[0] = captures[4];
6551 0 : _o2[1] = captures[3];
6552 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6553 0 : _o1[0] = _r2;
6554 : }
6555 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_SQRT, TREE_TYPE (_o1[0]), 1, _o1[0]);
6556 0 : if (!_r1)
6557 0 : goto next_after_fail1627;
6558 0 : res_op1 = _r1;
6559 : }
6560 0 : tree _r;
6561 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6562 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6563 0 : return _r;
6564 : }
6565 0 : next_after_fail1627:;
6566 : }
6567 : }
6568 0 : break;
6569 : }
6570 : default:;
6571 : }
6572 : }
6573 : break;
6574 0 : case CFN_EXP10:
6575 0 : if (call_expr_nargs (_p1) == 1)
6576 : {
6577 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6578 0 : {
6579 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6580 0 : if (flag_unsafe_math_optimizations
6581 : )
6582 : {
6583 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1628;
6584 0 : {
6585 0 : tree res_op0;
6586 0 : res_op0 = captures[0];
6587 0 : tree res_op1;
6588 0 : {
6589 0 : tree _o1[1], _r1;
6590 0 : {
6591 0 : tree _o2[1], _r2;
6592 0 : _o2[0] = captures[2];
6593 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6594 0 : _o1[0] = _r2;
6595 : }
6596 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_EXP10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6597 0 : if (!_r1)
6598 0 : goto next_after_fail1628;
6599 0 : res_op1 = _r1;
6600 : }
6601 0 : tree _r;
6602 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6603 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6604 0 : return _r;
6605 : }
6606 0 : next_after_fail1628:;
6607 : }
6608 : }
6609 : }
6610 : break;
6611 0 : case CFN_BUILT_IN_CBRTF:
6612 0 : if (call_expr_nargs (_p1) == 1)
6613 : {
6614 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6615 0 : switch (TREE_CODE (_q30))
6616 : {
6617 0 : case RDIV_EXPR:
6618 0 : {
6619 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6620 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6621 0 : {
6622 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6623 0 : if (flag_unsafe_math_optimizations
6624 : )
6625 : {
6626 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1629;
6627 0 : {
6628 0 : tree res_op0;
6629 0 : res_op0 = captures[0];
6630 0 : tree res_op1;
6631 0 : {
6632 0 : tree _o1[1], _r1;
6633 0 : {
6634 0 : tree _o2[2], _r2;
6635 0 : _o2[0] = captures[4];
6636 0 : _o2[1] = captures[3];
6637 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6638 0 : _o1[0] = _r2;
6639 : }
6640 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, TREE_TYPE (_o1[0]), 1, _o1[0]);
6641 0 : if (!_r1)
6642 0 : goto next_after_fail1629;
6643 0 : res_op1 = _r1;
6644 : }
6645 0 : tree _r;
6646 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6647 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6648 0 : return _r;
6649 : }
6650 0 : next_after_fail1629:;
6651 : }
6652 : }
6653 0 : break;
6654 : }
6655 : default:;
6656 : }
6657 : }
6658 : break;
6659 0 : case CFN_BUILT_IN_CBRTL:
6660 0 : if (call_expr_nargs (_p1) == 1)
6661 : {
6662 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6663 0 : switch (TREE_CODE (_q30))
6664 : {
6665 0 : case RDIV_EXPR:
6666 0 : {
6667 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6668 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6669 0 : {
6670 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q40, _q41 };
6671 0 : if (flag_unsafe_math_optimizations
6672 : )
6673 : {
6674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1630;
6675 0 : {
6676 0 : tree res_op0;
6677 0 : res_op0 = captures[0];
6678 0 : tree res_op1;
6679 0 : {
6680 0 : tree _o1[1], _r1;
6681 0 : {
6682 0 : tree _o2[2], _r2;
6683 0 : _o2[0] = captures[4];
6684 0 : _o2[1] = captures[3];
6685 0 : _r2 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
6686 0 : _o1[0] = _r2;
6687 : }
6688 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, TREE_TYPE (_o1[0]), 1, _o1[0]);
6689 0 : if (!_r1)
6690 0 : goto next_after_fail1630;
6691 0 : res_op1 = _r1;
6692 : }
6693 0 : tree _r;
6694 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1004, __FILE__, __LINE__, true);
6696 0 : return _r;
6697 : }
6698 0 : next_after_fail1630:;
6699 : }
6700 : }
6701 0 : break;
6702 : }
6703 : default:;
6704 : }
6705 : }
6706 : break;
6707 24 : case CFN_BUILT_IN_EXP10:
6708 24 : if (call_expr_nargs (_p1) == 1)
6709 : {
6710 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6711 24 : {
6712 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6713 24 : if (flag_unsafe_math_optimizations
6714 : )
6715 : {
6716 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1631;
6717 24 : {
6718 24 : tree res_op0;
6719 24 : res_op0 = captures[0];
6720 24 : tree res_op1;
6721 24 : {
6722 24 : tree _o1[1], _r1;
6723 24 : {
6724 24 : tree _o2[1], _r2;
6725 24 : _o2[0] = captures[2];
6726 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6727 24 : _o1[0] = _r2;
6728 : }
6729 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6730 24 : if (!_r1)
6731 0 : goto next_after_fail1631;
6732 24 : res_op1 = _r1;
6733 : }
6734 24 : tree _r;
6735 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6736 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6737 24 : return _r;
6738 : }
6739 0 : next_after_fail1631:;
6740 : }
6741 : }
6742 : }
6743 : break;
6744 24 : case CFN_BUILT_IN_EXP2F:
6745 24 : if (call_expr_nargs (_p1) == 1)
6746 : {
6747 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6748 24 : {
6749 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6750 24 : if (flag_unsafe_math_optimizations
6751 : )
6752 : {
6753 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1632;
6754 24 : {
6755 24 : tree res_op0;
6756 24 : res_op0 = captures[0];
6757 24 : tree res_op1;
6758 24 : {
6759 24 : tree _o1[1], _r1;
6760 24 : {
6761 24 : tree _o2[1], _r2;
6762 24 : _o2[0] = captures[2];
6763 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6764 24 : _o1[0] = _r2;
6765 : }
6766 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, TREE_TYPE (_o1[0]), 1, _o1[0]);
6767 24 : if (!_r1)
6768 0 : goto next_after_fail1632;
6769 24 : res_op1 = _r1;
6770 : }
6771 24 : tree _r;
6772 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6773 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6774 24 : return _r;
6775 : }
6776 0 : next_after_fail1632:;
6777 : }
6778 : }
6779 : }
6780 : break;
6781 24 : case CFN_BUILT_IN_EXP2L:
6782 24 : if (call_expr_nargs (_p1) == 1)
6783 : {
6784 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6785 24 : {
6786 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6787 24 : if (flag_unsafe_math_optimizations
6788 : )
6789 : {
6790 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1633;
6791 24 : {
6792 24 : tree res_op0;
6793 24 : res_op0 = captures[0];
6794 24 : tree res_op1;
6795 24 : {
6796 24 : tree _o1[1], _r1;
6797 24 : {
6798 24 : tree _o2[1], _r2;
6799 24 : _o2[0] = captures[2];
6800 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6801 24 : _o1[0] = _r2;
6802 : }
6803 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, TREE_TYPE (_o1[0]), 1, _o1[0]);
6804 24 : if (!_r1)
6805 0 : goto next_after_fail1633;
6806 24 : res_op1 = _r1;
6807 : }
6808 24 : tree _r;
6809 24 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6810 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6811 24 : return _r;
6812 : }
6813 0 : next_after_fail1633:;
6814 : }
6815 : }
6816 : }
6817 : break;
6818 24 : case CFN_BUILT_IN_POW10:
6819 24 : if (call_expr_nargs (_p1) == 1)
6820 : {
6821 24 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
6822 24 : {
6823 24 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6824 24 : if (flag_unsafe_math_optimizations
6825 : )
6826 : {
6827 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1634;
6828 24 : {
6829 24 : tree res_op0;
6830 24 : res_op0 = captures[0];
6831 24 : tree res_op1;
6832 24 : {
6833 24 : tree _o1[1], _r1;
6834 24 : {
6835 24 : tree _o2[1], _r2;
6836 24 : _o2[0] = captures[2];
6837 24 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
6838 24 : _o1[0] = _r2;
6839 : }
6840 24 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, TREE_TYPE (_o1[0]), 1, _o1[0]);
6841 24 : if (!_r1)
6842 24 : goto next_after_fail1634;
6843 0 : res_op1 = _r1;
6844 : }
6845 0 : tree _r;
6846 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
6847 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1005, __FILE__, __LINE__, true);
6848 0 : return _r;
6849 : }
6850 24 : next_after_fail1634:;
6851 : }
6852 : }
6853 : }
6854 : break;
6855 : default:;
6856 : }
6857 : break;
6858 5848800 : default:;
6859 : }
6860 5848800 : switch (TREE_CODE (_p0))
6861 : {
6862 188485 : case CALL_EXPR:
6863 188485 : switch (get_call_combined_fn (_p0))
6864 : {
6865 1 : case CFN_BUILT_IN_SINHF:
6866 1 : if (call_expr_nargs (_p0) == 1)
6867 : {
6868 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6869 1 : switch (TREE_CODE (_p1))
6870 : {
6871 1 : case CALL_EXPR:
6872 1 : switch (get_call_combined_fn (_p1))
6873 : {
6874 1 : case CFN_BUILT_IN_COSHF:
6875 1 : if (call_expr_nargs (_p1) == 1)
6876 : {
6877 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6878 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6879 : {
6880 1 : {
6881 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6882 1 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF, CFN_BUILT_IN_TANHF);
6883 1 : if (res) return res;
6884 : }
6885 : }
6886 : }
6887 : break;
6888 : default:;
6889 : }
6890 : break;
6891 : default:;
6892 : }
6893 : }
6894 : break;
6895 1 : case CFN_BUILT_IN_SINHL:
6896 1 : if (call_expr_nargs (_p0) == 1)
6897 : {
6898 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6899 1 : switch (TREE_CODE (_p1))
6900 : {
6901 1 : case CALL_EXPR:
6902 1 : switch (get_call_combined_fn (_p1))
6903 : {
6904 1 : case CFN_BUILT_IN_COSHL:
6905 1 : if (call_expr_nargs (_p1) == 1)
6906 : {
6907 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6908 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6909 : {
6910 1 : {
6911 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6912 1 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL, CFN_BUILT_IN_TANHL);
6913 1 : if (res) return res;
6914 : }
6915 : }
6916 : }
6917 : break;
6918 : default:;
6919 : }
6920 : break;
6921 : default:;
6922 : }
6923 : }
6924 : break;
6925 1 : case CFN_BUILT_IN_TANHF:
6926 1 : if (call_expr_nargs (_p0) == 1)
6927 : {
6928 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6929 1 : switch (TREE_CODE (_p1))
6930 : {
6931 1 : case CALL_EXPR:
6932 1 : switch (get_call_combined_fn (_p1))
6933 : {
6934 1 : case CFN_BUILT_IN_SINHF:
6935 1 : if (call_expr_nargs (_p1) == 1)
6936 : {
6937 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6938 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6939 : {
6940 1 : {
6941 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6942 1 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANHF, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_COSHF);
6943 1 : if (res) return res;
6944 : }
6945 : }
6946 : }
6947 : break;
6948 : default:;
6949 : }
6950 : break;
6951 : default:;
6952 : }
6953 : }
6954 : break;
6955 1 : case CFN_BUILT_IN_TANHL:
6956 1 : if (call_expr_nargs (_p0) == 1)
6957 : {
6958 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6959 1 : switch (TREE_CODE (_p1))
6960 : {
6961 1 : case CALL_EXPR:
6962 1 : switch (get_call_combined_fn (_p1))
6963 : {
6964 1 : case CFN_BUILT_IN_SINHL:
6965 1 : if (call_expr_nargs (_p1) == 1)
6966 : {
6967 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6968 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6969 : {
6970 1 : {
6971 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6972 1 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANHL, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_COSHL);
6973 1 : if (res) return res;
6974 : }
6975 : }
6976 : }
6977 : break;
6978 : default:;
6979 : }
6980 : break;
6981 : default:;
6982 : }
6983 : }
6984 : break;
6985 2 : case CFN_BUILT_IN_COS:
6986 2 : if (call_expr_nargs (_p0) == 1)
6987 : {
6988 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6989 2 : switch (TREE_CODE (_p1))
6990 : {
6991 2 : case CALL_EXPR:
6992 2 : switch (get_call_combined_fn (_p1))
6993 : {
6994 2 : case CFN_BUILT_IN_SIN:
6995 2 : if (call_expr_nargs (_p1) == 1)
6996 : {
6997 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6998 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6999 : {
7000 2 : {
7001 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7002 2 : tree res = generic_simplify_340 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN);
7003 2 : if (res) return res;
7004 : }
7005 : }
7006 : }
7007 : break;
7008 : default:;
7009 : }
7010 : break;
7011 : default:;
7012 : }
7013 : }
7014 : break;
7015 4 : case CFN_BUILT_IN_POW:
7016 4 : if (call_expr_nargs (_p0) == 2)
7017 : {
7018 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7019 4 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7020 4 : switch (TREE_CODE (_q21))
7021 : {
7022 4 : case REAL_CST:
7023 4 : {
7024 4 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7025 : {
7026 4 : {
7027 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7028 4 : tree res = generic_simplify_342 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
7029 4 : if (res) return res;
7030 : }
7031 : }
7032 : break;
7033 : }
7034 : default:;
7035 : }
7036 : }
7037 : break;
7038 86 : case CFN_BUILT_IN_SIN:
7039 86 : if (call_expr_nargs (_p0) == 1)
7040 : {
7041 86 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7042 86 : switch (TREE_CODE (_p1))
7043 : {
7044 4 : case CALL_EXPR:
7045 4 : switch (get_call_combined_fn (_p1))
7046 : {
7047 2 : case CFN_BUILT_IN_COS:
7048 2 : if (call_expr_nargs (_p1) == 1)
7049 : {
7050 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7051 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7052 : {
7053 2 : {
7054 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7055 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS, CFN_BUILT_IN_TAN);
7056 2 : if (res) return res;
7057 : }
7058 : }
7059 : }
7060 : break;
7061 2 : case CFN_BUILT_IN_TAN:
7062 2 : if (call_expr_nargs (_p1) == 1)
7063 : {
7064 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7065 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7066 : {
7067 2 : {
7068 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7069 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS);
7070 2 : if (res) return res;
7071 : }
7072 : }
7073 : }
7074 : break;
7075 : default:;
7076 : }
7077 : break;
7078 : default:;
7079 : }
7080 : }
7081 : break;
7082 2 : case CFN_BUILT_IN_TAN:
7083 2 : if (call_expr_nargs (_p0) == 1)
7084 : {
7085 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7086 2 : switch (TREE_CODE (_p1))
7087 : {
7088 2 : case CALL_EXPR:
7089 2 : switch (get_call_combined_fn (_p1))
7090 : {
7091 2 : case CFN_BUILT_IN_SIN:
7092 2 : if (call_expr_nargs (_p1) == 1)
7093 : {
7094 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7095 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7096 : {
7097 2 : {
7098 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7099 2 : tree res = generic_simplify_341 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS);
7100 2 : if (res) return res;
7101 : }
7102 : }
7103 : }
7104 : break;
7105 : default:;
7106 : }
7107 : break;
7108 : default:;
7109 : }
7110 : }
7111 : break;
7112 2 : case CFN_BUILT_IN_COSF:
7113 2 : if (call_expr_nargs (_p0) == 1)
7114 : {
7115 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7116 2 : switch (TREE_CODE (_p1))
7117 : {
7118 2 : case CALL_EXPR:
7119 2 : switch (get_call_combined_fn (_p1))
7120 : {
7121 2 : case CFN_BUILT_IN_SINF:
7122 2 : if (call_expr_nargs (_p1) == 1)
7123 : {
7124 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7125 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7126 : {
7127 2 : {
7128 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7129 2 : tree res = generic_simplify_340 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF);
7130 2 : if (res) return res;
7131 : }
7132 : }
7133 : }
7134 : break;
7135 : default:;
7136 : }
7137 : break;
7138 : default:;
7139 : }
7140 : }
7141 : break;
7142 2 : case CFN_BUILT_IN_COSL:
7143 2 : if (call_expr_nargs (_p0) == 1)
7144 : {
7145 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7146 2 : switch (TREE_CODE (_p1))
7147 : {
7148 2 : case CALL_EXPR:
7149 2 : switch (get_call_combined_fn (_p1))
7150 : {
7151 2 : case CFN_BUILT_IN_SINL:
7152 2 : if (call_expr_nargs (_p1) == 1)
7153 : {
7154 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7155 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7156 : {
7157 2 : {
7158 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7159 2 : tree res = generic_simplify_340 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL);
7160 2 : if (res) return res;
7161 : }
7162 : }
7163 : }
7164 : break;
7165 : default:;
7166 : }
7167 : break;
7168 : default:;
7169 : }
7170 : }
7171 : break;
7172 1 : case CFN_BUILT_IN_POWF:
7173 1 : if (call_expr_nargs (_p0) == 2)
7174 : {
7175 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7176 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7177 1 : switch (TREE_CODE (_q21))
7178 : {
7179 1 : case REAL_CST:
7180 1 : {
7181 1 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7182 : {
7183 0 : {
7184 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7185 0 : tree res = generic_simplify_342 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
7186 0 : if (res) return res;
7187 : }
7188 : }
7189 : break;
7190 : }
7191 : default:;
7192 : }
7193 : }
7194 : break;
7195 0 : case CFN_BUILT_IN_POWL:
7196 0 : if (call_expr_nargs (_p0) == 2)
7197 : {
7198 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7199 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7200 0 : switch (TREE_CODE (_q21))
7201 : {
7202 0 : case REAL_CST:
7203 0 : {
7204 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7205 : {
7206 0 : {
7207 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7208 0 : tree res = generic_simplify_342 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
7209 0 : if (res) return res;
7210 : }
7211 : }
7212 : break;
7213 : }
7214 : default:;
7215 : }
7216 : }
7217 : break;
7218 4 : case CFN_BUILT_IN_SINF:
7219 4 : if (call_expr_nargs (_p0) == 1)
7220 : {
7221 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7222 4 : switch (TREE_CODE (_p1))
7223 : {
7224 4 : case CALL_EXPR:
7225 4 : switch (get_call_combined_fn (_p1))
7226 : {
7227 2 : case CFN_BUILT_IN_COSF:
7228 2 : if (call_expr_nargs (_p1) == 1)
7229 : {
7230 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7231 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7232 : {
7233 2 : {
7234 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7235 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_TANF);
7236 2 : if (res) return res;
7237 : }
7238 : }
7239 : }
7240 : break;
7241 2 : case CFN_BUILT_IN_TANF:
7242 2 : if (call_expr_nargs (_p1) == 1)
7243 : {
7244 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7245 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7246 : {
7247 2 : {
7248 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7249 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF);
7250 2 : if (res) return res;
7251 : }
7252 : }
7253 : }
7254 : break;
7255 : default:;
7256 : }
7257 : break;
7258 : default:;
7259 : }
7260 : }
7261 : break;
7262 135 : case CFN_BUILT_IN_SINH:
7263 135 : if (call_expr_nargs (_p0) == 1)
7264 : {
7265 135 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7266 135 : switch (TREE_CODE (_p1))
7267 : {
7268 3 : case CALL_EXPR:
7269 3 : switch (get_call_combined_fn (_p1))
7270 : {
7271 3 : case CFN_BUILT_IN_COSH:
7272 3 : if (call_expr_nargs (_p1) == 1)
7273 : {
7274 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7275 3 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7276 : {
7277 3 : {
7278 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7279 3 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH, CFN_BUILT_IN_TANH);
7280 3 : if (res) return res;
7281 : }
7282 : }
7283 : }
7284 : break;
7285 : default:;
7286 : }
7287 : break;
7288 : default:;
7289 : }
7290 : }
7291 : break;
7292 4 : case CFN_BUILT_IN_SINL:
7293 4 : if (call_expr_nargs (_p0) == 1)
7294 : {
7295 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7296 4 : switch (TREE_CODE (_p1))
7297 : {
7298 4 : case CALL_EXPR:
7299 4 : switch (get_call_combined_fn (_p1))
7300 : {
7301 2 : case CFN_BUILT_IN_COSL:
7302 2 : if (call_expr_nargs (_p1) == 1)
7303 : {
7304 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7305 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7306 : {
7307 2 : {
7308 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7309 2 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_TANL);
7310 2 : if (res) return res;
7311 : }
7312 : }
7313 : }
7314 : break;
7315 2 : case CFN_BUILT_IN_TANL:
7316 2 : if (call_expr_nargs (_p1) == 1)
7317 : {
7318 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7319 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7320 : {
7321 2 : {
7322 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7323 2 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL);
7324 2 : if (res) return res;
7325 : }
7326 : }
7327 : }
7328 : break;
7329 : default:;
7330 : }
7331 : break;
7332 : default:;
7333 : }
7334 : }
7335 : break;
7336 2 : case CFN_BUILT_IN_TANF:
7337 2 : if (call_expr_nargs (_p0) == 1)
7338 : {
7339 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7340 2 : switch (TREE_CODE (_p1))
7341 : {
7342 2 : case CALL_EXPR:
7343 2 : switch (get_call_combined_fn (_p1))
7344 : {
7345 2 : case CFN_BUILT_IN_SINF:
7346 2 : if (call_expr_nargs (_p1) == 1)
7347 : {
7348 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7349 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7350 : {
7351 2 : {
7352 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7353 2 : tree res = generic_simplify_341 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF);
7354 2 : if (res) return res;
7355 : }
7356 : }
7357 : }
7358 : break;
7359 : default:;
7360 : }
7361 : break;
7362 : default:;
7363 : }
7364 : }
7365 : break;
7366 1 : case CFN_BUILT_IN_TANH:
7367 1 : if (call_expr_nargs (_p0) == 1)
7368 : {
7369 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7370 1 : switch (TREE_CODE (_p1))
7371 : {
7372 1 : case CALL_EXPR:
7373 1 : switch (get_call_combined_fn (_p1))
7374 : {
7375 1 : case CFN_BUILT_IN_SINH:
7376 1 : if (call_expr_nargs (_p1) == 1)
7377 : {
7378 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7379 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7380 : {
7381 1 : {
7382 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7383 1 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANH, CFN_BUILT_IN_SINH, CFN_BUILT_IN_COSH);
7384 1 : if (res) return res;
7385 : }
7386 : }
7387 : }
7388 : break;
7389 : default:;
7390 : }
7391 : break;
7392 : default:;
7393 : }
7394 : }
7395 : break;
7396 2 : case CFN_BUILT_IN_TANL:
7397 2 : if (call_expr_nargs (_p0) == 1)
7398 : {
7399 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7400 2 : switch (TREE_CODE (_p1))
7401 : {
7402 2 : case CALL_EXPR:
7403 2 : switch (get_call_combined_fn (_p1))
7404 : {
7405 2 : case CFN_BUILT_IN_SINL:
7406 2 : if (call_expr_nargs (_p1) == 1)
7407 : {
7408 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7409 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7410 : {
7411 2 : {
7412 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7413 2 : tree res = generic_simplify_341 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL);
7414 2 : if (res) return res;
7415 : }
7416 : }
7417 : }
7418 : break;
7419 : default:;
7420 : }
7421 : break;
7422 : default:;
7423 : }
7424 : }
7425 : break;
7426 0 : case CFN_COS:
7427 0 : if (call_expr_nargs (_p0) == 1)
7428 : {
7429 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7430 0 : switch (TREE_CODE (_p1))
7431 : {
7432 0 : case CALL_EXPR:
7433 0 : switch (get_call_combined_fn (_p1))
7434 : {
7435 0 : case CFN_SIN:
7436 0 : if (call_expr_nargs (_p1) == 1)
7437 : {
7438 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7439 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7440 : {
7441 0 : {
7442 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7443 0 : tree res = generic_simplify_340 (loc, type, _p0, _p1, captures, CFN_COS, CFN_SIN, CFN_TAN);
7444 0 : if (res) return res;
7445 : }
7446 : }
7447 : }
7448 : break;
7449 : default:;
7450 : }
7451 : break;
7452 : default:;
7453 : }
7454 : }
7455 : break;
7456 0 : case CFN_POW:
7457 0 : if (call_expr_nargs (_p0) == 2)
7458 : {
7459 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7460 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7461 0 : switch (TREE_CODE (_q21))
7462 : {
7463 0 : case REAL_CST:
7464 0 : {
7465 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7466 : {
7467 0 : {
7468 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7469 0 : tree res = generic_simplify_342 (loc, type, _p0, _p1, captures, CFN_POW);
7470 0 : if (res) return res;
7471 : }
7472 : }
7473 : break;
7474 : }
7475 : default:;
7476 : }
7477 : }
7478 : break;
7479 0 : case CFN_SIN:
7480 0 : if (call_expr_nargs (_p0) == 1)
7481 : {
7482 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7483 0 : switch (TREE_CODE (_p1))
7484 : {
7485 0 : case CALL_EXPR:
7486 0 : switch (get_call_combined_fn (_p1))
7487 : {
7488 0 : case CFN_COS:
7489 0 : if (call_expr_nargs (_p1) == 1)
7490 : {
7491 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7492 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7493 : {
7494 0 : {
7495 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7496 0 : tree res = generic_simplify_336 (loc, type, _p0, _p1, captures, CFN_SIN, CFN_COS, CFN_TAN);
7497 0 : if (res) return res;
7498 : }
7499 : }
7500 : }
7501 : break;
7502 0 : case CFN_TAN:
7503 0 : if (call_expr_nargs (_p1) == 1)
7504 : {
7505 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7506 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7507 : {
7508 0 : {
7509 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7510 0 : tree res = generic_simplify_337 (loc, type, _p0, _p1, captures, CFN_SIN, CFN_TAN, CFN_COS);
7511 0 : if (res) return res;
7512 : }
7513 : }
7514 : }
7515 : break;
7516 : default:;
7517 : }
7518 : break;
7519 : default:;
7520 : }
7521 : }
7522 : break;
7523 0 : case CFN_TAN:
7524 0 : if (call_expr_nargs (_p0) == 1)
7525 : {
7526 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7527 0 : switch (TREE_CODE (_p1))
7528 : {
7529 0 : case CALL_EXPR:
7530 0 : switch (get_call_combined_fn (_p1))
7531 : {
7532 0 : case CFN_SIN:
7533 0 : if (call_expr_nargs (_p1) == 1)
7534 : {
7535 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7536 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7537 : {
7538 0 : {
7539 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7540 0 : tree res = generic_simplify_341 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_SIN, CFN_COS);
7541 0 : if (res) return res;
7542 : }
7543 : }
7544 : }
7545 : break;
7546 : default:;
7547 : }
7548 : break;
7549 : default:;
7550 : }
7551 : }
7552 : break;
7553 0 : case CFN_SINH:
7554 0 : if (call_expr_nargs (_p0) == 1)
7555 : {
7556 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7557 0 : switch (TREE_CODE (_p1))
7558 : {
7559 0 : case CALL_EXPR:
7560 0 : switch (get_call_combined_fn (_p1))
7561 : {
7562 0 : case CFN_COSH:
7563 0 : if (call_expr_nargs (_p1) == 1)
7564 : {
7565 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7566 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7567 : {
7568 0 : {
7569 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7570 0 : tree res = generic_simplify_338 (loc, type, _p0, _p1, captures, CFN_SINH, CFN_COSH, CFN_TANH);
7571 0 : if (res) return res;
7572 : }
7573 : }
7574 : }
7575 : break;
7576 : default:;
7577 : }
7578 : break;
7579 : default:;
7580 : }
7581 : }
7582 : break;
7583 0 : case CFN_TANH:
7584 0 : if (call_expr_nargs (_p0) == 1)
7585 : {
7586 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7587 0 : switch (TREE_CODE (_p1))
7588 : {
7589 0 : case CALL_EXPR:
7590 0 : switch (get_call_combined_fn (_p1))
7591 : {
7592 0 : case CFN_SINH:
7593 0 : if (call_expr_nargs (_p1) == 1)
7594 : {
7595 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7596 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
7597 : {
7598 0 : {
7599 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7600 0 : tree res = generic_simplify_339 (loc, type, _p0, _p1, captures, CFN_TANH, CFN_SINH, CFN_COSH);
7601 0 : if (res) return res;
7602 : }
7603 : }
7604 : }
7605 : break;
7606 : default:;
7607 : }
7608 : break;
7609 : default:;
7610 : }
7611 : }
7612 : break;
7613 : default:;
7614 : }
7615 : break;
7616 5848766 : default:;
7617 : }
7618 5848766 : switch (TREE_CODE (_p1))
7619 : {
7620 783907 : case CALL_EXPR:
7621 783907 : switch (get_call_combined_fn (_p1))
7622 : {
7623 22 : case CFN_BUILT_IN_POW:
7624 22 : if (call_expr_nargs (_p1) == 2)
7625 : {
7626 22 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7627 22 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7628 22 : {
7629 22 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7630 22 : tree res = generic_simplify_343 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
7631 22 : if (res) return res;
7632 : }
7633 : }
7634 : break;
7635 2 : case CFN_BUILT_IN_POWF:
7636 2 : if (call_expr_nargs (_p1) == 2)
7637 : {
7638 2 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7639 2 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7640 2 : {
7641 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7642 2 : tree res = generic_simplify_343 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
7643 2 : if (res) return res;
7644 : }
7645 : }
7646 : break;
7647 0 : case CFN_BUILT_IN_POWL:
7648 0 : if (call_expr_nargs (_p1) == 2)
7649 : {
7650 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7651 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7652 0 : {
7653 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7654 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
7655 0 : if (res) return res;
7656 : }
7657 : }
7658 : break;
7659 0 : case CFN_POW:
7660 0 : if (call_expr_nargs (_p1) == 2)
7661 : {
7662 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7663 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
7664 0 : {
7665 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
7666 0 : tree res = generic_simplify_343 (loc, type, _p0, _p1, captures, CFN_POW);
7667 0 : if (res) return res;
7668 : }
7669 : }
7670 : break;
7671 : default:;
7672 : }
7673 : break;
7674 : default:;
7675 : }
7676 : return NULL_TREE;
7677 : }
7678 :
7679 : tree
7680 6620187 : generic_simplify_GE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
7681 : {
7682 6620187 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
7683 6620187 : switch (TREE_CODE (_p0))
7684 : {
7685 2001 : case RDIV_EXPR:
7686 2001 : {
7687 2001 : tree _q20 = TREE_OPERAND (_p0, 0);
7688 2001 : tree _q21 = TREE_OPERAND (_p0, 1);
7689 2001 : switch (TREE_CODE (_q20))
7690 : {
7691 46 : case REAL_CST:
7692 46 : {
7693 46 : if (real_zerop (_p1))
7694 : {
7695 2 : {
7696 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7697 2 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7698 2 : if (res) return res;
7699 : }
7700 : }
7701 : break;
7702 : }
7703 : default:;
7704 : }
7705 : break;
7706 : }
7707 1209 : case TRUNC_MOD_EXPR:
7708 1209 : {
7709 1209 : tree _q20 = TREE_OPERAND (_p0, 0);
7710 1209 : tree _q21 = TREE_OPERAND (_p0, 1);
7711 1209 : if (tree_expr_nonnegative_p (_q20))
7712 : {
7713 883 : if (tree_expr_nonnegative_p (_q21))
7714 : {
7715 835 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7716 : {
7717 0 : {
7718 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7719 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, GE_EXPR);
7720 0 : if (res) return res;
7721 : }
7722 : }
7723 : }
7724 : }
7725 : break;
7726 : }
7727 31312 : case MULT_EXPR:
7728 31312 : {
7729 31312 : tree _q20 = TREE_OPERAND (_p0, 0);
7730 31312 : tree _q21 = TREE_OPERAND (_p0, 1);
7731 31312 : switch (TREE_CODE (_p1))
7732 : {
7733 6844 : case MULT_EXPR:
7734 6844 : {
7735 6844 : tree _q50 = TREE_OPERAND (_p1, 0);
7736 6844 : tree _q51 = TREE_OPERAND (_p1, 1);
7737 6844 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7738 : {
7739 4854 : {
7740 4854 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7741 4854 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7742 4854 : if (res) return res;
7743 : }
7744 : }
7745 2551 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7746 : {
7747 0 : {
7748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7749 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7750 0 : if (res) return res;
7751 : }
7752 : }
7753 2551 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7754 : {
7755 0 : {
7756 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
7757 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7758 0 : if (res) return res;
7759 : }
7760 : }
7761 2551 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7762 : {
7763 1 : {
7764 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
7765 1 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR);
7766 1 : if (res) return res;
7767 : }
7768 : }
7769 : break;
7770 : }
7771 : default:;
7772 : }
7773 : break;
7774 : }
7775 1000984 : CASE_CONVERT:
7776 1000984 : {
7777 1000984 : tree _q20 = TREE_OPERAND (_p0, 0);
7778 1000984 : switch (TREE_CODE (_q20))
7779 : {
7780 157 : case EXACT_DIV_EXPR:
7781 157 : {
7782 157 : tree _q30 = TREE_OPERAND (_q20, 0);
7783 157 : tree _q31 = TREE_OPERAND (_q20, 1);
7784 157 : switch (TREE_CODE (_q31))
7785 : {
7786 157 : case INTEGER_CST:
7787 157 : {
7788 157 : switch (TREE_CODE (_p1))
7789 : {
7790 43 : CASE_CONVERT:
7791 43 : {
7792 43 : tree _q60 = TREE_OPERAND (_p1, 0);
7793 43 : switch (TREE_CODE (_q60))
7794 : {
7795 0 : case EXACT_DIV_EXPR:
7796 0 : {
7797 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7798 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7799 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
7800 : {
7801 0 : {
7802 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
7803 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, GE_EXPR);
7804 0 : if (res) return res;
7805 : }
7806 : }
7807 : break;
7808 : }
7809 : default:;
7810 : }
7811 : break;
7812 : }
7813 : default:;
7814 : }
7815 : break;
7816 : }
7817 : default:;
7818 : }
7819 : break;
7820 : }
7821 : default:;
7822 : }
7823 : break;
7824 : }
7825 8045 : case EXACT_DIV_EXPR:
7826 8045 : {
7827 8045 : tree _q20 = TREE_OPERAND (_p0, 0);
7828 8045 : tree _q21 = TREE_OPERAND (_p0, 1);
7829 8045 : switch (TREE_CODE (_q21))
7830 : {
7831 8045 : case INTEGER_CST:
7832 8045 : {
7833 8045 : switch (TREE_CODE (_p1))
7834 : {
7835 0 : case EXACT_DIV_EXPR:
7836 0 : {
7837 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7838 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7839 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7840 : {
7841 0 : {
7842 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
7843 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, GE_EXPR);
7844 0 : if (res) return res;
7845 : }
7846 : }
7847 : break;
7848 : }
7849 : default:;
7850 : }
7851 : break;
7852 : }
7853 : default:;
7854 : }
7855 : break;
7856 : }
7857 40885 : case TRUNC_DIV_EXPR:
7858 40885 : {
7859 40885 : tree _q20 = TREE_OPERAND (_p0, 0);
7860 40885 : tree _q21 = TREE_OPERAND (_p0, 1);
7861 40885 : switch (TREE_CODE (_q21))
7862 : {
7863 40347 : case INTEGER_CST:
7864 40347 : {
7865 40347 : switch (TREE_CODE (_p1))
7866 : {
7867 39429 : case INTEGER_CST:
7868 39429 : {
7869 39429 : {
7870 39429 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7871 39429 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, GE_EXPR);
7872 39429 : if (res) return res;
7873 : }
7874 0 : break;
7875 : }
7876 : default:;
7877 : }
7878 : break;
7879 : }
7880 : default:;
7881 : }
7882 : break;
7883 : }
7884 792100 : case PLUS_EXPR:
7885 792100 : {
7886 792100 : tree _q20 = TREE_OPERAND (_p0, 0);
7887 792100 : tree _q21 = TREE_OPERAND (_p0, 1);
7888 792100 : switch (TREE_CODE (_p1))
7889 : {
7890 52354 : case PLUS_EXPR:
7891 52354 : {
7892 52354 : tree _q50 = TREE_OPERAND (_p1, 0);
7893 52354 : tree _q51 = TREE_OPERAND (_p1, 1);
7894 52354 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7895 : {
7896 1451 : {
7897 1451 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7898 1451 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, GE_EXPR);
7899 1451 : if (res) return res;
7900 : }
7901 : }
7902 52354 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7903 : {
7904 17 : {
7905 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7906 17 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, GE_EXPR);
7907 17 : if (res) return res;
7908 : }
7909 : }
7910 52354 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7911 : {
7912 16 : {
7913 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
7914 16 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, GE_EXPR);
7915 16 : if (res) return res;
7916 : }
7917 : }
7918 52354 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7919 : {
7920 987 : {
7921 987 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
7922 987 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, GE_EXPR);
7923 987 : if (res) return res;
7924 : }
7925 : }
7926 : break;
7927 : }
7928 792047 : default:;
7929 : }
7930 792047 : switch (TREE_CODE (_q21))
7931 : {
7932 679571 : case INTEGER_CST:
7933 679571 : {
7934 679571 : switch (TREE_CODE (_p1))
7935 : {
7936 15228 : case PLUS_EXPR:
7937 15228 : {
7938 15228 : tree _q50 = TREE_OPERAND (_p1, 0);
7939 15228 : tree _q51 = TREE_OPERAND (_p1, 1);
7940 15228 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7941 : {
7942 1447 : {
7943 1447 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7944 1447 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, GE_EXPR);
7945 1447 : if (res) return res;
7946 : }
7947 : }
7948 : break;
7949 : }
7950 : default:;
7951 : }
7952 : break;
7953 : }
7954 792047 : default:;
7955 : }
7956 792047 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7957 : {
7958 54339 : {
7959 54339 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7960 54339 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR);
7961 54339 : if (res) return res;
7962 : }
7963 : }
7964 757389 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7965 : {
7966 24596 : {
7967 24596 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
7968 24596 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR);
7969 24596 : if (res) return res;
7970 : }
7971 : }
7972 : break;
7973 : }
7974 121845 : case MINUS_EXPR:
7975 121845 : {
7976 121845 : tree _q20 = TREE_OPERAND (_p0, 0);
7977 121845 : tree _q21 = TREE_OPERAND (_p0, 1);
7978 121845 : switch (TREE_CODE (_p1))
7979 : {
7980 1407 : case MINUS_EXPR:
7981 1407 : {
7982 1407 : tree _q50 = TREE_OPERAND (_p1, 0);
7983 1407 : tree _q51 = TREE_OPERAND (_p1, 1);
7984 1407 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7985 : {
7986 14 : {
7987 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7988 14 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, GE_EXPR);
7989 14 : if (res) return res;
7990 : }
7991 : }
7992 1407 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7993 : {
7994 22 : {
7995 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
7996 22 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, GE_EXPR);
7997 22 : if (res) return res;
7998 : }
7999 : }
8000 : break;
8001 : }
8002 : default:;
8003 : }
8004 : break;
8005 : }
8006 2367 : case POINTER_DIFF_EXPR:
8007 2367 : {
8008 2367 : tree _q20 = TREE_OPERAND (_p0, 0);
8009 2367 : tree _q21 = TREE_OPERAND (_p0, 1);
8010 2367 : switch (TREE_CODE (_p1))
8011 : {
8012 32 : case POINTER_DIFF_EXPR:
8013 32 : {
8014 32 : tree _q50 = TREE_OPERAND (_p1, 0);
8015 32 : tree _q51 = TREE_OPERAND (_p1, 1);
8016 32 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8017 : {
8018 0 : {
8019 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
8020 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, GE_EXPR);
8021 0 : if (res) return res;
8022 : }
8023 : }
8024 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8025 : {
8026 0 : {
8027 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
8028 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, GE_EXPR);
8029 0 : if (res) return res;
8030 : }
8031 : }
8032 : break;
8033 : }
8034 : default:;
8035 : }
8036 : break;
8037 : }
8038 6538175 : default:;
8039 : }
8040 6538175 : switch (TREE_CODE (_p1))
8041 : {
8042 59135 : case PLUS_EXPR:
8043 59135 : {
8044 59135 : tree _q30 = TREE_OPERAND (_p1, 0);
8045 59135 : tree _q31 = TREE_OPERAND (_p1, 1);
8046 59135 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8047 : {
8048 0 : {
8049 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
8050 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
8051 0 : if (res) return res;
8052 : }
8053 : }
8054 59135 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8055 : {
8056 0 : {
8057 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
8058 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
8059 0 : if (res) return res;
8060 : }
8061 : }
8062 : break;
8063 : }
8064 2398 : case MINUS_EXPR:
8065 2398 : {
8066 2398 : tree _q30 = TREE_OPERAND (_p1, 0);
8067 2398 : tree _q31 = TREE_OPERAND (_p1, 1);
8068 2398 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8069 : {
8070 0 : {
8071 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
8072 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, GE_EXPR);
8073 0 : if (res) return res;
8074 : }
8075 : }
8076 : break;
8077 : }
8078 6538175 : default:;
8079 : }
8080 6538175 : switch (TREE_CODE (_p0))
8081 : {
8082 121845 : case MINUS_EXPR:
8083 121845 : {
8084 121845 : tree _q20 = TREE_OPERAND (_p0, 0);
8085 121845 : tree _q21 = TREE_OPERAND (_p0, 1);
8086 121845 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8087 : {
8088 2476 : {
8089 2476 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
8090 2476 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, LE_EXPR);
8091 2476 : if (res) return res;
8092 : }
8093 : }
8094 : break;
8095 : }
8096 1047 : case BIT_IOR_EXPR:
8097 1047 : {
8098 1047 : tree _q20 = TREE_OPERAND (_p0, 0);
8099 1047 : tree _q21 = TREE_OPERAND (_p0, 1);
8100 1047 : if (tree_expr_nonnegative_p (_q20))
8101 : {
8102 222 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8103 : {
8104 0 : {
8105 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8106 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
8107 0 : if (res) return res;
8108 : }
8109 : }
8110 : }
8111 1047 : if (tree_expr_nonnegative_p (_q21))
8112 : {
8113 296 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8114 : {
8115 0 : {
8116 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8117 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
8118 0 : if (res) return res;
8119 : }
8120 : }
8121 : }
8122 : break;
8123 : }
8124 6538174 : default:;
8125 : }
8126 6538174 : switch (TREE_CODE (_p1))
8127 : {
8128 195 : case BIT_AND_EXPR:
8129 195 : {
8130 195 : tree _q30 = TREE_OPERAND (_p1, 0);
8131 195 : tree _q31 = TREE_OPERAND (_p1, 1);
8132 195 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8133 : {
8134 0 : if (tree_expr_nonnegative_p (_q30))
8135 : {
8136 0 : {
8137 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8138 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
8139 0 : if (res) return res;
8140 : }
8141 : }
8142 : }
8143 195 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8144 : {
8145 0 : if (tree_expr_nonnegative_p (_q31))
8146 : {
8147 0 : {
8148 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8149 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
8150 0 : if (res) return res;
8151 : }
8152 : }
8153 : }
8154 : break;
8155 : }
8156 6538174 : default:;
8157 : }
8158 6538174 : switch (TREE_CODE (_p0))
8159 : {
8160 851 : case MAX_EXPR:
8161 851 : {
8162 851 : tree _q20 = TREE_OPERAND (_p0, 0);
8163 851 : tree _q21 = TREE_OPERAND (_p0, 1);
8164 851 : switch (TREE_CODE (_p1))
8165 : {
8166 0 : case MIN_EXPR:
8167 0 : {
8168 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8169 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8170 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8171 : {
8172 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8173 : {
8174 0 : {
8175 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8176 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR);
8177 0 : if (res) return res;
8178 : }
8179 : }
8180 : }
8181 : break;
8182 : }
8183 : default:;
8184 : }
8185 : break;
8186 : }
8187 2968 : case MIN_EXPR:
8188 2968 : {
8189 2968 : tree _q20 = TREE_OPERAND (_p0, 0);
8190 2968 : tree _q21 = TREE_OPERAND (_p0, 1);
8191 2968 : switch (TREE_CODE (_p1))
8192 : {
8193 27 : case MAX_EXPR:
8194 27 : {
8195 27 : tree _q50 = TREE_OPERAND (_p1, 0);
8196 27 : tree _q51 = TREE_OPERAND (_p1, 1);
8197 27 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8198 : {
8199 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8200 : {
8201 0 : {
8202 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8203 0 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
8204 0 : if (res) return res;
8205 : }
8206 : }
8207 : }
8208 : break;
8209 : }
8210 2968 : default:;
8211 : }
8212 2968 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8213 : {
8214 0 : {
8215 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8216 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
8217 0 : if (res) return res;
8218 : }
8219 : }
8220 2968 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8221 : {
8222 1 : {
8223 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8224 1 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
8225 1 : if (res) return res;
8226 : }
8227 : }
8228 : break;
8229 : }
8230 6538173 : default:;
8231 : }
8232 6538173 : switch (TREE_CODE (_p1))
8233 : {
8234 204 : case MAX_EXPR:
8235 204 : {
8236 204 : tree _q30 = TREE_OPERAND (_p1, 0);
8237 204 : tree _q31 = TREE_OPERAND (_p1, 1);
8238 204 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8239 : {
8240 0 : {
8241 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8242 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
8243 0 : if (res) return res;
8244 : }
8245 : }
8246 204 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8247 : {
8248 0 : {
8249 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8250 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
8251 0 : if (res) return res;
8252 : }
8253 : }
8254 : break;
8255 : }
8256 1671 : case MIN_EXPR:
8257 1671 : {
8258 1671 : tree _q30 = TREE_OPERAND (_p1, 0);
8259 1671 : tree _q31 = TREE_OPERAND (_p1, 1);
8260 1671 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8261 : {
8262 0 : {
8263 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8264 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
8265 0 : if (res) return res;
8266 : }
8267 : }
8268 1671 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8269 : {
8270 0 : {
8271 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8272 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
8273 0 : if (res) return res;
8274 : }
8275 : }
8276 : break;
8277 : }
8278 6538173 : default:;
8279 : }
8280 6538173 : switch (TREE_CODE (_p0))
8281 : {
8282 851 : case MAX_EXPR:
8283 851 : {
8284 851 : tree _q20 = TREE_OPERAND (_p0, 0);
8285 851 : tree _q21 = TREE_OPERAND (_p0, 1);
8286 851 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8287 : {
8288 0 : {
8289 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8290 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
8291 0 : if (res) return res;
8292 : }
8293 : }
8294 851 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8295 : {
8296 2 : {
8297 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8298 2 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
8299 2 : if (res) return res;
8300 : }
8301 : }
8302 849 : switch (TREE_CODE (_q21))
8303 : {
8304 773 : case INTEGER_CST:
8305 773 : {
8306 773 : switch (TREE_CODE (_p1))
8307 : {
8308 0 : case INTEGER_CST:
8309 0 : {
8310 0 : {
8311 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8312 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MAX_EXPR, GE_EXPR, BIT_IOR_EXPR);
8313 0 : if (res) return res;
8314 : }
8315 0 : break;
8316 : }
8317 : default:;
8318 : }
8319 : break;
8320 : }
8321 : default:;
8322 : }
8323 : break;
8324 : }
8325 2967 : case MIN_EXPR:
8326 2967 : {
8327 2967 : tree _q20 = TREE_OPERAND (_p0, 0);
8328 2967 : tree _q21 = TREE_OPERAND (_p0, 1);
8329 2967 : switch (TREE_CODE (_q21))
8330 : {
8331 996 : case INTEGER_CST:
8332 996 : {
8333 996 : switch (TREE_CODE (_p1))
8334 : {
8335 0 : case INTEGER_CST:
8336 0 : {
8337 0 : {
8338 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8339 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, BIT_AND_EXPR);
8340 0 : if (res) return res;
8341 : }
8342 0 : break;
8343 : }
8344 : default:;
8345 : }
8346 : break;
8347 : }
8348 : default:;
8349 : }
8350 : break;
8351 : }
8352 1000984 : CASE_CONVERT:
8353 1000984 : {
8354 1000984 : tree _q20 = TREE_OPERAND (_p0, 0);
8355 1000984 : switch (TREE_CODE (_q20))
8356 : {
8357 0 : case GE_EXPR:
8358 0 : {
8359 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8360 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8361 0 : if (tree_zero_one_valued_p (_q30))
8362 : {
8363 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
8364 : {
8365 0 : {
8366 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
8367 0 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, GE_EXPR);
8368 0 : if (res) return res;
8369 : }
8370 : }
8371 : }
8372 : break;
8373 : }
8374 : default:;
8375 : }
8376 : break;
8377 : }
8378 41 : case GE_EXPR:
8379 41 : {
8380 41 : tree _q20 = TREE_OPERAND (_p0, 0);
8381 41 : tree _q21 = TREE_OPERAND (_p0, 1);
8382 41 : if (tree_zero_one_valued_p (_q20))
8383 : {
8384 15 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8385 : {
8386 3 : {
8387 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8388 3 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, GE_EXPR);
8389 3 : if (res) return res;
8390 : }
8391 : }
8392 : }
8393 : break;
8394 : }
8395 6 : case VEC_COND_EXPR:
8396 6 : {
8397 6 : tree _q20 = TREE_OPERAND (_p0, 0);
8398 6 : tree _q21 = TREE_OPERAND (_p0, 1);
8399 6 : tree _q22 = TREE_OPERAND (_p0, 2);
8400 6 : switch (TREE_CODE (_p1))
8401 : {
8402 0 : case VEC_COND_EXPR:
8403 0 : {
8404 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8405 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8406 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8407 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8408 : {
8409 0 : {
8410 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8411 0 : if (VECTOR_TYPE_P (type)
8412 0 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8413 0 : || types_match (type, TREE_TYPE (captures[2]))
8414 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8415 : || (optimize_vectors_before_lowering_p ()
8416 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8417 : )
8418 : {
8419 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1646;
8420 0 : {
8421 0 : tree res_op0;
8422 0 : res_op0 = captures[1];
8423 0 : tree res_op1;
8424 0 : {
8425 0 : tree _o1[2], _r1;
8426 0 : _o1[0] = captures[2];
8427 0 : _o1[1] = captures[5];
8428 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8429 0 : if (EXPR_P (_r1))
8430 0 : goto next_after_fail1646;
8431 0 : res_op1 = _r1;
8432 : }
8433 0 : tree res_op2;
8434 0 : {
8435 0 : tree _o1[2], _r1;
8436 0 : _o1[0] = captures[3];
8437 0 : _o1[1] = captures[6];
8438 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8439 0 : if (EXPR_P (_r1))
8440 0 : goto next_after_fail1646;
8441 0 : res_op2 = _r1;
8442 : }
8443 0 : tree _r;
8444 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8445 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8446 0 : return _r;
8447 : }
8448 0 : next_after_fail1646:;
8449 : }
8450 : }
8451 : }
8452 : break;
8453 : }
8454 6 : default:;
8455 : }
8456 6 : {
8457 6 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8458 6 : if (VECTOR_TYPE_P (type)
8459 6 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8460 6 : || types_match (type, TREE_TYPE (captures[2]))
8461 6 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8462 : || (optimize_vectors_before_lowering_p ()
8463 2 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8464 : )
8465 : {
8466 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1647;
8467 6 : {
8468 6 : if (! tree_invariant_p (captures[4])) goto next_after_fail1647;
8469 5 : tree res_op0;
8470 5 : res_op0 = captures[1];
8471 5 : tree res_op1;
8472 5 : {
8473 5 : tree _o1[2], _r1;
8474 5 : _o1[0] = captures[2];
8475 5 : _o1[1] = unshare_expr (captures[4]);
8476 5 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8477 5 : if (EXPR_P (_r1))
8478 1 : goto next_after_fail1647;
8479 4 : res_op1 = _r1;
8480 : }
8481 4 : tree res_op2;
8482 4 : {
8483 4 : tree _o1[2], _r1;
8484 4 : _o1[0] = captures[3];
8485 4 : _o1[1] = captures[4];
8486 4 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8487 4 : if (EXPR_P (_r1))
8488 0 : goto next_after_fail1647;
8489 4 : res_op2 = _r1;
8490 : }
8491 4 : tree _r;
8492 4 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8493 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8494 4 : return _r;
8495 : }
8496 2 : next_after_fail1647:;
8497 : }
8498 : }
8499 2 : break;
8500 : }
8501 6538164 : default:;
8502 : }
8503 6538164 : switch (TREE_CODE (_p1))
8504 : {
8505 0 : case VEC_COND_EXPR:
8506 0 : {
8507 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8508 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8509 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8510 0 : {
8511 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8512 0 : if (VECTOR_TYPE_P (type)
8513 0 : && (TREE_CODE_CLASS (GE_EXPR) != tcc_comparison
8514 0 : || types_match (type, TREE_TYPE (captures[3]))
8515 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8516 : || (optimize_vectors_before_lowering_p ()
8517 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8518 : )
8519 : {
8520 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1648;
8521 0 : {
8522 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1648;
8523 0 : tree res_op0;
8524 0 : res_op0 = captures[2];
8525 0 : tree res_op1;
8526 0 : {
8527 0 : tree _o1[2], _r1;
8528 0 : _o1[0] = unshare_expr (captures[0]);
8529 0 : _o1[1] = captures[3];
8530 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8531 0 : if (EXPR_P (_r1))
8532 0 : goto next_after_fail1648;
8533 0 : res_op1 = _r1;
8534 : }
8535 0 : tree res_op2;
8536 0 : {
8537 0 : tree _o1[2], _r1;
8538 0 : _o1[0] = captures[0];
8539 0 : _o1[1] = captures[4];
8540 0 : _r1 = fold_build2_loc (loc, GE_EXPR, type, _o1[0], _o1[1]);
8541 0 : if (EXPR_P (_r1))
8542 0 : goto next_after_fail1648;
8543 0 : res_op2 = _r1;
8544 : }
8545 0 : tree _r;
8546 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8547 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
8548 0 : return _r;
8549 : }
8550 0 : next_after_fail1648:;
8551 : }
8552 : }
8553 0 : break;
8554 : }
8555 6538164 : default:;
8556 : }
8557 6538164 : if (uniform_integer_cst_p (_p1))
8558 : {
8559 3308672 : {
8560 3308672 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8561 3308672 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, GE_EXPR, GT_EXPR);
8562 3308672 : if (res) return res;
8563 : }
8564 : }
8565 5046626 : switch (TREE_CODE (_p0))
8566 : {
8567 23352 : case MULT_EXPR:
8568 23352 : {
8569 23352 : tree _q20 = TREE_OPERAND (_p0, 0);
8570 23352 : tree _q21 = TREE_OPERAND (_p0, 1);
8571 23352 : switch (TREE_CODE (_q21))
8572 : {
8573 19437 : case INTEGER_CST:
8574 19437 : {
8575 19437 : if (integer_zerop (_p1))
8576 : {
8577 2752 : {
8578 2752 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8579 2752 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8580 2752 : if (res) return res;
8581 : }
8582 : }
8583 : break;
8584 : }
8585 : default:;
8586 : }
8587 : break;
8588 : }
8589 5046332 : default:;
8590 : }
8591 5046332 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8592 : {
8593 38440 : {
8594 38440 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8595 38440 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, GE_EXPR);
8596 38440 : if (res) return res;
8597 : }
8598 : }
8599 5007929 : switch (TREE_CODE (_p0))
8600 : {
8601 418 : case BIT_NOT_EXPR:
8602 418 : {
8603 418 : tree _q20 = TREE_OPERAND (_p0, 0);
8604 418 : switch (TREE_CODE (_p1))
8605 : {
8606 1 : case BIT_NOT_EXPR:
8607 1 : {
8608 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8609 1 : {
8610 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8611 1 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, GE_EXPR);
8612 1 : if (res) return res;
8613 : }
8614 0 : break;
8615 : }
8616 417 : default:;
8617 : }
8618 417 : {
8619 417 : tree _p1_pops[1];
8620 417 : if (tree_nop_convert (_p1, _p1_pops))
8621 : {
8622 50 : tree _q40 = _p1_pops[0];
8623 50 : switch (TREE_CODE (_q40))
8624 : {
8625 0 : case BIT_NOT_EXPR:
8626 0 : {
8627 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8628 0 : {
8629 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8630 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, GE_EXPR);
8631 0 : if (res) return res;
8632 : }
8633 0 : break;
8634 : }
8635 : default:;
8636 : }
8637 : }
8638 : }
8639 417 : if (CONSTANT_CLASS_P (_p1))
8640 : {
8641 94 : {
8642 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8643 94 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8644 94 : if (res) return res;
8645 : }
8646 : }
8647 : break;
8648 : }
8649 5007834 : default:;
8650 : }
8651 5007834 : {
8652 5007834 : tree _p0_pops[1];
8653 5007834 : if (tree_nop_convert (_p0, _p0_pops))
8654 : {
8655 228904 : tree _q20 = _p0_pops[0];
8656 228904 : switch (TREE_CODE (_q20))
8657 : {
8658 4 : case BIT_NOT_EXPR:
8659 4 : {
8660 4 : tree _q30 = TREE_OPERAND (_q20, 0);
8661 4 : switch (TREE_CODE (_p1))
8662 : {
8663 0 : case BIT_NOT_EXPR:
8664 0 : {
8665 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8666 0 : {
8667 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
8668 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, GE_EXPR);
8669 0 : if (res) return res;
8670 : }
8671 0 : break;
8672 : }
8673 4 : default:;
8674 : }
8675 4 : {
8676 4 : tree _p1_pops[1];
8677 4 : if (tree_nop_convert (_p1, _p1_pops))
8678 : {
8679 0 : tree _q50 = _p1_pops[0];
8680 0 : switch (TREE_CODE (_q50))
8681 : {
8682 0 : case BIT_NOT_EXPR:
8683 0 : {
8684 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8685 0 : {
8686 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
8687 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, GE_EXPR);
8688 0 : if (res) return res;
8689 : }
8690 0 : break;
8691 : }
8692 : default:;
8693 : }
8694 : }
8695 : }
8696 4 : if (CONSTANT_CLASS_P (_p1))
8697 : {
8698 0 : {
8699 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
8700 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8701 0 : if (res) return res;
8702 : }
8703 : }
8704 : break;
8705 : }
8706 : default:;
8707 : }
8708 : }
8709 : }
8710 5007834 : switch (TREE_CODE (_p1))
8711 : {
8712 624673 : case REAL_CST:
8713 624673 : {
8714 624673 : {
8715 624673 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8716 624673 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, GE_EXPR);
8717 624673 : if (res) return res;
8718 : }
8719 624604 : break;
8720 : }
8721 5007765 : default:;
8722 : }
8723 5007765 : switch (TREE_CODE (_p0))
8724 : {
8725 675475 : case PLUS_EXPR:
8726 675475 : {
8727 675475 : tree _q20 = TREE_OPERAND (_p0, 0);
8728 675475 : tree _q21 = TREE_OPERAND (_p0, 1);
8729 675475 : switch (TREE_CODE (_q21))
8730 : {
8731 168 : case REAL_CST:
8732 168 : {
8733 168 : switch (TREE_CODE (_p1))
8734 : {
8735 20 : case REAL_CST:
8736 20 : {
8737 20 : {
8738 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8739 20 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR);
8740 20 : if (res) return res;
8741 : }
8742 20 : break;
8743 : }
8744 : default:;
8745 : }
8746 : break;
8747 : }
8748 563104 : case INTEGER_CST:
8749 563104 : {
8750 563104 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8751 : {
8752 16032 : {
8753 16032 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
8754 16032 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8755 16032 : if (res) return res;
8756 : }
8757 : }
8758 : break;
8759 : }
8760 : default:;
8761 : }
8762 : break;
8763 : }
8764 58482 : case MINUS_EXPR:
8765 58482 : {
8766 58482 : tree _q20 = TREE_OPERAND (_p0, 0);
8767 58482 : tree _q21 = TREE_OPERAND (_p0, 1);
8768 58482 : switch (TREE_CODE (_q21))
8769 : {
8770 31 : case REAL_CST:
8771 31 : {
8772 31 : switch (TREE_CODE (_p1))
8773 : {
8774 31 : case REAL_CST:
8775 31 : {
8776 31 : {
8777 31 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8778 31 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, MINUS_EXPR, GE_EXPR);
8779 31 : if (res) return res;
8780 : }
8781 31 : break;
8782 : }
8783 : default:;
8784 : }
8785 : break;
8786 : }
8787 58482 : default:;
8788 : }
8789 58482 : switch (TREE_CODE (_q20))
8790 : {
8791 24 : case REAL_CST:
8792 24 : {
8793 24 : switch (TREE_CODE (_p1))
8794 : {
8795 0 : case REAL_CST:
8796 0 : {
8797 0 : {
8798 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8799 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, GE_EXPR);
8800 0 : if (res) return res;
8801 : }
8802 0 : break;
8803 : }
8804 : default:;
8805 : }
8806 : break;
8807 : }
8808 : default:;
8809 : }
8810 : break;
8811 : }
8812 39094 : case FLOAT_EXPR:
8813 39094 : {
8814 39094 : tree _q20 = TREE_OPERAND (_p0, 0);
8815 39094 : switch (TREE_CODE (_p1))
8816 : {
8817 7 : case FLOAT_EXPR:
8818 7 : {
8819 7 : tree _q40 = TREE_OPERAND (_p1, 0);
8820 7 : {
8821 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8822 7 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, GE_EXPR, GE_EXPR);
8823 7 : if (res) return res;
8824 : }
8825 0 : break;
8826 : }
8827 37615 : case REAL_CST:
8828 37615 : {
8829 37615 : {
8830 37615 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8831 37615 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, GE_EXPR, GE_EXPR);
8832 37615 : if (res) return res;
8833 : }
8834 18844 : break;
8835 : }
8836 : default:;
8837 : }
8838 : break;
8839 : }
8840 8006 : case EXACT_DIV_EXPR:
8841 8006 : {
8842 8006 : tree _q20 = TREE_OPERAND (_p0, 0);
8843 8006 : tree _q21 = TREE_OPERAND (_p0, 1);
8844 8006 : switch (TREE_CODE (_q21))
8845 : {
8846 8006 : case INTEGER_CST:
8847 8006 : {
8848 8006 : switch (TREE_CODE (_p1))
8849 : {
8850 0 : case INTEGER_CST:
8851 0 : {
8852 0 : {
8853 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8854 0 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, GE_EXPR);
8855 0 : if (res) return res;
8856 : }
8857 0 : break;
8858 : }
8859 : default:;
8860 : }
8861 : break;
8862 : }
8863 : default:;
8864 : }
8865 : break;
8866 : }
8867 603308 : CASE_CONVERT:
8868 603308 : {
8869 603308 : tree _q20 = TREE_OPERAND (_p0, 0);
8870 603308 : switch (TREE_CODE (_q20))
8871 : {
8872 157 : case EXACT_DIV_EXPR:
8873 157 : {
8874 157 : tree _q30 = TREE_OPERAND (_q20, 0);
8875 157 : tree _q31 = TREE_OPERAND (_q20, 1);
8876 157 : switch (TREE_CODE (_q31))
8877 : {
8878 157 : case INTEGER_CST:
8879 157 : {
8880 157 : switch (TREE_CODE (_p1))
8881 : {
8882 0 : case INTEGER_CST:
8883 0 : {
8884 0 : {
8885 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8886 0 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR);
8887 0 : if (res) return res;
8888 : }
8889 0 : break;
8890 : }
8891 : default:;
8892 : }
8893 : break;
8894 : }
8895 : default:;
8896 : }
8897 : break;
8898 : }
8899 603308 : default:;
8900 : }
8901 603308 : switch (TREE_CODE (_p1))
8902 : {
8903 97154 : CASE_CONVERT:
8904 97154 : {
8905 97154 : tree _q40 = TREE_OPERAND (_p1, 0);
8906 97154 : {
8907 97154 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8908 97154 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, GE_EXPR);
8909 97154 : if (res) return res;
8910 : }
8911 60579 : break;
8912 : }
8913 566733 : default:;
8914 : }
8915 566733 : {
8916 566733 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
8917 566733 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, GE_EXPR);
8918 566733 : if (res) return res;
8919 : }
8920 311517 : switch (TREE_CODE (_q20))
8921 : {
8922 3054 : case ADDR_EXPR:
8923 3054 : {
8924 3054 : switch (TREE_CODE (_p1))
8925 : {
8926 2983 : CASE_CONVERT:
8927 2983 : {
8928 2983 : tree _q40 = TREE_OPERAND (_p1, 0);
8929 2983 : switch (TREE_CODE (_q40))
8930 : {
8931 2983 : case ADDR_EXPR:
8932 2983 : {
8933 2983 : {
8934 2983 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8935 2983 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, GE_EXPR);
8936 2983 : if (res) return res;
8937 : }
8938 178 : break;
8939 : }
8940 : default:;
8941 : }
8942 : break;
8943 : }
8944 7 : case ADDR_EXPR:
8945 7 : {
8946 7 : {
8947 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8948 7 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, GE_EXPR);
8949 7 : if (res) return res;
8950 : }
8951 0 : break;
8952 : }
8953 : default:;
8954 : }
8955 : break;
8956 : }
8957 308705 : default:;
8958 : }
8959 308705 : if (uniform_integer_cst_p (_p1))
8960 : {
8961 97503 : {
8962 97503 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8963 97503 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, GE_EXPR);
8964 97503 : if (res) return res;
8965 : }
8966 : }
8967 : break;
8968 : }
8969 779 : case NEGATE_EXPR:
8970 779 : {
8971 779 : tree _q20 = TREE_OPERAND (_p0, 0);
8972 779 : switch (TREE_CODE (_p1))
8973 : {
8974 0 : case NEGATE_EXPR:
8975 0 : {
8976 0 : tree _q40 = TREE_OPERAND (_p1, 0);
8977 0 : {
8978 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
8979 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8980 0 : if (res) return res;
8981 : }
8982 0 : break;
8983 : }
8984 779 : default:;
8985 : }
8986 779 : if (CONSTANT_CLASS_P (_p1))
8987 : {
8988 254 : {
8989 254 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8990 254 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
8991 254 : if (res) return res;
8992 : }
8993 : }
8994 : break;
8995 : }
8996 7634 : case ADDR_EXPR:
8997 7634 : {
8998 7634 : switch (TREE_CODE (_p1))
8999 : {
9000 0 : CASE_CONVERT:
9001 0 : {
9002 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9003 0 : switch (TREE_CODE (_q30))
9004 : {
9005 0 : case ADDR_EXPR:
9006 0 : {
9007 0 : {
9008 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
9009 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, GE_EXPR);
9010 0 : if (res) return res;
9011 : }
9012 0 : break;
9013 : }
9014 : default:;
9015 : }
9016 : break;
9017 : }
9018 7236 : case ADDR_EXPR:
9019 7236 : {
9020 7236 : {
9021 7236 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
9022 7236 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, GE_EXPR);
9023 7236 : if (res) return res;
9024 : }
9025 92 : break;
9026 : }
9027 : default:;
9028 : }
9029 : break;
9030 : }
9031 227198 : case CALL_EXPR:
9032 227198 : switch (get_call_combined_fn (_p0))
9033 : {
9034 2 : case CFN_BUILT_IN_SQRTF:
9035 2 : if (call_expr_nargs (_p0) == 1)
9036 : {
9037 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9038 2 : switch (TREE_CODE (_p1))
9039 : {
9040 2 : case REAL_CST:
9041 2 : {
9042 2 : {
9043 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9044 2 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, GE_EXPR);
9045 2 : if (res) return res;
9046 : }
9047 0 : break;
9048 : }
9049 0 : case CALL_EXPR:
9050 0 : switch (get_call_combined_fn (_p1))
9051 : {
9052 0 : case CFN_BUILT_IN_SQRTF:
9053 0 : if (call_expr_nargs (_p1) == 1)
9054 : {
9055 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9056 0 : {
9057 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9058 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, GE_EXPR);
9059 0 : if (res) return res;
9060 : }
9061 : }
9062 : break;
9063 : default:;
9064 : }
9065 : break;
9066 : default:;
9067 : }
9068 : }
9069 : break;
9070 0 : case CFN_BUILT_IN_SQRTL:
9071 0 : if (call_expr_nargs (_p0) == 1)
9072 : {
9073 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9074 0 : switch (TREE_CODE (_p1))
9075 : {
9076 0 : case REAL_CST:
9077 0 : {
9078 0 : {
9079 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9080 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, GE_EXPR);
9081 0 : if (res) return res;
9082 : }
9083 0 : break;
9084 : }
9085 0 : case CALL_EXPR:
9086 0 : switch (get_call_combined_fn (_p1))
9087 : {
9088 0 : case CFN_BUILT_IN_SQRTL:
9089 0 : if (call_expr_nargs (_p1) == 1)
9090 : {
9091 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9092 0 : {
9093 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9094 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, GE_EXPR);
9095 0 : if (res) return res;
9096 : }
9097 : }
9098 : break;
9099 : default:;
9100 : }
9101 : break;
9102 : default:;
9103 : }
9104 : }
9105 : break;
9106 1 : case CFN_BUILT_IN_SQRT:
9107 1 : if (call_expr_nargs (_p0) == 1)
9108 : {
9109 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9110 1 : switch (TREE_CODE (_p1))
9111 : {
9112 1 : case REAL_CST:
9113 1 : {
9114 1 : {
9115 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9116 1 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, GE_EXPR);
9117 1 : if (res) return res;
9118 : }
9119 1 : break;
9120 : }
9121 0 : case CALL_EXPR:
9122 0 : switch (get_call_combined_fn (_p1))
9123 : {
9124 0 : case CFN_BUILT_IN_SQRT:
9125 0 : if (call_expr_nargs (_p1) == 1)
9126 : {
9127 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9128 0 : {
9129 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9130 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, GE_EXPR);
9131 0 : if (res) return res;
9132 : }
9133 : }
9134 : break;
9135 : default:;
9136 : }
9137 : break;
9138 : default:;
9139 : }
9140 : }
9141 : break;
9142 0 : case CFN_SQRT:
9143 0 : if (call_expr_nargs (_p0) == 1)
9144 : {
9145 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9146 0 : switch (TREE_CODE (_p1))
9147 : {
9148 0 : case REAL_CST:
9149 0 : {
9150 0 : {
9151 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9152 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_SQRT, GE_EXPR);
9153 0 : if (res) return res;
9154 : }
9155 0 : break;
9156 : }
9157 0 : case CALL_EXPR:
9158 0 : switch (get_call_combined_fn (_p1))
9159 : {
9160 0 : case CFN_SQRT:
9161 0 : if (call_expr_nargs (_p1) == 1)
9162 : {
9163 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9164 0 : {
9165 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9166 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, GE_EXPR);
9167 0 : if (res) return res;
9168 : }
9169 : }
9170 : break;
9171 : default:;
9172 : }
9173 : break;
9174 : default:;
9175 : }
9176 : }
9177 : break;
9178 : default:;
9179 : }
9180 : break;
9181 4660783 : default:;
9182 : }
9183 4660783 : if (uniform_integer_cst_p (_p1))
9184 : {
9185 1551305 : {
9186 1551305 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
9187 1551305 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, GE_EXPR);
9188 1551305 : if (res) return res;
9189 : }
9190 : }
9191 4364127 : switch (TREE_CODE (_p0))
9192 : {
9193 297668 : CASE_CONVERT:
9194 297668 : {
9195 297668 : tree _q20 = TREE_OPERAND (_p0, 0);
9196 297668 : switch (TREE_CODE (_q20))
9197 : {
9198 31719 : case PLUS_EXPR:
9199 31719 : {
9200 31719 : tree _q30 = TREE_OPERAND (_q20, 0);
9201 31719 : tree _q31 = TREE_OPERAND (_q20, 1);
9202 31719 : switch (TREE_CODE (_q30))
9203 : {
9204 23221 : CASE_CONVERT:
9205 23221 : {
9206 23221 : tree _q40 = TREE_OPERAND (_q30, 0);
9207 23221 : switch (TREE_CODE (_q31))
9208 : {
9209 23220 : case INTEGER_CST:
9210 23220 : {
9211 23220 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
9212 : {
9213 135 : {
9214 135 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
9215 135 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9216 135 : if (res) return res;
9217 : }
9218 : }
9219 : break;
9220 : }
9221 : default:;
9222 : }
9223 : break;
9224 : }
9225 : default:;
9226 : }
9227 : break;
9228 : }
9229 : default:;
9230 : }
9231 : break;
9232 : }
9233 4364003 : default:;
9234 : }
9235 4364003 : switch (TREE_CODE (_p1))
9236 : {
9237 221620 : CASE_CONVERT:
9238 221620 : {
9239 221620 : tree _q30 = TREE_OPERAND (_p1, 0);
9240 221620 : switch (TREE_CODE (_q30))
9241 : {
9242 339 : case PLUS_EXPR:
9243 339 : {
9244 339 : tree _q40 = TREE_OPERAND (_q30, 0);
9245 339 : tree _q41 = TREE_OPERAND (_q30, 1);
9246 339 : switch (TREE_CODE (_q40))
9247 : {
9248 213 : CASE_CONVERT:
9249 213 : {
9250 213 : tree _q50 = TREE_OPERAND (_q40, 0);
9251 213 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
9252 : {
9253 0 : switch (TREE_CODE (_q41))
9254 : {
9255 0 : case INTEGER_CST:
9256 0 : {
9257 0 : {
9258 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
9259 0 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
9260 0 : if (res) return res;
9261 : }
9262 0 : break;
9263 : }
9264 : default:;
9265 : }
9266 : }
9267 : break;
9268 : }
9269 : default:;
9270 : }
9271 : break;
9272 : }
9273 : default:;
9274 : }
9275 : break;
9276 : }
9277 59135 : case PLUS_EXPR:
9278 59135 : {
9279 59135 : tree _q30 = TREE_OPERAND (_p1, 0);
9280 59135 : tree _q31 = TREE_OPERAND (_p1, 1);
9281 59135 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9282 : {
9283 0 : switch (TREE_CODE (_q31))
9284 : {
9285 0 : case INTEGER_CST:
9286 0 : {
9287 0 : {
9288 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
9289 0 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
9290 0 : if (res) return res;
9291 : }
9292 0 : break;
9293 : }
9294 : default:;
9295 : }
9296 : }
9297 : break;
9298 : }
9299 2398 : case MINUS_EXPR:
9300 2398 : {
9301 2398 : tree _q30 = TREE_OPERAND (_p1, 0);
9302 2398 : tree _q31 = TREE_OPERAND (_p1, 1);
9303 2398 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9304 : {
9305 0 : {
9306 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
9307 0 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, LE_EXPR);
9308 0 : if (res) return res;
9309 : }
9310 : }
9311 : break;
9312 : }
9313 4364003 : default:;
9314 : }
9315 4364003 : switch (TREE_CODE (_p0))
9316 : {
9317 586927 : case PLUS_EXPR:
9318 586927 : {
9319 586927 : tree _q20 = TREE_OPERAND (_p0, 0);
9320 586927 : tree _q21 = TREE_OPERAND (_p0, 1);
9321 586927 : switch (TREE_CODE (_q20))
9322 : {
9323 141 : case MINUS_EXPR:
9324 141 : {
9325 141 : tree _q30 = TREE_OPERAND (_q20, 0);
9326 141 : tree _q31 = TREE_OPERAND (_q20, 1);
9327 141 : if (integer_minus_onep (_q21))
9328 : {
9329 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
9330 : {
9331 1 : {
9332 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
9333 1 : tree res = generic_simplify_399 (loc, type, _p0, _p1, captures, GE_EXPR);
9334 1 : if (res) return res;
9335 : }
9336 : }
9337 : }
9338 : break;
9339 : }
9340 : default:;
9341 : }
9342 : break;
9343 : }
9344 4364002 : default:;
9345 : }
9346 4364002 : switch (TREE_CODE (_p1))
9347 : {
9348 0 : case REALPART_EXPR:
9349 0 : {
9350 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9351 0 : switch (TREE_CODE (_q30))
9352 : {
9353 0 : case CALL_EXPR:
9354 0 : switch (get_call_combined_fn (_q30))
9355 : {
9356 0 : case CFN_SUB_OVERFLOW:
9357 0 : if (call_expr_nargs (_q30) == 2)
9358 : {
9359 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
9360 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
9361 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
9362 : {
9363 0 : {
9364 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
9365 0 : tree res = generic_simplify_400 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
9366 0 : if (res) return res;
9367 : }
9368 : }
9369 : }
9370 : break;
9371 : default:;
9372 : }
9373 : break;
9374 : default:;
9375 : }
9376 : break;
9377 : }
9378 4364002 : default:;
9379 : }
9380 4364002 : switch (TREE_CODE (_p0))
9381 : {
9382 0 : case REALPART_EXPR:
9383 0 : {
9384 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9385 0 : switch (TREE_CODE (_q20))
9386 : {
9387 0 : case CALL_EXPR:
9388 0 : switch (get_call_combined_fn (_q20))
9389 : {
9390 0 : case CFN_ADD_OVERFLOW:
9391 0 : if (call_expr_nargs (_q20) == 2)
9392 : {
9393 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9394 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
9395 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
9396 : {
9397 0 : {
9398 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
9399 0 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9400 0 : if (res) return res;
9401 : }
9402 : }
9403 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
9404 : {
9405 0 : {
9406 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q31, _q30 };
9407 0 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9408 0 : if (res) return res;
9409 : }
9410 : }
9411 : }
9412 : break;
9413 : default:;
9414 : }
9415 : break;
9416 : default:;
9417 : }
9418 : break;
9419 : }
9420 1449 : case TRUNC_DIV_EXPR:
9421 1449 : {
9422 1449 : tree _q20 = TREE_OPERAND (_p0, 0);
9423 1449 : tree _q21 = TREE_OPERAND (_p0, 1);
9424 1449 : if (integer_all_onesp (_q20))
9425 : {
9426 33 : {
9427 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _p1 };
9428 33 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
9429 33 : if (res) return res;
9430 : }
9431 : }
9432 : break;
9433 : }
9434 21576 : case MULT_EXPR:
9435 21576 : {
9436 21576 : tree _q20 = TREE_OPERAND (_p0, 0);
9437 21576 : tree _q21 = TREE_OPERAND (_p0, 1);
9438 21576 : switch (TREE_CODE (_q21))
9439 : {
9440 305 : case REAL_CST:
9441 305 : {
9442 305 : switch (TREE_CODE (_p1))
9443 : {
9444 43 : case REAL_CST:
9445 43 : {
9446 43 : {
9447 43 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9448 43 : tree res = generic_simplify_403 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9449 43 : if (res) return res;
9450 : }
9451 43 : break;
9452 : }
9453 : default:;
9454 : }
9455 : break;
9456 : }
9457 : default:;
9458 : }
9459 : break;
9460 : }
9461 151 : case REAL_CST:
9462 151 : {
9463 151 : switch (TREE_CODE (_p1))
9464 : {
9465 0 : case CALL_EXPR:
9466 0 : switch (get_call_combined_fn (_p1))
9467 : {
9468 0 : case CFN_BUILT_IN_EXP:
9469 0 : if (call_expr_nargs (_p1) == 1)
9470 : {
9471 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9472 0 : {
9473 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9474 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
9475 0 : if (res) return res;
9476 : }
9477 : }
9478 : break;
9479 0 : case CFN_BUILT_IN_LOG:
9480 0 : if (call_expr_nargs (_p1) == 1)
9481 : {
9482 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9483 0 : {
9484 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9485 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
9486 0 : if (res) return res;
9487 : }
9488 : }
9489 : break;
9490 0 : case CFN_BUILT_IN_EXP10F:
9491 0 : if (call_expr_nargs (_p1) == 1)
9492 : {
9493 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9494 0 : {
9495 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9496 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
9497 0 : if (res) return res;
9498 : }
9499 : }
9500 : break;
9501 0 : case CFN_BUILT_IN_EXP10L:
9502 0 : if (call_expr_nargs (_p1) == 1)
9503 : {
9504 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9505 0 : {
9506 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9507 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
9508 0 : if (res) return res;
9509 : }
9510 : }
9511 : break;
9512 0 : case CFN_BUILT_IN_EXP2:
9513 0 : if (call_expr_nargs (_p1) == 1)
9514 : {
9515 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9516 0 : {
9517 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9518 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
9519 0 : if (res) return res;
9520 : }
9521 : }
9522 : break;
9523 0 : case CFN_BUILT_IN_EXPF:
9524 0 : if (call_expr_nargs (_p1) == 1)
9525 : {
9526 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9527 0 : {
9528 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9529 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
9530 0 : if (res) return res;
9531 : }
9532 : }
9533 : break;
9534 0 : case CFN_BUILT_IN_EXPL:
9535 0 : if (call_expr_nargs (_p1) == 1)
9536 : {
9537 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9538 0 : {
9539 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9540 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
9541 0 : if (res) return res;
9542 : }
9543 : }
9544 : break;
9545 0 : case CFN_BUILT_IN_LOG2:
9546 0 : if (call_expr_nargs (_p1) == 1)
9547 : {
9548 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9549 0 : {
9550 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9551 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
9552 0 : if (res) return res;
9553 : }
9554 : }
9555 : break;
9556 0 : case CFN_BUILT_IN_LOGF:
9557 0 : if (call_expr_nargs (_p1) == 1)
9558 : {
9559 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9560 0 : {
9561 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9562 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
9563 0 : if (res) return res;
9564 : }
9565 : }
9566 : break;
9567 0 : case CFN_BUILT_IN_LOGL:
9568 0 : if (call_expr_nargs (_p1) == 1)
9569 : {
9570 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9571 0 : {
9572 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9573 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
9574 0 : if (res) return res;
9575 : }
9576 : }
9577 : break;
9578 0 : case CFN_BUILT_IN_LOG10F:
9579 0 : if (call_expr_nargs (_p1) == 1)
9580 : {
9581 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9582 0 : {
9583 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9584 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
9585 0 : if (res) return res;
9586 : }
9587 : }
9588 : break;
9589 0 : case CFN_BUILT_IN_LOG10L:
9590 0 : if (call_expr_nargs (_p1) == 1)
9591 : {
9592 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9593 0 : {
9594 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9595 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
9596 0 : if (res) return res;
9597 : }
9598 : }
9599 : break;
9600 0 : case CFN_EXP:
9601 0 : if (call_expr_nargs (_p1) == 1)
9602 : {
9603 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9604 0 : {
9605 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9606 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
9607 0 : if (res) return res;
9608 : }
9609 : }
9610 : break;
9611 0 : case CFN_LOG:
9612 0 : if (call_expr_nargs (_p1) == 1)
9613 : {
9614 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9615 0 : {
9616 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9617 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
9618 0 : if (res) return res;
9619 : }
9620 : }
9621 : break;
9622 0 : case CFN_EXP2:
9623 0 : if (call_expr_nargs (_p1) == 1)
9624 : {
9625 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9626 0 : {
9627 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9628 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
9629 0 : if (res) return res;
9630 : }
9631 : }
9632 : break;
9633 0 : case CFN_LOG2:
9634 0 : if (call_expr_nargs (_p1) == 1)
9635 : {
9636 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9637 0 : {
9638 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9639 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
9640 0 : if (res) return res;
9641 : }
9642 : }
9643 : break;
9644 0 : case CFN_EXP10:
9645 0 : if (call_expr_nargs (_p1) == 1)
9646 : {
9647 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9648 0 : {
9649 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9650 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
9651 0 : if (res) return res;
9652 : }
9653 : }
9654 : break;
9655 0 : case CFN_LOG10:
9656 0 : if (call_expr_nargs (_p1) == 1)
9657 : {
9658 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9659 0 : {
9660 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9661 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
9662 0 : if (res) return res;
9663 : }
9664 : }
9665 : break;
9666 0 : case CFN_BUILT_IN_EXP10:
9667 0 : if (call_expr_nargs (_p1) == 1)
9668 : {
9669 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9670 0 : {
9671 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9672 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
9673 0 : if (res) return res;
9674 : }
9675 : }
9676 : break;
9677 0 : case CFN_BUILT_IN_EXP2F:
9678 0 : if (call_expr_nargs (_p1) == 1)
9679 : {
9680 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9681 0 : {
9682 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9683 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
9684 0 : if (res) return res;
9685 : }
9686 : }
9687 : break;
9688 0 : case CFN_BUILT_IN_EXP2L:
9689 0 : if (call_expr_nargs (_p1) == 1)
9690 : {
9691 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9692 0 : {
9693 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9694 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
9695 0 : if (res) return res;
9696 : }
9697 : }
9698 : break;
9699 0 : case CFN_BUILT_IN_LOG10:
9700 0 : if (call_expr_nargs (_p1) == 1)
9701 : {
9702 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9703 0 : {
9704 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9705 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
9706 0 : if (res) return res;
9707 : }
9708 : }
9709 : break;
9710 0 : case CFN_BUILT_IN_LOG2F:
9711 0 : if (call_expr_nargs (_p1) == 1)
9712 : {
9713 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9714 0 : {
9715 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9716 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
9717 0 : if (res) return res;
9718 : }
9719 : }
9720 : break;
9721 0 : case CFN_BUILT_IN_LOG2L:
9722 0 : if (call_expr_nargs (_p1) == 1)
9723 : {
9724 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
9725 0 : {
9726 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
9727 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
9728 0 : if (res) return res;
9729 : }
9730 : }
9731 : break;
9732 : default:;
9733 : }
9734 : break;
9735 : default:;
9736 : }
9737 : break;
9738 : }
9739 586926 : case PLUS_EXPR:
9740 586926 : {
9741 586926 : tree _q20 = TREE_OPERAND (_p0, 0);
9742 586926 : tree _q21 = TREE_OPERAND (_p0, 1);
9743 586926 : switch (TREE_CODE (_q21))
9744 : {
9745 474555 : case INTEGER_CST:
9746 474555 : {
9747 474555 : switch (TREE_CODE (_p1))
9748 : {
9749 115781 : case INTEGER_CST:
9750 115781 : {
9751 115781 : {
9752 115781 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9753 115781 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, GE_EXPR, LE_EXPR);
9754 115781 : if (res) return res;
9755 : }
9756 55942 : break;
9757 : }
9758 : default:;
9759 : }
9760 : break;
9761 : }
9762 : default:;
9763 : }
9764 : break;
9765 : }
9766 58038 : case MINUS_EXPR:
9767 58038 : {
9768 58038 : tree _q20 = TREE_OPERAND (_p0, 0);
9769 58038 : tree _q21 = TREE_OPERAND (_p0, 1);
9770 58038 : switch (TREE_CODE (_q21))
9771 : {
9772 7 : case INTEGER_CST:
9773 7 : {
9774 7 : switch (TREE_CODE (_p1))
9775 : {
9776 7 : case INTEGER_CST:
9777 7 : {
9778 7 : {
9779 7 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9780 7 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, GE_EXPR, LE_EXPR);
9781 7 : if (res) return res;
9782 : }
9783 0 : break;
9784 : }
9785 : default:;
9786 : }
9787 : break;
9788 : }
9789 58031 : default:;
9790 : }
9791 58031 : switch (TREE_CODE (_q20))
9792 : {
9793 1580 : case INTEGER_CST:
9794 1580 : {
9795 1580 : switch (TREE_CODE (_p1))
9796 : {
9797 543 : case INTEGER_CST:
9798 543 : {
9799 543 : {
9800 543 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9801 543 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
9802 543 : if (res) return res;
9803 : }
9804 0 : break;
9805 : }
9806 : default:;
9807 : }
9808 : break;
9809 : }
9810 : default:;
9811 : }
9812 : break;
9813 : }
9814 226970 : case CALL_EXPR:
9815 226970 : switch (get_call_combined_fn (_p0))
9816 : {
9817 1 : case CFN_BUILT_IN_CTZ:
9818 1 : if (call_expr_nargs (_p0) == 1)
9819 : {
9820 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9821 1 : switch (TREE_CODE (_p1))
9822 : {
9823 1 : case INTEGER_CST:
9824 1 : {
9825 1 : {
9826 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9827 1 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZ);
9828 1 : if (res) return res;
9829 : }
9830 0 : break;
9831 : }
9832 : default:;
9833 : }
9834 : }
9835 : break;
9836 1 : case CFN_BUILT_IN_EXP:
9837 1 : if (call_expr_nargs (_p0) == 1)
9838 : {
9839 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9840 1 : switch (TREE_CODE (_p1))
9841 : {
9842 1 : case REAL_CST:
9843 1 : {
9844 1 : {
9845 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9846 1 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
9847 1 : if (res) return res;
9848 : }
9849 1 : break;
9850 : }
9851 : default:;
9852 : }
9853 : }
9854 : break;
9855 1 : case CFN_BUILT_IN_LOG:
9856 1 : if (call_expr_nargs (_p0) == 1)
9857 : {
9858 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9859 1 : switch (TREE_CODE (_p1))
9860 : {
9861 0 : case REAL_CST:
9862 0 : {
9863 0 : {
9864 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9865 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
9866 0 : if (res) return res;
9867 : }
9868 0 : break;
9869 : }
9870 : default:;
9871 : }
9872 : }
9873 : break;
9874 0 : case CFN_BUILT_IN_EXP10F:
9875 0 : if (call_expr_nargs (_p0) == 1)
9876 : {
9877 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9878 0 : switch (TREE_CODE (_p1))
9879 : {
9880 0 : case REAL_CST:
9881 0 : {
9882 0 : {
9883 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9884 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
9885 0 : if (res) return res;
9886 : }
9887 0 : break;
9888 : }
9889 : default:;
9890 : }
9891 : }
9892 : break;
9893 0 : case CFN_BUILT_IN_EXP10L:
9894 0 : if (call_expr_nargs (_p0) == 1)
9895 : {
9896 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9897 0 : switch (TREE_CODE (_p1))
9898 : {
9899 0 : case REAL_CST:
9900 0 : {
9901 0 : {
9902 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9903 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
9904 0 : if (res) return res;
9905 : }
9906 0 : break;
9907 : }
9908 : default:;
9909 : }
9910 : }
9911 : break;
9912 0 : case CFN_BUILT_IN_CTZL:
9913 0 : if (call_expr_nargs (_p0) == 1)
9914 : {
9915 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9916 0 : switch (TREE_CODE (_p1))
9917 : {
9918 0 : case INTEGER_CST:
9919 0 : {
9920 0 : {
9921 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9922 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZL);
9923 0 : if (res) return res;
9924 : }
9925 0 : break;
9926 : }
9927 : default:;
9928 : }
9929 : }
9930 : break;
9931 0 : case CFN_BUILT_IN_EXP2:
9932 0 : if (call_expr_nargs (_p0) == 1)
9933 : {
9934 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9935 0 : switch (TREE_CODE (_p1))
9936 : {
9937 0 : case REAL_CST:
9938 0 : {
9939 0 : {
9940 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9941 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
9942 0 : if (res) return res;
9943 : }
9944 0 : break;
9945 : }
9946 : default:;
9947 : }
9948 : }
9949 : break;
9950 0 : case CFN_BUILT_IN_EXPF:
9951 0 : if (call_expr_nargs (_p0) == 1)
9952 : {
9953 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9954 0 : switch (TREE_CODE (_p1))
9955 : {
9956 0 : case REAL_CST:
9957 0 : {
9958 0 : {
9959 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9960 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
9961 0 : if (res) return res;
9962 : }
9963 0 : break;
9964 : }
9965 : default:;
9966 : }
9967 : }
9968 : break;
9969 0 : case CFN_BUILT_IN_EXPL:
9970 0 : if (call_expr_nargs (_p0) == 1)
9971 : {
9972 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9973 0 : switch (TREE_CODE (_p1))
9974 : {
9975 0 : case REAL_CST:
9976 0 : {
9977 0 : {
9978 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9979 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
9980 0 : if (res) return res;
9981 : }
9982 0 : break;
9983 : }
9984 : default:;
9985 : }
9986 : }
9987 : break;
9988 0 : case CFN_BUILT_IN_LOG2:
9989 0 : if (call_expr_nargs (_p0) == 1)
9990 : {
9991 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9992 0 : switch (TREE_CODE (_p1))
9993 : {
9994 0 : case REAL_CST:
9995 0 : {
9996 0 : {
9997 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9998 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
9999 0 : if (res) return res;
10000 : }
10001 0 : break;
10002 : }
10003 : default:;
10004 : }
10005 : }
10006 : break;
10007 0 : case CFN_BUILT_IN_LOGF:
10008 0 : if (call_expr_nargs (_p0) == 1)
10009 : {
10010 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10011 0 : switch (TREE_CODE (_p1))
10012 : {
10013 0 : case REAL_CST:
10014 0 : {
10015 0 : {
10016 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10017 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
10018 0 : if (res) return res;
10019 : }
10020 0 : break;
10021 : }
10022 : default:;
10023 : }
10024 : }
10025 : break;
10026 0 : case CFN_BUILT_IN_LOGL:
10027 0 : if (call_expr_nargs (_p0) == 1)
10028 : {
10029 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10030 0 : switch (TREE_CODE (_p1))
10031 : {
10032 0 : case REAL_CST:
10033 0 : {
10034 0 : {
10035 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10036 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
10037 0 : if (res) return res;
10038 : }
10039 0 : break;
10040 : }
10041 : default:;
10042 : }
10043 : }
10044 : break;
10045 0 : case CFN_BUILT_IN_LOG10F:
10046 0 : if (call_expr_nargs (_p0) == 1)
10047 : {
10048 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10049 0 : switch (TREE_CODE (_p1))
10050 : {
10051 0 : case REAL_CST:
10052 0 : {
10053 0 : {
10054 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10055 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
10056 0 : if (res) return res;
10057 : }
10058 0 : break;
10059 : }
10060 : default:;
10061 : }
10062 : }
10063 : break;
10064 0 : case CFN_BUILT_IN_LOG10L:
10065 0 : if (call_expr_nargs (_p0) == 1)
10066 : {
10067 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10068 0 : switch (TREE_CODE (_p1))
10069 : {
10070 0 : case REAL_CST:
10071 0 : {
10072 0 : {
10073 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10074 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
10075 0 : if (res) return res;
10076 : }
10077 0 : break;
10078 : }
10079 : default:;
10080 : }
10081 : }
10082 : break;
10083 0 : case CFN_BUILT_IN_CTZIMAX:
10084 0 : if (call_expr_nargs (_p0) == 1)
10085 : {
10086 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10087 0 : switch (TREE_CODE (_p1))
10088 : {
10089 0 : case INTEGER_CST:
10090 0 : {
10091 0 : {
10092 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10093 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZIMAX);
10094 0 : if (res) return res;
10095 : }
10096 0 : break;
10097 : }
10098 : default:;
10099 : }
10100 : }
10101 : break;
10102 0 : case CFN_CTZ:
10103 0 : if (call_expr_nargs (_p0) == 2)
10104 : {
10105 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10106 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10107 0 : switch (TREE_CODE (_p1))
10108 : {
10109 0 : case INTEGER_CST:
10110 0 : {
10111 0 : {
10112 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10113 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
10114 0 : if (res) return res;
10115 : }
10116 0 : break;
10117 : }
10118 : default:;
10119 : }
10120 : }
10121 0 : if (call_expr_nargs (_p0) == 1)
10122 : {
10123 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10124 0 : switch (TREE_CODE (_p1))
10125 : {
10126 0 : case INTEGER_CST:
10127 0 : {
10128 0 : {
10129 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10130 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_CTZ);
10131 0 : if (res) return res;
10132 : }
10133 0 : break;
10134 : }
10135 : default:;
10136 : }
10137 : }
10138 : break;
10139 0 : case CFN_EXP:
10140 0 : if (call_expr_nargs (_p0) == 1)
10141 : {
10142 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10143 0 : switch (TREE_CODE (_p1))
10144 : {
10145 0 : case REAL_CST:
10146 0 : {
10147 0 : {
10148 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10149 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
10150 0 : if (res) return res;
10151 : }
10152 0 : break;
10153 : }
10154 : default:;
10155 : }
10156 : }
10157 : break;
10158 0 : case CFN_LOG:
10159 0 : if (call_expr_nargs (_p0) == 1)
10160 : {
10161 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10162 0 : switch (TREE_CODE (_p1))
10163 : {
10164 0 : case REAL_CST:
10165 0 : {
10166 0 : {
10167 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10168 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
10169 0 : if (res) return res;
10170 : }
10171 0 : break;
10172 : }
10173 : default:;
10174 : }
10175 : }
10176 : break;
10177 0 : case CFN_EXP2:
10178 0 : if (call_expr_nargs (_p0) == 1)
10179 : {
10180 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10181 0 : switch (TREE_CODE (_p1))
10182 : {
10183 0 : case REAL_CST:
10184 0 : {
10185 0 : {
10186 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10187 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
10188 0 : if (res) return res;
10189 : }
10190 0 : break;
10191 : }
10192 : default:;
10193 : }
10194 : }
10195 : break;
10196 0 : case CFN_LOG2:
10197 0 : if (call_expr_nargs (_p0) == 1)
10198 : {
10199 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10200 0 : switch (TREE_CODE (_p1))
10201 : {
10202 0 : case REAL_CST:
10203 0 : {
10204 0 : {
10205 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10206 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
10207 0 : if (res) return res;
10208 : }
10209 0 : break;
10210 : }
10211 : default:;
10212 : }
10213 : }
10214 : break;
10215 0 : case CFN_EXP10:
10216 0 : if (call_expr_nargs (_p0) == 1)
10217 : {
10218 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10219 0 : switch (TREE_CODE (_p1))
10220 : {
10221 0 : case REAL_CST:
10222 0 : {
10223 0 : {
10224 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10225 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
10226 0 : if (res) return res;
10227 : }
10228 0 : break;
10229 : }
10230 : default:;
10231 : }
10232 : }
10233 : break;
10234 0 : case CFN_BUILT_IN_CTZLL:
10235 0 : if (call_expr_nargs (_p0) == 1)
10236 : {
10237 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10238 0 : switch (TREE_CODE (_p1))
10239 : {
10240 0 : case INTEGER_CST:
10241 0 : {
10242 0 : {
10243 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10244 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, CFN_BUILT_IN_CTZLL);
10245 0 : if (res) return res;
10246 : }
10247 0 : break;
10248 : }
10249 : default:;
10250 : }
10251 : }
10252 : break;
10253 0 : case CFN_LOG10:
10254 0 : if (call_expr_nargs (_p0) == 1)
10255 : {
10256 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10257 0 : switch (TREE_CODE (_p1))
10258 : {
10259 0 : case REAL_CST:
10260 0 : {
10261 0 : {
10262 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10263 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
10264 0 : if (res) return res;
10265 : }
10266 0 : break;
10267 : }
10268 : default:;
10269 : }
10270 : }
10271 : break;
10272 0 : case CFN_BUILT_IN_EXP10:
10273 0 : if (call_expr_nargs (_p0) == 1)
10274 : {
10275 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10276 0 : switch (TREE_CODE (_p1))
10277 : {
10278 0 : case REAL_CST:
10279 0 : {
10280 0 : {
10281 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10282 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
10283 0 : if (res) return res;
10284 : }
10285 0 : break;
10286 : }
10287 : default:;
10288 : }
10289 : }
10290 : break;
10291 0 : case CFN_BUILT_IN_EXP2F:
10292 0 : if (call_expr_nargs (_p0) == 1)
10293 : {
10294 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10295 0 : switch (TREE_CODE (_p1))
10296 : {
10297 0 : case REAL_CST:
10298 0 : {
10299 0 : {
10300 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10301 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
10302 0 : if (res) return res;
10303 : }
10304 0 : break;
10305 : }
10306 : default:;
10307 : }
10308 : }
10309 : break;
10310 0 : case CFN_BUILT_IN_EXP2L:
10311 0 : if (call_expr_nargs (_p0) == 1)
10312 : {
10313 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10314 0 : switch (TREE_CODE (_p1))
10315 : {
10316 0 : case REAL_CST:
10317 0 : {
10318 0 : {
10319 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10320 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
10321 0 : if (res) return res;
10322 : }
10323 0 : break;
10324 : }
10325 : default:;
10326 : }
10327 : }
10328 : break;
10329 0 : case CFN_BUILT_IN_LOG10:
10330 0 : if (call_expr_nargs (_p0) == 1)
10331 : {
10332 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10333 0 : switch (TREE_CODE (_p1))
10334 : {
10335 0 : case REAL_CST:
10336 0 : {
10337 0 : {
10338 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10339 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
10340 0 : if (res) return res;
10341 : }
10342 0 : break;
10343 : }
10344 : default:;
10345 : }
10346 : }
10347 : break;
10348 0 : case CFN_BUILT_IN_LOG2F:
10349 0 : if (call_expr_nargs (_p0) == 1)
10350 : {
10351 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10352 0 : switch (TREE_CODE (_p1))
10353 : {
10354 0 : case REAL_CST:
10355 0 : {
10356 0 : {
10357 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10358 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
10359 0 : if (res) return res;
10360 : }
10361 0 : break;
10362 : }
10363 : default:;
10364 : }
10365 : }
10366 : break;
10367 0 : case CFN_BUILT_IN_LOG2L:
10368 0 : if (call_expr_nargs (_p0) == 1)
10369 : {
10370 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10371 0 : switch (TREE_CODE (_p1))
10372 : {
10373 0 : case REAL_CST:
10374 0 : {
10375 0 : {
10376 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10377 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
10378 0 : if (res) return res;
10379 : }
10380 0 : break;
10381 : }
10382 : default:;
10383 : }
10384 : }
10385 : break;
10386 : default:;
10387 : }
10388 : break;
10389 : default:;
10390 : }
10391 : return NULL_TREE;
10392 : }
10393 :
10394 : tree
10395 1887 : generic_simplify_LROTATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10396 : {
10397 1887 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10398 1887 : if (integer_all_onesp (_p0))
10399 : {
10400 0 : {
10401 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10402 0 : tree res = generic_simplify_557 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10403 0 : if (res) return res;
10404 : }
10405 : }
10406 1887 : if (integer_zerop (_p1))
10407 : {
10408 0 : {
10409 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10410 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10411 0 : if (res) return res;
10412 : }
10413 : }
10414 1887 : if (integer_zerop (_p0))
10415 : {
10416 0 : {
10417 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10418 0 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10419 0 : if (res) return res;
10420 : }
10421 : }
10422 1887 : switch (TREE_CODE (_p1))
10423 : {
10424 0 : case VECTOR_CST:
10425 0 : {
10426 0 : {
10427 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10428 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10429 0 : if (res) return res;
10430 : }
10431 0 : break;
10432 : }
10433 0 : case CONSTRUCTOR:
10434 0 : {
10435 0 : {
10436 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10437 0 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10438 0 : if (res) return res;
10439 : }
10440 0 : break;
10441 : }
10442 1238 : case INTEGER_CST:
10443 1238 : {
10444 1238 : {
10445 1238 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10446 1238 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1758;
10447 1238 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1758;
10448 1238 : {
10449 1238 : tree res_op0;
10450 1238 : res_op0 = captures[0];
10451 1238 : tree res_op1;
10452 1238 : res_op1 = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]),
10453 1238 : build_int_cst (TREE_TYPE (captures[1]),
10454 1238 : element_precision (type)), captures[1]);
10455 1238 : tree _r;
10456 1238 : _r = fold_build2_loc (loc, RROTATE_EXPR, type, res_op0, res_op1);
10457 1238 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
10458 1238 : return _r;
10459 : }
10460 0 : next_after_fail1758:;
10461 : }
10462 0 : break;
10463 : }
10464 0 : case MINUS_EXPR:
10465 0 : {
10466 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10467 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10468 0 : switch (TREE_CODE (_q30))
10469 : {
10470 0 : case INTEGER_CST:
10471 0 : {
10472 0 : {
10473 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
10474 0 : tree res = generic_simplify_558 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR);
10475 0 : if (res) return res;
10476 : }
10477 0 : break;
10478 : }
10479 : default:;
10480 : }
10481 : break;
10482 : }
10483 649 : default:;
10484 : }
10485 649 : switch (TREE_CODE (_p0))
10486 : {
10487 0 : case LROTATE_EXPR:
10488 0 : {
10489 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10490 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10491 0 : switch (TREE_CODE (_q21))
10492 : {
10493 0 : case INTEGER_CST:
10494 0 : {
10495 0 : switch (TREE_CODE (_p1))
10496 : {
10497 0 : case INTEGER_CST:
10498 0 : {
10499 0 : {
10500 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10501 0 : tree res = generic_simplify_425 (loc, type, _p0, _p1, captures, LROTATE_EXPR);
10502 0 : if (res) return res;
10503 : }
10504 0 : break;
10505 : }
10506 : default:;
10507 : }
10508 : break;
10509 : }
10510 : default:;
10511 : }
10512 : break;
10513 : }
10514 : default:;
10515 : }
10516 : return NULL_TREE;
10517 : }
10518 :
10519 : tree
10520 2732 : generic_simplify_RROTATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10521 : {
10522 2732 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10523 2732 : if (integer_all_onesp (_p0))
10524 : {
10525 0 : {
10526 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10527 0 : tree res = generic_simplify_557 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10528 0 : if (res) return res;
10529 : }
10530 : }
10531 2732 : if (integer_zerop (_p1))
10532 : {
10533 1 : {
10534 1 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10535 1 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10536 1 : if (res) return res;
10537 : }
10538 : }
10539 2731 : if (integer_zerop (_p0))
10540 : {
10541 0 : {
10542 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10543 0 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10544 0 : if (res) return res;
10545 : }
10546 : }
10547 2731 : switch (TREE_CODE (_p1))
10548 : {
10549 0 : case VECTOR_CST:
10550 0 : {
10551 0 : {
10552 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10553 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10554 0 : if (res) return res;
10555 : }
10556 0 : break;
10557 : }
10558 0 : case CONSTRUCTOR:
10559 0 : {
10560 0 : {
10561 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10562 0 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10563 0 : if (res) return res;
10564 : }
10565 0 : break;
10566 : }
10567 0 : case MINUS_EXPR:
10568 0 : {
10569 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10570 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10571 0 : switch (TREE_CODE (_q30))
10572 : {
10573 0 : case INTEGER_CST:
10574 0 : {
10575 0 : {
10576 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31 };
10577 0 : tree res = generic_simplify_558 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR);
10578 0 : if (res) return res;
10579 : }
10580 0 : break;
10581 : }
10582 : default:;
10583 : }
10584 : break;
10585 : }
10586 2731 : default:;
10587 : }
10588 2731 : switch (TREE_CODE (_p0))
10589 : {
10590 0 : case RROTATE_EXPR:
10591 0 : {
10592 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10593 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10594 0 : switch (TREE_CODE (_q21))
10595 : {
10596 0 : case INTEGER_CST:
10597 0 : {
10598 0 : switch (TREE_CODE (_p1))
10599 : {
10600 0 : case INTEGER_CST:
10601 0 : {
10602 0 : {
10603 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10604 0 : tree res = generic_simplify_425 (loc, type, _p0, _p1, captures, RROTATE_EXPR);
10605 0 : if (res) return res;
10606 : }
10607 0 : break;
10608 : }
10609 : default:;
10610 : }
10611 : break;
10612 : }
10613 : default:;
10614 : }
10615 : break;
10616 : }
10617 : default:;
10618 : }
10619 : return NULL_TREE;
10620 : }
10621 :
10622 : tree
10623 575555 : generic_simplify_COMPLEX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10624 : {
10625 575555 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10626 575555 : switch (TREE_CODE (_p0))
10627 : {
10628 40 : case REALPART_EXPR:
10629 40 : {
10630 40 : tree _q20 = TREE_OPERAND (_p0, 0);
10631 40 : switch (TREE_CODE (_p1))
10632 : {
10633 30 : case IMAGPART_EXPR:
10634 30 : {
10635 30 : tree _q40 = TREE_OPERAND (_p1, 0);
10636 30 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10637 : {
10638 30 : {
10639 30 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10640 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1759;
10641 30 : {
10642 30 : tree _r;
10643 30 : _r = captures[0];
10644 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
10645 30 : return _r;
10646 : }
10647 0 : next_after_fail1759:;
10648 : }
10649 : }
10650 : break;
10651 : }
10652 : default:;
10653 : }
10654 : break;
10655 : }
10656 : default:;
10657 : }
10658 : return NULL_TREE;
10659 : }
10660 :
10661 : tree
10662 738858 : generic_simplify_UNORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10663 : {
10664 738858 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10665 738858 : switch (TREE_CODE (_p0))
10666 : {
10667 0 : case VEC_COND_EXPR:
10668 0 : {
10669 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10670 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10671 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10672 0 : switch (TREE_CODE (_p1))
10673 : {
10674 0 : case VEC_COND_EXPR:
10675 0 : {
10676 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10677 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10678 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10679 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10680 : {
10681 0 : {
10682 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10683 0 : if (VECTOR_TYPE_P (type)
10684 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10685 0 : || types_match (type, TREE_TYPE (captures[2]))
10686 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10687 : || (optimize_vectors_before_lowering_p ()
10688 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10689 : )
10690 : {
10691 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1760;
10692 0 : {
10693 0 : tree res_op0;
10694 0 : res_op0 = captures[1];
10695 0 : tree res_op1;
10696 0 : {
10697 0 : tree _o1[2], _r1;
10698 0 : _o1[0] = captures[2];
10699 0 : _o1[1] = captures[5];
10700 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10701 0 : if (EXPR_P (_r1))
10702 0 : goto next_after_fail1760;
10703 0 : res_op1 = _r1;
10704 : }
10705 0 : tree res_op2;
10706 0 : {
10707 0 : tree _o1[2], _r1;
10708 0 : _o1[0] = captures[3];
10709 0 : _o1[1] = captures[6];
10710 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10711 0 : if (EXPR_P (_r1))
10712 0 : goto next_after_fail1760;
10713 0 : res_op2 = _r1;
10714 : }
10715 0 : tree _r;
10716 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10717 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
10718 0 : return _r;
10719 : }
10720 0 : next_after_fail1760:;
10721 : }
10722 : }
10723 : }
10724 : break;
10725 : }
10726 0 : default:;
10727 : }
10728 0 : {
10729 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10730 0 : if (VECTOR_TYPE_P (type)
10731 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10732 0 : || types_match (type, TREE_TYPE (captures[2]))
10733 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10734 : || (optimize_vectors_before_lowering_p ()
10735 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10736 : )
10737 : {
10738 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1761;
10739 0 : {
10740 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1761;
10741 0 : tree res_op0;
10742 0 : res_op0 = captures[1];
10743 0 : tree res_op1;
10744 0 : {
10745 0 : tree _o1[2], _r1;
10746 0 : _o1[0] = captures[2];
10747 0 : _o1[1] = unshare_expr (captures[4]);
10748 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10749 0 : if (EXPR_P (_r1))
10750 0 : goto next_after_fail1761;
10751 0 : res_op1 = _r1;
10752 : }
10753 0 : tree res_op2;
10754 0 : {
10755 0 : tree _o1[2], _r1;
10756 0 : _o1[0] = captures[3];
10757 0 : _o1[1] = captures[4];
10758 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10759 0 : if (EXPR_P (_r1))
10760 0 : goto next_after_fail1761;
10761 0 : res_op2 = _r1;
10762 : }
10763 0 : tree _r;
10764 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10765 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
10766 0 : return _r;
10767 : }
10768 0 : next_after_fail1761:;
10769 : }
10770 : }
10771 0 : break;
10772 : }
10773 738858 : default:;
10774 : }
10775 738858 : switch (TREE_CODE (_p1))
10776 : {
10777 0 : case VEC_COND_EXPR:
10778 0 : {
10779 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10780 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10781 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10782 0 : {
10783 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10784 0 : if (VECTOR_TYPE_P (type)
10785 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
10786 0 : || types_match (type, TREE_TYPE (captures[3]))
10787 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10788 : || (optimize_vectors_before_lowering_p ()
10789 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10790 : )
10791 : {
10792 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1762;
10793 0 : {
10794 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1762;
10795 0 : tree res_op0;
10796 0 : res_op0 = captures[2];
10797 0 : tree res_op1;
10798 0 : {
10799 0 : tree _o1[2], _r1;
10800 0 : _o1[0] = unshare_expr (captures[0]);
10801 0 : _o1[1] = captures[3];
10802 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10803 0 : if (EXPR_P (_r1))
10804 0 : goto next_after_fail1762;
10805 0 : res_op1 = _r1;
10806 : }
10807 0 : tree res_op2;
10808 0 : {
10809 0 : tree _o1[2], _r1;
10810 0 : _o1[0] = captures[0];
10811 0 : _o1[1] = captures[4];
10812 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
10813 0 : if (EXPR_P (_r1))
10814 0 : goto next_after_fail1762;
10815 0 : res_op2 = _r1;
10816 : }
10817 0 : tree _r;
10818 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10819 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10820 0 : return _r;
10821 : }
10822 0 : next_after_fail1762:;
10823 : }
10824 : }
10825 0 : break;
10826 : }
10827 738858 : default:;
10828 : }
10829 738858 : switch (TREE_CODE (_p0))
10830 : {
10831 0 : case FLOAT_EXPR:
10832 0 : {
10833 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10834 0 : switch (TREE_CODE (_p1))
10835 : {
10836 0 : case FLOAT_EXPR:
10837 0 : {
10838 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10839 0 : {
10840 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10841 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10842 0 : if (res) return res;
10843 : }
10844 0 : break;
10845 : }
10846 : default:;
10847 : }
10848 : break;
10849 : }
10850 18 : case NEGATE_EXPR:
10851 18 : {
10852 18 : tree _q20 = TREE_OPERAND (_p0, 0);
10853 18 : switch (TREE_CODE (_p1))
10854 : {
10855 18 : case NEGATE_EXPR:
10856 18 : {
10857 18 : tree _q40 = TREE_OPERAND (_p1, 0);
10858 18 : {
10859 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10860 18 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10861 18 : if (res) return res;
10862 : }
10863 0 : break;
10864 : }
10865 0 : default:;
10866 : }
10867 0 : if (CONSTANT_CLASS_P (_p1))
10868 : {
10869 0 : {
10870 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10871 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
10872 0 : if (res) return res;
10873 : }
10874 : }
10875 : break;
10876 : }
10877 738840 : default:;
10878 : }
10879 738840 : switch (TREE_CODE (_p1))
10880 : {
10881 519 : case REAL_CST:
10882 519 : {
10883 519 : {
10884 519 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10885 519 : tree res = generic_simplify_564 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
10886 519 : if (res) return res;
10887 : }
10888 519 : break;
10889 : }
10890 738840 : default:;
10891 : }
10892 738840 : {
10893 738840 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10894 738840 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
10895 : )
10896 : {
10897 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1763;
10898 0 : {
10899 0 : tree _r;
10900 0 : _r = constant_boolean_node (true, type);
10901 0 : if (TREE_SIDE_EFFECTS (captures[0]))
10902 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10903 0 : if (TREE_SIDE_EFFECTS (captures[1]))
10904 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10905 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
10906 0 : return _r;
10907 : }
10908 0 : next_after_fail1763:;
10909 : }
10910 : else
10911 : {
10912 738840 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
10913 : )
10914 : {
10915 35 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1764;
10916 35 : {
10917 35 : tree _r;
10918 35 : _r = constant_boolean_node (false, type);
10919 35 : if (TREE_SIDE_EFFECTS (captures[0]))
10920 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10921 35 : if (TREE_SIDE_EFFECTS (captures[1]))
10922 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10923 35 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1038, __FILE__, __LINE__, true);
10924 35 : return _r;
10925 : }
10926 0 : next_after_fail1764:;
10927 : }
10928 : }
10929 : }
10930 738805 : return NULL_TREE;
10931 : }
10932 :
10933 : tree
10934 703932 : generic_simplify_UNLT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10935 : {
10936 703932 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10937 703932 : switch (TREE_CODE (_p0))
10938 : {
10939 0 : case VEC_COND_EXPR:
10940 0 : {
10941 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10942 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10943 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10944 0 : switch (TREE_CODE (_p1))
10945 : {
10946 0 : case VEC_COND_EXPR:
10947 0 : {
10948 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10949 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10950 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10951 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10952 : {
10953 0 : {
10954 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10955 0 : if (VECTOR_TYPE_P (type)
10956 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
10957 0 : || types_match (type, TREE_TYPE (captures[2]))
10958 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10959 : || (optimize_vectors_before_lowering_p ()
10960 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10961 : )
10962 : {
10963 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1770;
10964 0 : {
10965 0 : tree res_op0;
10966 0 : res_op0 = captures[1];
10967 0 : tree res_op1;
10968 0 : {
10969 0 : tree _o1[2], _r1;
10970 0 : _o1[0] = captures[2];
10971 0 : _o1[1] = captures[5];
10972 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10973 0 : if (EXPR_P (_r1))
10974 0 : goto next_after_fail1770;
10975 0 : res_op1 = _r1;
10976 : }
10977 0 : tree res_op2;
10978 0 : {
10979 0 : tree _o1[2], _r1;
10980 0 : _o1[0] = captures[3];
10981 0 : _o1[1] = captures[6];
10982 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
10983 0 : if (EXPR_P (_r1))
10984 0 : goto next_after_fail1770;
10985 0 : res_op2 = _r1;
10986 : }
10987 0 : tree _r;
10988 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10989 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
10990 0 : return _r;
10991 : }
10992 0 : next_after_fail1770:;
10993 : }
10994 : }
10995 : }
10996 : break;
10997 : }
10998 0 : default:;
10999 : }
11000 0 : {
11001 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11002 0 : if (VECTOR_TYPE_P (type)
11003 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11004 0 : || types_match (type, TREE_TYPE (captures[2]))
11005 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11006 : || (optimize_vectors_before_lowering_p ()
11007 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11008 : )
11009 : {
11010 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1771;
11011 0 : {
11012 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1771;
11013 0 : tree res_op0;
11014 0 : res_op0 = captures[1];
11015 0 : tree res_op1;
11016 0 : {
11017 0 : tree _o1[2], _r1;
11018 0 : _o1[0] = captures[2];
11019 0 : _o1[1] = unshare_expr (captures[4]);
11020 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11021 0 : if (EXPR_P (_r1))
11022 0 : goto next_after_fail1771;
11023 0 : res_op1 = _r1;
11024 : }
11025 0 : tree res_op2;
11026 0 : {
11027 0 : tree _o1[2], _r1;
11028 0 : _o1[0] = captures[3];
11029 0 : _o1[1] = captures[4];
11030 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11031 0 : if (EXPR_P (_r1))
11032 0 : goto next_after_fail1771;
11033 0 : res_op2 = _r1;
11034 : }
11035 0 : tree _r;
11036 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11037 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11038 0 : return _r;
11039 : }
11040 0 : next_after_fail1771:;
11041 : }
11042 : }
11043 0 : break;
11044 : }
11045 703932 : default:;
11046 : }
11047 703932 : switch (TREE_CODE (_p1))
11048 : {
11049 0 : case VEC_COND_EXPR:
11050 0 : {
11051 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11052 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11053 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11054 0 : {
11055 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11056 0 : if (VECTOR_TYPE_P (type)
11057 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11058 0 : || types_match (type, TREE_TYPE (captures[3]))
11059 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11060 : || (optimize_vectors_before_lowering_p ()
11061 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11062 : )
11063 : {
11064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1772;
11065 0 : {
11066 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1772;
11067 0 : tree res_op0;
11068 0 : res_op0 = captures[2];
11069 0 : tree res_op1;
11070 0 : {
11071 0 : tree _o1[2], _r1;
11072 0 : _o1[0] = unshare_expr (captures[0]);
11073 0 : _o1[1] = captures[3];
11074 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11075 0 : if (EXPR_P (_r1))
11076 0 : goto next_after_fail1772;
11077 0 : res_op1 = _r1;
11078 : }
11079 0 : tree res_op2;
11080 0 : {
11081 0 : tree _o1[2], _r1;
11082 0 : _o1[0] = captures[0];
11083 0 : _o1[1] = captures[4];
11084 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11085 0 : if (EXPR_P (_r1))
11086 0 : goto next_after_fail1772;
11087 0 : res_op2 = _r1;
11088 : }
11089 0 : tree _r;
11090 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11091 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
11092 0 : return _r;
11093 : }
11094 0 : next_after_fail1772:;
11095 : }
11096 : }
11097 0 : break;
11098 : }
11099 703932 : default:;
11100 : }
11101 703932 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11102 : {
11103 0 : {
11104 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11105 0 : tree res = generic_simplify_565 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11106 0 : if (res) return res;
11107 : }
11108 : }
11109 703932 : switch (TREE_CODE (_p0))
11110 : {
11111 283 : case FLOAT_EXPR:
11112 283 : {
11113 283 : tree _q20 = TREE_OPERAND (_p0, 0);
11114 283 : switch (TREE_CODE (_p1))
11115 : {
11116 0 : case FLOAT_EXPR:
11117 0 : {
11118 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11119 0 : {
11120 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11121 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNLT_EXPR, LT_EXPR);
11122 0 : if (res) return res;
11123 : }
11124 0 : break;
11125 : }
11126 : default:;
11127 : }
11128 : break;
11129 : }
11130 0 : case NEGATE_EXPR:
11131 0 : {
11132 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11133 0 : switch (TREE_CODE (_p1))
11134 : {
11135 0 : case NEGATE_EXPR:
11136 0 : {
11137 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11138 0 : {
11139 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11140 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11141 0 : if (res) return res;
11142 : }
11143 0 : break;
11144 : }
11145 0 : default:;
11146 : }
11147 0 : if (CONSTANT_CLASS_P (_p1))
11148 : {
11149 0 : {
11150 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11151 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11152 0 : if (res) return res;
11153 : }
11154 : }
11155 : break;
11156 : }
11157 703932 : default:;
11158 : }
11159 703932 : switch (TREE_CODE (_p1))
11160 : {
11161 353392 : case REAL_CST:
11162 353392 : {
11163 353392 : {
11164 353392 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11165 353392 : tree res = generic_simplify_564 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11166 353392 : if (res) return res;
11167 : }
11168 353390 : break;
11169 : }
11170 : default:;
11171 : }
11172 : return NULL_TREE;
11173 : }
11174 :
11175 : tree
11176 350382 : generic_simplify_UNEQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11177 : {
11178 350382 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11179 350382 : switch (TREE_CODE (_p0))
11180 : {
11181 0 : case VEC_COND_EXPR:
11182 0 : {
11183 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11184 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11185 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11186 0 : switch (TREE_CODE (_p1))
11187 : {
11188 0 : case VEC_COND_EXPR:
11189 0 : {
11190 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11191 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11192 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11193 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11194 : {
11195 0 : {
11196 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11197 0 : if (VECTOR_TYPE_P (type)
11198 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11199 0 : || types_match (type, TREE_TYPE (captures[2]))
11200 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11201 : || (optimize_vectors_before_lowering_p ()
11202 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11203 : )
11204 : {
11205 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1782;
11206 0 : {
11207 0 : tree res_op0;
11208 0 : res_op0 = captures[1];
11209 0 : tree res_op1;
11210 0 : {
11211 0 : tree _o1[2], _r1;
11212 0 : _o1[0] = captures[2];
11213 0 : _o1[1] = captures[5];
11214 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11215 0 : if (EXPR_P (_r1))
11216 0 : goto next_after_fail1782;
11217 0 : res_op1 = _r1;
11218 : }
11219 0 : tree res_op2;
11220 0 : {
11221 0 : tree _o1[2], _r1;
11222 0 : _o1[0] = captures[3];
11223 0 : _o1[1] = captures[6];
11224 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11225 0 : if (EXPR_P (_r1))
11226 0 : goto next_after_fail1782;
11227 0 : res_op2 = _r1;
11228 : }
11229 0 : tree _r;
11230 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11231 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
11232 0 : return _r;
11233 : }
11234 0 : next_after_fail1782:;
11235 : }
11236 : }
11237 : }
11238 : break;
11239 : }
11240 0 : default:;
11241 : }
11242 0 : {
11243 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11244 0 : if (VECTOR_TYPE_P (type)
11245 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11246 0 : || types_match (type, TREE_TYPE (captures[2]))
11247 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11248 : || (optimize_vectors_before_lowering_p ()
11249 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11250 : )
11251 : {
11252 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1783;
11253 0 : {
11254 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1783;
11255 0 : tree res_op0;
11256 0 : res_op0 = captures[1];
11257 0 : tree res_op1;
11258 0 : {
11259 0 : tree _o1[2], _r1;
11260 0 : _o1[0] = captures[2];
11261 0 : _o1[1] = unshare_expr (captures[4]);
11262 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11263 0 : if (EXPR_P (_r1))
11264 0 : goto next_after_fail1783;
11265 0 : res_op1 = _r1;
11266 : }
11267 0 : tree res_op2;
11268 0 : {
11269 0 : tree _o1[2], _r1;
11270 0 : _o1[0] = captures[3];
11271 0 : _o1[1] = captures[4];
11272 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11273 0 : if (EXPR_P (_r1))
11274 0 : goto next_after_fail1783;
11275 0 : res_op2 = _r1;
11276 : }
11277 0 : tree _r;
11278 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11280 0 : return _r;
11281 : }
11282 0 : next_after_fail1783:;
11283 : }
11284 : }
11285 0 : break;
11286 : }
11287 350382 : default:;
11288 : }
11289 350382 : switch (TREE_CODE (_p1))
11290 : {
11291 0 : case VEC_COND_EXPR:
11292 0 : {
11293 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11294 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11295 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11296 0 : {
11297 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11298 0 : if (VECTOR_TYPE_P (type)
11299 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11300 0 : || types_match (type, TREE_TYPE (captures[3]))
11301 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11302 : || (optimize_vectors_before_lowering_p ()
11303 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11304 : )
11305 : {
11306 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1784;
11307 0 : {
11308 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1784;
11309 0 : tree res_op0;
11310 0 : res_op0 = captures[2];
11311 0 : tree res_op1;
11312 0 : {
11313 0 : tree _o1[2], _r1;
11314 0 : _o1[0] = unshare_expr (captures[0]);
11315 0 : _o1[1] = captures[3];
11316 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11317 0 : if (EXPR_P (_r1))
11318 0 : goto next_after_fail1784;
11319 0 : res_op1 = _r1;
11320 : }
11321 0 : tree res_op2;
11322 0 : {
11323 0 : tree _o1[2], _r1;
11324 0 : _o1[0] = captures[0];
11325 0 : _o1[1] = captures[4];
11326 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11327 0 : if (EXPR_P (_r1))
11328 0 : goto next_after_fail1784;
11329 0 : res_op2 = _r1;
11330 : }
11331 0 : tree _r;
11332 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11333 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
11334 0 : return _r;
11335 : }
11336 0 : next_after_fail1784:;
11337 : }
11338 : }
11339 0 : break;
11340 : }
11341 350382 : default:;
11342 : }
11343 350382 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11344 : {
11345 0 : {
11346 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11347 0 : tree res = generic_simplify_566 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
11348 0 : if (res) return res;
11349 : }
11350 : }
11351 350382 : switch (TREE_CODE (_p0))
11352 : {
11353 0 : case FLOAT_EXPR:
11354 0 : {
11355 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11356 0 : switch (TREE_CODE (_p1))
11357 : {
11358 0 : case FLOAT_EXPR:
11359 0 : {
11360 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11361 0 : {
11362 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11363 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNEQ_EXPR, EQ_EXPR);
11364 0 : if (res) return res;
11365 : }
11366 0 : break;
11367 : }
11368 : default:;
11369 : }
11370 : break;
11371 : }
11372 0 : case NEGATE_EXPR:
11373 0 : {
11374 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11375 0 : switch (TREE_CODE (_p1))
11376 : {
11377 0 : case NEGATE_EXPR:
11378 0 : {
11379 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11380 0 : {
11381 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11382 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
11383 0 : if (res) return res;
11384 : }
11385 0 : break;
11386 : }
11387 0 : default:;
11388 : }
11389 0 : if (CONSTANT_CLASS_P (_p1))
11390 : {
11391 0 : {
11392 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11393 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
11394 0 : if (res) return res;
11395 : }
11396 : }
11397 : break;
11398 : }
11399 350382 : default:;
11400 : }
11401 350382 : switch (TREE_CODE (_p1))
11402 : {
11403 154 : case REAL_CST:
11404 154 : {
11405 154 : {
11406 154 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11407 154 : tree res = generic_simplify_564 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
11408 154 : if (res) return res;
11409 : }
11410 152 : break;
11411 : }
11412 : default:;
11413 : }
11414 : return NULL_TREE;
11415 : }
11416 :
11417 : tree
11418 12474785 : 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)
11419 : {
11420 12474785 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11421 12474785 : switch (TREE_CODE (_p0))
11422 : {
11423 1757100 : case LT_EXPR:
11424 1757100 : {
11425 1757100 : tree _q20 = TREE_OPERAND (_p0, 0);
11426 1757100 : tree _q21 = TREE_OPERAND (_p0, 1);
11427 1757100 : switch (TREE_CODE (_q20))
11428 : {
11429 11301 : case MINUS_EXPR:
11430 11301 : {
11431 11301 : tree _q30 = TREE_OPERAND (_q20, 0);
11432 11301 : tree _q31 = TREE_OPERAND (_q20, 1);
11433 11301 : switch (TREE_CODE (_q30))
11434 : {
11435 594 : case SSA_NAME:
11436 594 : {
11437 594 : switch (TREE_CODE (_q31))
11438 : {
11439 0 : case CALL_EXPR:
11440 0 : switch (get_call_combined_fn (_q31))
11441 : {
11442 0 : case CFN_BUILT_IN_FLOORF:
11443 0 : if (call_expr_nargs (_q31) == 1)
11444 : {
11445 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11446 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11447 : {
11448 0 : switch (TREE_CODE (_q50))
11449 : {
11450 0 : case SSA_NAME:
11451 0 : {
11452 0 : switch (TREE_CODE (_q21))
11453 : {
11454 0 : case MINUS_EXPR:
11455 0 : {
11456 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11457 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11458 0 : switch (TREE_CODE (_q80))
11459 : {
11460 0 : case CALL_EXPR:
11461 0 : switch (get_call_combined_fn (_q80))
11462 : {
11463 0 : case CFN_BUILT_IN_CEILF:
11464 0 : if (call_expr_nargs (_q80) == 1)
11465 : {
11466 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11467 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11468 : {
11469 0 : switch (TREE_CODE (_q90))
11470 : {
11471 0 : case SSA_NAME:
11472 0 : {
11473 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11474 : {
11475 0 : switch (TREE_CODE (_q81))
11476 : {
11477 0 : case SSA_NAME:
11478 0 : {
11479 0 : switch (TREE_CODE (_p1))
11480 : {
11481 0 : case CALL_EXPR:
11482 0 : switch (get_call_combined_fn (_p1))
11483 : {
11484 0 : case CFN_BUILT_IN_FLOORF:
11485 0 : if (call_expr_nargs (_p1) == 1)
11486 : {
11487 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11488 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11489 : {
11490 0 : switch (TREE_CODE (_q140))
11491 : {
11492 0 : case SSA_NAME:
11493 0 : {
11494 0 : switch (TREE_CODE (_p2))
11495 : {
11496 0 : case CALL_EXPR:
11497 0 : switch (get_call_combined_fn (_p2))
11498 : {
11499 0 : case CFN_BUILT_IN_CEILF:
11500 0 : if (call_expr_nargs (_p2) == 1)
11501 : {
11502 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11503 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11504 : {
11505 0 : switch (TREE_CODE (_q170))
11506 : {
11507 0 : case SSA_NAME:
11508 0 : {
11509 0 : {
11510 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11511 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
11512 0 : if (res) return res;
11513 : }
11514 0 : break;
11515 : }
11516 : default:;
11517 : }
11518 : }
11519 : }
11520 : break;
11521 : default:;
11522 : }
11523 : break;
11524 : default:;
11525 : }
11526 : break;
11527 : }
11528 : default:;
11529 : }
11530 : }
11531 : }
11532 : break;
11533 : default:;
11534 : }
11535 : break;
11536 : default:;
11537 : }
11538 : break;
11539 : }
11540 : default:;
11541 : }
11542 : }
11543 : break;
11544 : }
11545 : default:;
11546 : }
11547 : }
11548 : }
11549 : break;
11550 : default:;
11551 : }
11552 : break;
11553 : default:;
11554 : }
11555 : break;
11556 : }
11557 : default:;
11558 : }
11559 : break;
11560 : }
11561 : default:;
11562 : }
11563 : }
11564 : }
11565 : break;
11566 0 : case CFN_BUILT_IN_FLOORL:
11567 0 : if (call_expr_nargs (_q31) == 1)
11568 : {
11569 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11570 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11571 : {
11572 0 : switch (TREE_CODE (_q50))
11573 : {
11574 0 : case SSA_NAME:
11575 0 : {
11576 0 : switch (TREE_CODE (_q21))
11577 : {
11578 0 : case MINUS_EXPR:
11579 0 : {
11580 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11581 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11582 0 : switch (TREE_CODE (_q80))
11583 : {
11584 0 : case CALL_EXPR:
11585 0 : switch (get_call_combined_fn (_q80))
11586 : {
11587 0 : case CFN_BUILT_IN_CEILL:
11588 0 : if (call_expr_nargs (_q80) == 1)
11589 : {
11590 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11591 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11592 : {
11593 0 : switch (TREE_CODE (_q90))
11594 : {
11595 0 : case SSA_NAME:
11596 0 : {
11597 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11598 : {
11599 0 : switch (TREE_CODE (_q81))
11600 : {
11601 0 : case SSA_NAME:
11602 0 : {
11603 0 : switch (TREE_CODE (_p1))
11604 : {
11605 0 : case CALL_EXPR:
11606 0 : switch (get_call_combined_fn (_p1))
11607 : {
11608 0 : case CFN_BUILT_IN_FLOORL:
11609 0 : if (call_expr_nargs (_p1) == 1)
11610 : {
11611 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11612 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11613 : {
11614 0 : switch (TREE_CODE (_q140))
11615 : {
11616 0 : case SSA_NAME:
11617 0 : {
11618 0 : switch (TREE_CODE (_p2))
11619 : {
11620 0 : case CALL_EXPR:
11621 0 : switch (get_call_combined_fn (_p2))
11622 : {
11623 0 : case CFN_BUILT_IN_CEILL:
11624 0 : if (call_expr_nargs (_p2) == 1)
11625 : {
11626 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11627 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11628 : {
11629 0 : switch (TREE_CODE (_q170))
11630 : {
11631 0 : case SSA_NAME:
11632 0 : {
11633 0 : {
11634 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11635 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
11636 0 : if (res) return res;
11637 : }
11638 0 : break;
11639 : }
11640 : default:;
11641 : }
11642 : }
11643 : }
11644 : break;
11645 : default:;
11646 : }
11647 : break;
11648 : default:;
11649 : }
11650 : break;
11651 : }
11652 : default:;
11653 : }
11654 : }
11655 : }
11656 : break;
11657 : default:;
11658 : }
11659 : break;
11660 : default:;
11661 : }
11662 : break;
11663 : }
11664 : default:;
11665 : }
11666 : }
11667 : break;
11668 : }
11669 : default:;
11670 : }
11671 : }
11672 : }
11673 : break;
11674 : default:;
11675 : }
11676 : break;
11677 : default:;
11678 : }
11679 : break;
11680 : }
11681 : default:;
11682 : }
11683 : break;
11684 : }
11685 : default:;
11686 : }
11687 : }
11688 : }
11689 : break;
11690 0 : case CFN_FLOOR:
11691 0 : if (call_expr_nargs (_q31) == 1)
11692 : {
11693 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11694 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11695 : {
11696 0 : switch (TREE_CODE (_q50))
11697 : {
11698 0 : case SSA_NAME:
11699 0 : {
11700 0 : switch (TREE_CODE (_q21))
11701 : {
11702 0 : case MINUS_EXPR:
11703 0 : {
11704 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11705 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11706 0 : switch (TREE_CODE (_q80))
11707 : {
11708 0 : case CALL_EXPR:
11709 0 : switch (get_call_combined_fn (_q80))
11710 : {
11711 0 : case CFN_CEIL:
11712 0 : if (call_expr_nargs (_q80) == 1)
11713 : {
11714 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11715 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11716 : {
11717 0 : switch (TREE_CODE (_q90))
11718 : {
11719 0 : case SSA_NAME:
11720 0 : {
11721 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11722 : {
11723 0 : switch (TREE_CODE (_q81))
11724 : {
11725 0 : case SSA_NAME:
11726 0 : {
11727 0 : switch (TREE_CODE (_p1))
11728 : {
11729 0 : case CALL_EXPR:
11730 0 : switch (get_call_combined_fn (_p1))
11731 : {
11732 0 : case CFN_FLOOR:
11733 0 : if (call_expr_nargs (_p1) == 1)
11734 : {
11735 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11736 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11737 : {
11738 0 : switch (TREE_CODE (_q140))
11739 : {
11740 0 : case SSA_NAME:
11741 0 : {
11742 0 : switch (TREE_CODE (_p2))
11743 : {
11744 0 : case CALL_EXPR:
11745 0 : switch (get_call_combined_fn (_p2))
11746 : {
11747 0 : case CFN_CEIL:
11748 0 : if (call_expr_nargs (_p2) == 1)
11749 : {
11750 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11751 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11752 : {
11753 0 : switch (TREE_CODE (_q170))
11754 : {
11755 0 : case SSA_NAME:
11756 0 : {
11757 0 : {
11758 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11759 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
11760 0 : if (res) return res;
11761 : }
11762 0 : break;
11763 : }
11764 : default:;
11765 : }
11766 : }
11767 : }
11768 : break;
11769 : default:;
11770 : }
11771 : break;
11772 : default:;
11773 : }
11774 : break;
11775 : }
11776 : default:;
11777 : }
11778 : }
11779 : }
11780 : break;
11781 : default:;
11782 : }
11783 : break;
11784 : default:;
11785 : }
11786 : break;
11787 : }
11788 : default:;
11789 : }
11790 : }
11791 : break;
11792 : }
11793 : default:;
11794 : }
11795 : }
11796 : }
11797 : break;
11798 : default:;
11799 : }
11800 : break;
11801 : default:;
11802 : }
11803 : break;
11804 : }
11805 : default:;
11806 : }
11807 : break;
11808 : }
11809 : default:;
11810 : }
11811 : }
11812 : }
11813 : break;
11814 0 : case CFN_BUILT_IN_FLOOR:
11815 0 : if (call_expr_nargs (_q31) == 1)
11816 : {
11817 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11818 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11819 : {
11820 0 : switch (TREE_CODE (_q50))
11821 : {
11822 0 : case SSA_NAME:
11823 0 : {
11824 0 : switch (TREE_CODE (_q21))
11825 : {
11826 0 : case MINUS_EXPR:
11827 0 : {
11828 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11829 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11830 0 : switch (TREE_CODE (_q80))
11831 : {
11832 0 : case CALL_EXPR:
11833 0 : switch (get_call_combined_fn (_q80))
11834 : {
11835 0 : case CFN_BUILT_IN_CEIL:
11836 0 : if (call_expr_nargs (_q80) == 1)
11837 : {
11838 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11839 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11840 : {
11841 0 : switch (TREE_CODE (_q90))
11842 : {
11843 0 : case SSA_NAME:
11844 0 : {
11845 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11846 : {
11847 0 : switch (TREE_CODE (_q81))
11848 : {
11849 0 : case SSA_NAME:
11850 0 : {
11851 0 : switch (TREE_CODE (_p1))
11852 : {
11853 0 : case CALL_EXPR:
11854 0 : switch (get_call_combined_fn (_p1))
11855 : {
11856 0 : case CFN_BUILT_IN_FLOOR:
11857 0 : if (call_expr_nargs (_p1) == 1)
11858 : {
11859 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11860 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11861 : {
11862 0 : switch (TREE_CODE (_q140))
11863 : {
11864 0 : case SSA_NAME:
11865 0 : {
11866 0 : switch (TREE_CODE (_p2))
11867 : {
11868 0 : case CALL_EXPR:
11869 0 : switch (get_call_combined_fn (_p2))
11870 : {
11871 0 : case CFN_BUILT_IN_CEIL:
11872 0 : if (call_expr_nargs (_p2) == 1)
11873 : {
11874 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11875 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11876 : {
11877 0 : switch (TREE_CODE (_q170))
11878 : {
11879 0 : case SSA_NAME:
11880 0 : {
11881 0 : {
11882 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11883 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
11884 0 : if (res) return res;
11885 : }
11886 0 : break;
11887 : }
11888 : default:;
11889 : }
11890 : }
11891 : }
11892 : break;
11893 : default:;
11894 : }
11895 : break;
11896 : default:;
11897 : }
11898 : break;
11899 : }
11900 : default:;
11901 : }
11902 : }
11903 : }
11904 : break;
11905 : default:;
11906 : }
11907 : break;
11908 : default:;
11909 : }
11910 : break;
11911 : }
11912 : default:;
11913 : }
11914 : }
11915 : break;
11916 : }
11917 : default:;
11918 : }
11919 : }
11920 : }
11921 : break;
11922 : default:;
11923 : }
11924 : break;
11925 : default:;
11926 : }
11927 : break;
11928 : }
11929 : default:;
11930 : }
11931 : break;
11932 : }
11933 : default:;
11934 : }
11935 : }
11936 : }
11937 : break;
11938 : default:;
11939 : }
11940 : break;
11941 : default:;
11942 : }
11943 : break;
11944 : }
11945 : default:;
11946 : }
11947 : break;
11948 : }
11949 95289 : CASE_CONVERT:
11950 95289 : {
11951 95289 : tree _q30 = TREE_OPERAND (_q20, 0);
11952 95289 : switch (TREE_CODE (_q21))
11953 : {
11954 17421 : case INTEGER_CST:
11955 17421 : {
11956 17421 : switch (TREE_CODE (_p1))
11957 : {
11958 15 : CASE_CONVERT:
11959 15 : {
11960 15 : tree _q60 = TREE_OPERAND (_p1, 0);
11961 15 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
11962 : {
11963 0 : switch (TREE_CODE (_p2))
11964 : {
11965 0 : case INTEGER_CST:
11966 0 : {
11967 0 : {
11968 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
11969 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11970 0 : if (res) return res;
11971 : }
11972 0 : break;
11973 : }
11974 : default:;
11975 : }
11976 : }
11977 : break;
11978 : }
11979 17421 : default:;
11980 : }
11981 17421 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11982 : {
11983 6 : switch (TREE_CODE (_p2))
11984 : {
11985 6 : case INTEGER_CST:
11986 6 : {
11987 6 : {
11988 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
11989 6 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
11990 6 : if (res) return res;
11991 : }
11992 6 : break;
11993 : }
11994 : default:;
11995 : }
11996 : }
11997 17421 : switch (TREE_CODE (_p1))
11998 : {
11999 25 : case PLUS_EXPR:
12000 25 : {
12001 25 : tree _q60 = TREE_OPERAND (_p1, 0);
12002 25 : tree _q61 = TREE_OPERAND (_p1, 1);
12003 25 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12004 : {
12005 7 : switch (TREE_CODE (_q61))
12006 : {
12007 7 : case INTEGER_CST:
12008 7 : {
12009 7 : switch (TREE_CODE (_p2))
12010 : {
12011 7 : case INTEGER_CST:
12012 7 : {
12013 7 : {
12014 7 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12015 7 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12016 7 : if (res) return res;
12017 : }
12018 0 : break;
12019 : }
12020 : default:;
12021 : }
12022 : break;
12023 : }
12024 : default:;
12025 : }
12026 : }
12027 : break;
12028 : }
12029 0 : case MINUS_EXPR:
12030 0 : {
12031 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12032 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12033 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12034 : {
12035 0 : switch (TREE_CODE (_q61))
12036 : {
12037 0 : case INTEGER_CST:
12038 0 : {
12039 0 : switch (TREE_CODE (_p2))
12040 : {
12041 0 : case INTEGER_CST:
12042 0 : {
12043 0 : {
12044 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12045 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12046 0 : if (res) return res;
12047 : }
12048 0 : break;
12049 : }
12050 : default:;
12051 : }
12052 : break;
12053 : }
12054 : default:;
12055 : }
12056 : }
12057 : break;
12058 : }
12059 : default:;
12060 : }
12061 : break;
12062 : }
12063 : default:;
12064 : }
12065 : break;
12066 : }
12067 1757093 : default:;
12068 : }
12069 1757093 : switch (TREE_CODE (_q21))
12070 : {
12071 369204 : case INTEGER_CST:
12072 369204 : {
12073 369204 : switch (TREE_CODE (_p1))
12074 : {
12075 1164 : CASE_CONVERT:
12076 1164 : {
12077 1164 : tree _q50 = TREE_OPERAND (_p1, 0);
12078 1164 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12079 : {
12080 36 : switch (TREE_CODE (_p2))
12081 : {
12082 5 : case INTEGER_CST:
12083 5 : {
12084 5 : {
12085 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12086 5 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12087 5 : if (res) return res;
12088 : }
12089 5 : break;
12090 : }
12091 : default:;
12092 : }
12093 : }
12094 : break;
12095 : }
12096 369204 : default:;
12097 : }
12098 369204 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12099 : {
12100 81 : switch (TREE_CODE (_p2))
12101 : {
12102 8 : case INTEGER_CST:
12103 8 : {
12104 8 : {
12105 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12106 8 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12107 8 : if (res) return res;
12108 : }
12109 0 : break;
12110 : }
12111 : default:;
12112 : }
12113 : }
12114 369196 : switch (TREE_CODE (_p1))
12115 : {
12116 9066 : case PLUS_EXPR:
12117 9066 : {
12118 9066 : tree _q50 = TREE_OPERAND (_p1, 0);
12119 9066 : tree _q51 = TREE_OPERAND (_p1, 1);
12120 9066 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12121 : {
12122 9031 : switch (TREE_CODE (_q51))
12123 : {
12124 9031 : case INTEGER_CST:
12125 9031 : {
12126 9031 : switch (TREE_CODE (_p2))
12127 : {
12128 24 : case INTEGER_CST:
12129 24 : {
12130 24 : {
12131 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12132 24 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12133 24 : if (res) return res;
12134 : }
12135 24 : break;
12136 : }
12137 : default:;
12138 : }
12139 : break;
12140 : }
12141 : default:;
12142 : }
12143 : }
12144 : break;
12145 : }
12146 62 : case MINUS_EXPR:
12147 62 : {
12148 62 : tree _q50 = TREE_OPERAND (_p1, 0);
12149 62 : tree _q51 = TREE_OPERAND (_p1, 1);
12150 62 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12151 : {
12152 0 : switch (TREE_CODE (_q51))
12153 : {
12154 0 : case INTEGER_CST:
12155 0 : {
12156 0 : switch (TREE_CODE (_p2))
12157 : {
12158 0 : case INTEGER_CST:
12159 0 : {
12160 0 : {
12161 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12162 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12163 0 : if (res) return res;
12164 : }
12165 0 : break;
12166 : }
12167 : default:;
12168 : }
12169 : break;
12170 : }
12171 : default:;
12172 : }
12173 : }
12174 : break;
12175 : }
12176 : default:;
12177 : }
12178 : break;
12179 : }
12180 1757085 : default:;
12181 : }
12182 1757085 : switch (TREE_CODE (_p1))
12183 : {
12184 0 : case MIN_EXPR:
12185 0 : {
12186 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12187 0 : tree _q51 = TREE_OPERAND (_p1, 1);
12188 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12189 : {
12190 0 : switch (TREE_CODE (_p2))
12191 : {
12192 0 : case MIN_EXPR:
12193 0 : {
12194 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12195 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12196 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12197 : {
12198 0 : {
12199 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12200 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12201 0 : if (res) return res;
12202 : }
12203 : }
12204 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12205 : {
12206 0 : {
12207 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12208 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12209 0 : if (res) return res;
12210 : }
12211 : }
12212 : break;
12213 : }
12214 : default:;
12215 : }
12216 : }
12217 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12218 : {
12219 0 : switch (TREE_CODE (_p2))
12220 : {
12221 0 : case MIN_EXPR:
12222 0 : {
12223 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12224 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12225 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12226 : {
12227 0 : {
12228 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12229 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12230 0 : if (res) return res;
12231 : }
12232 : }
12233 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12234 : {
12235 0 : {
12236 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12237 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12238 0 : if (res) return res;
12239 : }
12240 : }
12241 : break;
12242 : }
12243 : default:;
12244 : }
12245 : }
12246 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12247 : {
12248 0 : switch (TREE_CODE (_p2))
12249 : {
12250 0 : case MIN_EXPR:
12251 0 : {
12252 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12253 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12254 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12255 : {
12256 0 : {
12257 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12258 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12259 0 : if (res) return res;
12260 : }
12261 : }
12262 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12263 : {
12264 0 : {
12265 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12266 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12267 0 : if (res) return res;
12268 : }
12269 : }
12270 : break;
12271 : }
12272 0 : default:;
12273 : }
12274 0 : {
12275 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
12276 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12277 0 : if (res) return res;
12278 : }
12279 : }
12280 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12281 : {
12282 0 : switch (TREE_CODE (_p2))
12283 : {
12284 0 : case MIN_EXPR:
12285 0 : {
12286 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12287 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12288 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12289 : {
12290 0 : {
12291 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12292 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12293 0 : if (res) return res;
12294 : }
12295 : }
12296 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12297 : {
12298 0 : {
12299 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12300 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12301 0 : if (res) return res;
12302 : }
12303 : }
12304 : break;
12305 : }
12306 0 : default:;
12307 : }
12308 0 : {
12309 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
12310 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12311 0 : if (res) return res;
12312 : }
12313 : }
12314 : break;
12315 : }
12316 21 : case MAX_EXPR:
12317 21 : {
12318 21 : tree _q50 = TREE_OPERAND (_p1, 0);
12319 21 : tree _q51 = TREE_OPERAND (_p1, 1);
12320 21 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12321 : {
12322 1 : switch (TREE_CODE (_p2))
12323 : {
12324 0 : case MAX_EXPR:
12325 0 : {
12326 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12327 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12328 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12329 : {
12330 0 : {
12331 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12332 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12333 0 : if (res) return res;
12334 : }
12335 : }
12336 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12337 : {
12338 0 : {
12339 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12340 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12341 0 : if (res) return res;
12342 : }
12343 : }
12344 : break;
12345 : }
12346 1 : default:;
12347 : }
12348 1 : {
12349 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
12350 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12351 1 : if (res) return res;
12352 : }
12353 : }
12354 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12355 : {
12356 4 : switch (TREE_CODE (_p2))
12357 : {
12358 0 : case MAX_EXPR:
12359 0 : {
12360 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12361 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12362 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12363 : {
12364 0 : {
12365 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12366 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12367 0 : if (res) return res;
12368 : }
12369 : }
12370 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12371 : {
12372 0 : {
12373 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12374 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12375 0 : if (res) return res;
12376 : }
12377 : }
12378 : break;
12379 : }
12380 : default:;
12381 : }
12382 : }
12383 20 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12384 : {
12385 8 : switch (TREE_CODE (_p2))
12386 : {
12387 0 : case MAX_EXPR:
12388 0 : {
12389 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12390 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12391 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12392 : {
12393 0 : {
12394 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12395 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12396 0 : if (res) return res;
12397 : }
12398 : }
12399 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12400 : {
12401 0 : {
12402 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12403 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12404 0 : if (res) return res;
12405 : }
12406 : }
12407 : break;
12408 : }
12409 : default:;
12410 : }
12411 : }
12412 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12413 : {
12414 1 : switch (TREE_CODE (_p2))
12415 : {
12416 1 : case MAX_EXPR:
12417 1 : {
12418 1 : tree _q80 = TREE_OPERAND (_p2, 0);
12419 1 : tree _q81 = TREE_OPERAND (_p2, 1);
12420 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12421 : {
12422 0 : {
12423 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12424 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12425 0 : if (res) return res;
12426 : }
12427 : }
12428 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12429 : {
12430 1 : {
12431 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12432 1 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12433 1 : if (res) return res;
12434 : }
12435 : }
12436 : break;
12437 : }
12438 : default:;
12439 : }
12440 : }
12441 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12442 : {
12443 4 : {
12444 4 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
12445 4 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12446 4 : if (res) return res;
12447 : }
12448 : }
12449 : break;
12450 : }
12451 1757083 : default:;
12452 : }
12453 1757083 : {
12454 1757083 : tree _q20_pops[1];
12455 1757083 : if (tree_nop_convert (_q20, _q20_pops))
12456 : {
12457 48374 : tree _q30 = _q20_pops[0];
12458 48374 : if (integer_zerop (_q21))
12459 : {
12460 8093 : switch (TREE_CODE (_p1))
12461 : {
12462 0 : case MIN_EXPR:
12463 0 : {
12464 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12465 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12466 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12467 : {
12468 0 : switch (TREE_CODE (_q61))
12469 : {
12470 0 : case INTEGER_CST:
12471 0 : {
12472 0 : switch (TREE_CODE (_p2))
12473 : {
12474 0 : case INTEGER_CST:
12475 0 : {
12476 0 : {
12477 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
12478 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12479 0 : if (res) return res;
12480 : }
12481 0 : break;
12482 : }
12483 : default:;
12484 : }
12485 : break;
12486 : }
12487 : default:;
12488 : }
12489 : }
12490 : break;
12491 : }
12492 : default:;
12493 : }
12494 : }
12495 : }
12496 : }
12497 1757083 : if (integer_zerop (_q21))
12498 : {
12499 323584 : if (tree_expr_nonnegative_p (_p1))
12500 : {
12501 291621 : switch (TREE_CODE (_p2))
12502 : {
12503 17 : case MIN_EXPR:
12504 17 : {
12505 17 : tree _q60 = TREE_OPERAND (_p2, 0);
12506 17 : tree _q61 = TREE_OPERAND (_p2, 1);
12507 17 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
12508 : {
12509 16 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
12510 : {
12511 9 : {
12512 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12513 9 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures);
12514 9 : if (res) return res;
12515 : }
12516 : }
12517 : }
12518 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
12519 : {
12520 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
12521 : {
12522 0 : {
12523 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12524 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures);
12525 0 : if (res) return res;
12526 : }
12527 : }
12528 : }
12529 : break;
12530 : }
12531 : default:;
12532 : }
12533 : }
12534 : }
12535 1757074 : if (tree_expr_nonnegative_p (_q20))
12536 : {
12537 490652 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
12538 : {
12539 166 : switch (TREE_CODE (_p2))
12540 : {
12541 5 : case ABS_EXPR:
12542 5 : {
12543 5 : tree _q60 = TREE_OPERAND (_p2, 0);
12544 5 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
12545 : {
12546 0 : {
12547 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
12548 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12549 0 : if (res) return res;
12550 : }
12551 : }
12552 : break;
12553 : }
12554 : default:;
12555 : }
12556 : }
12557 490652 : switch (TREE_CODE (_p1))
12558 : {
12559 0 : case ABS_EXPR:
12560 0 : {
12561 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12562 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12563 : {
12564 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
12565 : {
12566 0 : {
12567 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
12568 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12569 0 : if (res) return res;
12570 : }
12571 : }
12572 : }
12573 : break;
12574 : }
12575 : default:;
12576 : }
12577 : }
12578 : break;
12579 : }
12580 549917 : case GE_EXPR:
12581 549917 : {
12582 549917 : tree _q20 = TREE_OPERAND (_p0, 0);
12583 549917 : tree _q21 = TREE_OPERAND (_p0, 1);
12584 549917 : switch (TREE_CODE (_q20))
12585 : {
12586 38177 : case MINUS_EXPR:
12587 38177 : {
12588 38177 : tree _q30 = TREE_OPERAND (_q20, 0);
12589 38177 : tree _q31 = TREE_OPERAND (_q20, 1);
12590 38177 : switch (TREE_CODE (_q30))
12591 : {
12592 526 : case SSA_NAME:
12593 526 : {
12594 526 : switch (TREE_CODE (_q31))
12595 : {
12596 0 : case CALL_EXPR:
12597 0 : switch (get_call_combined_fn (_q31))
12598 : {
12599 0 : case CFN_BUILT_IN_FLOORF:
12600 0 : if (call_expr_nargs (_q31) == 1)
12601 : {
12602 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12603 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12604 : {
12605 0 : switch (TREE_CODE (_q50))
12606 : {
12607 0 : case SSA_NAME:
12608 0 : {
12609 0 : switch (TREE_CODE (_q21))
12610 : {
12611 0 : case MINUS_EXPR:
12612 0 : {
12613 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12614 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12615 0 : switch (TREE_CODE (_q80))
12616 : {
12617 0 : case CALL_EXPR:
12618 0 : switch (get_call_combined_fn (_q80))
12619 : {
12620 0 : case CFN_BUILT_IN_CEILF:
12621 0 : if (call_expr_nargs (_q80) == 1)
12622 : {
12623 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12624 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12625 : {
12626 0 : switch (TREE_CODE (_q90))
12627 : {
12628 0 : case SSA_NAME:
12629 0 : {
12630 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12631 : {
12632 0 : switch (TREE_CODE (_q81))
12633 : {
12634 0 : case SSA_NAME:
12635 0 : {
12636 0 : switch (TREE_CODE (_p1))
12637 : {
12638 0 : case CALL_EXPR:
12639 0 : switch (get_call_combined_fn (_p1))
12640 : {
12641 0 : case CFN_BUILT_IN_CEILF:
12642 0 : if (call_expr_nargs (_p1) == 1)
12643 : {
12644 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12645 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12646 : {
12647 0 : switch (TREE_CODE (_q140))
12648 : {
12649 0 : case SSA_NAME:
12650 0 : {
12651 0 : switch (TREE_CODE (_p2))
12652 : {
12653 0 : case CALL_EXPR:
12654 0 : switch (get_call_combined_fn (_p2))
12655 : {
12656 0 : case CFN_BUILT_IN_FLOORF:
12657 0 : if (call_expr_nargs (_p2) == 1)
12658 : {
12659 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12660 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12661 : {
12662 0 : switch (TREE_CODE (_q170))
12663 : {
12664 0 : case SSA_NAME:
12665 0 : {
12666 0 : {
12667 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12668 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
12669 0 : if (res) return res;
12670 : }
12671 0 : break;
12672 : }
12673 : default:;
12674 : }
12675 : }
12676 : }
12677 : break;
12678 : default:;
12679 : }
12680 : break;
12681 : default:;
12682 : }
12683 : break;
12684 : }
12685 : default:;
12686 : }
12687 : }
12688 : }
12689 : break;
12690 : default:;
12691 : }
12692 : break;
12693 : default:;
12694 : }
12695 : break;
12696 : }
12697 : default:;
12698 : }
12699 : }
12700 : break;
12701 : }
12702 : default:;
12703 : }
12704 : }
12705 : }
12706 : break;
12707 : default:;
12708 : }
12709 : break;
12710 : default:;
12711 : }
12712 : break;
12713 : }
12714 : default:;
12715 : }
12716 : break;
12717 : }
12718 : default:;
12719 : }
12720 : }
12721 : }
12722 : break;
12723 0 : case CFN_BUILT_IN_FLOORL:
12724 0 : if (call_expr_nargs (_q31) == 1)
12725 : {
12726 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12727 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12728 : {
12729 0 : switch (TREE_CODE (_q50))
12730 : {
12731 0 : case SSA_NAME:
12732 0 : {
12733 0 : switch (TREE_CODE (_q21))
12734 : {
12735 0 : case MINUS_EXPR:
12736 0 : {
12737 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12738 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12739 0 : switch (TREE_CODE (_q80))
12740 : {
12741 0 : case CALL_EXPR:
12742 0 : switch (get_call_combined_fn (_q80))
12743 : {
12744 0 : case CFN_BUILT_IN_CEILL:
12745 0 : if (call_expr_nargs (_q80) == 1)
12746 : {
12747 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12748 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12749 : {
12750 0 : switch (TREE_CODE (_q90))
12751 : {
12752 0 : case SSA_NAME:
12753 0 : {
12754 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12755 : {
12756 0 : switch (TREE_CODE (_q81))
12757 : {
12758 0 : case SSA_NAME:
12759 0 : {
12760 0 : switch (TREE_CODE (_p1))
12761 : {
12762 0 : case CALL_EXPR:
12763 0 : switch (get_call_combined_fn (_p1))
12764 : {
12765 0 : case CFN_BUILT_IN_CEILL:
12766 0 : if (call_expr_nargs (_p1) == 1)
12767 : {
12768 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12769 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12770 : {
12771 0 : switch (TREE_CODE (_q140))
12772 : {
12773 0 : case SSA_NAME:
12774 0 : {
12775 0 : switch (TREE_CODE (_p2))
12776 : {
12777 0 : case CALL_EXPR:
12778 0 : switch (get_call_combined_fn (_p2))
12779 : {
12780 0 : case CFN_BUILT_IN_FLOORL:
12781 0 : if (call_expr_nargs (_p2) == 1)
12782 : {
12783 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12784 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12785 : {
12786 0 : switch (TREE_CODE (_q170))
12787 : {
12788 0 : case SSA_NAME:
12789 0 : {
12790 0 : {
12791 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12792 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
12793 0 : if (res) return res;
12794 : }
12795 0 : break;
12796 : }
12797 : default:;
12798 : }
12799 : }
12800 : }
12801 : break;
12802 : default:;
12803 : }
12804 : break;
12805 : default:;
12806 : }
12807 : break;
12808 : }
12809 : default:;
12810 : }
12811 : }
12812 : }
12813 : break;
12814 : default:;
12815 : }
12816 : break;
12817 : default:;
12818 : }
12819 : break;
12820 : }
12821 : default:;
12822 : }
12823 : }
12824 : break;
12825 : }
12826 : default:;
12827 : }
12828 : }
12829 : }
12830 : break;
12831 : default:;
12832 : }
12833 : break;
12834 : default:;
12835 : }
12836 : break;
12837 : }
12838 : default:;
12839 : }
12840 : break;
12841 : }
12842 : default:;
12843 : }
12844 : }
12845 : }
12846 : break;
12847 0 : case CFN_FLOOR:
12848 0 : if (call_expr_nargs (_q31) == 1)
12849 : {
12850 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12851 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12852 : {
12853 0 : switch (TREE_CODE (_q50))
12854 : {
12855 0 : case SSA_NAME:
12856 0 : {
12857 0 : switch (TREE_CODE (_q21))
12858 : {
12859 0 : case MINUS_EXPR:
12860 0 : {
12861 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12862 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12863 0 : switch (TREE_CODE (_q80))
12864 : {
12865 0 : case CALL_EXPR:
12866 0 : switch (get_call_combined_fn (_q80))
12867 : {
12868 0 : case CFN_CEIL:
12869 0 : if (call_expr_nargs (_q80) == 1)
12870 : {
12871 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12872 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12873 : {
12874 0 : switch (TREE_CODE (_q90))
12875 : {
12876 0 : case SSA_NAME:
12877 0 : {
12878 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12879 : {
12880 0 : switch (TREE_CODE (_q81))
12881 : {
12882 0 : case SSA_NAME:
12883 0 : {
12884 0 : switch (TREE_CODE (_p1))
12885 : {
12886 0 : case CALL_EXPR:
12887 0 : switch (get_call_combined_fn (_p1))
12888 : {
12889 0 : case CFN_CEIL:
12890 0 : if (call_expr_nargs (_p1) == 1)
12891 : {
12892 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12893 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12894 : {
12895 0 : switch (TREE_CODE (_q140))
12896 : {
12897 0 : case SSA_NAME:
12898 0 : {
12899 0 : switch (TREE_CODE (_p2))
12900 : {
12901 0 : case CALL_EXPR:
12902 0 : switch (get_call_combined_fn (_p2))
12903 : {
12904 0 : case CFN_FLOOR:
12905 0 : if (call_expr_nargs (_p2) == 1)
12906 : {
12907 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12908 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12909 : {
12910 0 : switch (TREE_CODE (_q170))
12911 : {
12912 0 : case SSA_NAME:
12913 0 : {
12914 0 : {
12915 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12916 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
12917 0 : if (res) return res;
12918 : }
12919 0 : break;
12920 : }
12921 : default:;
12922 : }
12923 : }
12924 : }
12925 : break;
12926 : default:;
12927 : }
12928 : break;
12929 : default:;
12930 : }
12931 : break;
12932 : }
12933 : default:;
12934 : }
12935 : }
12936 : }
12937 : break;
12938 : default:;
12939 : }
12940 : break;
12941 : default:;
12942 : }
12943 : break;
12944 : }
12945 : default:;
12946 : }
12947 : }
12948 : break;
12949 : }
12950 : default:;
12951 : }
12952 : }
12953 : }
12954 : break;
12955 : default:;
12956 : }
12957 : break;
12958 : default:;
12959 : }
12960 : break;
12961 : }
12962 : default:;
12963 : }
12964 : break;
12965 : }
12966 : default:;
12967 : }
12968 : }
12969 : }
12970 : break;
12971 0 : case CFN_BUILT_IN_FLOOR:
12972 0 : if (call_expr_nargs (_q31) == 1)
12973 : {
12974 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12975 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12976 : {
12977 0 : switch (TREE_CODE (_q50))
12978 : {
12979 0 : case SSA_NAME:
12980 0 : {
12981 0 : switch (TREE_CODE (_q21))
12982 : {
12983 0 : case MINUS_EXPR:
12984 0 : {
12985 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12986 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12987 0 : switch (TREE_CODE (_q80))
12988 : {
12989 0 : case CALL_EXPR:
12990 0 : switch (get_call_combined_fn (_q80))
12991 : {
12992 0 : case CFN_BUILT_IN_CEIL:
12993 0 : if (call_expr_nargs (_q80) == 1)
12994 : {
12995 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12996 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12997 : {
12998 0 : switch (TREE_CODE (_q90))
12999 : {
13000 0 : case SSA_NAME:
13001 0 : {
13002 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13003 : {
13004 0 : switch (TREE_CODE (_q81))
13005 : {
13006 0 : case SSA_NAME:
13007 0 : {
13008 0 : switch (TREE_CODE (_p1))
13009 : {
13010 0 : case CALL_EXPR:
13011 0 : switch (get_call_combined_fn (_p1))
13012 : {
13013 0 : case CFN_BUILT_IN_CEIL:
13014 0 : if (call_expr_nargs (_p1) == 1)
13015 : {
13016 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13017 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13018 : {
13019 0 : switch (TREE_CODE (_q140))
13020 : {
13021 0 : case SSA_NAME:
13022 0 : {
13023 0 : switch (TREE_CODE (_p2))
13024 : {
13025 0 : case CALL_EXPR:
13026 0 : switch (get_call_combined_fn (_p2))
13027 : {
13028 0 : case CFN_BUILT_IN_FLOOR:
13029 0 : if (call_expr_nargs (_p2) == 1)
13030 : {
13031 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13032 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13033 : {
13034 0 : switch (TREE_CODE (_q170))
13035 : {
13036 0 : case SSA_NAME:
13037 0 : {
13038 0 : {
13039 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13040 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13041 0 : if (res) return res;
13042 : }
13043 0 : break;
13044 : }
13045 : default:;
13046 : }
13047 : }
13048 : }
13049 : break;
13050 : default:;
13051 : }
13052 : break;
13053 : default:;
13054 : }
13055 : break;
13056 : }
13057 : default:;
13058 : }
13059 : }
13060 : }
13061 : break;
13062 : default:;
13063 : }
13064 : break;
13065 : default:;
13066 : }
13067 : break;
13068 : }
13069 : default:;
13070 : }
13071 : }
13072 : break;
13073 : }
13074 : default:;
13075 : }
13076 : }
13077 : }
13078 : break;
13079 : default:;
13080 : }
13081 : break;
13082 : default:;
13083 : }
13084 : break;
13085 : }
13086 : default:;
13087 : }
13088 : break;
13089 : }
13090 : default:;
13091 : }
13092 : }
13093 : }
13094 : break;
13095 : default:;
13096 : }
13097 : break;
13098 : default:;
13099 : }
13100 : break;
13101 : }
13102 : default:;
13103 : }
13104 : break;
13105 : }
13106 56378 : CASE_CONVERT:
13107 56378 : {
13108 56378 : tree _q30 = TREE_OPERAND (_q20, 0);
13109 56378 : switch (TREE_CODE (_q21))
13110 : {
13111 27082 : case INTEGER_CST:
13112 27082 : {
13113 27082 : switch (TREE_CODE (_p1))
13114 : {
13115 10424 : CASE_CONVERT:
13116 10424 : {
13117 10424 : tree _q60 = TREE_OPERAND (_p1, 0);
13118 10424 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13119 : {
13120 6335 : switch (TREE_CODE (_p2))
13121 : {
13122 6327 : case INTEGER_CST:
13123 6327 : {
13124 6327 : {
13125 6327 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13126 6327 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13127 6327 : if (res) return res;
13128 : }
13129 6327 : break;
13130 : }
13131 : default:;
13132 : }
13133 : }
13134 : break;
13135 : }
13136 27082 : default:;
13137 : }
13138 27082 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
13139 : {
13140 312 : switch (TREE_CODE (_p2))
13141 : {
13142 299 : case INTEGER_CST:
13143 299 : {
13144 299 : {
13145 299 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13146 299 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13147 299 : if (res) return res;
13148 : }
13149 294 : break;
13150 : }
13151 : default:;
13152 : }
13153 : }
13154 27077 : switch (TREE_CODE (_p1))
13155 : {
13156 391 : case PLUS_EXPR:
13157 391 : {
13158 391 : tree _q60 = TREE_OPERAND (_p1, 0);
13159 391 : tree _q61 = TREE_OPERAND (_p1, 1);
13160 391 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13161 : {
13162 0 : switch (TREE_CODE (_q61))
13163 : {
13164 0 : case INTEGER_CST:
13165 0 : {
13166 0 : switch (TREE_CODE (_p2))
13167 : {
13168 0 : case INTEGER_CST:
13169 0 : {
13170 0 : {
13171 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13172 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13173 0 : if (res) return res;
13174 : }
13175 0 : break;
13176 : }
13177 : default:;
13178 : }
13179 : break;
13180 : }
13181 : default:;
13182 : }
13183 : }
13184 : break;
13185 : }
13186 73 : case MINUS_EXPR:
13187 73 : {
13188 73 : tree _q60 = TREE_OPERAND (_p1, 0);
13189 73 : tree _q61 = TREE_OPERAND (_p1, 1);
13190 73 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13191 : {
13192 0 : switch (TREE_CODE (_q61))
13193 : {
13194 0 : case INTEGER_CST:
13195 0 : {
13196 0 : switch (TREE_CODE (_p2))
13197 : {
13198 0 : case INTEGER_CST:
13199 0 : {
13200 0 : {
13201 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13202 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13203 0 : if (res) return res;
13204 : }
13205 0 : break;
13206 : }
13207 : default:;
13208 : }
13209 : break;
13210 : }
13211 : default:;
13212 : }
13213 : }
13214 : break;
13215 : }
13216 : default:;
13217 : }
13218 : break;
13219 : }
13220 : default:;
13221 : }
13222 : break;
13223 : }
13224 549912 : default:;
13225 : }
13226 549912 : switch (TREE_CODE (_q21))
13227 : {
13228 205630 : case INTEGER_CST:
13229 205630 : {
13230 205630 : switch (TREE_CODE (_p1))
13231 : {
13232 54582 : CASE_CONVERT:
13233 54582 : {
13234 54582 : tree _q50 = TREE_OPERAND (_p1, 0);
13235 54582 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13236 : {
13237 150 : switch (TREE_CODE (_p2))
13238 : {
13239 45 : case INTEGER_CST:
13240 45 : {
13241 45 : {
13242 45 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13243 45 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13244 45 : if (res) return res;
13245 : }
13246 45 : break;
13247 : }
13248 : default:;
13249 : }
13250 : }
13251 : break;
13252 : }
13253 205630 : default:;
13254 : }
13255 205630 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13256 : {
13257 41429 : switch (TREE_CODE (_p2))
13258 : {
13259 10705 : case INTEGER_CST:
13260 10705 : {
13261 10705 : {
13262 10705 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13263 10705 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13264 10705 : if (res) return res;
13265 : }
13266 19 : break;
13267 : }
13268 : default:;
13269 : }
13270 : }
13271 194944 : switch (TREE_CODE (_p1))
13272 : {
13273 17033 : case PLUS_EXPR:
13274 17033 : {
13275 17033 : tree _q50 = TREE_OPERAND (_p1, 0);
13276 17033 : tree _q51 = TREE_OPERAND (_p1, 1);
13277 17033 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13278 : {
13279 6519 : switch (TREE_CODE (_q51))
13280 : {
13281 6519 : case INTEGER_CST:
13282 6519 : {
13283 6519 : switch (TREE_CODE (_p2))
13284 : {
13285 6519 : case INTEGER_CST:
13286 6519 : {
13287 6519 : {
13288 6519 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13289 6519 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13290 6519 : if (res) return res;
13291 : }
13292 0 : break;
13293 : }
13294 : default:;
13295 : }
13296 : break;
13297 : }
13298 : default:;
13299 : }
13300 : }
13301 : break;
13302 : }
13303 223 : case MINUS_EXPR:
13304 223 : {
13305 223 : tree _q50 = TREE_OPERAND (_p1, 0);
13306 223 : tree _q51 = TREE_OPERAND (_p1, 1);
13307 223 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13308 : {
13309 0 : switch (TREE_CODE (_q51))
13310 : {
13311 0 : case INTEGER_CST:
13312 0 : {
13313 0 : switch (TREE_CODE (_p2))
13314 : {
13315 0 : case INTEGER_CST:
13316 0 : {
13317 0 : {
13318 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13319 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13320 0 : if (res) return res;
13321 : }
13322 0 : break;
13323 : }
13324 : default:;
13325 : }
13326 : break;
13327 : }
13328 : default:;
13329 : }
13330 : }
13331 : break;
13332 : }
13333 : default:;
13334 : }
13335 : break;
13336 : }
13337 532707 : default:;
13338 : }
13339 532707 : switch (TREE_CODE (_p1))
13340 : {
13341 16 : case MIN_EXPR:
13342 16 : {
13343 16 : tree _q50 = TREE_OPERAND (_p1, 0);
13344 16 : tree _q51 = TREE_OPERAND (_p1, 1);
13345 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13346 : {
13347 15 : switch (TREE_CODE (_p2))
13348 : {
13349 0 : case MIN_EXPR:
13350 0 : {
13351 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13352 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13353 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13354 : {
13355 0 : {
13356 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13357 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13358 0 : if (res) return res;
13359 : }
13360 : }
13361 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13362 : {
13363 0 : {
13364 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13365 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13366 0 : if (res) return res;
13367 : }
13368 : }
13369 : break;
13370 : }
13371 15 : default:;
13372 : }
13373 15 : {
13374 15 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
13375 15 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13376 15 : if (res) return res;
13377 : }
13378 : }
13379 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13380 : {
13381 0 : switch (TREE_CODE (_p2))
13382 : {
13383 0 : case MIN_EXPR:
13384 0 : {
13385 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13386 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13387 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13388 : {
13389 0 : {
13390 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13391 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13392 0 : if (res) return res;
13393 : }
13394 : }
13395 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13396 : {
13397 0 : {
13398 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13399 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13400 0 : if (res) return res;
13401 : }
13402 : }
13403 : break;
13404 : }
13405 : default:;
13406 : }
13407 : }
13408 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13409 : {
13410 0 : switch (TREE_CODE (_p2))
13411 : {
13412 0 : case MIN_EXPR:
13413 0 : {
13414 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13415 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13416 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13417 : {
13418 0 : {
13419 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13420 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13421 0 : if (res) return res;
13422 : }
13423 : }
13424 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13425 : {
13426 0 : {
13427 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13428 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13429 0 : if (res) return res;
13430 : }
13431 : }
13432 : break;
13433 : }
13434 : default:;
13435 : }
13436 : }
13437 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13438 : {
13439 0 : switch (TREE_CODE (_p2))
13440 : {
13441 0 : case MIN_EXPR:
13442 0 : {
13443 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13444 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13445 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13446 : {
13447 0 : {
13448 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13449 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13450 0 : if (res) return res;
13451 : }
13452 : }
13453 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13454 : {
13455 0 : {
13456 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13457 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13458 0 : if (res) return res;
13459 : }
13460 : }
13461 : break;
13462 : }
13463 : default:;
13464 : }
13465 : }
13466 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13467 : {
13468 0 : {
13469 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
13470 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13471 0 : if (res) return res;
13472 : }
13473 : }
13474 : break;
13475 : }
13476 9 : case MAX_EXPR:
13477 9 : {
13478 9 : tree _q50 = TREE_OPERAND (_p1, 0);
13479 9 : tree _q51 = TREE_OPERAND (_p1, 1);
13480 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13481 : {
13482 1 : switch (TREE_CODE (_p2))
13483 : {
13484 0 : case MAX_EXPR:
13485 0 : {
13486 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13487 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13488 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13489 : {
13490 0 : {
13491 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13492 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13493 0 : if (res) return res;
13494 : }
13495 : }
13496 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13497 : {
13498 0 : {
13499 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13500 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13501 0 : if (res) return res;
13502 : }
13503 : }
13504 : break;
13505 : }
13506 : default:;
13507 : }
13508 : }
13509 9 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13510 : {
13511 1 : switch (TREE_CODE (_p2))
13512 : {
13513 0 : case MAX_EXPR:
13514 0 : {
13515 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13516 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13517 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13518 : {
13519 0 : {
13520 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13521 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13522 0 : if (res) return res;
13523 : }
13524 : }
13525 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13526 : {
13527 0 : {
13528 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13529 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13530 0 : if (res) return res;
13531 : }
13532 : }
13533 : break;
13534 : }
13535 : default:;
13536 : }
13537 : }
13538 9 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13539 : {
13540 1 : switch (TREE_CODE (_p2))
13541 : {
13542 0 : case MAX_EXPR:
13543 0 : {
13544 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13545 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13546 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13547 : {
13548 0 : {
13549 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13550 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13551 0 : if (res) return res;
13552 : }
13553 : }
13554 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13555 : {
13556 0 : {
13557 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13558 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13559 0 : if (res) return res;
13560 : }
13561 : }
13562 : break;
13563 : }
13564 1 : default:;
13565 : }
13566 1 : {
13567 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
13568 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13569 1 : if (res) return res;
13570 : }
13571 : }
13572 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13573 : {
13574 8 : switch (TREE_CODE (_p2))
13575 : {
13576 0 : case MAX_EXPR:
13577 0 : {
13578 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13579 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13580 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13581 : {
13582 0 : {
13583 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13584 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13585 0 : if (res) return res;
13586 : }
13587 : }
13588 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13589 : {
13590 0 : {
13591 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13592 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13593 0 : if (res) return res;
13594 : }
13595 : }
13596 : break;
13597 : }
13598 8 : default:;
13599 : }
13600 8 : {
13601 8 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
13602 8 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13603 8 : if (res) return res;
13604 : }
13605 : }
13606 : break;
13607 : }
13608 532697 : default:;
13609 : }
13610 532697 : {
13611 532697 : tree _q20_pops[1];
13612 532697 : if (tree_nop_convert (_q20, _q20_pops))
13613 : {
13614 22055 : tree _q30 = _q20_pops[0];
13615 22055 : if (integer_zerop (_q21))
13616 : {
13617 18928 : switch (TREE_CODE (_p1))
13618 : {
13619 0 : case MAX_EXPR:
13620 0 : {
13621 0 : tree _q60 = TREE_OPERAND (_p1, 0);
13622 0 : tree _q61 = TREE_OPERAND (_p1, 1);
13623 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13624 : {
13625 0 : switch (TREE_CODE (_q61))
13626 : {
13627 0 : case INTEGER_CST:
13628 0 : {
13629 0 : switch (TREE_CODE (_p2))
13630 : {
13631 0 : case INTEGER_CST:
13632 0 : {
13633 0 : {
13634 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
13635 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13636 0 : if (res) return res;
13637 : }
13638 0 : break;
13639 : }
13640 : default:;
13641 : }
13642 : break;
13643 : }
13644 : default:;
13645 : }
13646 : }
13647 : break;
13648 : }
13649 : default:;
13650 : }
13651 : }
13652 : }
13653 : }
13654 532697 : if (tree_expr_nonnegative_p (_q21))
13655 : {
13656 381994 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13657 : {
13658 30801 : switch (TREE_CODE (_p2))
13659 : {
13660 0 : case ABS_EXPR:
13661 0 : {
13662 0 : tree _q60 = TREE_OPERAND (_p2, 0);
13663 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13664 : {
13665 0 : {
13666 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13667 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13668 0 : if (res) return res;
13669 : }
13670 : }
13671 : break;
13672 : }
13673 : default:;
13674 : }
13675 : }
13676 381994 : switch (TREE_CODE (_p1))
13677 : {
13678 12 : case ABS_EXPR:
13679 12 : {
13680 12 : tree _q50 = TREE_OPERAND (_p1, 0);
13681 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13682 : {
13683 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
13684 : {
13685 0 : {
13686 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13687 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13688 0 : if (res) return res;
13689 : }
13690 : }
13691 : }
13692 : break;
13693 : }
13694 : default:;
13695 : }
13696 : }
13697 : break;
13698 : }
13699 903626 : case GT_EXPR:
13700 903626 : {
13701 903626 : tree _q20 = TREE_OPERAND (_p0, 0);
13702 903626 : tree _q21 = TREE_OPERAND (_p0, 1);
13703 903626 : switch (TREE_CODE (_q20))
13704 : {
13705 1048 : case MINUS_EXPR:
13706 1048 : {
13707 1048 : tree _q30 = TREE_OPERAND (_q20, 0);
13708 1048 : tree _q31 = TREE_OPERAND (_q20, 1);
13709 1048 : switch (TREE_CODE (_q30))
13710 : {
13711 0 : case CALL_EXPR:
13712 0 : switch (get_call_combined_fn (_q30))
13713 : {
13714 0 : case CFN_BUILT_IN_CEIL:
13715 0 : if (call_expr_nargs (_q30) == 1)
13716 : {
13717 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13718 0 : switch (TREE_CODE (_q40))
13719 : {
13720 0 : case SSA_NAME:
13721 0 : {
13722 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13723 : {
13724 0 : switch (TREE_CODE (_q31))
13725 : {
13726 0 : case SSA_NAME:
13727 0 : {
13728 0 : switch (TREE_CODE (_q21))
13729 : {
13730 0 : case MINUS_EXPR:
13731 0 : {
13732 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13733 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13734 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13735 : {
13736 0 : switch (TREE_CODE (_q80))
13737 : {
13738 0 : case SSA_NAME:
13739 0 : {
13740 0 : switch (TREE_CODE (_q81))
13741 : {
13742 0 : case CALL_EXPR:
13743 0 : switch (get_call_combined_fn (_q81))
13744 : {
13745 0 : case CFN_BUILT_IN_FLOOR:
13746 0 : if (call_expr_nargs (_q81) == 1)
13747 : {
13748 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13749 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13750 : {
13751 0 : switch (TREE_CODE (_q110))
13752 : {
13753 0 : case SSA_NAME:
13754 0 : {
13755 0 : switch (TREE_CODE (_p1))
13756 : {
13757 0 : case CALL_EXPR:
13758 0 : switch (get_call_combined_fn (_p1))
13759 : {
13760 0 : case CFN_BUILT_IN_FLOOR:
13761 0 : if (call_expr_nargs (_p1) == 1)
13762 : {
13763 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13764 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13765 : {
13766 0 : switch (TREE_CODE (_q140))
13767 : {
13768 0 : case SSA_NAME:
13769 0 : {
13770 0 : switch (TREE_CODE (_p2))
13771 : {
13772 0 : case CALL_EXPR:
13773 0 : switch (get_call_combined_fn (_p2))
13774 : {
13775 0 : case CFN_BUILT_IN_CEIL:
13776 0 : if (call_expr_nargs (_p2) == 1)
13777 : {
13778 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13779 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13780 : {
13781 0 : switch (TREE_CODE (_q170))
13782 : {
13783 0 : case SSA_NAME:
13784 0 : {
13785 0 : {
13786 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13787 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13788 0 : if (res) return res;
13789 : }
13790 0 : break;
13791 : }
13792 : default:;
13793 : }
13794 : }
13795 : }
13796 : break;
13797 : default:;
13798 : }
13799 : break;
13800 : default:;
13801 : }
13802 : break;
13803 : }
13804 : default:;
13805 : }
13806 : }
13807 : }
13808 : break;
13809 : default:;
13810 : }
13811 : break;
13812 : default:;
13813 : }
13814 : break;
13815 : }
13816 : default:;
13817 : }
13818 : }
13819 : }
13820 : break;
13821 : default:;
13822 : }
13823 : break;
13824 : default:;
13825 : }
13826 : break;
13827 : }
13828 : default:;
13829 : }
13830 : }
13831 : break;
13832 : }
13833 : default:;
13834 : }
13835 : break;
13836 : }
13837 : default:;
13838 : }
13839 : }
13840 : break;
13841 : }
13842 : default:;
13843 : }
13844 : }
13845 : break;
13846 0 : case CFN_CEIL:
13847 0 : if (call_expr_nargs (_q30) == 1)
13848 : {
13849 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13850 0 : switch (TREE_CODE (_q40))
13851 : {
13852 0 : case SSA_NAME:
13853 0 : {
13854 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13855 : {
13856 0 : switch (TREE_CODE (_q31))
13857 : {
13858 0 : case SSA_NAME:
13859 0 : {
13860 0 : switch (TREE_CODE (_q21))
13861 : {
13862 0 : case MINUS_EXPR:
13863 0 : {
13864 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13865 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13866 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13867 : {
13868 0 : switch (TREE_CODE (_q80))
13869 : {
13870 0 : case SSA_NAME:
13871 0 : {
13872 0 : switch (TREE_CODE (_q81))
13873 : {
13874 0 : case CALL_EXPR:
13875 0 : switch (get_call_combined_fn (_q81))
13876 : {
13877 0 : case CFN_FLOOR:
13878 0 : if (call_expr_nargs (_q81) == 1)
13879 : {
13880 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13881 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13882 : {
13883 0 : switch (TREE_CODE (_q110))
13884 : {
13885 0 : case SSA_NAME:
13886 0 : {
13887 0 : switch (TREE_CODE (_p1))
13888 : {
13889 0 : case CALL_EXPR:
13890 0 : switch (get_call_combined_fn (_p1))
13891 : {
13892 0 : case CFN_FLOOR:
13893 0 : if (call_expr_nargs (_p1) == 1)
13894 : {
13895 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13896 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13897 : {
13898 0 : switch (TREE_CODE (_q140))
13899 : {
13900 0 : case SSA_NAME:
13901 0 : {
13902 0 : switch (TREE_CODE (_p2))
13903 : {
13904 0 : case CALL_EXPR:
13905 0 : switch (get_call_combined_fn (_p2))
13906 : {
13907 0 : case CFN_CEIL:
13908 0 : if (call_expr_nargs (_p2) == 1)
13909 : {
13910 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13911 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13912 : {
13913 0 : switch (TREE_CODE (_q170))
13914 : {
13915 0 : case SSA_NAME:
13916 0 : {
13917 0 : {
13918 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13919 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
13920 0 : if (res) return res;
13921 : }
13922 0 : break;
13923 : }
13924 : default:;
13925 : }
13926 : }
13927 : }
13928 : break;
13929 : default:;
13930 : }
13931 : break;
13932 : default:;
13933 : }
13934 : break;
13935 : }
13936 : default:;
13937 : }
13938 : }
13939 : }
13940 : break;
13941 : default:;
13942 : }
13943 : break;
13944 : default:;
13945 : }
13946 : break;
13947 : }
13948 : default:;
13949 : }
13950 : }
13951 : }
13952 : break;
13953 : default:;
13954 : }
13955 : break;
13956 : default:;
13957 : }
13958 : break;
13959 : }
13960 : default:;
13961 : }
13962 : }
13963 : break;
13964 : }
13965 : default:;
13966 : }
13967 : break;
13968 : }
13969 : default:;
13970 : }
13971 : }
13972 : break;
13973 : }
13974 : default:;
13975 : }
13976 : }
13977 : break;
13978 0 : case CFN_BUILT_IN_CEILF:
13979 0 : if (call_expr_nargs (_q30) == 1)
13980 : {
13981 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13982 0 : switch (TREE_CODE (_q40))
13983 : {
13984 0 : case SSA_NAME:
13985 0 : {
13986 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13987 : {
13988 0 : switch (TREE_CODE (_q31))
13989 : {
13990 0 : case SSA_NAME:
13991 0 : {
13992 0 : switch (TREE_CODE (_q21))
13993 : {
13994 0 : case MINUS_EXPR:
13995 0 : {
13996 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13997 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13998 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13999 : {
14000 0 : switch (TREE_CODE (_q80))
14001 : {
14002 0 : case SSA_NAME:
14003 0 : {
14004 0 : switch (TREE_CODE (_q81))
14005 : {
14006 0 : case CALL_EXPR:
14007 0 : switch (get_call_combined_fn (_q81))
14008 : {
14009 0 : case CFN_BUILT_IN_FLOORF:
14010 0 : if (call_expr_nargs (_q81) == 1)
14011 : {
14012 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14013 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14014 : {
14015 0 : switch (TREE_CODE (_q110))
14016 : {
14017 0 : case SSA_NAME:
14018 0 : {
14019 0 : switch (TREE_CODE (_p1))
14020 : {
14021 0 : case CALL_EXPR:
14022 0 : switch (get_call_combined_fn (_p1))
14023 : {
14024 0 : case CFN_BUILT_IN_FLOORF:
14025 0 : if (call_expr_nargs (_p1) == 1)
14026 : {
14027 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14028 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14029 : {
14030 0 : switch (TREE_CODE (_q140))
14031 : {
14032 0 : case SSA_NAME:
14033 0 : {
14034 0 : switch (TREE_CODE (_p2))
14035 : {
14036 0 : case CALL_EXPR:
14037 0 : switch (get_call_combined_fn (_p2))
14038 : {
14039 0 : case CFN_BUILT_IN_CEILF:
14040 0 : if (call_expr_nargs (_p2) == 1)
14041 : {
14042 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14043 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14044 : {
14045 0 : switch (TREE_CODE (_q170))
14046 : {
14047 0 : case SSA_NAME:
14048 0 : {
14049 0 : {
14050 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14051 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
14052 0 : if (res) return res;
14053 : }
14054 0 : break;
14055 : }
14056 : default:;
14057 : }
14058 : }
14059 : }
14060 : break;
14061 : default:;
14062 : }
14063 : break;
14064 : default:;
14065 : }
14066 : break;
14067 : }
14068 : default:;
14069 : }
14070 : }
14071 : }
14072 : break;
14073 : default:;
14074 : }
14075 : break;
14076 : default:;
14077 : }
14078 : break;
14079 : }
14080 : default:;
14081 : }
14082 : }
14083 : }
14084 : break;
14085 : default:;
14086 : }
14087 : break;
14088 : default:;
14089 : }
14090 : break;
14091 : }
14092 : default:;
14093 : }
14094 : }
14095 : break;
14096 : }
14097 : default:;
14098 : }
14099 : break;
14100 : }
14101 : default:;
14102 : }
14103 : }
14104 : break;
14105 : }
14106 : default:;
14107 : }
14108 : }
14109 : break;
14110 0 : case CFN_BUILT_IN_CEILL:
14111 0 : if (call_expr_nargs (_q30) == 1)
14112 : {
14113 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14114 0 : switch (TREE_CODE (_q40))
14115 : {
14116 0 : case SSA_NAME:
14117 0 : {
14118 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14119 : {
14120 0 : switch (TREE_CODE (_q31))
14121 : {
14122 0 : case SSA_NAME:
14123 0 : {
14124 0 : switch (TREE_CODE (_q21))
14125 : {
14126 0 : case MINUS_EXPR:
14127 0 : {
14128 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14129 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14130 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14131 : {
14132 0 : switch (TREE_CODE (_q80))
14133 : {
14134 0 : case SSA_NAME:
14135 0 : {
14136 0 : switch (TREE_CODE (_q81))
14137 : {
14138 0 : case CALL_EXPR:
14139 0 : switch (get_call_combined_fn (_q81))
14140 : {
14141 0 : case CFN_BUILT_IN_FLOORL:
14142 0 : if (call_expr_nargs (_q81) == 1)
14143 : {
14144 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14145 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14146 : {
14147 0 : switch (TREE_CODE (_q110))
14148 : {
14149 0 : case SSA_NAME:
14150 0 : {
14151 0 : switch (TREE_CODE (_p1))
14152 : {
14153 0 : case CALL_EXPR:
14154 0 : switch (get_call_combined_fn (_p1))
14155 : {
14156 0 : case CFN_BUILT_IN_FLOORL:
14157 0 : if (call_expr_nargs (_p1) == 1)
14158 : {
14159 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14160 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14161 : {
14162 0 : switch (TREE_CODE (_q140))
14163 : {
14164 0 : case SSA_NAME:
14165 0 : {
14166 0 : switch (TREE_CODE (_p2))
14167 : {
14168 0 : case CALL_EXPR:
14169 0 : switch (get_call_combined_fn (_p2))
14170 : {
14171 0 : case CFN_BUILT_IN_CEILL:
14172 0 : if (call_expr_nargs (_p2) == 1)
14173 : {
14174 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14175 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14176 : {
14177 0 : switch (TREE_CODE (_q170))
14178 : {
14179 0 : case SSA_NAME:
14180 0 : {
14181 0 : {
14182 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14183 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
14184 0 : if (res) return res;
14185 : }
14186 0 : break;
14187 : }
14188 : default:;
14189 : }
14190 : }
14191 : }
14192 : break;
14193 : default:;
14194 : }
14195 : break;
14196 : default:;
14197 : }
14198 : break;
14199 : }
14200 : default:;
14201 : }
14202 : }
14203 : }
14204 : break;
14205 : default:;
14206 : }
14207 : break;
14208 : default:;
14209 : }
14210 : break;
14211 : }
14212 : default:;
14213 : }
14214 : }
14215 : }
14216 : break;
14217 : default:;
14218 : }
14219 : break;
14220 : default:;
14221 : }
14222 : break;
14223 : }
14224 : default:;
14225 : }
14226 : }
14227 : break;
14228 : }
14229 : default:;
14230 : }
14231 : break;
14232 : }
14233 : default:;
14234 : }
14235 : }
14236 : break;
14237 : }
14238 : default:;
14239 : }
14240 : }
14241 : break;
14242 : default:;
14243 : }
14244 : break;
14245 : default:;
14246 : }
14247 : break;
14248 : }
14249 85544 : CASE_CONVERT:
14250 85544 : {
14251 85544 : tree _q30 = TREE_OPERAND (_q20, 0);
14252 85544 : switch (TREE_CODE (_q21))
14253 : {
14254 4049 : case INTEGER_CST:
14255 4049 : {
14256 4049 : switch (TREE_CODE (_p1))
14257 : {
14258 169 : CASE_CONVERT:
14259 169 : {
14260 169 : tree _q60 = TREE_OPERAND (_p1, 0);
14261 169 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14262 : {
14263 63 : switch (TREE_CODE (_p2))
14264 : {
14265 62 : case INTEGER_CST:
14266 62 : {
14267 62 : {
14268 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14269 62 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14270 62 : if (res) return res;
14271 : }
14272 62 : break;
14273 : }
14274 : default:;
14275 : }
14276 : }
14277 : break;
14278 : }
14279 4049 : default:;
14280 : }
14281 4049 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
14282 : {
14283 5 : switch (TREE_CODE (_p2))
14284 : {
14285 3 : case INTEGER_CST:
14286 3 : {
14287 3 : {
14288 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14289 3 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14290 3 : if (res) return res;
14291 : }
14292 3 : break;
14293 : }
14294 : default:;
14295 : }
14296 : }
14297 4049 : switch (TREE_CODE (_p1))
14298 : {
14299 1170 : case PLUS_EXPR:
14300 1170 : {
14301 1170 : tree _q60 = TREE_OPERAND (_p1, 0);
14302 1170 : tree _q61 = TREE_OPERAND (_p1, 1);
14303 1170 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14304 : {
14305 24 : switch (TREE_CODE (_q61))
14306 : {
14307 24 : case INTEGER_CST:
14308 24 : {
14309 24 : switch (TREE_CODE (_p2))
14310 : {
14311 24 : case INTEGER_CST:
14312 24 : {
14313 24 : {
14314 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14315 24 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14316 24 : if (res) return res;
14317 : }
14318 24 : break;
14319 : }
14320 : default:;
14321 : }
14322 : break;
14323 : }
14324 : default:;
14325 : }
14326 : }
14327 : break;
14328 : }
14329 0 : case MINUS_EXPR:
14330 0 : {
14331 0 : tree _q60 = TREE_OPERAND (_p1, 0);
14332 0 : tree _q61 = TREE_OPERAND (_p1, 1);
14333 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14334 : {
14335 0 : switch (TREE_CODE (_q61))
14336 : {
14337 0 : case INTEGER_CST:
14338 0 : {
14339 0 : switch (TREE_CODE (_p2))
14340 : {
14341 0 : case INTEGER_CST:
14342 0 : {
14343 0 : {
14344 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14345 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14346 0 : if (res) return res;
14347 : }
14348 0 : break;
14349 : }
14350 : default:;
14351 : }
14352 : break;
14353 : }
14354 : default:;
14355 : }
14356 : }
14357 : break;
14358 : }
14359 : default:;
14360 : }
14361 : break;
14362 : }
14363 : default:;
14364 : }
14365 : break;
14366 : }
14367 903626 : default:;
14368 : }
14369 903626 : switch (TREE_CODE (_q21))
14370 : {
14371 470740 : case INTEGER_CST:
14372 470740 : {
14373 470740 : switch (TREE_CODE (_p1))
14374 : {
14375 54152 : CASE_CONVERT:
14376 54152 : {
14377 54152 : tree _q50 = TREE_OPERAND (_p1, 0);
14378 54152 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14379 : {
14380 12612 : switch (TREE_CODE (_p2))
14381 : {
14382 12576 : case INTEGER_CST:
14383 12576 : {
14384 12576 : {
14385 12576 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14386 12576 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14387 12576 : if (res) return res;
14388 : }
14389 12268 : break;
14390 : }
14391 : default:;
14392 : }
14393 : }
14394 : break;
14395 : }
14396 470432 : default:;
14397 : }
14398 470432 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14399 : {
14400 8859 : switch (TREE_CODE (_p2))
14401 : {
14402 8685 : case INTEGER_CST:
14403 8685 : {
14404 8685 : {
14405 8685 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14406 8685 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14407 8685 : if (res) return res;
14408 : }
14409 31 : break;
14410 : }
14411 : default:;
14412 : }
14413 : }
14414 461778 : switch (TREE_CODE (_p1))
14415 : {
14416 47145 : case PLUS_EXPR:
14417 47145 : {
14418 47145 : tree _q50 = TREE_OPERAND (_p1, 0);
14419 47145 : tree _q51 = TREE_OPERAND (_p1, 1);
14420 47145 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14421 : {
14422 737 : switch (TREE_CODE (_q51))
14423 : {
14424 737 : case INTEGER_CST:
14425 737 : {
14426 737 : switch (TREE_CODE (_p2))
14427 : {
14428 729 : case INTEGER_CST:
14429 729 : {
14430 729 : {
14431 729 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14432 729 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14433 729 : if (res) return res;
14434 : }
14435 17 : break;
14436 : }
14437 : default:;
14438 : }
14439 : break;
14440 : }
14441 : default:;
14442 : }
14443 : }
14444 : break;
14445 : }
14446 190 : case MINUS_EXPR:
14447 190 : {
14448 190 : tree _q50 = TREE_OPERAND (_p1, 0);
14449 190 : tree _q51 = TREE_OPERAND (_p1, 1);
14450 190 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14451 : {
14452 4 : switch (TREE_CODE (_q51))
14453 : {
14454 0 : case INTEGER_CST:
14455 0 : {
14456 0 : switch (TREE_CODE (_p2))
14457 : {
14458 0 : case INTEGER_CST:
14459 0 : {
14460 0 : {
14461 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14462 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14463 0 : if (res) return res;
14464 : }
14465 0 : break;
14466 : }
14467 : default:;
14468 : }
14469 : break;
14470 : }
14471 : default:;
14472 : }
14473 : }
14474 : break;
14475 : }
14476 : default:;
14477 : }
14478 : break;
14479 : }
14480 893952 : default:;
14481 : }
14482 893952 : switch (TREE_CODE (_p1))
14483 : {
14484 18 : case MIN_EXPR:
14485 18 : {
14486 18 : tree _q50 = TREE_OPERAND (_p1, 0);
14487 18 : tree _q51 = TREE_OPERAND (_p1, 1);
14488 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14489 : {
14490 7 : switch (TREE_CODE (_p2))
14491 : {
14492 0 : case MIN_EXPR:
14493 0 : {
14494 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14495 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14496 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14497 : {
14498 0 : {
14499 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14500 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14501 0 : if (res) return res;
14502 : }
14503 : }
14504 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14505 : {
14506 0 : {
14507 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14508 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14509 0 : if (res) return res;
14510 : }
14511 : }
14512 : break;
14513 : }
14514 7 : default:;
14515 : }
14516 7 : {
14517 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
14518 7 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14519 7 : if (res) return res;
14520 : }
14521 : }
14522 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14523 : {
14524 0 : switch (TREE_CODE (_p2))
14525 : {
14526 0 : case MIN_EXPR:
14527 0 : {
14528 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14529 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14530 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14531 : {
14532 0 : {
14533 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14534 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14535 0 : if (res) return res;
14536 : }
14537 : }
14538 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14539 : {
14540 0 : {
14541 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14542 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14543 0 : if (res) return res;
14544 : }
14545 : }
14546 : break;
14547 : }
14548 : default:;
14549 : }
14550 : }
14551 18 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14552 : {
14553 8 : switch (TREE_CODE (_p2))
14554 : {
14555 0 : case MIN_EXPR:
14556 0 : {
14557 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14558 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14559 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14560 : {
14561 0 : {
14562 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14563 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14564 0 : if (res) return res;
14565 : }
14566 : }
14567 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14568 : {
14569 0 : {
14570 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14571 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14572 0 : if (res) return res;
14573 : }
14574 : }
14575 : break;
14576 : }
14577 : default:;
14578 : }
14579 : }
14580 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14581 : {
14582 7 : switch (TREE_CODE (_p2))
14583 : {
14584 0 : case MIN_EXPR:
14585 0 : {
14586 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14587 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14588 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14589 : {
14590 0 : {
14591 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14592 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14593 0 : if (res) return res;
14594 : }
14595 : }
14596 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14597 : {
14598 0 : {
14599 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14600 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14601 0 : if (res) return res;
14602 : }
14603 : }
14604 : break;
14605 : }
14606 : default:;
14607 : }
14608 : }
14609 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14610 : {
14611 0 : {
14612 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
14613 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14614 0 : if (res) return res;
14615 : }
14616 : }
14617 : break;
14618 : }
14619 100 : case MAX_EXPR:
14620 100 : {
14621 100 : tree _q50 = TREE_OPERAND (_p1, 0);
14622 100 : tree _q51 = TREE_OPERAND (_p1, 1);
14623 100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14624 : {
14625 0 : switch (TREE_CODE (_p2))
14626 : {
14627 0 : case MAX_EXPR:
14628 0 : {
14629 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14630 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14631 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14632 : {
14633 0 : {
14634 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14635 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14636 0 : if (res) return res;
14637 : }
14638 : }
14639 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14640 : {
14641 0 : {
14642 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14643 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14644 0 : if (res) return res;
14645 : }
14646 : }
14647 : break;
14648 : }
14649 : default:;
14650 : }
14651 : }
14652 100 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14653 : {
14654 2 : switch (TREE_CODE (_p2))
14655 : {
14656 1 : case MAX_EXPR:
14657 1 : {
14658 1 : tree _q80 = TREE_OPERAND (_p2, 0);
14659 1 : tree _q81 = TREE_OPERAND (_p2, 1);
14660 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14661 : {
14662 0 : {
14663 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14664 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14665 0 : if (res) return res;
14666 : }
14667 : }
14668 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14669 : {
14670 1 : {
14671 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14672 1 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14673 1 : if (res) return res;
14674 : }
14675 : }
14676 : break;
14677 : }
14678 : default:;
14679 : }
14680 : }
14681 99 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14682 : {
14683 1 : switch (TREE_CODE (_p2))
14684 : {
14685 0 : case MAX_EXPR:
14686 0 : {
14687 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14688 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14689 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14690 : {
14691 0 : {
14692 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14693 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14694 0 : if (res) return res;
14695 : }
14696 : }
14697 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14698 : {
14699 0 : {
14700 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14701 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14702 0 : if (res) return res;
14703 : }
14704 : }
14705 : break;
14706 : }
14707 1 : default:;
14708 : }
14709 1 : {
14710 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
14711 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14712 1 : if (res) return res;
14713 : }
14714 : }
14715 98 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14716 : {
14717 0 : switch (TREE_CODE (_p2))
14718 : {
14719 0 : case MAX_EXPR:
14720 0 : {
14721 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14722 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14723 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14724 : {
14725 0 : {
14726 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14727 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14728 0 : if (res) return res;
14729 : }
14730 : }
14731 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14732 : {
14733 0 : {
14734 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14735 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14736 0 : if (res) return res;
14737 : }
14738 : }
14739 : break;
14740 : }
14741 0 : default:;
14742 : }
14743 0 : {
14744 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
14745 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14746 0 : if (res) return res;
14747 : }
14748 : }
14749 : break;
14750 : }
14751 893950 : default:;
14752 : }
14753 893950 : if (integer_zerop (_q20))
14754 : {
14755 0 : {
14756 0 : tree _q21_pops[1];
14757 0 : if (tree_nop_convert (_q21, _q21_pops))
14758 : {
14759 0 : tree _q40 = _q21_pops[0];
14760 0 : switch (TREE_CODE (_p1))
14761 : {
14762 0 : case MIN_EXPR:
14763 0 : {
14764 0 : tree _q60 = TREE_OPERAND (_p1, 0);
14765 0 : tree _q61 = TREE_OPERAND (_p1, 1);
14766 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
14767 : {
14768 0 : switch (TREE_CODE (_q61))
14769 : {
14770 0 : case INTEGER_CST:
14771 0 : {
14772 0 : switch (TREE_CODE (_p2))
14773 : {
14774 0 : case INTEGER_CST:
14775 0 : {
14776 0 : {
14777 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
14778 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14779 0 : if (res) return res;
14780 : }
14781 0 : break;
14782 : }
14783 : default:;
14784 : }
14785 : break;
14786 : }
14787 : default:;
14788 : }
14789 : }
14790 : break;
14791 : }
14792 : default:;
14793 : }
14794 : }
14795 : }
14796 : }
14797 893950 : if (tree_expr_nonnegative_p (_q21))
14798 : {
14799 577314 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14800 : {
14801 600 : switch (TREE_CODE (_p2))
14802 : {
14803 0 : case ABS_EXPR:
14804 0 : {
14805 0 : tree _q60 = TREE_OPERAND (_p2, 0);
14806 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
14807 : {
14808 0 : {
14809 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14810 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14811 0 : if (res) return res;
14812 : }
14813 : }
14814 : break;
14815 : }
14816 : default:;
14817 : }
14818 : }
14819 577314 : switch (TREE_CODE (_p1))
14820 : {
14821 1 : case ABS_EXPR:
14822 1 : {
14823 1 : tree _q50 = TREE_OPERAND (_p1, 0);
14824 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14825 : {
14826 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
14827 : {
14828 0 : {
14829 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
14830 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14831 0 : if (res) return res;
14832 : }
14833 : }
14834 : }
14835 : break;
14836 : }
14837 : default:;
14838 : }
14839 : }
14840 893950 : switch (TREE_CODE (_q20))
14841 : {
14842 56555 : case PLUS_EXPR:
14843 56555 : {
14844 56555 : tree _q30 = TREE_OPERAND (_q20, 0);
14845 56555 : tree _q31 = TREE_OPERAND (_q20, 1);
14846 56555 : if (integer_onep (_q31))
14847 : {
14848 28532 : switch (TREE_CODE (_p1))
14849 : {
14850 2 : case NEGATE_EXPR:
14851 2 : {
14852 2 : tree _q70 = TREE_OPERAND (_p1, 0);
14853 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
14854 : {
14855 2 : if (integer_onep (_p2))
14856 : {
14857 2 : {
14858 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14859 2 : if (TYPE_UNSIGNED (type)
14860 : )
14861 : {
14862 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1821;
14863 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1821;
14864 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1821;
14865 2 : {
14866 2 : tree res_op0;
14867 2 : {
14868 2 : tree _o1[2], _r1;
14869 2 : _o1[0] = unshare_expr (captures[0]);
14870 2 : _o1[1] = captures[1];
14871 2 : _r1 = fold_build2_loc (loc, GE_EXPR, boolean_type_node, _o1[0], _o1[1]);
14872 2 : res_op0 = _r1;
14873 : }
14874 2 : tree res_op1;
14875 2 : {
14876 2 : tree _o1[1], _r1;
14877 2 : _o1[0] = captures[0];
14878 2 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
14879 2 : res_op1 = _r1;
14880 : }
14881 2 : tree res_op2;
14882 2 : res_op2 = captures[2];
14883 2 : tree _r;
14884 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
14885 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1042, __FILE__, __LINE__, true);
14886 2 : return _r;
14887 : }
14888 0 : next_after_fail1821:;
14889 : }
14890 : }
14891 : }
14892 : }
14893 : break;
14894 : }
14895 : default:;
14896 : }
14897 : }
14898 : break;
14899 : }
14900 : default:;
14901 : }
14902 : break;
14903 : }
14904 1364979 : case LE_EXPR:
14905 1364979 : {
14906 1364979 : tree _q20 = TREE_OPERAND (_p0, 0);
14907 1364979 : tree _q21 = TREE_OPERAND (_p0, 1);
14908 1364979 : switch (TREE_CODE (_q20))
14909 : {
14910 198 : case MINUS_EXPR:
14911 198 : {
14912 198 : tree _q30 = TREE_OPERAND (_q20, 0);
14913 198 : tree _q31 = TREE_OPERAND (_q20, 1);
14914 198 : switch (TREE_CODE (_q30))
14915 : {
14916 0 : case CALL_EXPR:
14917 0 : switch (get_call_combined_fn (_q30))
14918 : {
14919 0 : case CFN_BUILT_IN_CEIL:
14920 0 : if (call_expr_nargs (_q30) == 1)
14921 : {
14922 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14923 0 : switch (TREE_CODE (_q40))
14924 : {
14925 0 : case SSA_NAME:
14926 0 : {
14927 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14928 : {
14929 0 : switch (TREE_CODE (_q31))
14930 : {
14931 0 : case SSA_NAME:
14932 0 : {
14933 0 : switch (TREE_CODE (_q21))
14934 : {
14935 0 : case MINUS_EXPR:
14936 0 : {
14937 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14938 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14939 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14940 : {
14941 0 : switch (TREE_CODE (_q80))
14942 : {
14943 0 : case SSA_NAME:
14944 0 : {
14945 0 : switch (TREE_CODE (_q81))
14946 : {
14947 0 : case CALL_EXPR:
14948 0 : switch (get_call_combined_fn (_q81))
14949 : {
14950 0 : case CFN_BUILT_IN_FLOOR:
14951 0 : if (call_expr_nargs (_q81) == 1)
14952 : {
14953 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14954 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14955 : {
14956 0 : switch (TREE_CODE (_q110))
14957 : {
14958 0 : case SSA_NAME:
14959 0 : {
14960 0 : switch (TREE_CODE (_p1))
14961 : {
14962 0 : case CALL_EXPR:
14963 0 : switch (get_call_combined_fn (_p1))
14964 : {
14965 0 : case CFN_BUILT_IN_CEIL:
14966 0 : if (call_expr_nargs (_p1) == 1)
14967 : {
14968 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14969 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14970 : {
14971 0 : switch (TREE_CODE (_q140))
14972 : {
14973 0 : case SSA_NAME:
14974 0 : {
14975 0 : switch (TREE_CODE (_p2))
14976 : {
14977 0 : case CALL_EXPR:
14978 0 : switch (get_call_combined_fn (_p2))
14979 : {
14980 0 : case CFN_BUILT_IN_FLOOR:
14981 0 : if (call_expr_nargs (_p2) == 1)
14982 : {
14983 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14984 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14985 : {
14986 0 : switch (TREE_CODE (_q170))
14987 : {
14988 0 : case SSA_NAME:
14989 0 : {
14990 0 : {
14991 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14992 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
14993 0 : if (res) return res;
14994 : }
14995 0 : break;
14996 : }
14997 : default:;
14998 : }
14999 : }
15000 : }
15001 : break;
15002 : default:;
15003 : }
15004 : break;
15005 : default:;
15006 : }
15007 : break;
15008 : }
15009 : default:;
15010 : }
15011 : }
15012 : }
15013 : break;
15014 : default:;
15015 : }
15016 : break;
15017 : default:;
15018 : }
15019 : break;
15020 : }
15021 : default:;
15022 : }
15023 : }
15024 : }
15025 : break;
15026 : default:;
15027 : }
15028 : break;
15029 : default:;
15030 : }
15031 : break;
15032 : }
15033 : default:;
15034 : }
15035 : }
15036 : break;
15037 : }
15038 : default:;
15039 : }
15040 : break;
15041 : }
15042 : default:;
15043 : }
15044 : }
15045 : break;
15046 : }
15047 : default:;
15048 : }
15049 : }
15050 : break;
15051 0 : case CFN_CEIL:
15052 0 : if (call_expr_nargs (_q30) == 1)
15053 : {
15054 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15055 0 : switch (TREE_CODE (_q40))
15056 : {
15057 0 : case SSA_NAME:
15058 0 : {
15059 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15060 : {
15061 0 : switch (TREE_CODE (_q31))
15062 : {
15063 0 : case SSA_NAME:
15064 0 : {
15065 0 : switch (TREE_CODE (_q21))
15066 : {
15067 0 : case MINUS_EXPR:
15068 0 : {
15069 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15070 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15071 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15072 : {
15073 0 : switch (TREE_CODE (_q80))
15074 : {
15075 0 : case SSA_NAME:
15076 0 : {
15077 0 : switch (TREE_CODE (_q81))
15078 : {
15079 0 : case CALL_EXPR:
15080 0 : switch (get_call_combined_fn (_q81))
15081 : {
15082 0 : case CFN_FLOOR:
15083 0 : if (call_expr_nargs (_q81) == 1)
15084 : {
15085 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15086 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15087 : {
15088 0 : switch (TREE_CODE (_q110))
15089 : {
15090 0 : case SSA_NAME:
15091 0 : {
15092 0 : switch (TREE_CODE (_p1))
15093 : {
15094 0 : case CALL_EXPR:
15095 0 : switch (get_call_combined_fn (_p1))
15096 : {
15097 0 : case CFN_CEIL:
15098 0 : if (call_expr_nargs (_p1) == 1)
15099 : {
15100 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15101 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15102 : {
15103 0 : switch (TREE_CODE (_q140))
15104 : {
15105 0 : case SSA_NAME:
15106 0 : {
15107 0 : switch (TREE_CODE (_p2))
15108 : {
15109 0 : case CALL_EXPR:
15110 0 : switch (get_call_combined_fn (_p2))
15111 : {
15112 0 : case CFN_FLOOR:
15113 0 : if (call_expr_nargs (_p2) == 1)
15114 : {
15115 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15116 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15117 : {
15118 0 : switch (TREE_CODE (_q170))
15119 : {
15120 0 : case SSA_NAME:
15121 0 : {
15122 0 : {
15123 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15124 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
15125 0 : if (res) return res;
15126 : }
15127 0 : break;
15128 : }
15129 : default:;
15130 : }
15131 : }
15132 : }
15133 : break;
15134 : default:;
15135 : }
15136 : break;
15137 : default:;
15138 : }
15139 : break;
15140 : }
15141 : default:;
15142 : }
15143 : }
15144 : }
15145 : break;
15146 : default:;
15147 : }
15148 : break;
15149 : default:;
15150 : }
15151 : break;
15152 : }
15153 : default:;
15154 : }
15155 : }
15156 : }
15157 : break;
15158 : default:;
15159 : }
15160 : break;
15161 : default:;
15162 : }
15163 : break;
15164 : }
15165 : default:;
15166 : }
15167 : }
15168 : break;
15169 : }
15170 : default:;
15171 : }
15172 : break;
15173 : }
15174 : default:;
15175 : }
15176 : }
15177 : break;
15178 : }
15179 : default:;
15180 : }
15181 : }
15182 : break;
15183 0 : case CFN_BUILT_IN_CEILF:
15184 0 : if (call_expr_nargs (_q30) == 1)
15185 : {
15186 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15187 0 : switch (TREE_CODE (_q40))
15188 : {
15189 0 : case SSA_NAME:
15190 0 : {
15191 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15192 : {
15193 0 : switch (TREE_CODE (_q31))
15194 : {
15195 0 : case SSA_NAME:
15196 0 : {
15197 0 : switch (TREE_CODE (_q21))
15198 : {
15199 0 : case MINUS_EXPR:
15200 0 : {
15201 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15202 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15203 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15204 : {
15205 0 : switch (TREE_CODE (_q80))
15206 : {
15207 0 : case SSA_NAME:
15208 0 : {
15209 0 : switch (TREE_CODE (_q81))
15210 : {
15211 0 : case CALL_EXPR:
15212 0 : switch (get_call_combined_fn (_q81))
15213 : {
15214 0 : case CFN_BUILT_IN_FLOORF:
15215 0 : if (call_expr_nargs (_q81) == 1)
15216 : {
15217 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15218 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15219 : {
15220 0 : switch (TREE_CODE (_q110))
15221 : {
15222 0 : case SSA_NAME:
15223 0 : {
15224 0 : switch (TREE_CODE (_p1))
15225 : {
15226 0 : case CALL_EXPR:
15227 0 : switch (get_call_combined_fn (_p1))
15228 : {
15229 0 : case CFN_BUILT_IN_CEILF:
15230 0 : if (call_expr_nargs (_p1) == 1)
15231 : {
15232 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15233 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15234 : {
15235 0 : switch (TREE_CODE (_q140))
15236 : {
15237 0 : case SSA_NAME:
15238 0 : {
15239 0 : switch (TREE_CODE (_p2))
15240 : {
15241 0 : case CALL_EXPR:
15242 0 : switch (get_call_combined_fn (_p2))
15243 : {
15244 0 : case CFN_BUILT_IN_FLOORF:
15245 0 : if (call_expr_nargs (_p2) == 1)
15246 : {
15247 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15248 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15249 : {
15250 0 : switch (TREE_CODE (_q170))
15251 : {
15252 0 : case SSA_NAME:
15253 0 : {
15254 0 : {
15255 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15256 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
15257 0 : if (res) return res;
15258 : }
15259 0 : break;
15260 : }
15261 : default:;
15262 : }
15263 : }
15264 : }
15265 : break;
15266 : default:;
15267 : }
15268 : break;
15269 : default:;
15270 : }
15271 : break;
15272 : }
15273 : default:;
15274 : }
15275 : }
15276 : }
15277 : break;
15278 : default:;
15279 : }
15280 : break;
15281 : default:;
15282 : }
15283 : break;
15284 : }
15285 : default:;
15286 : }
15287 : }
15288 : }
15289 : break;
15290 : default:;
15291 : }
15292 : break;
15293 : default:;
15294 : }
15295 : break;
15296 : }
15297 : default:;
15298 : }
15299 : }
15300 : break;
15301 : }
15302 : default:;
15303 : }
15304 : break;
15305 : }
15306 : default:;
15307 : }
15308 : }
15309 : break;
15310 : }
15311 : default:;
15312 : }
15313 : }
15314 : break;
15315 0 : case CFN_BUILT_IN_CEILL:
15316 0 : if (call_expr_nargs (_q30) == 1)
15317 : {
15318 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15319 0 : switch (TREE_CODE (_q40))
15320 : {
15321 0 : case SSA_NAME:
15322 0 : {
15323 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15324 : {
15325 0 : switch (TREE_CODE (_q31))
15326 : {
15327 0 : case SSA_NAME:
15328 0 : {
15329 0 : switch (TREE_CODE (_q21))
15330 : {
15331 0 : case MINUS_EXPR:
15332 0 : {
15333 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15334 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15335 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15336 : {
15337 0 : switch (TREE_CODE (_q80))
15338 : {
15339 0 : case SSA_NAME:
15340 0 : {
15341 0 : switch (TREE_CODE (_q81))
15342 : {
15343 0 : case CALL_EXPR:
15344 0 : switch (get_call_combined_fn (_q81))
15345 : {
15346 0 : case CFN_BUILT_IN_FLOORL:
15347 0 : if (call_expr_nargs (_q81) == 1)
15348 : {
15349 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15350 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15351 : {
15352 0 : switch (TREE_CODE (_q110))
15353 : {
15354 0 : case SSA_NAME:
15355 0 : {
15356 0 : switch (TREE_CODE (_p1))
15357 : {
15358 0 : case CALL_EXPR:
15359 0 : switch (get_call_combined_fn (_p1))
15360 : {
15361 0 : case CFN_BUILT_IN_CEILL:
15362 0 : if (call_expr_nargs (_p1) == 1)
15363 : {
15364 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15365 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15366 : {
15367 0 : switch (TREE_CODE (_q140))
15368 : {
15369 0 : case SSA_NAME:
15370 0 : {
15371 0 : switch (TREE_CODE (_p2))
15372 : {
15373 0 : case CALL_EXPR:
15374 0 : switch (get_call_combined_fn (_p2))
15375 : {
15376 0 : case CFN_BUILT_IN_FLOORL:
15377 0 : if (call_expr_nargs (_p2) == 1)
15378 : {
15379 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15380 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15381 : {
15382 0 : switch (TREE_CODE (_q170))
15383 : {
15384 0 : case SSA_NAME:
15385 0 : {
15386 0 : {
15387 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15388 0 : tree res = generic_simplify_344 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
15389 0 : if (res) return res;
15390 : }
15391 0 : break;
15392 : }
15393 : default:;
15394 : }
15395 : }
15396 : }
15397 : break;
15398 : default:;
15399 : }
15400 : break;
15401 : default:;
15402 : }
15403 : break;
15404 : }
15405 : default:;
15406 : }
15407 : }
15408 : }
15409 : break;
15410 : default:;
15411 : }
15412 : break;
15413 : default:;
15414 : }
15415 : break;
15416 : }
15417 : default:;
15418 : }
15419 : }
15420 : }
15421 : break;
15422 : default:;
15423 : }
15424 : break;
15425 : default:;
15426 : }
15427 : break;
15428 : }
15429 : default:;
15430 : }
15431 : }
15432 : break;
15433 : }
15434 : default:;
15435 : }
15436 : break;
15437 : }
15438 : default:;
15439 : }
15440 : }
15441 : break;
15442 : }
15443 : default:;
15444 : }
15445 : }
15446 : break;
15447 : default:;
15448 : }
15449 : break;
15450 : default:;
15451 : }
15452 : break;
15453 : }
15454 1364979 : default:;
15455 : }
15456 1364979 : if (integer_zerop (_q21))
15457 : {
15458 124267 : switch (TREE_CODE (_p1))
15459 : {
15460 218 : case NEGATE_EXPR:
15461 218 : {
15462 218 : tree _q50 = TREE_OPERAND (_p1, 0);
15463 218 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15464 : {
15465 70 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
15466 : {
15467 70 : if (integer_zerop (_p2))
15468 : {
15469 70 : {
15470 70 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15471 70 : if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)
15472 : )
15473 : {
15474 68 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1822;
15475 68 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1822;
15476 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1822;
15477 68 : {
15478 68 : tree res_op0;
15479 68 : res_op0 = captures[2];
15480 68 : tree res_op1;
15481 68 : res_op1 = captures[1];
15482 68 : tree _r;
15483 68 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
15484 68 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1043, __FILE__, __LINE__, true);
15485 68 : return _r;
15486 : }
15487 2 : next_after_fail1822:;
15488 : }
15489 : }
15490 : }
15491 : }
15492 : }
15493 : break;
15494 : }
15495 : default:;
15496 : }
15497 : }
15498 1364911 : switch (TREE_CODE (_q20))
15499 : {
15500 141707 : CASE_CONVERT:
15501 141707 : {
15502 141707 : tree _q30 = TREE_OPERAND (_q20, 0);
15503 141707 : switch (TREE_CODE (_q21))
15504 : {
15505 104651 : case INTEGER_CST:
15506 104651 : {
15507 104651 : switch (TREE_CODE (_p1))
15508 : {
15509 623 : CASE_CONVERT:
15510 623 : {
15511 623 : tree _q60 = TREE_OPERAND (_p1, 0);
15512 623 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15513 : {
15514 8 : switch (TREE_CODE (_p2))
15515 : {
15516 8 : case INTEGER_CST:
15517 8 : {
15518 8 : {
15519 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15520 8 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15521 8 : if (res) return res;
15522 : }
15523 8 : break;
15524 : }
15525 : default:;
15526 : }
15527 : }
15528 : break;
15529 : }
15530 104651 : default:;
15531 : }
15532 104651 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
15533 : {
15534 21 : switch (TREE_CODE (_p2))
15535 : {
15536 21 : case INTEGER_CST:
15537 21 : {
15538 21 : {
15539 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15540 21 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15541 21 : if (res) return res;
15542 : }
15543 21 : break;
15544 : }
15545 : default:;
15546 : }
15547 : }
15548 104651 : switch (TREE_CODE (_p1))
15549 : {
15550 120 : case PLUS_EXPR:
15551 120 : {
15552 120 : tree _q60 = TREE_OPERAND (_p1, 0);
15553 120 : tree _q61 = TREE_OPERAND (_p1, 1);
15554 120 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15555 : {
15556 6 : switch (TREE_CODE (_q61))
15557 : {
15558 6 : case INTEGER_CST:
15559 6 : {
15560 6 : switch (TREE_CODE (_p2))
15561 : {
15562 6 : case INTEGER_CST:
15563 6 : {
15564 6 : {
15565 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15566 6 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15567 6 : if (res) return res;
15568 : }
15569 6 : break;
15570 : }
15571 : default:;
15572 : }
15573 : break;
15574 : }
15575 : default:;
15576 : }
15577 : }
15578 : break;
15579 : }
15580 700 : case MINUS_EXPR:
15581 700 : {
15582 700 : tree _q60 = TREE_OPERAND (_p1, 0);
15583 700 : tree _q61 = TREE_OPERAND (_p1, 1);
15584 700 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15585 : {
15586 0 : switch (TREE_CODE (_q61))
15587 : {
15588 0 : case INTEGER_CST:
15589 0 : {
15590 0 : switch (TREE_CODE (_p2))
15591 : {
15592 0 : case INTEGER_CST:
15593 0 : {
15594 0 : {
15595 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15596 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15597 0 : if (res) return res;
15598 : }
15599 0 : break;
15600 : }
15601 : default:;
15602 : }
15603 : break;
15604 : }
15605 : default:;
15606 : }
15607 : }
15608 : break;
15609 : }
15610 : default:;
15611 : }
15612 : break;
15613 : }
15614 : default:;
15615 : }
15616 : break;
15617 : }
15618 1364911 : default:;
15619 : }
15620 1364911 : switch (TREE_CODE (_q21))
15621 : {
15622 974781 : case INTEGER_CST:
15623 974781 : {
15624 974781 : switch (TREE_CODE (_p1))
15625 : {
15626 23820 : CASE_CONVERT:
15627 23820 : {
15628 23820 : tree _q50 = TREE_OPERAND (_p1, 0);
15629 23820 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15630 : {
15631 228 : switch (TREE_CODE (_p2))
15632 : {
15633 210 : case INTEGER_CST:
15634 210 : {
15635 210 : {
15636 210 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15637 210 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15638 210 : if (res) return res;
15639 : }
15640 110 : break;
15641 : }
15642 : default:;
15643 : }
15644 : }
15645 : break;
15646 : }
15647 974681 : default:;
15648 : }
15649 974681 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15650 : {
15651 275 : switch (TREE_CODE (_p2))
15652 : {
15653 238 : case INTEGER_CST:
15654 238 : {
15655 238 : {
15656 238 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15657 238 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15658 238 : if (res) return res;
15659 : }
15660 93 : break;
15661 : }
15662 : default:;
15663 : }
15664 : }
15665 974536 : switch (TREE_CODE (_p1))
15666 : {
15667 3100 : case PLUS_EXPR:
15668 3100 : {
15669 3100 : tree _q50 = TREE_OPERAND (_p1, 0);
15670 3100 : tree _q51 = TREE_OPERAND (_p1, 1);
15671 3100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15672 : {
15673 201 : switch (TREE_CODE (_q51))
15674 : {
15675 201 : case INTEGER_CST:
15676 201 : {
15677 201 : switch (TREE_CODE (_p2))
15678 : {
15679 182 : case INTEGER_CST:
15680 182 : {
15681 182 : {
15682 182 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15683 182 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15684 182 : if (res) return res;
15685 : }
15686 182 : break;
15687 : }
15688 : default:;
15689 : }
15690 : break;
15691 : }
15692 : default:;
15693 : }
15694 : }
15695 : break;
15696 : }
15697 7220 : case MINUS_EXPR:
15698 7220 : {
15699 7220 : tree _q50 = TREE_OPERAND (_p1, 0);
15700 7220 : tree _q51 = TREE_OPERAND (_p1, 1);
15701 7220 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15702 : {
15703 0 : switch (TREE_CODE (_q51))
15704 : {
15705 0 : case INTEGER_CST:
15706 0 : {
15707 0 : switch (TREE_CODE (_p2))
15708 : {
15709 0 : case INTEGER_CST:
15710 0 : {
15711 0 : {
15712 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15713 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15714 0 : if (res) return res;
15715 : }
15716 0 : break;
15717 : }
15718 : default:;
15719 : }
15720 : break;
15721 : }
15722 : default:;
15723 : }
15724 : }
15725 : break;
15726 : }
15727 : default:;
15728 : }
15729 : break;
15730 : }
15731 1364666 : default:;
15732 : }
15733 1364666 : switch (TREE_CODE (_p1))
15734 : {
15735 37 : case MIN_EXPR:
15736 37 : {
15737 37 : tree _q50 = TREE_OPERAND (_p1, 0);
15738 37 : tree _q51 = TREE_OPERAND (_p1, 1);
15739 37 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15740 : {
15741 1 : switch (TREE_CODE (_p2))
15742 : {
15743 0 : case MIN_EXPR:
15744 0 : {
15745 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15746 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15747 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15748 : {
15749 0 : {
15750 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
15751 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15752 0 : if (res) return res;
15753 : }
15754 : }
15755 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15756 : {
15757 0 : {
15758 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
15759 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15760 0 : if (res) return res;
15761 : }
15762 : }
15763 : break;
15764 : }
15765 : default:;
15766 : }
15767 : }
15768 37 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15769 : {
15770 1 : switch (TREE_CODE (_p2))
15771 : {
15772 0 : case MIN_EXPR:
15773 0 : {
15774 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15775 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15776 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15777 : {
15778 0 : {
15779 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
15780 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15781 0 : if (res) return res;
15782 : }
15783 : }
15784 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15785 : {
15786 0 : {
15787 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
15788 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15789 0 : if (res) return res;
15790 : }
15791 : }
15792 : break;
15793 : }
15794 : default:;
15795 : }
15796 : }
15797 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15798 : {
15799 1 : switch (TREE_CODE (_p2))
15800 : {
15801 0 : case MIN_EXPR:
15802 0 : {
15803 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15804 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15805 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15806 : {
15807 0 : {
15808 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
15809 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15810 0 : if (res) return res;
15811 : }
15812 : }
15813 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15814 : {
15815 0 : {
15816 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
15817 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15818 0 : if (res) return res;
15819 : }
15820 : }
15821 : break;
15822 : }
15823 1 : default:;
15824 : }
15825 1 : {
15826 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
15827 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15828 1 : if (res) return res;
15829 : }
15830 : }
15831 36 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15832 : {
15833 1 : switch (TREE_CODE (_p2))
15834 : {
15835 0 : case MIN_EXPR:
15836 0 : {
15837 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15838 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15839 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15840 : {
15841 0 : {
15842 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
15843 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15844 0 : if (res) return res;
15845 : }
15846 : }
15847 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15848 : {
15849 0 : {
15850 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
15851 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15852 0 : if (res) return res;
15853 : }
15854 : }
15855 : break;
15856 : }
15857 1 : default:;
15858 : }
15859 1 : {
15860 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
15861 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
15862 1 : if (res) return res;
15863 : }
15864 : }
15865 : break;
15866 : }
15867 12 : case MAX_EXPR:
15868 12 : {
15869 12 : tree _q50 = TREE_OPERAND (_p1, 0);
15870 12 : tree _q51 = TREE_OPERAND (_p1, 1);
15871 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15872 : {
15873 0 : switch (TREE_CODE (_p2))
15874 : {
15875 0 : case MAX_EXPR:
15876 0 : {
15877 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15878 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15879 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15880 : {
15881 0 : {
15882 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
15883 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15884 0 : if (res) return res;
15885 : }
15886 : }
15887 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15888 : {
15889 0 : {
15890 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
15891 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15892 0 : if (res) return res;
15893 : }
15894 : }
15895 : break;
15896 : }
15897 0 : default:;
15898 : }
15899 0 : {
15900 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
15901 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15902 0 : if (res) return res;
15903 : }
15904 : }
15905 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15906 : {
15907 0 : switch (TREE_CODE (_p2))
15908 : {
15909 0 : case MAX_EXPR:
15910 0 : {
15911 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15912 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15913 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15914 : {
15915 0 : {
15916 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
15917 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15918 0 : if (res) return res;
15919 : }
15920 : }
15921 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15922 : {
15923 0 : {
15924 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
15925 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15926 0 : if (res) return res;
15927 : }
15928 : }
15929 : break;
15930 : }
15931 : default:;
15932 : }
15933 : }
15934 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15935 : {
15936 0 : switch (TREE_CODE (_p2))
15937 : {
15938 0 : case MAX_EXPR:
15939 0 : {
15940 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15941 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15942 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15943 : {
15944 0 : {
15945 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
15946 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15947 0 : if (res) return res;
15948 : }
15949 : }
15950 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15951 : {
15952 0 : {
15953 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
15954 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15955 0 : if (res) return res;
15956 : }
15957 : }
15958 : break;
15959 : }
15960 : default:;
15961 : }
15962 : }
15963 12 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15964 : {
15965 0 : switch (TREE_CODE (_p2))
15966 : {
15967 0 : case MAX_EXPR:
15968 0 : {
15969 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15970 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15971 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15972 : {
15973 0 : {
15974 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
15975 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15976 0 : if (res) return res;
15977 : }
15978 : }
15979 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15980 : {
15981 0 : {
15982 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
15983 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
15984 0 : if (res) return res;
15985 : }
15986 : }
15987 : break;
15988 : }
15989 : default:;
15990 : }
15991 : }
15992 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15993 : {
15994 0 : {
15995 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
15996 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
15997 0 : if (res) return res;
15998 : }
15999 : }
16000 : break;
16001 : }
16002 1364664 : default:;
16003 : }
16004 1364664 : if (integer_zerop (_q20))
16005 : {
16006 2 : {
16007 2 : tree _q21_pops[1];
16008 2 : if (tree_nop_convert (_q21, _q21_pops))
16009 : {
16010 0 : tree _q40 = _q21_pops[0];
16011 0 : switch (TREE_CODE (_p1))
16012 : {
16013 0 : case MAX_EXPR:
16014 0 : {
16015 0 : tree _q60 = TREE_OPERAND (_p1, 0);
16016 0 : tree _q61 = TREE_OPERAND (_p1, 1);
16017 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
16018 : {
16019 0 : switch (TREE_CODE (_q61))
16020 : {
16021 0 : case INTEGER_CST:
16022 0 : {
16023 0 : switch (TREE_CODE (_p2))
16024 : {
16025 0 : case INTEGER_CST:
16026 0 : {
16027 0 : {
16028 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
16029 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16030 0 : if (res) return res;
16031 : }
16032 0 : break;
16033 : }
16034 : default:;
16035 : }
16036 : break;
16037 : }
16038 : default:;
16039 : }
16040 : }
16041 : break;
16042 : }
16043 : default:;
16044 : }
16045 : }
16046 : }
16047 : }
16048 1364664 : if (tree_expr_nonnegative_p (_q20))
16049 : {
16050 865651 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16051 : {
16052 12 : switch (TREE_CODE (_p2))
16053 : {
16054 0 : case ABS_EXPR:
16055 0 : {
16056 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16057 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16058 : {
16059 0 : {
16060 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16061 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16062 0 : if (res) return res;
16063 : }
16064 : }
16065 : break;
16066 : }
16067 : default:;
16068 : }
16069 : }
16070 865651 : switch (TREE_CODE (_p1))
16071 : {
16072 0 : case ABS_EXPR:
16073 0 : {
16074 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16075 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16076 : {
16077 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16078 : {
16079 0 : {
16080 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
16081 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16082 0 : if (res) return res;
16083 : }
16084 : }
16085 : }
16086 : break;
16087 : }
16088 : default:;
16089 : }
16090 : }
16091 : break;
16092 : }
16093 1680154 : case EQ_EXPR:
16094 1680154 : {
16095 1680154 : tree _q20 = TREE_OPERAND (_p0, 0);
16096 1680154 : tree _q21 = TREE_OPERAND (_p0, 1);
16097 1680154 : if (tree_zero_one_valued_p (_q20))
16098 : {
16099 158652 : if (integer_zerop (_q21))
16100 : {
16101 976 : switch (TREE_CODE (_p2))
16102 : {
16103 1 : case BIT_XOR_EXPR:
16104 1 : {
16105 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16106 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16107 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16108 : {
16109 1 : {
16110 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16111 1 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16112 1 : if (res) return res;
16113 : }
16114 : }
16115 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16116 : {
16117 0 : {
16118 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16119 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16120 0 : if (res) return res;
16121 : }
16122 : }
16123 : break;
16124 : }
16125 1 : case BIT_IOR_EXPR:
16126 1 : {
16127 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16128 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16129 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16130 : {
16131 1 : {
16132 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16133 1 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16134 1 : if (res) return res;
16135 : }
16136 : }
16137 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16138 : {
16139 0 : {
16140 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16141 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16142 0 : if (res) return res;
16143 : }
16144 : }
16145 : break;
16146 : }
16147 1 : case PLUS_EXPR:
16148 1 : {
16149 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16150 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16151 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16152 : {
16153 1 : {
16154 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16155 1 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16156 1 : if (res) return res;
16157 : }
16158 : }
16159 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16160 : {
16161 0 : {
16162 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16163 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16164 0 : if (res) return res;
16165 : }
16166 : }
16167 : break;
16168 : }
16169 : default:;
16170 : }
16171 : }
16172 : }
16173 1680151 : if (integer_zerop (_q21))
16174 : {
16175 565498 : switch (TREE_CODE (_p2))
16176 : {
16177 17198 : case PLUS_EXPR:
16178 17198 : {
16179 17198 : tree _q60 = TREE_OPERAND (_p2, 0);
16180 17198 : tree _q61 = TREE_OPERAND (_p2, 1);
16181 17198 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16182 : {
16183 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16184 : {
16185 0 : {
16186 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16187 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16188 0 : if (res) return res;
16189 : }
16190 : }
16191 : }
16192 17198 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16193 : {
16194 1979 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16195 : {
16196 0 : {
16197 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16198 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16199 0 : if (res) return res;
16200 : }
16201 : }
16202 : }
16203 : break;
16204 : }
16205 108 : case BIT_IOR_EXPR:
16206 108 : {
16207 108 : tree _q60 = TREE_OPERAND (_p2, 0);
16208 108 : tree _q61 = TREE_OPERAND (_p2, 1);
16209 108 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16210 : {
16211 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16212 : {
16213 0 : {
16214 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16215 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16216 0 : if (res) return res;
16217 : }
16218 : }
16219 : }
16220 108 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16221 : {
16222 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16223 : {
16224 0 : {
16225 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16226 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16227 0 : if (res) return res;
16228 : }
16229 : }
16230 : }
16231 : break;
16232 : }
16233 0 : case BIT_XOR_EXPR:
16234 0 : {
16235 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16236 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16237 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16238 : {
16239 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16240 : {
16241 0 : {
16242 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16243 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16244 0 : if (res) return res;
16245 : }
16246 : }
16247 : }
16248 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16249 : {
16250 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16251 : {
16252 0 : {
16253 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16254 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16255 0 : if (res) return res;
16256 : }
16257 : }
16258 : }
16259 : break;
16260 : }
16261 1 : case LROTATE_EXPR:
16262 1 : {
16263 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16264 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16265 1 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16266 : {
16267 1 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16268 : {
16269 1 : {
16270 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16271 1 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16272 1 : if (res) return res;
16273 : }
16274 : }
16275 : }
16276 : break;
16277 : }
16278 0 : case RROTATE_EXPR:
16279 0 : {
16280 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16281 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16282 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16283 : {
16284 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16285 : {
16286 0 : {
16287 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16288 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16289 0 : if (res) return res;
16290 : }
16291 : }
16292 : }
16293 : break;
16294 : }
16295 48 : case LSHIFT_EXPR:
16296 48 : {
16297 48 : tree _q60 = TREE_OPERAND (_p2, 0);
16298 48 : tree _q61 = TREE_OPERAND (_p2, 1);
16299 48 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16300 : {
16301 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16302 : {
16303 0 : {
16304 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16305 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16306 0 : if (res) return res;
16307 : }
16308 : }
16309 : }
16310 : break;
16311 : }
16312 46 : case RSHIFT_EXPR:
16313 46 : {
16314 46 : tree _q60 = TREE_OPERAND (_p2, 0);
16315 46 : tree _q61 = TREE_OPERAND (_p2, 1);
16316 46 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16317 : {
16318 20 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16319 : {
16320 20 : {
16321 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16322 20 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16323 20 : if (res) return res;
16324 : }
16325 : }
16326 : }
16327 : break;
16328 : }
16329 183 : case MINUS_EXPR:
16330 183 : {
16331 183 : tree _q60 = TREE_OPERAND (_p2, 0);
16332 183 : tree _q61 = TREE_OPERAND (_p2, 1);
16333 183 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16334 : {
16335 7 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16336 : {
16337 0 : {
16338 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16339 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16340 0 : if (res) return res;
16341 : }
16342 : }
16343 : }
16344 : break;
16345 : }
16346 151744 : case POINTER_PLUS_EXPR:
16347 151744 : {
16348 151744 : tree _q60 = TREE_OPERAND (_p2, 0);
16349 151744 : tree _q61 = TREE_OPERAND (_p2, 1);
16350 151744 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16351 : {
16352 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16353 : {
16354 0 : {
16355 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16356 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures);
16357 0 : if (res) return res;
16358 : }
16359 : }
16360 : }
16361 : break;
16362 : }
16363 : default:;
16364 : }
16365 : }
16366 1680130 : if (integer_onep (_q21))
16367 : {
16368 47897 : switch (TREE_CODE (_p2))
16369 : {
16370 104 : case TRUNC_DIV_EXPR:
16371 104 : {
16372 104 : tree _q60 = TREE_OPERAND (_p2, 0);
16373 104 : tree _q61 = TREE_OPERAND (_p2, 1);
16374 104 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16375 : {
16376 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16377 : {
16378 0 : {
16379 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16380 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
16381 0 : if (res) return res;
16382 : }
16383 : }
16384 : }
16385 : break;
16386 : }
16387 0 : case CEIL_DIV_EXPR:
16388 0 : {
16389 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16390 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16391 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16392 : {
16393 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16394 : {
16395 0 : {
16396 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16397 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
16398 0 : if (res) return res;
16399 : }
16400 : }
16401 : }
16402 : break;
16403 : }
16404 0 : case FLOOR_DIV_EXPR:
16405 0 : {
16406 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16407 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16408 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16409 : {
16410 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16411 : {
16412 0 : {
16413 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16414 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
16415 0 : if (res) return res;
16416 : }
16417 : }
16418 : }
16419 : break;
16420 : }
16421 0 : case ROUND_DIV_EXPR:
16422 0 : {
16423 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16424 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16425 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16426 : {
16427 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16428 : {
16429 0 : {
16430 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16431 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
16432 0 : if (res) return res;
16433 : }
16434 : }
16435 : }
16436 : break;
16437 : }
16438 0 : case EXACT_DIV_EXPR:
16439 0 : {
16440 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16441 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16442 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16443 : {
16444 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16445 : {
16446 0 : {
16447 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16448 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
16449 0 : if (res) return res;
16450 : }
16451 : }
16452 : }
16453 : break;
16454 : }
16455 0 : case MULT_EXPR:
16456 0 : {
16457 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16458 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16459 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16460 : {
16461 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16462 : {
16463 0 : {
16464 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16465 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16466 0 : if (res) return res;
16467 : }
16468 : }
16469 : }
16470 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16471 : {
16472 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16473 : {
16474 0 : {
16475 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16476 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16477 0 : if (res) return res;
16478 : }
16479 : }
16480 : }
16481 : break;
16482 : }
16483 : default:;
16484 : }
16485 : }
16486 1680130 : if (integer_all_onesp (_q21))
16487 : {
16488 42021 : switch (TREE_CODE (_p2))
16489 : {
16490 0 : case BIT_AND_EXPR:
16491 0 : {
16492 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16493 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16494 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16495 : {
16496 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16497 : {
16498 0 : {
16499 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16500 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16501 0 : if (res) return res;
16502 : }
16503 : }
16504 : }
16505 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16506 : {
16507 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16508 : {
16509 0 : {
16510 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16511 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16512 0 : if (res) return res;
16513 : }
16514 : }
16515 : }
16516 : break;
16517 : }
16518 : default:;
16519 : }
16520 : }
16521 1680130 : switch (TREE_CODE (_q20))
16522 : {
16523 90086 : case BIT_AND_EXPR:
16524 90086 : {
16525 90086 : tree _q30 = TREE_OPERAND (_q20, 0);
16526 90086 : tree _q31 = TREE_OPERAND (_q20, 1);
16527 90086 : switch (TREE_CODE (_q31))
16528 : {
16529 89833 : case INTEGER_CST:
16530 89833 : {
16531 89833 : if (integer_zerop (_q21))
16532 : {
16533 1565 : switch (TREE_CODE (_p1))
16534 : {
16535 0 : case BIT_IOR_EXPR:
16536 0 : {
16537 0 : tree _q70 = TREE_OPERAND (_p1, 0);
16538 0 : tree _q71 = TREE_OPERAND (_p1, 1);
16539 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16540 : {
16541 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
16542 : {
16543 0 : switch (TREE_CODE (_q71))
16544 : {
16545 0 : case INTEGER_CST:
16546 0 : {
16547 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
16548 : {
16549 0 : {
16550 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
16551 0 : if (wi::popcount (wi::to_wide (captures[1])) == 1
16552 : )
16553 : {
16554 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1823;
16555 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1823;
16556 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1823;
16557 0 : {
16558 0 : tree _r;
16559 0 : _r = captures[2];
16560 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1044, __FILE__, __LINE__, true);
16561 0 : return _r;
16562 : }
16563 0 : next_after_fail1823:;
16564 : }
16565 : }
16566 : }
16567 : break;
16568 : }
16569 : default:;
16570 : }
16571 : }
16572 : }
16573 : break;
16574 : }
16575 : default:;
16576 : }
16577 : }
16578 : break;
16579 : }
16580 : default:;
16581 : }
16582 : break;
16583 : }
16584 64089 : CASE_CONVERT:
16585 64089 : {
16586 64089 : tree _q30 = TREE_OPERAND (_q20, 0);
16587 64089 : switch (TREE_CODE (_q21))
16588 : {
16589 25005 : case INTEGER_CST:
16590 25005 : {
16591 25005 : switch (TREE_CODE (_p1))
16592 : {
16593 11249 : CASE_CONVERT:
16594 11249 : {
16595 11249 : tree _q60 = TREE_OPERAND (_p1, 0);
16596 11249 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
16597 : {
16598 57 : switch (TREE_CODE (_p2))
16599 : {
16600 56 : case INTEGER_CST:
16601 56 : {
16602 56 : {
16603 56 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16604 56 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16605 56 : if (res) return res;
16606 : }
16607 56 : break;
16608 : }
16609 : default:;
16610 : }
16611 : }
16612 : break;
16613 : }
16614 25005 : default:;
16615 : }
16616 25005 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
16617 : {
16618 118 : switch (TREE_CODE (_p2))
16619 : {
16620 112 : case INTEGER_CST:
16621 112 : {
16622 112 : {
16623 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16624 112 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16625 112 : if (res) return res;
16626 : }
16627 112 : break;
16628 : }
16629 : default:;
16630 : }
16631 : }
16632 : break;
16633 : }
16634 : default:;
16635 : }
16636 : break;
16637 : }
16638 1680130 : default:;
16639 : }
16640 1680130 : switch (TREE_CODE (_q21))
16641 : {
16642 877420 : case INTEGER_CST:
16643 877420 : {
16644 877420 : switch (TREE_CODE (_p1))
16645 : {
16646 197405 : CASE_CONVERT:
16647 197405 : {
16648 197405 : tree _q50 = TREE_OPERAND (_p1, 0);
16649 197405 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16650 : {
16651 324 : switch (TREE_CODE (_p2))
16652 : {
16653 7 : case INTEGER_CST:
16654 7 : {
16655 7 : {
16656 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16657 7 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16658 7 : if (res) return res;
16659 : }
16660 0 : break;
16661 : }
16662 : default:;
16663 : }
16664 : }
16665 : break;
16666 : }
16667 877413 : default:;
16668 : }
16669 877413 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16670 : {
16671 61 : switch (TREE_CODE (_p2))
16672 : {
16673 5 : case INTEGER_CST:
16674 5 : {
16675 5 : {
16676 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16677 5 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16678 5 : if (res) return res;
16679 : }
16680 0 : break;
16681 : }
16682 : default:;
16683 : }
16684 : }
16685 : break;
16686 : }
16687 1680118 : default:;
16688 : }
16689 1680118 : if (tree_expr_nonnegative_p (_q21))
16690 : {
16691 1524591 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16692 : {
16693 83 : switch (TREE_CODE (_p2))
16694 : {
16695 0 : case ABS_EXPR:
16696 0 : {
16697 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16698 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16699 : {
16700 0 : {
16701 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16702 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16703 0 : if (res) return res;
16704 : }
16705 : }
16706 : break;
16707 : }
16708 : default:;
16709 : }
16710 : }
16711 : }
16712 1680118 : if (tree_expr_nonnegative_p (_q20))
16713 : {
16714 985215 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16715 : {
16716 23422 : switch (TREE_CODE (_p2))
16717 : {
16718 0 : case ABS_EXPR:
16719 0 : {
16720 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16721 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16722 : {
16723 0 : {
16724 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16725 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16726 0 : if (res) return res;
16727 : }
16728 : }
16729 : break;
16730 : }
16731 : default:;
16732 : }
16733 : }
16734 985215 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16735 : {
16736 25 : switch (TREE_CODE (_p2))
16737 : {
16738 0 : case ABS_EXPR:
16739 0 : {
16740 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16741 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16742 : {
16743 0 : {
16744 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16745 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures);
16746 0 : if (res) return res;
16747 : }
16748 : }
16749 : break;
16750 : }
16751 : default:;
16752 : }
16753 : }
16754 : }
16755 1680118 : if (tree_expr_nonnegative_p (_q21))
16756 : {
16757 1524591 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16758 : {
16759 23794 : switch (TREE_CODE (_p2))
16760 : {
16761 0 : case ABS_EXPR:
16762 0 : {
16763 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16764 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16765 : {
16766 0 : {
16767 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16768 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures);
16769 0 : if (res) return res;
16770 : }
16771 : }
16772 : break;
16773 : }
16774 : default:;
16775 : }
16776 : }
16777 : }
16778 : break;
16779 : }
16780 2807180 : case NE_EXPR:
16781 2807180 : {
16782 2807180 : tree _q20 = TREE_OPERAND (_p0, 0);
16783 2807180 : tree _q21 = TREE_OPERAND (_p0, 1);
16784 2807180 : if (tree_zero_one_valued_p (_q20))
16785 : {
16786 158281 : if (integer_zerop (_q21))
16787 : {
16788 156514 : switch (TREE_CODE (_p1))
16789 : {
16790 5 : case BIT_XOR_EXPR:
16791 5 : {
16792 5 : tree _q50 = TREE_OPERAND (_p1, 0);
16793 5 : tree _q51 = TREE_OPERAND (_p1, 1);
16794 5 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16795 : {
16796 1 : {
16797 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16798 1 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16799 1 : if (res) return res;
16800 : }
16801 : }
16802 4 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16803 : {
16804 4 : {
16805 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16806 4 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16807 4 : if (res) return res;
16808 : }
16809 : }
16810 : break;
16811 : }
16812 1 : case BIT_IOR_EXPR:
16813 1 : {
16814 1 : tree _q50 = TREE_OPERAND (_p1, 0);
16815 1 : tree _q51 = TREE_OPERAND (_p1, 1);
16816 1 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16817 : {
16818 1 : {
16819 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16820 1 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16821 1 : if (res) return res;
16822 : }
16823 : }
16824 0 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16825 : {
16826 0 : {
16827 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16828 0 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16829 0 : if (res) return res;
16830 : }
16831 : }
16832 : break;
16833 : }
16834 110 : case PLUS_EXPR:
16835 110 : {
16836 110 : tree _q50 = TREE_OPERAND (_p1, 0);
16837 110 : tree _q51 = TREE_OPERAND (_p1, 1);
16838 110 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16839 : {
16840 8 : {
16841 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16842 8 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16843 8 : if (res) return res;
16844 : }
16845 : }
16846 109 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16847 : {
16848 1 : {
16849 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
16850 1 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16851 1 : if (res) return res;
16852 : }
16853 : }
16854 : break;
16855 : }
16856 : default:;
16857 : }
16858 : }
16859 : }
16860 2807172 : if (integer_zerop (_q21))
16861 : {
16862 1861419 : switch (TREE_CODE (_p1))
16863 : {
16864 89 : case TRUNC_DIV_EXPR:
16865 89 : {
16866 89 : tree _q50 = TREE_OPERAND (_p1, 0);
16867 89 : tree _q51 = TREE_OPERAND (_p1, 1);
16868 89 : if (integer_zerop (_p2))
16869 : {
16870 51 : {
16871 51 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16872 51 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
16873 51 : if (res) return res;
16874 : }
16875 : }
16876 : break;
16877 : }
16878 0 : case CEIL_DIV_EXPR:
16879 0 : {
16880 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16881 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16882 0 : if (integer_zerop (_p2))
16883 : {
16884 0 : {
16885 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16886 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
16887 0 : if (res) return res;
16888 : }
16889 : }
16890 : break;
16891 : }
16892 0 : case FLOOR_DIV_EXPR:
16893 0 : {
16894 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16895 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16896 0 : if (integer_zerop (_p2))
16897 : {
16898 0 : {
16899 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16900 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
16901 0 : if (res) return res;
16902 : }
16903 : }
16904 : break;
16905 : }
16906 0 : case ROUND_DIV_EXPR:
16907 0 : {
16908 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16909 0 : tree _q51 = TREE_OPERAND (_p1, 1);
16910 0 : if (integer_zerop (_p2))
16911 : {
16912 0 : {
16913 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16914 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
16915 0 : if (res) return res;
16916 : }
16917 : }
16918 : break;
16919 : }
16920 31 : case EXACT_DIV_EXPR:
16921 31 : {
16922 31 : tree _q50 = TREE_OPERAND (_p1, 0);
16923 31 : tree _q51 = TREE_OPERAND (_p1, 1);
16924 31 : if (integer_zerop (_p2))
16925 : {
16926 0 : {
16927 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16928 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
16929 0 : if (res) return res;
16930 : }
16931 : }
16932 : break;
16933 : }
16934 600 : case MULT_EXPR:
16935 600 : {
16936 600 : tree _q50 = TREE_OPERAND (_p1, 0);
16937 600 : tree _q51 = TREE_OPERAND (_p1, 1);
16938 600 : if (integer_zerop (_p2))
16939 : {
16940 40 : {
16941 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16942 40 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16943 40 : if (res) return res;
16944 : }
16945 40 : {
16946 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
16947 40 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16948 40 : if (res) return res;
16949 : }
16950 : }
16951 : break;
16952 : }
16953 278 : case BIT_AND_EXPR:
16954 278 : {
16955 278 : tree _q50 = TREE_OPERAND (_p1, 0);
16956 278 : tree _q51 = TREE_OPERAND (_p1, 1);
16957 278 : if (integer_zerop (_p2))
16958 : {
16959 52 : {
16960 52 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
16961 52 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16962 52 : if (res) return res;
16963 : }
16964 52 : {
16965 52 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
16966 52 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16967 52 : if (res) return res;
16968 : }
16969 : }
16970 : break;
16971 : }
16972 : default:;
16973 : }
16974 : }
16975 2807170 : if (uniform_integer_cst_p (_q21))
16976 : {
16977 2159426 : switch (TREE_CODE (_p1))
16978 : {
16979 111212 : case PLUS_EXPR:
16980 111212 : {
16981 111212 : tree _q50 = TREE_OPERAND (_p1, 0);
16982 111212 : tree _q51 = TREE_OPERAND (_p1, 1);
16983 111212 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16984 : {
16985 2597 : if (uniform_integer_cst_p (_q51))
16986 : {
16987 2597 : if (uniform_integer_cst_p (_p2))
16988 : {
16989 2593 : {
16990 2593 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
16991 2593 : {
16992 2593 : tree cst1 = uniform_integer_cst_p (captures[1]);
16993 2593 : tree cst2 = uniform_integer_cst_p (captures[3]);
16994 2593 : tree cst3 = uniform_integer_cst_p (captures[4]);
16995 2593 : if (wi::to_wide (cst1) + wi::to_wide (cst2) == wi::to_wide (cst3)
16996 : )
16997 : {
16998 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1824;
16999 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1824;
17000 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1824;
17001 10 : {
17002 10 : tree _r;
17003 10 : _r = captures[2];
17004 10 : if (TREE_SIDE_EFFECTS (captures[1]))
17005 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17006 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
17007 10 : return _r;
17008 : }
17009 2583 : next_after_fail1824:;
17010 : }
17011 : }
17012 : }
17013 : }
17014 : }
17015 : }
17016 : break;
17017 : }
17018 : default:;
17019 : }
17020 : }
17021 2807160 : switch (TREE_CODE (_q20))
17022 : {
17023 275723 : case BIT_AND_EXPR:
17024 275723 : {
17025 275723 : tree _q30 = TREE_OPERAND (_q20, 0);
17026 275723 : tree _q31 = TREE_OPERAND (_q20, 1);
17027 275723 : switch (TREE_CODE (_q31))
17028 : {
17029 205194 : case INTEGER_CST:
17030 205194 : {
17031 205194 : if (integer_zerop (_q21))
17032 : {
17033 205181 : switch (TREE_CODE (_p1))
17034 : {
17035 44 : case BIT_AND_EXPR:
17036 44 : {
17037 44 : tree _q70 = TREE_OPERAND (_p1, 0);
17038 44 : tree _q71 = TREE_OPERAND (_p1, 1);
17039 44 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17040 : {
17041 18 : switch (TREE_CODE (_q71))
17042 : {
17043 18 : case INTEGER_CST:
17044 18 : {
17045 18 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
17046 : {
17047 0 : {
17048 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _p1, _q71 };
17049 0 : if (wi::to_wide (captures[3]) == ~wi::to_wide (captures[1])
17050 : )
17051 : {
17052 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1825;
17053 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1825;
17054 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1825;
17055 0 : {
17056 0 : tree _r;
17057 0 : _r = captures[2];
17058 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1046, __FILE__, __LINE__, true);
17059 0 : return _r;
17060 : }
17061 0 : next_after_fail1825:;
17062 : }
17063 : }
17064 : }
17065 18 : switch (TREE_CODE (_p2))
17066 : {
17067 18 : case BIT_IOR_EXPR:
17068 18 : {
17069 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17070 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17071 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17072 : {
17073 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17074 : {
17075 18 : {
17076 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17077 18 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17078 18 : if (res) return res;
17079 : }
17080 : }
17081 : }
17082 : break;
17083 : }
17084 : default:;
17085 : }
17086 : break;
17087 : }
17088 : default:;
17089 : }
17090 : }
17091 : break;
17092 : }
17093 139 : case PLUS_EXPR:
17094 139 : {
17095 139 : tree _q70 = TREE_OPERAND (_p1, 0);
17096 139 : tree _q71 = TREE_OPERAND (_p1, 1);
17097 139 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17098 : {
17099 18 : switch (TREE_CODE (_q71))
17100 : {
17101 18 : case INTEGER_CST:
17102 18 : {
17103 18 : switch (TREE_CODE (_p2))
17104 : {
17105 18 : case BIT_IOR_EXPR:
17106 18 : {
17107 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17108 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17109 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17110 : {
17111 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17112 : {
17113 18 : {
17114 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17115 18 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17116 18 : if (res) return res;
17117 : }
17118 : }
17119 : }
17120 : break;
17121 : }
17122 : default:;
17123 : }
17124 : break;
17125 : }
17126 : default:;
17127 : }
17128 : }
17129 : break;
17130 : }
17131 : default:;
17132 : }
17133 : }
17134 : break;
17135 : }
17136 : default:;
17137 : }
17138 : break;
17139 : }
17140 348235 : CASE_CONVERT:
17141 348235 : {
17142 348235 : tree _q30 = TREE_OPERAND (_q20, 0);
17143 348235 : switch (TREE_CODE (_q21))
17144 : {
17145 302758 : case INTEGER_CST:
17146 302758 : {
17147 302758 : switch (TREE_CODE (_p1))
17148 : {
17149 99738 : CASE_CONVERT:
17150 99738 : {
17151 99738 : tree _q60 = TREE_OPERAND (_p1, 0);
17152 99738 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
17153 : {
17154 57 : switch (TREE_CODE (_p2))
17155 : {
17156 9 : case INTEGER_CST:
17157 9 : {
17158 9 : {
17159 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17160 9 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17161 9 : if (res) return res;
17162 : }
17163 9 : break;
17164 : }
17165 : default:;
17166 : }
17167 : }
17168 : break;
17169 : }
17170 302758 : default:;
17171 : }
17172 302758 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
17173 : {
17174 48 : switch (TREE_CODE (_p2))
17175 : {
17176 0 : case INTEGER_CST:
17177 0 : {
17178 0 : {
17179 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17180 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17181 0 : if (res) return res;
17182 : }
17183 0 : break;
17184 : }
17185 : default:;
17186 : }
17187 : }
17188 : break;
17189 : }
17190 : default:;
17191 : }
17192 : break;
17193 : }
17194 2807136 : default:;
17195 : }
17196 2807136 : switch (TREE_CODE (_q21))
17197 : {
17198 2159392 : case INTEGER_CST:
17199 2159392 : {
17200 2159392 : switch (TREE_CODE (_p1))
17201 : {
17202 360947 : CASE_CONVERT:
17203 360947 : {
17204 360947 : tree _q50 = TREE_OPERAND (_p1, 0);
17205 360947 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17206 : {
17207 73481 : switch (TREE_CODE (_p2))
17208 : {
17209 72244 : case INTEGER_CST:
17210 72244 : {
17211 72244 : {
17212 72244 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17213 72244 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17214 72244 : if (res) return res;
17215 : }
17216 72244 : break;
17217 : }
17218 : default:;
17219 : }
17220 : }
17221 : break;
17222 : }
17223 2159392 : default:;
17224 : }
17225 2159392 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17226 : {
17227 52800 : switch (TREE_CODE (_p2))
17228 : {
17229 50274 : case INTEGER_CST:
17230 50274 : {
17231 50274 : {
17232 50274 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17233 50274 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17234 50274 : if (res) return res;
17235 : }
17236 50274 : break;
17237 : }
17238 : default:;
17239 : }
17240 : }
17241 : break;
17242 : }
17243 2807136 : default:;
17244 : }
17245 2807136 : switch (TREE_CODE (_p1))
17246 : {
17247 12636 : case MINUS_EXPR:
17248 12636 : {
17249 12636 : tree _q50 = TREE_OPERAND (_p1, 0);
17250 12636 : tree _q51 = TREE_OPERAND (_p1, 1);
17251 12636 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17252 : {
17253 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17254 : {
17255 0 : if (integer_zerop (_p2))
17256 : {
17257 0 : {
17258 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17259 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures);
17260 0 : if (res) return res;
17261 : }
17262 : }
17263 : }
17264 : }
17265 12636 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17266 : {
17267 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17268 : {
17269 19 : if (integer_zerop (_p2))
17270 : {
17271 0 : {
17272 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17273 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures);
17274 0 : if (res) return res;
17275 : }
17276 : }
17277 : }
17278 : }
17279 : break;
17280 : }
17281 14 : case BIT_XOR_EXPR:
17282 14 : {
17283 14 : tree _q50 = TREE_OPERAND (_p1, 0);
17284 14 : tree _q51 = TREE_OPERAND (_p1, 1);
17285 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17286 : {
17287 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17288 : {
17289 7 : if (integer_zerop (_p2))
17290 : {
17291 0 : {
17292 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17293 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures);
17294 0 : if (res) return res;
17295 : }
17296 : }
17297 : }
17298 : }
17299 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17300 : {
17301 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17302 : {
17303 0 : if (integer_zerop (_p2))
17304 : {
17305 0 : {
17306 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17307 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures);
17308 0 : if (res) return res;
17309 : }
17310 : }
17311 : }
17312 : }
17313 : break;
17314 : }
17315 265 : case BIT_AND_EXPR:
17316 265 : {
17317 265 : tree _q50 = TREE_OPERAND (_p1, 0);
17318 265 : tree _q51 = TREE_OPERAND (_p1, 1);
17319 265 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17320 : {
17321 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17322 : {
17323 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17324 : {
17325 0 : {
17326 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17327 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17328 0 : if (res) return res;
17329 : }
17330 : }
17331 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17332 : {
17333 0 : {
17334 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17335 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17336 0 : if (res) return res;
17337 : }
17338 : }
17339 : }
17340 : }
17341 265 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17342 : {
17343 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17344 : {
17345 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17346 : {
17347 0 : {
17348 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17349 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17350 0 : if (res) return res;
17351 : }
17352 : }
17353 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17354 : {
17355 0 : {
17356 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17357 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17358 0 : if (res) return res;
17359 : }
17360 : }
17361 : }
17362 : }
17363 : break;
17364 : }
17365 9267 : case BIT_IOR_EXPR:
17366 9267 : {
17367 9267 : tree _q50 = TREE_OPERAND (_p1, 0);
17368 9267 : tree _q51 = TREE_OPERAND (_p1, 1);
17369 9267 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17370 : {
17371 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17372 : {
17373 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17374 : {
17375 0 : {
17376 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17377 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17378 0 : if (res) return res;
17379 : }
17380 : }
17381 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17382 : {
17383 0 : {
17384 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17385 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17386 0 : if (res) return res;
17387 : }
17388 : }
17389 : }
17390 : }
17391 9267 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17392 : {
17393 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17394 : {
17395 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17396 : {
17397 0 : {
17398 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17399 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17400 0 : if (res) return res;
17401 : }
17402 : }
17403 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17404 : {
17405 0 : {
17406 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17407 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17408 0 : if (res) return res;
17409 : }
17410 : }
17411 : }
17412 : }
17413 : break;
17414 : }
17415 0 : case MIN_EXPR:
17416 0 : {
17417 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17418 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17419 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17420 : {
17421 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17422 : {
17423 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17424 : {
17425 0 : {
17426 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17427 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17428 0 : if (res) return res;
17429 : }
17430 : }
17431 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17432 : {
17433 0 : {
17434 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17435 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17436 0 : if (res) return res;
17437 : }
17438 : }
17439 : }
17440 0 : switch (TREE_CODE (_p2))
17441 : {
17442 0 : case MIN_EXPR:
17443 0 : {
17444 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17445 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17446 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17447 : {
17448 0 : {
17449 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17450 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17451 0 : if (res) return res;
17452 : }
17453 : }
17454 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17455 : {
17456 0 : {
17457 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17458 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17459 0 : if (res) return res;
17460 : }
17461 : }
17462 : break;
17463 : }
17464 : default:;
17465 : }
17466 : }
17467 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17468 : {
17469 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17470 : {
17471 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17472 : {
17473 0 : {
17474 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17475 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17476 0 : if (res) return res;
17477 : }
17478 : }
17479 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17480 : {
17481 0 : {
17482 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17483 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17484 0 : if (res) return res;
17485 : }
17486 : }
17487 : }
17488 0 : switch (TREE_CODE (_p2))
17489 : {
17490 0 : case MIN_EXPR:
17491 0 : {
17492 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17493 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17494 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17495 : {
17496 0 : {
17497 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17498 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17499 0 : if (res) return res;
17500 : }
17501 : }
17502 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17503 : {
17504 0 : {
17505 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17506 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17507 0 : if (res) return res;
17508 : }
17509 : }
17510 : break;
17511 : }
17512 : default:;
17513 : }
17514 : }
17515 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17516 : {
17517 0 : switch (TREE_CODE (_p2))
17518 : {
17519 0 : case MIN_EXPR:
17520 0 : {
17521 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17522 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17523 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17524 : {
17525 0 : {
17526 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17527 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17528 0 : if (res) return res;
17529 : }
17530 : }
17531 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17532 : {
17533 0 : {
17534 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17535 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17536 0 : if (res) return res;
17537 : }
17538 : }
17539 : break;
17540 : }
17541 : default:;
17542 : }
17543 : }
17544 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17545 : {
17546 0 : switch (TREE_CODE (_p2))
17547 : {
17548 0 : case MIN_EXPR:
17549 0 : {
17550 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17551 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17552 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17553 : {
17554 0 : {
17555 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17556 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17557 0 : if (res) return res;
17558 : }
17559 : }
17560 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17561 : {
17562 0 : {
17563 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17564 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17565 0 : if (res) return res;
17566 : }
17567 : }
17568 : break;
17569 : }
17570 : default:;
17571 : }
17572 : }
17573 : break;
17574 : }
17575 0 : case MAX_EXPR:
17576 0 : {
17577 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17578 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17579 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17580 : {
17581 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17582 : {
17583 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17584 : {
17585 0 : {
17586 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17587 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17588 0 : if (res) return res;
17589 : }
17590 : }
17591 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17592 : {
17593 0 : {
17594 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17595 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17596 0 : if (res) return res;
17597 : }
17598 : }
17599 : }
17600 0 : switch (TREE_CODE (_p2))
17601 : {
17602 0 : case MAX_EXPR:
17603 0 : {
17604 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17605 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17606 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17607 : {
17608 0 : {
17609 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17610 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17611 0 : if (res) return res;
17612 : }
17613 : }
17614 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17615 : {
17616 0 : {
17617 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17618 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17619 0 : if (res) return res;
17620 : }
17621 : }
17622 : break;
17623 : }
17624 : default:;
17625 : }
17626 : }
17627 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17628 : {
17629 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17630 : {
17631 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17632 : {
17633 0 : {
17634 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17635 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17636 0 : if (res) return res;
17637 : }
17638 : }
17639 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17640 : {
17641 0 : {
17642 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17643 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17644 0 : if (res) return res;
17645 : }
17646 : }
17647 : }
17648 0 : switch (TREE_CODE (_p2))
17649 : {
17650 0 : case MAX_EXPR:
17651 0 : {
17652 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17653 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17654 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17655 : {
17656 0 : {
17657 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17658 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17659 0 : if (res) return res;
17660 : }
17661 : }
17662 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17663 : {
17664 0 : {
17665 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17666 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17667 0 : if (res) return res;
17668 : }
17669 : }
17670 : break;
17671 : }
17672 : default:;
17673 : }
17674 : }
17675 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17676 : {
17677 0 : switch (TREE_CODE (_p2))
17678 : {
17679 0 : case MAX_EXPR:
17680 0 : {
17681 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17682 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17683 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17684 : {
17685 0 : {
17686 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17687 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17688 0 : if (res) return res;
17689 : }
17690 : }
17691 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17692 : {
17693 0 : {
17694 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17695 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17696 0 : if (res) return res;
17697 : }
17698 : }
17699 : break;
17700 : }
17701 : default:;
17702 : }
17703 : }
17704 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17705 : {
17706 0 : switch (TREE_CODE (_p2))
17707 : {
17708 0 : case MAX_EXPR:
17709 0 : {
17710 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17711 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17712 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17713 : {
17714 0 : {
17715 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17716 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17717 0 : if (res) return res;
17718 : }
17719 : }
17720 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17721 : {
17722 0 : {
17723 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17724 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17725 0 : if (res) return res;
17726 : }
17727 : }
17728 : break;
17729 : }
17730 : default:;
17731 : }
17732 : }
17733 : break;
17734 : }
17735 24872 : case MULT_EXPR:
17736 24872 : {
17737 24872 : tree _q50 = TREE_OPERAND (_p1, 0);
17738 24872 : tree _q51 = TREE_OPERAND (_p1, 1);
17739 24872 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17740 : {
17741 20181 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17742 : {
17743 0 : switch (TREE_CODE (_p2))
17744 : {
17745 0 : case MULT_EXPR:
17746 0 : {
17747 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17748 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17749 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17750 : {
17751 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
17752 : {
17753 0 : {
17754 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17755 0 : const enum tree_code op = MULT_EXPR;
17756 0 : if (ANY_INTEGRAL_TYPE_P (type)
17757 : )
17758 : {
17759 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1826;
17760 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1826;
17761 0 : {
17762 0 : tree _r;
17763 0 : _r = captures[2];
17764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
17765 0 : return _r;
17766 : }
17767 0 : next_after_fail1826:;
17768 : }
17769 : }
17770 : }
17771 : }
17772 : break;
17773 : }
17774 : default:;
17775 : }
17776 : }
17777 : }
17778 24872 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17779 : {
17780 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17781 : {
17782 0 : switch (TREE_CODE (_p2))
17783 : {
17784 0 : case MULT_EXPR:
17785 0 : {
17786 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17787 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17788 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17789 : {
17790 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
17791 : {
17792 0 : {
17793 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17794 0 : const enum tree_code op = MULT_EXPR;
17795 0 : if (ANY_INTEGRAL_TYPE_P (type)
17796 : )
17797 : {
17798 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1827;
17799 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1827;
17800 0 : {
17801 0 : tree _r;
17802 0 : _r = captures[2];
17803 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
17804 0 : return _r;
17805 : }
17806 0 : next_after_fail1827:;
17807 : }
17808 : }
17809 : }
17810 : }
17811 : break;
17812 : }
17813 : default:;
17814 : }
17815 : }
17816 : }
17817 : break;
17818 : }
17819 111262 : case PLUS_EXPR:
17820 111262 : {
17821 111262 : tree _q50 = TREE_OPERAND (_p1, 0);
17822 111262 : tree _q51 = TREE_OPERAND (_p1, 1);
17823 111262 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17824 : {
17825 2595 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17826 : {
17827 0 : switch (TREE_CODE (_p2))
17828 : {
17829 0 : case PLUS_EXPR:
17830 0 : {
17831 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17832 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17833 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17834 : {
17835 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
17836 : {
17837 0 : {
17838 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17839 0 : const enum tree_code op = PLUS_EXPR;
17840 0 : if (ANY_INTEGRAL_TYPE_P (type)
17841 : )
17842 : {
17843 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1828;
17844 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1828;
17845 0 : {
17846 0 : tree _r;
17847 0 : _r = captures[2];
17848 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
17849 0 : return _r;
17850 : }
17851 0 : next_after_fail1828:;
17852 : }
17853 : }
17854 : }
17855 : }
17856 : break;
17857 : }
17858 0 : case MULT_EXPR:
17859 0 : {
17860 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17861 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17862 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17863 : {
17864 0 : if (uniform_integer_cst_p (_q81))
17865 : {
17866 0 : {
17867 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
17868 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17869 : )
17870 : {
17871 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1829;
17872 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1829;
17873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1829;
17874 0 : {
17875 0 : tree _r;
17876 0 : _r = captures[2];
17877 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17878 0 : return _r;
17879 : }
17880 0 : next_after_fail1829:;
17881 : }
17882 : }
17883 : }
17884 : }
17885 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17886 : {
17887 0 : if (uniform_integer_cst_p (_q81))
17888 : {
17889 0 : {
17890 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
17891 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17892 : )
17893 : {
17894 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1830;
17895 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1830;
17896 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1830;
17897 0 : {
17898 0 : tree _r;
17899 0 : _r = captures[2];
17900 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17901 0 : return _r;
17902 : }
17903 0 : next_after_fail1830:;
17904 : }
17905 : }
17906 : }
17907 : }
17908 : break;
17909 : }
17910 : default:;
17911 : }
17912 : }
17913 : }
17914 111262 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17915 : {
17916 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17917 : {
17918 0 : switch (TREE_CODE (_p2))
17919 : {
17920 0 : case PLUS_EXPR:
17921 0 : {
17922 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17923 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17924 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17925 : {
17926 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
17927 : {
17928 0 : {
17929 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17930 0 : const enum tree_code op = PLUS_EXPR;
17931 0 : if (ANY_INTEGRAL_TYPE_P (type)
17932 : )
17933 : {
17934 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1831;
17935 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1831;
17936 0 : {
17937 0 : tree _r;
17938 0 : _r = captures[2];
17939 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
17940 0 : return _r;
17941 : }
17942 0 : next_after_fail1831:;
17943 : }
17944 : }
17945 : }
17946 : }
17947 : break;
17948 : }
17949 0 : case MULT_EXPR:
17950 0 : {
17951 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17952 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17953 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17954 : {
17955 0 : if (uniform_integer_cst_p (_q81))
17956 : {
17957 0 : {
17958 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
17959 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17960 : )
17961 : {
17962 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1832;
17963 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1832;
17964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1832;
17965 0 : {
17966 0 : tree _r;
17967 0 : _r = captures[2];
17968 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17969 0 : return _r;
17970 : }
17971 0 : next_after_fail1832:;
17972 : }
17973 : }
17974 : }
17975 : }
17976 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17977 : {
17978 0 : if (uniform_integer_cst_p (_q81))
17979 : {
17980 0 : {
17981 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
17982 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
17983 : )
17984 : {
17985 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1833;
17986 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1833;
17987 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1833;
17988 0 : {
17989 0 : tree _r;
17990 0 : _r = captures[2];
17991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17992 0 : return _r;
17993 : }
17994 0 : next_after_fail1833:;
17995 : }
17996 : }
17997 : }
17998 : }
17999 : break;
18000 : }
18001 : default:;
18002 : }
18003 : }
18004 : }
18005 : break;
18006 : }
18007 2807136 : default:;
18008 : }
18009 2807136 : switch (TREE_CODE (_q21))
18010 : {
18011 2159392 : case INTEGER_CST:
18012 2159392 : {
18013 2159392 : switch (TREE_CODE (_p1))
18014 : {
18015 228 : case NEGATE_EXPR:
18016 228 : {
18017 228 : tree _q50 = TREE_OPERAND (_p1, 0);
18018 228 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18019 : {
18020 42 : switch (TREE_CODE (_p2))
18021 : {
18022 14 : case INTEGER_CST:
18023 14 : {
18024 14 : {
18025 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18026 14 : if (!TYPE_SATURATING (type)
18027 28 : && wi::eq_p (wi::neg (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18028 : )
18029 : {
18030 12 : if (TYPE_OVERFLOW_WRAPS (type)
18031 4 : || !wi::only_sign_bit_p (wi::to_wide (captures[1]))
18032 : )
18033 : {
18034 11 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1834;
18035 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1834;
18036 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1834;
18037 11 : {
18038 11 : tree _r;
18039 11 : _r = captures[2];
18040 11 : if (TREE_SIDE_EFFECTS (captures[1]))
18041 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18042 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1049, __FILE__, __LINE__, true);
18043 11 : return _r;
18044 : }
18045 2 : next_after_fail1834:;
18046 : }
18047 : else
18048 : {
18049 1 : {
18050 1 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18051 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1835;
18052 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1835;
18053 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1835;
18054 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1835;
18055 1 : {
18056 1 : tree res_op0;
18057 1 : {
18058 1 : tree _o1[1], _r1;
18059 1 : {
18060 1 : tree _o2[1], _r2;
18061 1 : _o2[0] = captures[0];
18062 1 : if (TREE_TYPE (_o2[0]) != utype)
18063 : {
18064 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
18065 : }
18066 : else
18067 : _r2 = _o2[0];
18068 1 : _o1[0] = _r2;
18069 : }
18070 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
18071 1 : res_op0 = _r1;
18072 : }
18073 1 : tree _r;
18074 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18075 1 : if (TREE_SIDE_EFFECTS (captures[1]))
18076 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18077 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
18078 1 : return _r;
18079 : }
18080 2 : next_after_fail1835:;
18081 : }
18082 : }
18083 : }
18084 : }
18085 2 : break;
18086 : }
18087 : default:;
18088 : }
18089 : }
18090 : break;
18091 : }
18092 95 : case BIT_NOT_EXPR:
18093 95 : {
18094 95 : tree _q50 = TREE_OPERAND (_p1, 0);
18095 95 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18096 : {
18097 18 : switch (TREE_CODE (_p2))
18098 : {
18099 18 : case INTEGER_CST:
18100 18 : {
18101 18 : {
18102 18 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18103 18 : if (wi::eq_p (wi::bit_not (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18104 : )
18105 : {
18106 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1836;
18107 18 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1836;
18108 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
18109 18 : {
18110 18 : tree _r;
18111 18 : _r = captures[2];
18112 18 : if (TREE_SIDE_EFFECTS (captures[1]))
18113 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18114 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18115 18 : return _r;
18116 : }
18117 0 : next_after_fail1836:;
18118 : }
18119 : }
18120 0 : break;
18121 : }
18122 : default:;
18123 : }
18124 : }
18125 : break;
18126 : }
18127 5 : case ABS_EXPR:
18128 5 : {
18129 5 : tree _q50 = TREE_OPERAND (_p1, 0);
18130 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18131 : {
18132 1 : switch (TREE_CODE (_p2))
18133 : {
18134 1 : case INTEGER_CST:
18135 1 : {
18136 1 : {
18137 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18138 1 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18139 : )
18140 : {
18141 0 : if (ABS_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18142 : )
18143 : {
18144 0 : {
18145 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18146 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1837;
18147 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1837;
18148 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1837;
18149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
18150 0 : {
18151 0 : tree res_op0;
18152 0 : {
18153 0 : tree _o1[1], _r1;
18154 0 : _o1[0] = captures[0];
18155 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18156 0 : res_op0 = _r1;
18157 : }
18158 0 : tree _r;
18159 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18160 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18161 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
18163 0 : return _r;
18164 : }
18165 1 : next_after_fail1837:;
18166 : }
18167 : }
18168 : else
18169 : {
18170 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1838;
18171 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1838;
18172 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
18173 0 : {
18174 0 : tree _r;
18175 0 : _r = captures[2];
18176 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18177 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18178 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
18179 0 : return _r;
18180 : }
18181 1 : next_after_fail1838:;
18182 : }
18183 : }
18184 : }
18185 1 : break;
18186 : }
18187 : default:;
18188 : }
18189 : }
18190 : break;
18191 : }
18192 0 : case ABSU_EXPR:
18193 0 : {
18194 0 : tree _q50 = TREE_OPERAND (_p1, 0);
18195 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18196 : {
18197 0 : switch (TREE_CODE (_p2))
18198 : {
18199 0 : case INTEGER_CST:
18200 0 : {
18201 0 : {
18202 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18203 0 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18204 : )
18205 : {
18206 0 : if (ABSU_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18207 : )
18208 : {
18209 : {
18210 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18211 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1839;
18212 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1839;
18213 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1839;
18214 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
18215 : {
18216 : tree res_op0;
18217 : {
18218 : tree _o1[1], _r1;
18219 : _o1[0] = captures[0];
18220 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18221 : res_op0 = _r1;
18222 : }
18223 : tree _r;
18224 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18225 : if (TREE_SIDE_EFFECTS (captures[1]))
18226 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18227 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
18228 : return _r;
18229 : }
18230 : next_after_fail1839:;
18231 : }
18232 : }
18233 : else
18234 : {
18235 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1840;
18236 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1840;
18237 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1840;
18238 0 : {
18239 0 : tree _r;
18240 0 : _r = captures[2];
18241 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18242 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18243 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
18244 0 : return _r;
18245 : }
18246 0 : next_after_fail1840:;
18247 : }
18248 : }
18249 : }
18250 0 : break;
18251 : }
18252 : default:;
18253 : }
18254 : }
18255 : break;
18256 : }
18257 : default:;
18258 : }
18259 : break;
18260 : }
18261 : default:;
18262 : }
18263 : break;
18264 : }
18265 1236659 : case INTEGER_CST:
18266 1236659 : {
18267 1236659 : {
18268 1236659 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
18269 1236659 : if (integer_zerop (captures[0])
18270 : )
18271 : {
18272 649088 : if (!VOID_TYPE_P (TREE_TYPE (captures[2])) || VOID_TYPE_P (type)
18273 : )
18274 : {
18275 640874 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1841;
18276 468675 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1841;
18277 454013 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1841;
18278 454013 : {
18279 454013 : tree _r;
18280 454013 : _r = captures[2];
18281 454013 : if (TREE_SIDE_EFFECTS (captures[0]))
18282 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18283 454013 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18284 454013 : return _r;
18285 : }
18286 410838 : next_after_fail1841:;
18287 : }
18288 : }
18289 : else
18290 : {
18291 587571 : if (!VOID_TYPE_P (TREE_TYPE (captures[1])) || VOID_TYPE_P (type)
18292 : )
18293 : {
18294 586579 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1842;
18295 462613 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1842;
18296 371808 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1842;
18297 371808 : {
18298 371808 : tree _r;
18299 371808 : _r = captures[1];
18300 371808 : if (TREE_SIDE_EFFECTS (captures[0]))
18301 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18302 371808 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18303 371808 : return _r;
18304 : }
18305 410838 : next_after_fail1842:;
18306 : }
18307 : }
18308 : }
18309 410838 : break;
18310 : }
18311 11621615 : default:;
18312 : }
18313 11621615 : switch (TREE_CODE (_p1))
18314 : {
18315 803839 : case COND_EXPR:
18316 803839 : {
18317 803839 : tree _q30 = TREE_OPERAND (_p1, 0);
18318 803839 : tree _q31 = TREE_OPERAND (_p1, 1);
18319 803839 : tree _q32 = TREE_OPERAND (_p1, 2);
18320 803839 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
18321 : {
18322 609 : {
18323 609 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _p2 };
18324 609 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1843;
18325 609 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1843;
18326 55 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1843;
18327 54 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1843;
18328 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1843;
18329 10 : {
18330 10 : tree res_op0;
18331 10 : res_op0 = captures[0];
18332 10 : tree res_op1;
18333 10 : res_op1 = captures[1];
18334 10 : tree res_op2;
18335 10 : res_op2 = captures[3];
18336 10 : tree _r;
18337 10 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18338 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
18339 10 : return _r;
18340 : }
18341 599 : next_after_fail1843:;
18342 : }
18343 : }
18344 : break;
18345 : }
18346 11621605 : default:;
18347 : }
18348 11621605 : switch (TREE_CODE (_p2))
18349 : {
18350 849618 : case COND_EXPR:
18351 849618 : {
18352 849618 : tree _q40 = TREE_OPERAND (_p2, 0);
18353 849618 : tree _q41 = TREE_OPERAND (_p2, 1);
18354 849618 : tree _q42 = TREE_OPERAND (_p2, 2);
18355 849618 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18356 : {
18357 3762 : {
18358 3762 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q41, _q42 };
18359 3762 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1844;
18360 3762 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1844;
18361 3762 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1844;
18362 184 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1844;
18363 184 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1844;
18364 184 : {
18365 184 : tree res_op0;
18366 184 : res_op0 = captures[0];
18367 184 : tree res_op1;
18368 184 : res_op1 = captures[1];
18369 184 : tree res_op2;
18370 184 : res_op2 = captures[3];
18371 184 : tree _r;
18372 184 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18373 184 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18374 184 : return _r;
18375 : }
18376 3578 : next_after_fail1844:;
18377 : }
18378 : }
18379 849434 : {
18380 849434 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
18381 849434 : if (inverse_conditions_p (captures[0], captures[2])
18382 : )
18383 : {
18384 1162 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1845;
18385 1162 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1845;
18386 1162 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1845;
18387 1162 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1845;
18388 1162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1845;
18389 1162 : {
18390 1162 : tree res_op0;
18391 1162 : res_op0 = captures[0];
18392 1162 : tree res_op1;
18393 1162 : res_op1 = captures[1];
18394 1162 : tree res_op2;
18395 1162 : res_op2 = captures[3];
18396 1162 : tree _r;
18397 1162 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18398 1162 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18399 1162 : return _r;
18400 : }
18401 848272 : next_after_fail1845:;
18402 : }
18403 : }
18404 848272 : break;
18405 : }
18406 11620259 : default:;
18407 : }
18408 11620259 : switch (TREE_CODE (_p1))
18409 : {
18410 803829 : case COND_EXPR:
18411 803829 : {
18412 803829 : tree _q30 = TREE_OPERAND (_p1, 0);
18413 803829 : tree _q31 = TREE_OPERAND (_p1, 1);
18414 803829 : tree _q32 = TREE_OPERAND (_p1, 2);
18415 803829 : {
18416 803829 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q32, _p2 };
18417 803829 : if (inverse_conditions_p (captures[0], captures[1])
18418 : )
18419 : {
18420 172 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1846;
18421 172 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1846;
18422 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1846;
18423 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1846;
18424 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1846;
18425 2 : {
18426 2 : tree res_op0;
18427 2 : res_op0 = captures[0];
18428 2 : tree res_op1;
18429 2 : res_op1 = captures[3];
18430 2 : tree res_op2;
18431 2 : res_op2 = captures[4];
18432 2 : tree _r;
18433 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18434 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
18435 2 : return _r;
18436 : }
18437 803827 : next_after_fail1846:;
18438 : }
18439 : }
18440 803827 : break;
18441 : }
18442 11620257 : default:;
18443 : }
18444 11620257 : if ((_p2 == _p1 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _p1, 0) && types_match (_p2, _p1)))
18445 : {
18446 50887 : {
18447 50887 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18448 50887 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1847;
18449 50887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1847;
18450 50887 : {
18451 50887 : tree _r;
18452 50887 : _r = captures[1];
18453 50887 : if (TREE_SIDE_EFFECTS (captures[0]))
18454 357 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18455 50887 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
18456 50887 : return _r;
18457 : }
18458 0 : next_after_fail1847:;
18459 : }
18460 : }
18461 11569370 : switch (TREE_CODE (_p0))
18462 : {
18463 1650202 : case EQ_EXPR:
18464 1650202 : {
18465 1650202 : tree _q20 = TREE_OPERAND (_p0, 0);
18466 1650202 : tree _q21 = TREE_OPERAND (_p0, 1);
18467 1650202 : if (zerop (_q21))
18468 : {
18469 755649 : switch (TREE_CODE (_p2))
18470 : {
18471 36 : case NEGATE_EXPR:
18472 36 : {
18473 36 : tree _q60 = TREE_OPERAND (_p2, 0);
18474 36 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18475 : {
18476 16 : {
18477 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18478 16 : const enum tree_code cmp = EQ_EXPR;
18479 16 : if (!HONOR_SIGNED_ZEROS (type)
18480 16 : && bitwise_equal_p (captures[0], captures[1])
18481 : )
18482 : {
18483 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1848;
18484 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1848;
18485 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1848;
18486 0 : {
18487 0 : tree _r;
18488 0 : _r = captures[2];
18489 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
18490 0 : return _r;
18491 : }
18492 16 : next_after_fail1848:;
18493 : }
18494 : }
18495 : }
18496 : break;
18497 : }
18498 755649 : default:;
18499 : }
18500 755649 : if (zerop (_p1))
18501 : {
18502 44605 : switch (TREE_CODE (_p2))
18503 : {
18504 14 : case NEGATE_EXPR:
18505 14 : {
18506 14 : tree _q60 = TREE_OPERAND (_p2, 0);
18507 14 : {
18508 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18509 14 : const enum tree_code cmp = EQ_EXPR;
18510 14 : if (!HONOR_SIGNED_ZEROS (type)
18511 14 : && bitwise_equal_p (captures[0], captures[2])
18512 : )
18513 : {
18514 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1849;
18515 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1849;
18516 7 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1849;
18517 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1849;
18518 7 : {
18519 7 : tree _r;
18520 7 : _r = captures[1];
18521 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
18522 7 : return _r;
18523 : }
18524 7 : next_after_fail1849:;
18525 : }
18526 : }
18527 7 : break;
18528 : }
18529 : default:;
18530 : }
18531 : }
18532 : }
18533 1650195 : switch (TREE_CODE (_q20))
18534 : {
18535 0 : case MINUS_EXPR:
18536 0 : {
18537 0 : tree _q30 = TREE_OPERAND (_q20, 0);
18538 0 : tree _q31 = TREE_OPERAND (_q20, 1);
18539 0 : if (zerop (_q21))
18540 : {
18541 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18542 : {
18543 0 : switch (TREE_CODE (_p2))
18544 : {
18545 0 : case MINUS_EXPR:
18546 0 : {
18547 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18548 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18549 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18550 : {
18551 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18552 : {
18553 0 : {
18554 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18555 0 : const enum tree_code cmp = EQ_EXPR;
18556 0 : if (!HONOR_SIGNED_ZEROS (type)
18557 : )
18558 : {
18559 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1850;
18560 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1850;
18561 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1850;
18562 0 : {
18563 0 : tree _r;
18564 0 : _r = captures[3];
18565 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
18566 0 : return _r;
18567 : }
18568 0 : next_after_fail1850:;
18569 : }
18570 : }
18571 : }
18572 : }
18573 : break;
18574 : }
18575 : default:;
18576 : }
18577 : }
18578 : }
18579 0 : if (integer_zerop (_q21))
18580 : {
18581 0 : if (integer_zerop (_p1))
18582 : {
18583 0 : switch (TREE_CODE (_p2))
18584 : {
18585 0 : case MINUS_EXPR:
18586 0 : {
18587 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18588 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18589 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18590 : {
18591 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18592 : {
18593 0 : {
18594 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18595 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
18596 0 : if (res) return res;
18597 : }
18598 : }
18599 : }
18600 : break;
18601 : }
18602 : default:;
18603 : }
18604 : }
18605 : }
18606 : break;
18607 : }
18608 59438 : case CALL_EXPR:
18609 59438 : switch (get_call_combined_fn (_q20))
18610 : {
18611 0 : case CFN_BUILT_IN_SIGNBITF:
18612 0 : if (call_expr_nargs (_q20) == 1)
18613 : {
18614 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18615 0 : if (integer_zerop (_q21))
18616 : {
18617 0 : switch (TREE_CODE (_p1))
18618 : {
18619 0 : case NEGATE_EXPR:
18620 0 : {
18621 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18622 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18623 : {
18624 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18625 : {
18626 0 : {
18627 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18628 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITF);
18629 0 : if (res) return res;
18630 : }
18631 : }
18632 : }
18633 : break;
18634 : }
18635 : default:;
18636 : }
18637 : }
18638 : }
18639 : break;
18640 0 : case CFN_BUILT_IN_SIGNBITL:
18641 0 : if (call_expr_nargs (_q20) == 1)
18642 : {
18643 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18644 0 : if (integer_zerop (_q21))
18645 : {
18646 0 : switch (TREE_CODE (_p1))
18647 : {
18648 0 : case NEGATE_EXPR:
18649 0 : {
18650 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18651 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18652 : {
18653 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18654 : {
18655 0 : {
18656 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18657 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITL);
18658 0 : if (res) return res;
18659 : }
18660 : }
18661 : }
18662 : break;
18663 : }
18664 : default:;
18665 : }
18666 : }
18667 : }
18668 : break;
18669 0 : case CFN_SIGNBIT:
18670 0 : if (call_expr_nargs (_q20) == 1)
18671 : {
18672 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18673 0 : if (integer_zerop (_q21))
18674 : {
18675 0 : switch (TREE_CODE (_p1))
18676 : {
18677 0 : case NEGATE_EXPR:
18678 0 : {
18679 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18680 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18681 : {
18682 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18683 : {
18684 0 : {
18685 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18686 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_SIGNBIT);
18687 0 : if (res) return res;
18688 : }
18689 : }
18690 : }
18691 : break;
18692 : }
18693 : default:;
18694 : }
18695 : }
18696 : }
18697 : break;
18698 411 : case CFN_BUILT_IN_SIGNBIT:
18699 411 : if (call_expr_nargs (_q20) == 1)
18700 : {
18701 411 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18702 411 : if (integer_zerop (_q21))
18703 : {
18704 411 : switch (TREE_CODE (_p1))
18705 : {
18706 3 : case NEGATE_EXPR:
18707 3 : {
18708 3 : tree _q60 = TREE_OPERAND (_p1, 0);
18709 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18710 : {
18711 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18712 : {
18713 3 : {
18714 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18715 3 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBIT);
18716 3 : if (res) return res;
18717 : }
18718 : }
18719 : }
18720 : break;
18721 : }
18722 : default:;
18723 : }
18724 : }
18725 : }
18726 : break;
18727 : default:;
18728 : }
18729 : break;
18730 : default:;
18731 : }
18732 : break;
18733 : }
18734 164 : case UNEQ_EXPR:
18735 164 : {
18736 164 : tree _q20 = TREE_OPERAND (_p0, 0);
18737 164 : tree _q21 = TREE_OPERAND (_p0, 1);
18738 164 : if (zerop (_q21))
18739 : {
18740 1 : switch (TREE_CODE (_p2))
18741 : {
18742 0 : case NEGATE_EXPR:
18743 0 : {
18744 0 : tree _q60 = TREE_OPERAND (_p2, 0);
18745 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18746 : {
18747 0 : {
18748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18749 0 : const enum tree_code cmp = UNEQ_EXPR;
18750 0 : if (!HONOR_SIGNED_ZEROS (type)
18751 0 : && bitwise_equal_p (captures[0], captures[1])
18752 : )
18753 : {
18754 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1851;
18755 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1851;
18756 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1851;
18757 0 : {
18758 0 : tree _r;
18759 0 : _r = captures[2];
18760 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
18761 0 : return _r;
18762 : }
18763 0 : next_after_fail1851:;
18764 : }
18765 : }
18766 : }
18767 : break;
18768 : }
18769 1 : default:;
18770 : }
18771 1 : if (zerop (_p1))
18772 : {
18773 0 : switch (TREE_CODE (_p2))
18774 : {
18775 0 : case NEGATE_EXPR:
18776 0 : {
18777 0 : tree _q60 = TREE_OPERAND (_p2, 0);
18778 0 : {
18779 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18780 0 : const enum tree_code cmp = UNEQ_EXPR;
18781 0 : if (!HONOR_SIGNED_ZEROS (type)
18782 0 : && bitwise_equal_p (captures[0], captures[2])
18783 : )
18784 : {
18785 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1852;
18786 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1852;
18787 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1852;
18788 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1852;
18789 0 : {
18790 0 : tree _r;
18791 0 : _r = captures[1];
18792 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
18793 0 : return _r;
18794 : }
18795 0 : next_after_fail1852:;
18796 : }
18797 : }
18798 0 : break;
18799 : }
18800 : default:;
18801 : }
18802 : }
18803 : }
18804 164 : switch (TREE_CODE (_q20))
18805 : {
18806 0 : case MINUS_EXPR:
18807 0 : {
18808 0 : tree _q30 = TREE_OPERAND (_q20, 0);
18809 0 : tree _q31 = TREE_OPERAND (_q20, 1);
18810 0 : if (zerop (_q21))
18811 : {
18812 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18813 : {
18814 0 : switch (TREE_CODE (_p2))
18815 : {
18816 0 : case MINUS_EXPR:
18817 0 : {
18818 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18819 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18820 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18821 : {
18822 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18823 : {
18824 0 : {
18825 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18826 0 : const enum tree_code cmp = UNEQ_EXPR;
18827 0 : if (!HONOR_SIGNED_ZEROS (type)
18828 : )
18829 : {
18830 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1853;
18831 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1853;
18832 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1853;
18833 0 : {
18834 0 : tree _r;
18835 0 : _r = captures[3];
18836 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
18837 0 : return _r;
18838 : }
18839 0 : next_after_fail1853:;
18840 : }
18841 : }
18842 : }
18843 : }
18844 : break;
18845 : }
18846 : default:;
18847 : }
18848 : }
18849 : }
18850 0 : if (integer_zerop (_q21))
18851 : {
18852 0 : if (integer_zerop (_p1))
18853 : {
18854 0 : switch (TREE_CODE (_p2))
18855 : {
18856 0 : case MINUS_EXPR:
18857 0 : {
18858 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18859 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18860 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18861 : {
18862 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18863 : {
18864 0 : {
18865 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18866 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, UNEQ_EXPR);
18867 0 : if (res) return res;
18868 : }
18869 : }
18870 : }
18871 : break;
18872 : }
18873 : default:;
18874 : }
18875 : }
18876 : }
18877 : break;
18878 : }
18879 : default:;
18880 : }
18881 : break;
18882 : }
18883 2804999 : case NE_EXPR:
18884 2804999 : {
18885 2804999 : tree _q20 = TREE_OPERAND (_p0, 0);
18886 2804999 : tree _q21 = TREE_OPERAND (_p0, 1);
18887 2804999 : if (zerop (_q21))
18888 : {
18889 1930270 : switch (TREE_CODE (_p2))
18890 : {
18891 50 : case NEGATE_EXPR:
18892 50 : {
18893 50 : tree _q60 = TREE_OPERAND (_p2, 0);
18894 50 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18895 : {
18896 10 : {
18897 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18898 10 : const enum tree_code cmp = NE_EXPR;
18899 10 : if (!HONOR_SIGNED_ZEROS (type)
18900 10 : && bitwise_equal_p (captures[0], captures[1])
18901 : )
18902 : {
18903 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1854;
18904 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1854;
18905 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1854;
18906 0 : {
18907 0 : tree _r;
18908 0 : _r = captures[1];
18909 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
18910 0 : return _r;
18911 : }
18912 10 : next_after_fail1854:;
18913 : }
18914 : }
18915 : }
18916 : break;
18917 : }
18918 1930270 : default:;
18919 : }
18920 1930270 : if (integer_zerop (_p2))
18921 : {
18922 318666 : {
18923 318666 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
18924 318666 : const enum tree_code cmp = NE_EXPR;
18925 318666 : if (!HONOR_SIGNED_ZEROS (type)
18926 318666 : && bitwise_equal_p (captures[0], captures[1])
18927 : )
18928 : {
18929 2365 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1855;
18930 2331 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1855;
18931 2331 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1855;
18932 2331 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1855;
18933 2331 : {
18934 2331 : tree _r;
18935 2331 : _r = captures[1];
18936 2331 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
18937 2331 : return _r;
18938 : }
18939 316335 : next_after_fail1855:;
18940 : }
18941 : }
18942 : }
18943 : }
18944 2802668 : switch (TREE_CODE (_q20))
18945 : {
18946 563 : case MINUS_EXPR:
18947 563 : {
18948 563 : tree _q30 = TREE_OPERAND (_q20, 0);
18949 563 : tree _q31 = TREE_OPERAND (_q20, 1);
18950 563 : if (zerop (_q21))
18951 : {
18952 76 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18953 : {
18954 0 : switch (TREE_CODE (_p2))
18955 : {
18956 0 : case MINUS_EXPR:
18957 0 : {
18958 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18959 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18960 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18961 : {
18962 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18963 : {
18964 0 : {
18965 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
18966 0 : const enum tree_code cmp = NE_EXPR;
18967 0 : if (!HONOR_SIGNED_ZEROS (type)
18968 : )
18969 : {
18970 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1856;
18971 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1856;
18972 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1856;
18973 0 : {
18974 0 : tree _r;
18975 0 : _r = captures[0];
18976 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
18977 0 : return _r;
18978 : }
18979 0 : next_after_fail1856:;
18980 : }
18981 : }
18982 : }
18983 : }
18984 : break;
18985 : }
18986 : default:;
18987 : }
18988 : }
18989 : }
18990 563 : if (integer_zerop (_q21))
18991 : {
18992 25 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18993 : {
18994 0 : if (integer_zerop (_p2))
18995 : {
18996 0 : {
18997 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
18998 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
18999 0 : if (res) return res;
19000 : }
19001 : }
19002 : }
19003 : }
19004 : break;
19005 : }
19006 275699 : case BIT_AND_EXPR:
19007 275699 : {
19008 275699 : tree _q30 = TREE_OPERAND (_q20, 0);
19009 275699 : tree _q31 = TREE_OPERAND (_q20, 1);
19010 275699 : if (integer_pow2p (_q31))
19011 : {
19012 203402 : if (integer_zerop (_q21))
19013 : {
19014 203402 : switch (TREE_CODE (_p1))
19015 : {
19016 2330 : case INTEGER_CST:
19017 2330 : {
19018 2330 : if (integer_zerop (_p2))
19019 : {
19020 1407 : {
19021 1407 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
19022 1407 : if (!POINTER_TYPE_P (type) && integer_pow2p (captures[2])
19023 : )
19024 : {
19025 652 : {
19026 652 : int shift = (wi::exact_log2 (wi::to_wide (captures[2]))
19027 652 : - wi::exact_log2 (wi::to_wide (captures[1])));
19028 652 : if (shift > 0
19029 : )
19030 : {
19031 377 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1857;
19032 377 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1857;
19033 377 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1857;
19034 377 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1857;
19035 377 : {
19036 377 : tree res_op0;
19037 377 : {
19038 377 : tree _o1[2], _r1;
19039 377 : {
19040 377 : tree _o2[1], _r2;
19041 377 : _o2[0] = captures[0];
19042 377 : if (TREE_TYPE (_o2[0]) != type)
19043 : {
19044 374 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
19045 : }
19046 : else
19047 : _r2 = _o2[0];
19048 377 : _o1[0] = _r2;
19049 : }
19050 377 : _o1[1] = build_int_cst (integer_type_node, shift);
19051 377 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19052 377 : res_op0 = _r1;
19053 : }
19054 377 : tree res_op1;
19055 377 : res_op1 = captures[2];
19056 377 : tree _r;
19057 377 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19058 377 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
19059 652 : return _r;
19060 : }
19061 : next_after_fail1857:;
19062 : }
19063 : else
19064 : {
19065 275 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1858;
19066 275 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1858;
19067 275 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1858;
19068 275 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1858;
19069 275 : {
19070 275 : tree res_op0;
19071 275 : {
19072 275 : tree _o1[1], _r1;
19073 275 : {
19074 275 : tree _o2[2], _r2;
19075 275 : _o2[0] = captures[0];
19076 275 : _o2[1] = build_int_cst (integer_type_node, -shift);
19077 275 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
19078 275 : _o1[0] = _r2;
19079 : }
19080 275 : if (TREE_TYPE (_o1[0]) != type)
19081 : {
19082 139 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
19083 : }
19084 : else
19085 : _r1 = _o1[0];
19086 275 : res_op0 = _r1;
19087 : }
19088 275 : tree res_op1;
19089 275 : res_op1 = captures[2];
19090 275 : tree _r;
19091 275 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19092 275 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
19093 275 : return _r;
19094 : }
19095 : next_after_fail1858:;
19096 : }
19097 : }
19098 : }
19099 : }
19100 : }
19101 : break;
19102 : }
19103 : default:;
19104 : }
19105 : }
19106 : }
19107 : break;
19108 : }
19109 316548 : case CALL_EXPR:
19110 316548 : switch (get_call_combined_fn (_q20))
19111 : {
19112 30 : case CFN_BUILT_IN_SIGNBITF:
19113 30 : if (call_expr_nargs (_q20) == 1)
19114 : {
19115 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19116 30 : if (integer_zerop (_q21))
19117 : {
19118 30 : switch (TREE_CODE (_p1))
19119 : {
19120 0 : case NEGATE_EXPR:
19121 0 : {
19122 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19123 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19124 : {
19125 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19126 : {
19127 0 : {
19128 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19129 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITF);
19130 0 : if (res) return res;
19131 : }
19132 : }
19133 : }
19134 : break;
19135 : }
19136 : default:;
19137 : }
19138 : }
19139 : }
19140 : break;
19141 30 : case CFN_BUILT_IN_SIGNBITL:
19142 30 : if (call_expr_nargs (_q20) == 1)
19143 : {
19144 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19145 30 : if (integer_zerop (_q21))
19146 : {
19147 30 : switch (TREE_CODE (_p1))
19148 : {
19149 0 : case NEGATE_EXPR:
19150 0 : {
19151 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19152 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19153 : {
19154 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19155 : {
19156 0 : {
19157 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19158 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITL);
19159 0 : if (res) return res;
19160 : }
19161 : }
19162 : }
19163 : break;
19164 : }
19165 : default:;
19166 : }
19167 : }
19168 : }
19169 : break;
19170 0 : case CFN_SIGNBIT:
19171 0 : if (call_expr_nargs (_q20) == 1)
19172 : {
19173 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19174 0 : if (integer_zerop (_q21))
19175 : {
19176 0 : switch (TREE_CODE (_p1))
19177 : {
19178 0 : case NEGATE_EXPR:
19179 0 : {
19180 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19181 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19182 : {
19183 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19184 : {
19185 0 : {
19186 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19187 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_SIGNBIT);
19188 0 : if (res) return res;
19189 : }
19190 : }
19191 : }
19192 : break;
19193 : }
19194 : default:;
19195 : }
19196 : }
19197 : }
19198 : break;
19199 2896 : case CFN_BUILT_IN_SIGNBIT:
19200 2896 : if (call_expr_nargs (_q20) == 1)
19201 : {
19202 2896 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19203 2896 : if (integer_zerop (_q21))
19204 : {
19205 2896 : switch (TREE_CODE (_p1))
19206 : {
19207 4 : case NEGATE_EXPR:
19208 4 : {
19209 4 : tree _q60 = TREE_OPERAND (_p1, 0);
19210 4 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19211 : {
19212 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19213 : {
19214 3 : {
19215 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19216 3 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBIT);
19217 3 : if (res) return res;
19218 : }
19219 : }
19220 : }
19221 : break;
19222 : }
19223 : default:;
19224 : }
19225 : }
19226 : }
19227 : break;
19228 : default:;
19229 : }
19230 : break;
19231 2802013 : default:;
19232 : }
19233 2802013 : if (integer_zerop (_q21))
19234 : {
19235 1856412 : switch (TREE_CODE (_p1))
19236 : {
19237 97190 : case PLUS_EXPR:
19238 97190 : {
19239 97190 : tree _q50 = TREE_OPERAND (_p1, 0);
19240 97190 : tree _q51 = TREE_OPERAND (_p1, 1);
19241 97190 : {
19242 97190 : tree _q50_pops[1];
19243 97190 : if (tree_nop_convert (_q50, _q50_pops))
19244 : {
19245 11503 : tree _q60 = _q50_pops[0];
19246 11503 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19247 : {
19248 1615 : if (integer_all_onesp (_q51))
19249 : {
19250 1615 : if (integer_zerop (_p2))
19251 : {
19252 1607 : {
19253 1607 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19254 1607 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures);
19255 1607 : if (res) return res;
19256 : }
19257 : }
19258 : }
19259 : }
19260 : }
19261 : }
19262 95583 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19263 : {
19264 2024 : if (integer_all_onesp (_q51))
19265 : {
19266 1989 : if (integer_zerop (_p2))
19267 : {
19268 1979 : {
19269 1979 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19270 1979 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures);
19271 1979 : if (res) return res;
19272 : }
19273 : }
19274 : }
19275 : }
19276 : break;
19277 : }
19278 568619 : case CALL_EXPR:
19279 568619 : switch (get_call_combined_fn (_p1))
19280 : {
19281 0 : case CFN_PARITY:
19282 0 : if (call_expr_nargs (_p1) == 1)
19283 : {
19284 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19285 0 : switch (TREE_CODE (_q50))
19286 : {
19287 0 : CASE_CONVERT:
19288 0 : {
19289 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19290 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19291 : {
19292 0 : if (integer_zerop (_p2))
19293 : {
19294 0 : {
19295 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19296 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19297 0 : if (res) return res;
19298 : }
19299 : }
19300 : }
19301 : break;
19302 : }
19303 0 : default:;
19304 : }
19305 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19306 : {
19307 0 : if (integer_zerop (_p2))
19308 : {
19309 0 : {
19310 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19311 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19312 0 : if (res) return res;
19313 : }
19314 : }
19315 : }
19316 : }
19317 : break;
19318 7 : case CFN_BUILT_IN_FFS:
19319 7 : if (call_expr_nargs (_p1) == 1)
19320 : {
19321 7 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19322 7 : switch (TREE_CODE (_q50))
19323 : {
19324 0 : CASE_CONVERT:
19325 0 : {
19326 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19327 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19328 : {
19329 0 : if (integer_zerop (_p2))
19330 : {
19331 0 : {
19332 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19333 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19334 0 : if (res) return res;
19335 : }
19336 : }
19337 : }
19338 : break;
19339 : }
19340 7 : default:;
19341 : }
19342 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19343 : {
19344 0 : if (integer_zerop (_p2))
19345 : {
19346 0 : {
19347 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19348 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19349 0 : if (res) return res;
19350 : }
19351 : }
19352 : }
19353 : }
19354 : break;
19355 0 : case CFN_BUILT_IN_FFSIMAX:
19356 0 : if (call_expr_nargs (_p1) == 1)
19357 : {
19358 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19359 0 : switch (TREE_CODE (_q50))
19360 : {
19361 0 : CASE_CONVERT:
19362 0 : {
19363 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19364 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19365 : {
19366 0 : if (integer_zerop (_p2))
19367 : {
19368 0 : {
19369 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19370 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19371 0 : if (res) return res;
19372 : }
19373 : }
19374 : }
19375 : break;
19376 : }
19377 0 : default:;
19378 : }
19379 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19380 : {
19381 0 : if (integer_zerop (_p2))
19382 : {
19383 0 : {
19384 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19385 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19386 0 : if (res) return res;
19387 : }
19388 : }
19389 : }
19390 : }
19391 : break;
19392 2 : case CFN_BUILT_IN_POPCOUNT:
19393 2 : if (call_expr_nargs (_p1) == 1)
19394 : {
19395 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19396 2 : switch (TREE_CODE (_q50))
19397 : {
19398 1 : CASE_CONVERT:
19399 1 : {
19400 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19401 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19402 : {
19403 1 : if (integer_zerop (_p2))
19404 : {
19405 1 : {
19406 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19407 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19408 1 : if (res) return res;
19409 : }
19410 : }
19411 : }
19412 : break;
19413 : }
19414 1 : default:;
19415 : }
19416 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19417 : {
19418 0 : if (integer_zerop (_p2))
19419 : {
19420 0 : {
19421 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19422 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19423 0 : if (res) return res;
19424 : }
19425 : }
19426 : }
19427 : }
19428 : break;
19429 2 : case CFN_BUILT_IN_PARITYL:
19430 2 : if (call_expr_nargs (_p1) == 1)
19431 : {
19432 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19433 2 : switch (TREE_CODE (_q50))
19434 : {
19435 1 : CASE_CONVERT:
19436 1 : {
19437 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19438 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19439 : {
19440 1 : if (integer_zerop (_p2))
19441 : {
19442 1 : {
19443 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19444 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19445 1 : if (res) return res;
19446 : }
19447 : }
19448 : }
19449 : break;
19450 : }
19451 1 : default:;
19452 : }
19453 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19454 : {
19455 0 : if (integer_zerop (_p2))
19456 : {
19457 0 : {
19458 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19459 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19460 0 : if (res) return res;
19461 : }
19462 : }
19463 : }
19464 : }
19465 : break;
19466 16 : case CFN_BUILT_IN_FFSL:
19467 16 : if (call_expr_nargs (_p1) == 1)
19468 : {
19469 16 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19470 16 : switch (TREE_CODE (_q50))
19471 : {
19472 16 : CASE_CONVERT:
19473 16 : {
19474 16 : tree _q60 = TREE_OPERAND (_q50, 0);
19475 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19476 : {
19477 0 : if (integer_zerop (_p2))
19478 : {
19479 0 : {
19480 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19481 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19482 0 : if (res) return res;
19483 : }
19484 : }
19485 : }
19486 : break;
19487 : }
19488 16 : default:;
19489 : }
19490 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19491 : {
19492 0 : if (integer_zerop (_p2))
19493 : {
19494 0 : {
19495 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19496 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19497 0 : if (res) return res;
19498 : }
19499 : }
19500 : }
19501 : }
19502 : break;
19503 2 : case CFN_BUILT_IN_POPCOUNTLL:
19504 2 : if (call_expr_nargs (_p1) == 1)
19505 : {
19506 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19507 2 : switch (TREE_CODE (_q50))
19508 : {
19509 1 : CASE_CONVERT:
19510 1 : {
19511 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19512 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19513 : {
19514 1 : if (integer_zerop (_p2))
19515 : {
19516 1 : {
19517 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19518 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19519 1 : if (res) return res;
19520 : }
19521 : }
19522 : }
19523 : break;
19524 : }
19525 1 : default:;
19526 : }
19527 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19528 : {
19529 0 : if (integer_zerop (_p2))
19530 : {
19531 0 : {
19532 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19533 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19534 0 : if (res) return res;
19535 : }
19536 : }
19537 : }
19538 : }
19539 : break;
19540 0 : case CFN_POPCOUNT:
19541 0 : if (call_expr_nargs (_p1) == 1)
19542 : {
19543 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19544 0 : switch (TREE_CODE (_q50))
19545 : {
19546 0 : CASE_CONVERT:
19547 0 : {
19548 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19549 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19550 : {
19551 0 : if (integer_zerop (_p2))
19552 : {
19553 0 : {
19554 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19555 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19556 0 : if (res) return res;
19557 : }
19558 : }
19559 : }
19560 : break;
19561 : }
19562 0 : default:;
19563 : }
19564 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19565 : {
19566 0 : if (integer_zerop (_p2))
19567 : {
19568 0 : {
19569 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19570 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19571 0 : if (res) return res;
19572 : }
19573 : }
19574 : }
19575 : }
19576 : break;
19577 0 : case CFN_BUILT_IN_PARITYIMAX:
19578 0 : if (call_expr_nargs (_p1) == 1)
19579 : {
19580 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19581 0 : switch (TREE_CODE (_q50))
19582 : {
19583 0 : CASE_CONVERT:
19584 0 : {
19585 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19586 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19587 : {
19588 0 : if (integer_zerop (_p2))
19589 : {
19590 0 : {
19591 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19592 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19593 0 : if (res) return res;
19594 : }
19595 : }
19596 : }
19597 : break;
19598 : }
19599 0 : default:;
19600 : }
19601 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19602 : {
19603 0 : if (integer_zerop (_p2))
19604 : {
19605 0 : {
19606 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19607 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19608 0 : if (res) return res;
19609 : }
19610 : }
19611 : }
19612 : }
19613 : break;
19614 2 : case CFN_BUILT_IN_CLRSBL:
19615 2 : if (call_expr_nargs (_p1) == 1)
19616 : {
19617 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19618 2 : switch (TREE_CODE (_q50))
19619 : {
19620 0 : CASE_CONVERT:
19621 0 : {
19622 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19623 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19624 : {
19625 0 : switch (TREE_CODE (_p2))
19626 : {
19627 0 : case INTEGER_CST:
19628 0 : {
19629 0 : {
19630 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19631 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19632 0 : if (res) return res;
19633 : }
19634 0 : break;
19635 : }
19636 : default:;
19637 : }
19638 : }
19639 : break;
19640 : }
19641 2 : default:;
19642 : }
19643 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19644 : {
19645 1 : switch (TREE_CODE (_p2))
19646 : {
19647 1 : case INTEGER_CST:
19648 1 : {
19649 1 : {
19650 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19651 1 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19652 1 : if (res) return res;
19653 : }
19654 0 : break;
19655 : }
19656 : default:;
19657 : }
19658 : }
19659 : }
19660 : break;
19661 0 : case CFN_FFS:
19662 0 : if (call_expr_nargs (_p1) == 1)
19663 : {
19664 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19665 0 : switch (TREE_CODE (_q50))
19666 : {
19667 0 : CASE_CONVERT:
19668 0 : {
19669 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19670 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19671 : {
19672 0 : if (integer_zerop (_p2))
19673 : {
19674 0 : {
19675 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19676 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19677 0 : if (res) return res;
19678 : }
19679 : }
19680 : }
19681 : break;
19682 : }
19683 0 : default:;
19684 : }
19685 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19686 : {
19687 0 : if (integer_zerop (_p2))
19688 : {
19689 0 : {
19690 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19691 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19692 0 : if (res) return res;
19693 : }
19694 : }
19695 : }
19696 : }
19697 : break;
19698 2 : case CFN_BUILT_IN_PARITY:
19699 2 : if (call_expr_nargs (_p1) == 1)
19700 : {
19701 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19702 2 : switch (TREE_CODE (_q50))
19703 : {
19704 1 : CASE_CONVERT:
19705 1 : {
19706 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19707 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19708 : {
19709 1 : if (integer_zerop (_p2))
19710 : {
19711 1 : {
19712 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19713 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19714 1 : if (res) return res;
19715 : }
19716 : }
19717 : }
19718 : break;
19719 : }
19720 1 : default:;
19721 : }
19722 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19723 : {
19724 0 : if (integer_zerop (_p2))
19725 : {
19726 0 : {
19727 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19728 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19729 0 : if (res) return res;
19730 : }
19731 : }
19732 : }
19733 : }
19734 : break;
19735 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
19736 0 : if (call_expr_nargs (_p1) == 1)
19737 : {
19738 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19739 0 : switch (TREE_CODE (_q50))
19740 : {
19741 0 : CASE_CONVERT:
19742 0 : {
19743 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19744 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19745 : {
19746 0 : if (integer_zerop (_p2))
19747 : {
19748 0 : {
19749 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19750 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19751 0 : if (res) return res;
19752 : }
19753 : }
19754 : }
19755 : break;
19756 : }
19757 0 : default:;
19758 : }
19759 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19760 : {
19761 0 : if (integer_zerop (_p2))
19762 : {
19763 0 : {
19764 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19765 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19766 0 : if (res) return res;
19767 : }
19768 : }
19769 : }
19770 : }
19771 : break;
19772 0 : case CFN_BUILT_IN_CLRSBIMAX:
19773 0 : if (call_expr_nargs (_p1) == 1)
19774 : {
19775 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19776 0 : switch (TREE_CODE (_q50))
19777 : {
19778 0 : CASE_CONVERT:
19779 0 : {
19780 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19781 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19782 : {
19783 0 : switch (TREE_CODE (_p2))
19784 : {
19785 0 : case INTEGER_CST:
19786 0 : {
19787 0 : {
19788 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19789 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19790 0 : if (res) return res;
19791 : }
19792 0 : break;
19793 : }
19794 : default:;
19795 : }
19796 : }
19797 : break;
19798 : }
19799 0 : default:;
19800 : }
19801 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19802 : {
19803 0 : switch (TREE_CODE (_p2))
19804 : {
19805 0 : case INTEGER_CST:
19806 0 : {
19807 0 : {
19808 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19809 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19810 0 : if (res) return res;
19811 : }
19812 0 : break;
19813 : }
19814 : default:;
19815 : }
19816 : }
19817 : }
19818 : break;
19819 2 : case CFN_BUILT_IN_CLRSBLL:
19820 2 : if (call_expr_nargs (_p1) == 1)
19821 : {
19822 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19823 2 : switch (TREE_CODE (_q50))
19824 : {
19825 0 : CASE_CONVERT:
19826 0 : {
19827 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19828 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19829 : {
19830 0 : switch (TREE_CODE (_p2))
19831 : {
19832 0 : case INTEGER_CST:
19833 0 : {
19834 0 : {
19835 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19836 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
19837 0 : if (res) return res;
19838 : }
19839 0 : break;
19840 : }
19841 : default:;
19842 : }
19843 : }
19844 : break;
19845 : }
19846 2 : default:;
19847 : }
19848 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19849 : {
19850 1 : switch (TREE_CODE (_p2))
19851 : {
19852 1 : case INTEGER_CST:
19853 1 : {
19854 1 : {
19855 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19856 1 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
19857 1 : if (res) return res;
19858 : }
19859 0 : break;
19860 : }
19861 : default:;
19862 : }
19863 : }
19864 : }
19865 : break;
19866 0 : case CFN_BSWAP:
19867 0 : if (call_expr_nargs (_p1) == 1)
19868 : {
19869 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19870 0 : switch (TREE_CODE (_q50))
19871 : {
19872 0 : CASE_CONVERT:
19873 0 : {
19874 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19875 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19876 : {
19877 0 : if (integer_zerop (_p2))
19878 : {
19879 0 : {
19880 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19881 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
19882 0 : if (res) return res;
19883 : }
19884 : }
19885 : }
19886 : break;
19887 : }
19888 0 : default:;
19889 : }
19890 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19891 : {
19892 0 : if (integer_zerop (_p2))
19893 : {
19894 0 : {
19895 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19896 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
19897 0 : if (res) return res;
19898 : }
19899 : }
19900 : }
19901 : }
19902 : break;
19903 0 : case CFN_CLRSB:
19904 0 : if (call_expr_nargs (_p1) == 1)
19905 : {
19906 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19907 0 : switch (TREE_CODE (_q50))
19908 : {
19909 0 : CASE_CONVERT:
19910 0 : {
19911 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19912 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19913 : {
19914 0 : switch (TREE_CODE (_p2))
19915 : {
19916 0 : case INTEGER_CST:
19917 0 : {
19918 0 : {
19919 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19920 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
19921 0 : if (res) return res;
19922 : }
19923 0 : break;
19924 : }
19925 : default:;
19926 : }
19927 : }
19928 : break;
19929 : }
19930 0 : default:;
19931 : }
19932 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19933 : {
19934 0 : switch (TREE_CODE (_p2))
19935 : {
19936 0 : case INTEGER_CST:
19937 0 : {
19938 0 : {
19939 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19940 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
19941 0 : if (res) return res;
19942 : }
19943 0 : break;
19944 : }
19945 : default:;
19946 : }
19947 : }
19948 : }
19949 : break;
19950 0 : case CFN_BUILT_IN_BSWAP128:
19951 0 : if (call_expr_nargs (_p1) == 1)
19952 : {
19953 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19954 0 : switch (TREE_CODE (_q50))
19955 : {
19956 0 : CASE_CONVERT:
19957 0 : {
19958 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19959 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19960 : {
19961 0 : if (integer_zerop (_p2))
19962 : {
19963 0 : {
19964 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19965 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
19966 0 : if (res) return res;
19967 : }
19968 : }
19969 : }
19970 : break;
19971 : }
19972 0 : default:;
19973 : }
19974 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19975 : {
19976 0 : if (integer_zerop (_p2))
19977 : {
19978 0 : {
19979 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19980 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
19981 0 : if (res) return res;
19982 : }
19983 : }
19984 : }
19985 : }
19986 : break;
19987 2 : case CFN_BUILT_IN_POPCOUNTL:
19988 2 : if (call_expr_nargs (_p1) == 1)
19989 : {
19990 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19991 2 : switch (TREE_CODE (_q50))
19992 : {
19993 1 : CASE_CONVERT:
19994 1 : {
19995 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19996 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19997 : {
19998 1 : if (integer_zerop (_p2))
19999 : {
20000 1 : {
20001 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20002 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20003 1 : if (res) return res;
20004 : }
20005 : }
20006 : }
20007 : break;
20008 : }
20009 1 : default:;
20010 : }
20011 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20012 : {
20013 0 : if (integer_zerop (_p2))
20014 : {
20015 0 : {
20016 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20017 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20018 0 : if (res) return res;
20019 : }
20020 : }
20021 : }
20022 : }
20023 : break;
20024 2 : case CFN_BUILT_IN_CLRSB:
20025 2 : if (call_expr_nargs (_p1) == 1)
20026 : {
20027 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20028 2 : switch (TREE_CODE (_q50))
20029 : {
20030 0 : CASE_CONVERT:
20031 0 : {
20032 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20033 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20034 : {
20035 0 : switch (TREE_CODE (_p2))
20036 : {
20037 0 : case INTEGER_CST:
20038 0 : {
20039 0 : {
20040 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20041 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20042 0 : if (res) return res;
20043 : }
20044 0 : break;
20045 : }
20046 : default:;
20047 : }
20048 : }
20049 : break;
20050 : }
20051 2 : default:;
20052 : }
20053 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20054 : {
20055 1 : switch (TREE_CODE (_p2))
20056 : {
20057 1 : case INTEGER_CST:
20058 1 : {
20059 1 : {
20060 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20061 1 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20062 1 : if (res) return res;
20063 : }
20064 0 : break;
20065 : }
20066 : default:;
20067 : }
20068 : }
20069 : }
20070 : break;
20071 0 : case CFN_BUILT_IN_FFSLL:
20072 0 : if (call_expr_nargs (_p1) == 1)
20073 : {
20074 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20075 0 : switch (TREE_CODE (_q50))
20076 : {
20077 0 : CASE_CONVERT:
20078 0 : {
20079 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20080 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20081 : {
20082 0 : if (integer_zerop (_p2))
20083 : {
20084 0 : {
20085 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20086 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20087 0 : if (res) return res;
20088 : }
20089 : }
20090 : }
20091 : break;
20092 : }
20093 0 : default:;
20094 : }
20095 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20096 : {
20097 0 : if (integer_zerop (_p2))
20098 : {
20099 0 : {
20100 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20101 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20102 0 : if (res) return res;
20103 : }
20104 : }
20105 : }
20106 : }
20107 : break;
20108 2 : case CFN_BUILT_IN_PARITYLL:
20109 2 : if (call_expr_nargs (_p1) == 1)
20110 : {
20111 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20112 2 : switch (TREE_CODE (_q50))
20113 : {
20114 1 : CASE_CONVERT:
20115 1 : {
20116 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20117 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20118 : {
20119 1 : if (integer_zerop (_p2))
20120 : {
20121 1 : {
20122 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20123 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20124 1 : if (res) return res;
20125 : }
20126 : }
20127 : }
20128 : break;
20129 : }
20130 1 : default:;
20131 : }
20132 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20133 : {
20134 0 : if (integer_zerop (_p2))
20135 : {
20136 0 : {
20137 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20138 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20139 0 : if (res) return res;
20140 : }
20141 : }
20142 : }
20143 : }
20144 : break;
20145 3 : case CFN_BUILT_IN_BSWAP16:
20146 3 : if (call_expr_nargs (_p1) == 1)
20147 : {
20148 3 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20149 3 : switch (TREE_CODE (_q50))
20150 : {
20151 0 : CASE_CONVERT:
20152 0 : {
20153 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20154 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20155 : {
20156 0 : if (integer_zerop (_p2))
20157 : {
20158 0 : {
20159 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20160 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20161 0 : if (res) return res;
20162 : }
20163 : }
20164 : }
20165 : break;
20166 : }
20167 3 : default:;
20168 : }
20169 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20170 : {
20171 1 : if (integer_zerop (_p2))
20172 : {
20173 1 : {
20174 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20175 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20176 1 : if (res) return res;
20177 : }
20178 : }
20179 : }
20180 : }
20181 : break;
20182 2 : case CFN_BUILT_IN_BSWAP32:
20183 2 : if (call_expr_nargs (_p1) == 1)
20184 : {
20185 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20186 2 : switch (TREE_CODE (_q50))
20187 : {
20188 0 : CASE_CONVERT:
20189 0 : {
20190 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20191 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20192 : {
20193 0 : if (integer_zerop (_p2))
20194 : {
20195 0 : {
20196 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20197 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20198 0 : if (res) return res;
20199 : }
20200 : }
20201 : }
20202 : break;
20203 : }
20204 2 : default:;
20205 : }
20206 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20207 : {
20208 1 : if (integer_zerop (_p2))
20209 : {
20210 1 : {
20211 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20212 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20213 1 : if (res) return res;
20214 : }
20215 : }
20216 : }
20217 : }
20218 : break;
20219 2 : case CFN_BUILT_IN_BSWAP64:
20220 2 : if (call_expr_nargs (_p1) == 1)
20221 : {
20222 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20223 2 : switch (TREE_CODE (_q50))
20224 : {
20225 1 : CASE_CONVERT:
20226 1 : {
20227 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20228 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20229 : {
20230 1 : if (integer_zerop (_p2))
20231 : {
20232 1 : {
20233 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20234 1 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20235 1 : if (res) return res;
20236 : }
20237 : }
20238 : }
20239 : break;
20240 : }
20241 1 : default:;
20242 : }
20243 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20244 : {
20245 0 : if (integer_zerop (_p2))
20246 : {
20247 0 : {
20248 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20249 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20250 0 : if (res) return res;
20251 : }
20252 : }
20253 : }
20254 : }
20255 : break;
20256 : default:;
20257 : }
20258 : break;
20259 1852814 : default:;
20260 : }
20261 1852814 : {
20262 1852814 : tree _p1_pops[1];
20263 1852814 : if (tree_nop_convert (_p1, _p1_pops))
20264 : {
20265 157848 : tree _q50 = _p1_pops[0];
20266 157848 : switch (TREE_CODE (_q50))
20267 : {
20268 339 : case PLUS_EXPR:
20269 339 : {
20270 339 : tree _q60 = TREE_OPERAND (_q50, 0);
20271 339 : tree _q61 = TREE_OPERAND (_q50, 1);
20272 339 : {
20273 339 : tree _q60_pops[1];
20274 339 : if (tree_nop_convert (_q60, _q60_pops))
20275 : {
20276 52 : tree _q70 = _q60_pops[0];
20277 52 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
20278 : {
20279 2 : if (integer_all_onesp (_q61))
20280 : {
20281 2 : if (integer_zerop (_p2))
20282 : {
20283 2 : {
20284 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20285 2 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures);
20286 2 : if (res) return res;
20287 : }
20288 : }
20289 : }
20290 : }
20291 : }
20292 : }
20293 337 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20294 : {
20295 14 : if (integer_all_onesp (_q61))
20296 : {
20297 0 : if (integer_zerop (_p2))
20298 : {
20299 0 : {
20300 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20301 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures);
20302 0 : if (res) return res;
20303 : }
20304 : }
20305 : }
20306 : }
20307 : break;
20308 : }
20309 : default:;
20310 : }
20311 : }
20312 : }
20313 : }
20314 : break;
20315 : }
20316 7 : case LTGT_EXPR:
20317 7 : {
20318 7 : tree _q20 = TREE_OPERAND (_p0, 0);
20319 7 : tree _q21 = TREE_OPERAND (_p0, 1);
20320 7 : if (zerop (_q21))
20321 : {
20322 0 : switch (TREE_CODE (_p2))
20323 : {
20324 0 : case NEGATE_EXPR:
20325 0 : {
20326 0 : tree _q60 = TREE_OPERAND (_p2, 0);
20327 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20328 : {
20329 0 : {
20330 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20331 0 : const enum tree_code cmp = LTGT_EXPR;
20332 0 : if (!HONOR_SIGNED_ZEROS (type)
20333 0 : && bitwise_equal_p (captures[0], captures[1])
20334 : )
20335 : {
20336 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1859;
20337 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1859;
20338 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1859;
20339 0 : {
20340 0 : tree _r;
20341 0 : _r = captures[1];
20342 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
20343 0 : return _r;
20344 : }
20345 0 : next_after_fail1859:;
20346 : }
20347 : }
20348 : }
20349 : break;
20350 : }
20351 0 : default:;
20352 : }
20353 0 : if (integer_zerop (_p2))
20354 : {
20355 0 : {
20356 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20357 0 : const enum tree_code cmp = LTGT_EXPR;
20358 0 : if (!HONOR_SIGNED_ZEROS (type)
20359 0 : && bitwise_equal_p (captures[0], captures[1])
20360 : )
20361 : {
20362 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1860;
20363 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1860;
20364 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1860;
20365 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1860;
20366 0 : {
20367 0 : tree _r;
20368 0 : _r = captures[1];
20369 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
20370 0 : return _r;
20371 : }
20372 0 : next_after_fail1860:;
20373 : }
20374 : }
20375 : }
20376 : }
20377 7 : switch (TREE_CODE (_q20))
20378 : {
20379 0 : case MINUS_EXPR:
20380 0 : {
20381 0 : tree _q30 = TREE_OPERAND (_q20, 0);
20382 0 : tree _q31 = TREE_OPERAND (_q20, 1);
20383 0 : if (zerop (_q21))
20384 : {
20385 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20386 : {
20387 0 : switch (TREE_CODE (_p2))
20388 : {
20389 0 : case MINUS_EXPR:
20390 0 : {
20391 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20392 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20393 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20394 : {
20395 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20396 : {
20397 0 : {
20398 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20399 0 : const enum tree_code cmp = LTGT_EXPR;
20400 0 : if (!HONOR_SIGNED_ZEROS (type)
20401 : )
20402 : {
20403 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1861;
20404 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1861;
20405 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1861;
20406 0 : {
20407 0 : tree _r;
20408 0 : _r = captures[0];
20409 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
20410 0 : return _r;
20411 : }
20412 0 : next_after_fail1861:;
20413 : }
20414 : }
20415 : }
20416 : }
20417 : break;
20418 : }
20419 : default:;
20420 : }
20421 : }
20422 : }
20423 0 : if (integer_zerop (_q21))
20424 : {
20425 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20426 : {
20427 0 : if (integer_zerop (_p2))
20428 : {
20429 0 : {
20430 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20431 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, LTGT_EXPR);
20432 0 : if (res) return res;
20433 : }
20434 : }
20435 : }
20436 : }
20437 : break;
20438 : }
20439 : default:;
20440 : }
20441 : break;
20442 : }
20443 532673 : case GE_EXPR:
20444 532673 : {
20445 532673 : tree _q20 = TREE_OPERAND (_p0, 0);
20446 532673 : tree _q21 = TREE_OPERAND (_p0, 1);
20447 532673 : switch (TREE_CODE (_q20))
20448 : {
20449 56306 : CASE_CONVERT:
20450 56306 : {
20451 56306 : tree _q30 = TREE_OPERAND (_q20, 0);
20452 56306 : if (zerop (_q21))
20453 : {
20454 25417 : switch (TREE_CODE (_p2))
20455 : {
20456 13 : case NEGATE_EXPR:
20457 13 : {
20458 13 : tree _q70 = TREE_OPERAND (_p2, 0);
20459 13 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20460 : {
20461 13 : {
20462 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20463 13 : const enum tree_code cmp = GE_EXPR;
20464 13 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20465 13 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20466 0 : && element_precision (captures[1])
20467 0 : <= element_precision (captures[0])
20468 0 : && bitwise_equal_p (captures[1], captures[2])
20469 13 : && (!VECTOR_TYPE_P (type)
20470 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20471 : )
20472 : {
20473 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20474 : )
20475 : {
20476 0 : {
20477 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20478 0 : if (types_match (captures[0], stype)
20479 : )
20480 : {
20481 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1862;
20482 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1862;
20483 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1862;
20484 0 : {
20485 0 : tree res_op0;
20486 0 : res_op0 = captures[0];
20487 0 : tree _r;
20488 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20489 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20490 0 : return _r;
20491 : }
20492 13 : next_after_fail1862:;
20493 : }
20494 : else
20495 : {
20496 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1863;
20497 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1863;
20498 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1863;
20499 0 : {
20500 0 : tree res_op0;
20501 0 : {
20502 0 : tree _o1[1], _r1;
20503 0 : _o1[0] = captures[2];
20504 0 : if (TREE_TYPE (_o1[0]) != stype)
20505 : {
20506 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20507 : }
20508 : else
20509 : _r1 = _o1[0];
20510 0 : res_op0 = _r1;
20511 : }
20512 0 : tree _r;
20513 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20514 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
20515 0 : return _r;
20516 : }
20517 13 : next_after_fail1863:;
20518 : }
20519 : }
20520 : }
20521 : else
20522 : {
20523 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1864;
20524 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1864;
20525 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1864;
20526 0 : {
20527 0 : tree res_op0;
20528 0 : res_op0 = captures[2];
20529 0 : tree _r;
20530 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20531 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
20532 0 : return _r;
20533 : }
20534 13 : next_after_fail1864:;
20535 : }
20536 : }
20537 : }
20538 : }
20539 : break;
20540 : }
20541 : default:;
20542 : }
20543 : }
20544 : break;
20545 : }
20546 532673 : default:;
20547 : }
20548 532673 : if (zerop (_q21))
20549 : {
20550 143263 : switch (TREE_CODE (_p2))
20551 : {
20552 30861 : case NEGATE_EXPR:
20553 30861 : {
20554 30861 : tree _q60 = TREE_OPERAND (_p2, 0);
20555 30861 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20556 : {
20557 30855 : {
20558 30855 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20559 30855 : const enum tree_code cmp = GE_EXPR;
20560 30855 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20561 30847 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20562 61694 : && element_precision (captures[1])
20563 30847 : <= element_precision (captures[0])
20564 30847 : && bitwise_equal_p (captures[1], captures[2])
20565 61604 : && (!VECTOR_TYPE_P (type)
20566 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20567 : )
20568 : {
20569 30749 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20570 : )
20571 : {
20572 46 : {
20573 46 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20574 46 : if (types_match (captures[0], stype)
20575 : )
20576 : {
20577 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1865;
20578 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1865;
20579 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1865;
20580 13 : {
20581 13 : tree res_op0;
20582 13 : res_op0 = captures[0];
20583 13 : tree _r;
20584 13 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20585 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20586 13 : return _r;
20587 : }
20588 106 : next_after_fail1865:;
20589 : }
20590 : else
20591 : {
20592 33 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1866;
20593 33 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1866;
20594 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1866;
20595 33 : {
20596 33 : tree res_op0;
20597 33 : {
20598 33 : tree _o1[1], _r1;
20599 33 : _o1[0] = captures[2];
20600 33 : if (TREE_TYPE (_o1[0]) != stype)
20601 : {
20602 33 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20603 : }
20604 : else
20605 : _r1 = _o1[0];
20606 33 : res_op0 = _r1;
20607 : }
20608 33 : tree _r;
20609 33 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20610 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
20611 33 : return _r;
20612 : }
20613 106 : next_after_fail1866:;
20614 : }
20615 : }
20616 : }
20617 : else
20618 : {
20619 30703 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1867;
20620 30703 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1867;
20621 30703 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1867;
20622 30703 : {
20623 30703 : tree res_op0;
20624 30703 : res_op0 = captures[2];
20625 30703 : tree _r;
20626 30703 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20627 30703 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
20628 30703 : return _r;
20629 : }
20630 106 : next_after_fail1867:;
20631 : }
20632 : }
20633 : }
20634 : }
20635 : break;
20636 : }
20637 : default:;
20638 : }
20639 : }
20640 501924 : switch (TREE_CODE (_q20))
20641 : {
20642 31911 : case MINUS_EXPR:
20643 31911 : {
20644 31911 : tree _q30 = TREE_OPERAND (_q20, 0);
20645 31911 : tree _q31 = TREE_OPERAND (_q20, 1);
20646 31911 : if (zerop (_q21))
20647 : {
20648 31123 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20649 : {
20650 1 : switch (TREE_CODE (_p2))
20651 : {
20652 1 : case MINUS_EXPR:
20653 1 : {
20654 1 : tree _q80 = TREE_OPERAND (_p2, 0);
20655 1 : tree _q81 = TREE_OPERAND (_p2, 1);
20656 1 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20657 : {
20658 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20659 : {
20660 1 : {
20661 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20662 1 : const enum tree_code cmp = GE_EXPR;
20663 1 : if (!HONOR_SIGNED_ZEROS (type)
20664 1 : && !TYPE_UNSIGNED (type)
20665 2 : && (!VECTOR_TYPE_P (type)
20666 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20667 : )
20668 : {
20669 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1868;
20670 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1868;
20671 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1868;
20672 1 : {
20673 1 : tree res_op0;
20674 1 : res_op0 = captures[0];
20675 1 : tree _r;
20676 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20677 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
20678 1 : return _r;
20679 : }
20680 0 : next_after_fail1868:;
20681 : }
20682 : }
20683 : }
20684 : }
20685 : break;
20686 : }
20687 : default:;
20688 : }
20689 : }
20690 : }
20691 : break;
20692 : }
20693 501923 : default:;
20694 : }
20695 501923 : if (integer_zerop (_q21))
20696 : {
20697 111962 : switch (TREE_CODE (_p1))
20698 : {
20699 65 : case BIT_NOT_EXPR:
20700 65 : {
20701 65 : tree _q50 = TREE_OPERAND (_p1, 0);
20702 65 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
20703 : {
20704 9 : {
20705 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
20706 9 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
20707 9 : if (res) return res;
20708 : }
20709 : }
20710 : break;
20711 : }
20712 111953 : default:;
20713 : }
20714 111953 : switch (TREE_CODE (_p2))
20715 : {
20716 34 : case BIT_NOT_EXPR:
20717 34 : {
20718 34 : tree _q60 = TREE_OPERAND (_p2, 0);
20719 34 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20720 : {
20721 9 : {
20722 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20723 9 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
20724 9 : if (res) return res;
20725 : }
20726 : }
20727 : break;
20728 : }
20729 : default:;
20730 : }
20731 : }
20732 : break;
20733 : }
20734 893880 : case GT_EXPR:
20735 893880 : {
20736 893880 : tree _q20 = TREE_OPERAND (_p0, 0);
20737 893880 : tree _q21 = TREE_OPERAND (_p0, 1);
20738 893880 : switch (TREE_CODE (_q20))
20739 : {
20740 85505 : CASE_CONVERT:
20741 85505 : {
20742 85505 : tree _q30 = TREE_OPERAND (_q20, 0);
20743 85505 : if (zerop (_q21))
20744 : {
20745 1450 : switch (TREE_CODE (_p2))
20746 : {
20747 4 : case NEGATE_EXPR:
20748 4 : {
20749 4 : tree _q70 = TREE_OPERAND (_p2, 0);
20750 4 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20751 : {
20752 0 : {
20753 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20754 0 : const enum tree_code cmp = GT_EXPR;
20755 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20756 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20757 0 : && element_precision (captures[1])
20758 0 : <= element_precision (captures[0])
20759 0 : && bitwise_equal_p (captures[1], captures[2])
20760 0 : && (!VECTOR_TYPE_P (type)
20761 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20762 : )
20763 : {
20764 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20765 : )
20766 : {
20767 0 : {
20768 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20769 0 : if (types_match (captures[0], stype)
20770 : )
20771 : {
20772 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1869;
20773 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1869;
20774 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1869;
20775 0 : {
20776 0 : tree res_op0;
20777 0 : res_op0 = captures[0];
20778 0 : tree _r;
20779 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20780 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20781 0 : return _r;
20782 : }
20783 0 : next_after_fail1869:;
20784 : }
20785 : else
20786 : {
20787 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1870;
20788 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1870;
20789 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1870;
20790 0 : {
20791 0 : tree res_op0;
20792 0 : {
20793 0 : tree _o1[1], _r1;
20794 0 : _o1[0] = captures[2];
20795 0 : if (TREE_TYPE (_o1[0]) != stype)
20796 : {
20797 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20798 : }
20799 : else
20800 : _r1 = _o1[0];
20801 0 : res_op0 = _r1;
20802 : }
20803 0 : tree _r;
20804 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20805 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
20806 0 : return _r;
20807 : }
20808 0 : next_after_fail1870:;
20809 : }
20810 : }
20811 : }
20812 : else
20813 : {
20814 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1871;
20815 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1871;
20816 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1871;
20817 0 : {
20818 0 : tree res_op0;
20819 0 : res_op0 = captures[2];
20820 0 : tree _r;
20821 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
20823 0 : return _r;
20824 : }
20825 0 : next_after_fail1871:;
20826 : }
20827 : }
20828 : }
20829 : }
20830 : break;
20831 : }
20832 : default:;
20833 : }
20834 : }
20835 : break;
20836 : }
20837 893880 : default:;
20838 : }
20839 893880 : if (zerop (_q21))
20840 : {
20841 198442 : switch (TREE_CODE (_p2))
20842 : {
20843 295 : case NEGATE_EXPR:
20844 295 : {
20845 295 : tree _q60 = TREE_OPERAND (_p2, 0);
20846 295 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20847 : {
20848 147 : {
20849 147 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20850 147 : const enum tree_code cmp = GT_EXPR;
20851 147 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20852 115 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20853 230 : && element_precision (captures[1])
20854 115 : <= element_precision (captures[0])
20855 115 : && bitwise_equal_p (captures[1], captures[2])
20856 257 : && (!VECTOR_TYPE_P (type)
20857 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20858 : )
20859 : {
20860 110 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20861 : )
20862 : {
20863 0 : {
20864 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20865 0 : if (types_match (captures[0], stype)
20866 : )
20867 : {
20868 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1872;
20869 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1872;
20870 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1872;
20871 0 : {
20872 0 : tree res_op0;
20873 0 : res_op0 = captures[0];
20874 0 : tree _r;
20875 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20876 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20877 0 : return _r;
20878 : }
20879 37 : next_after_fail1872:;
20880 : }
20881 : else
20882 : {
20883 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1873;
20884 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1873;
20885 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1873;
20886 0 : {
20887 0 : tree res_op0;
20888 0 : {
20889 0 : tree _o1[1], _r1;
20890 0 : _o1[0] = captures[2];
20891 0 : if (TREE_TYPE (_o1[0]) != stype)
20892 : {
20893 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20894 : }
20895 : else
20896 : _r1 = _o1[0];
20897 0 : res_op0 = _r1;
20898 : }
20899 0 : tree _r;
20900 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20901 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
20902 0 : return _r;
20903 : }
20904 37 : next_after_fail1873:;
20905 : }
20906 : }
20907 : }
20908 : else
20909 : {
20910 110 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1874;
20911 110 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1874;
20912 110 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1874;
20913 110 : {
20914 110 : tree res_op0;
20915 110 : res_op0 = captures[2];
20916 110 : tree _r;
20917 110 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20918 110 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
20919 110 : return _r;
20920 : }
20921 37 : next_after_fail1874:;
20922 : }
20923 : }
20924 : }
20925 : }
20926 : break;
20927 : }
20928 : default:;
20929 : }
20930 : }
20931 893770 : switch (TREE_CODE (_q20))
20932 : {
20933 1030 : case MINUS_EXPR:
20934 1030 : {
20935 1030 : tree _q30 = TREE_OPERAND (_q20, 0);
20936 1030 : tree _q31 = TREE_OPERAND (_q20, 1);
20937 1030 : if (zerop (_q21))
20938 : {
20939 160 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20940 : {
20941 15 : switch (TREE_CODE (_p2))
20942 : {
20943 9 : case MINUS_EXPR:
20944 9 : {
20945 9 : tree _q80 = TREE_OPERAND (_p2, 0);
20946 9 : tree _q81 = TREE_OPERAND (_p2, 1);
20947 9 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20948 : {
20949 9 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20950 : {
20951 9 : {
20952 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20953 9 : const enum tree_code cmp = GT_EXPR;
20954 9 : if (!HONOR_SIGNED_ZEROS (type)
20955 9 : && !TYPE_UNSIGNED (type)
20956 18 : && (!VECTOR_TYPE_P (type)
20957 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20958 : )
20959 : {
20960 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1875;
20961 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1875;
20962 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1875;
20963 9 : {
20964 9 : tree res_op0;
20965 9 : res_op0 = captures[0];
20966 9 : tree _r;
20967 9 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20968 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
20969 9 : return _r;
20970 : }
20971 0 : next_after_fail1875:;
20972 : }
20973 : }
20974 : }
20975 : }
20976 : break;
20977 : }
20978 : default:;
20979 : }
20980 : }
20981 : }
20982 : break;
20983 : }
20984 : default:;
20985 : }
20986 : break;
20987 : }
20988 1364628 : case LE_EXPR:
20989 1364628 : {
20990 1364628 : tree _q20 = TREE_OPERAND (_p0, 0);
20991 1364628 : tree _q21 = TREE_OPERAND (_p0, 1);
20992 1364628 : switch (TREE_CODE (_q20))
20993 : {
20994 141707 : CASE_CONVERT:
20995 141707 : {
20996 141707 : tree _q30 = TREE_OPERAND (_q20, 0);
20997 141707 : if (zerop (_q21))
20998 : {
20999 1192 : switch (TREE_CODE (_p2))
21000 : {
21001 0 : case NEGATE_EXPR:
21002 0 : {
21003 0 : tree _q70 = TREE_OPERAND (_p2, 0);
21004 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21005 : {
21006 0 : {
21007 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21008 0 : const enum tree_code cmp = LE_EXPR;
21009 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21010 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21011 0 : && element_precision (captures[1])
21012 0 : <= element_precision (captures[0])
21013 0 : && bitwise_equal_p (captures[1], captures[2])
21014 0 : && (!VECTOR_TYPE_P (type)
21015 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21016 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21017 : )
21018 : {
21019 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21020 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21021 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21022 : )
21023 : {
21024 0 : {
21025 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21026 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21027 0 : if (types_match (captures[0], stype)
21028 : )
21029 : {
21030 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1876;
21031 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1876;
21032 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1876;
21033 0 : {
21034 0 : tree res_op0;
21035 0 : {
21036 0 : tree _o1[1], _r1;
21037 0 : {
21038 0 : tree _o2[1], _r2;
21039 0 : _o2[0] = captures[0];
21040 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21041 0 : _o1[0] = _r2;
21042 : }
21043 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21044 0 : res_op0 = _r1;
21045 : }
21046 0 : tree _r;
21047 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21048 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21049 0 : return _r;
21050 : }
21051 0 : next_after_fail1876:;
21052 : }
21053 : else
21054 : {
21055 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1877;
21056 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1877;
21057 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1877;
21058 0 : {
21059 0 : tree res_op0;
21060 0 : {
21061 0 : tree _o1[1], _r1;
21062 0 : {
21063 0 : tree _o2[1], _r2;
21064 0 : {
21065 0 : tree _o3[1], _r3;
21066 0 : _o3[0] = captures[2];
21067 0 : if (TREE_TYPE (_o3[0]) != stype)
21068 : {
21069 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21070 : }
21071 : else
21072 : _r3 = _o3[0];
21073 0 : _o2[0] = _r3;
21074 : }
21075 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21076 0 : _o1[0] = _r2;
21077 : }
21078 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21079 0 : res_op0 = _r1;
21080 : }
21081 0 : tree _r;
21082 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21083 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21084 0 : return _r;
21085 : }
21086 0 : next_after_fail1877:;
21087 : }
21088 : }
21089 : }
21090 : else
21091 : {
21092 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1878;
21093 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1878;
21094 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1878;
21095 0 : {
21096 0 : tree res_op0;
21097 0 : {
21098 0 : tree _o1[1], _r1;
21099 0 : {
21100 0 : tree _o2[1], _r2;
21101 0 : _o2[0] = captures[2];
21102 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21103 0 : _o1[0] = _r2;
21104 : }
21105 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21106 0 : res_op0 = _r1;
21107 : }
21108 0 : tree _r;
21109 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21110 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
21111 0 : return _r;
21112 : }
21113 0 : next_after_fail1878:;
21114 : }
21115 : }
21116 : }
21117 : }
21118 : break;
21119 : }
21120 : default:;
21121 : }
21122 : }
21123 : break;
21124 : }
21125 1364628 : default:;
21126 : }
21127 1364628 : if (zerop (_q21))
21128 : {
21129 124702 : switch (TREE_CODE (_p2))
21130 : {
21131 7 : case NEGATE_EXPR:
21132 7 : {
21133 7 : tree _q60 = TREE_OPERAND (_p2, 0);
21134 7 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21135 : {
21136 7 : {
21137 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21138 7 : const enum tree_code cmp = LE_EXPR;
21139 7 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21140 7 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21141 14 : && element_precision (captures[1])
21142 7 : <= element_precision (captures[0])
21143 7 : && bitwise_equal_p (captures[1], captures[2])
21144 14 : && (!VECTOR_TYPE_P (type)
21145 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21146 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21147 : )
21148 : {
21149 14 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21150 7 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21151 7 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21152 : )
21153 : {
21154 7 : {
21155 7 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21156 7 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21157 7 : if (types_match (captures[0], stype)
21158 : )
21159 : {
21160 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1879;
21161 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1879;
21162 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1879;
21163 7 : {
21164 7 : tree res_op0;
21165 7 : {
21166 7 : tree _o1[1], _r1;
21167 7 : {
21168 7 : tree _o2[1], _r2;
21169 7 : _o2[0] = captures[0];
21170 7 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21171 7 : _o1[0] = _r2;
21172 : }
21173 7 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21174 7 : res_op0 = _r1;
21175 : }
21176 7 : tree _r;
21177 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21178 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21179 7 : return _r;
21180 : }
21181 0 : next_after_fail1879:;
21182 : }
21183 : else
21184 : {
21185 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1880;
21186 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1880;
21187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1880;
21188 0 : {
21189 0 : tree res_op0;
21190 0 : {
21191 0 : tree _o1[1], _r1;
21192 0 : {
21193 0 : tree _o2[1], _r2;
21194 0 : {
21195 0 : tree _o3[1], _r3;
21196 0 : _o3[0] = captures[2];
21197 0 : if (TREE_TYPE (_o3[0]) != stype)
21198 : {
21199 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21200 : }
21201 : else
21202 : _r3 = _o3[0];
21203 0 : _o2[0] = _r3;
21204 : }
21205 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21206 0 : _o1[0] = _r2;
21207 : }
21208 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21209 0 : res_op0 = _r1;
21210 : }
21211 0 : tree _r;
21212 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21213 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21214 0 : return _r;
21215 : }
21216 0 : next_after_fail1880:;
21217 : }
21218 : }
21219 : }
21220 : else
21221 : {
21222 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1881;
21223 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1881;
21224 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1881;
21225 0 : {
21226 0 : tree res_op0;
21227 0 : {
21228 0 : tree _o1[1], _r1;
21229 0 : {
21230 0 : tree _o2[1], _r2;
21231 0 : _o2[0] = captures[2];
21232 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21233 0 : _o1[0] = _r2;
21234 : }
21235 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21236 0 : res_op0 = _r1;
21237 : }
21238 0 : tree _r;
21239 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21240 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
21241 0 : return _r;
21242 : }
21243 0 : next_after_fail1881:;
21244 : }
21245 : }
21246 : }
21247 : }
21248 : break;
21249 : }
21250 : default:;
21251 : }
21252 : }
21253 1364621 : switch (TREE_CODE (_q20))
21254 : {
21255 190 : case MINUS_EXPR:
21256 190 : {
21257 190 : tree _q30 = TREE_OPERAND (_q20, 0);
21258 190 : tree _q31 = TREE_OPERAND (_q20, 1);
21259 190 : if (zerop (_q21))
21260 : {
21261 148 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21262 : {
21263 0 : switch (TREE_CODE (_p2))
21264 : {
21265 0 : case MINUS_EXPR:
21266 0 : {
21267 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21268 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21269 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21270 : {
21271 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21272 : {
21273 0 : {
21274 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21275 0 : const enum tree_code cmp = LE_EXPR;
21276 0 : if (!HONOR_SIGNED_ZEROS (type)
21277 0 : && !TYPE_UNSIGNED (type)
21278 : )
21279 : {
21280 0 : if (ANY_INTEGRAL_TYPE_P (type)
21281 0 : && !TYPE_OVERFLOW_WRAPS (type)
21282 0 : && (!VECTOR_TYPE_P (type)
21283 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21284 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21285 : )
21286 : {
21287 0 : {
21288 0 : tree utype = unsigned_type_for (type);
21289 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1882;
21290 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1882;
21291 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1882;
21292 0 : {
21293 0 : tree res_op0;
21294 0 : {
21295 0 : tree _o1[1], _r1;
21296 0 : {
21297 0 : tree _o2[1], _r2;
21298 0 : _o2[0] = captures[0];
21299 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21300 0 : _o1[0] = _r2;
21301 : }
21302 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21303 0 : res_op0 = _r1;
21304 : }
21305 0 : tree _r;
21306 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21307 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21308 0 : return _r;
21309 : }
21310 0 : next_after_fail1882:;
21311 : }
21312 : }
21313 : else
21314 : {
21315 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1883;
21316 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1883;
21317 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1883;
21318 0 : {
21319 0 : tree res_op0;
21320 0 : {
21321 0 : tree _o1[1], _r1;
21322 0 : _o1[0] = captures[0];
21323 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21324 0 : res_op0 = _r1;
21325 : }
21326 0 : tree _r;
21327 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21328 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21329 0 : return _r;
21330 : }
21331 0 : next_after_fail1883:;
21332 : }
21333 : }
21334 : }
21335 : }
21336 : }
21337 : break;
21338 : }
21339 : default:;
21340 : }
21341 : }
21342 : }
21343 : break;
21344 : }
21345 : default:;
21346 : }
21347 : break;
21348 : }
21349 1757044 : case LT_EXPR:
21350 1757044 : {
21351 1757044 : tree _q20 = TREE_OPERAND (_p0, 0);
21352 1757044 : tree _q21 = TREE_OPERAND (_p0, 1);
21353 1757044 : switch (TREE_CODE (_q20))
21354 : {
21355 95281 : CASE_CONVERT:
21356 95281 : {
21357 95281 : tree _q30 = TREE_OPERAND (_q20, 0);
21358 95281 : if (zerop (_q21))
21359 : {
21360 16163 : switch (TREE_CODE (_p2))
21361 : {
21362 8 : case NEGATE_EXPR:
21363 8 : {
21364 8 : tree _q70 = TREE_OPERAND (_p2, 0);
21365 8 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21366 : {
21367 0 : {
21368 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21369 0 : const enum tree_code cmp = LT_EXPR;
21370 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21371 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21372 0 : && element_precision (captures[1])
21373 0 : <= element_precision (captures[0])
21374 0 : && bitwise_equal_p (captures[1], captures[2])
21375 0 : && (!VECTOR_TYPE_P (type)
21376 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21377 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21378 : )
21379 : {
21380 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21381 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21382 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21383 : )
21384 : {
21385 0 : {
21386 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21387 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21388 0 : if (types_match (captures[0], stype)
21389 : )
21390 : {
21391 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1884;
21392 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1884;
21393 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1884;
21394 0 : {
21395 0 : tree res_op0;
21396 0 : {
21397 0 : tree _o1[1], _r1;
21398 0 : {
21399 0 : tree _o2[1], _r2;
21400 0 : _o2[0] = captures[0];
21401 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21402 0 : _o1[0] = _r2;
21403 : }
21404 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21405 0 : res_op0 = _r1;
21406 : }
21407 0 : tree _r;
21408 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21409 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21410 0 : return _r;
21411 : }
21412 0 : next_after_fail1884:;
21413 : }
21414 : else
21415 : {
21416 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1885;
21417 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1885;
21418 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1885;
21419 0 : {
21420 0 : tree res_op0;
21421 0 : {
21422 0 : tree _o1[1], _r1;
21423 0 : {
21424 0 : tree _o2[1], _r2;
21425 0 : {
21426 0 : tree _o3[1], _r3;
21427 0 : _o3[0] = captures[2];
21428 0 : if (TREE_TYPE (_o3[0]) != stype)
21429 : {
21430 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21431 : }
21432 : else
21433 : _r3 = _o3[0];
21434 0 : _o2[0] = _r3;
21435 : }
21436 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21437 0 : _o1[0] = _r2;
21438 : }
21439 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21440 0 : res_op0 = _r1;
21441 : }
21442 0 : tree _r;
21443 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21444 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21445 0 : return _r;
21446 : }
21447 0 : next_after_fail1885:;
21448 : }
21449 : }
21450 : }
21451 : else
21452 : {
21453 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1886;
21454 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1886;
21455 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1886;
21456 0 : {
21457 0 : tree res_op0;
21458 0 : {
21459 0 : tree _o1[1], _r1;
21460 0 : {
21461 0 : tree _o2[1], _r2;
21462 0 : _o2[0] = captures[2];
21463 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21464 0 : _o1[0] = _r2;
21465 : }
21466 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21467 0 : res_op0 = _r1;
21468 : }
21469 0 : tree _r;
21470 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21471 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
21472 0 : return _r;
21473 : }
21474 0 : next_after_fail1886:;
21475 : }
21476 : }
21477 : }
21478 : }
21479 : break;
21480 : }
21481 : default:;
21482 : }
21483 : }
21484 : break;
21485 : }
21486 1757044 : default:;
21487 : }
21488 1757044 : if (zerop (_q21))
21489 : {
21490 379482 : switch (TREE_CODE (_p2))
21491 : {
21492 33 : case NEGATE_EXPR:
21493 33 : {
21494 33 : tree _q60 = TREE_OPERAND (_p2, 0);
21495 33 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21496 : {
21497 25 : {
21498 25 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21499 25 : const enum tree_code cmp = LT_EXPR;
21500 25 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21501 25 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21502 50 : && element_precision (captures[1])
21503 25 : <= element_precision (captures[0])
21504 25 : && bitwise_equal_p (captures[1], captures[2])
21505 50 : && (!VECTOR_TYPE_P (type)
21506 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21507 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21508 : )
21509 : {
21510 50 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21511 25 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21512 26 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21513 : )
21514 : {
21515 24 : {
21516 24 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21517 24 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21518 24 : if (types_match (captures[0], stype)
21519 : )
21520 : {
21521 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1887;
21522 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1887;
21523 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1887;
21524 24 : {
21525 24 : tree res_op0;
21526 24 : {
21527 24 : tree _o1[1], _r1;
21528 24 : {
21529 24 : tree _o2[1], _r2;
21530 24 : _o2[0] = captures[0];
21531 24 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21532 24 : _o1[0] = _r2;
21533 : }
21534 24 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21535 24 : res_op0 = _r1;
21536 : }
21537 24 : tree _r;
21538 24 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21539 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21540 24 : return _r;
21541 : }
21542 0 : next_after_fail1887:;
21543 : }
21544 : else
21545 : {
21546 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1888;
21547 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1888;
21548 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1888;
21549 0 : {
21550 0 : tree res_op0;
21551 0 : {
21552 0 : tree _o1[1], _r1;
21553 0 : {
21554 0 : tree _o2[1], _r2;
21555 0 : {
21556 0 : tree _o3[1], _r3;
21557 0 : _o3[0] = captures[2];
21558 0 : if (TREE_TYPE (_o3[0]) != stype)
21559 : {
21560 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21561 : }
21562 : else
21563 : _r3 = _o3[0];
21564 0 : _o2[0] = _r3;
21565 : }
21566 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21567 0 : _o1[0] = _r2;
21568 : }
21569 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21570 0 : res_op0 = _r1;
21571 : }
21572 0 : tree _r;
21573 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21574 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21575 0 : return _r;
21576 : }
21577 0 : next_after_fail1888:;
21578 : }
21579 : }
21580 : }
21581 : else
21582 : {
21583 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1889;
21584 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1889;
21585 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1889;
21586 1 : {
21587 1 : tree res_op0;
21588 1 : {
21589 1 : tree _o1[1], _r1;
21590 1 : {
21591 1 : tree _o2[1], _r2;
21592 1 : _o2[0] = captures[2];
21593 1 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21594 1 : _o1[0] = _r2;
21595 : }
21596 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21597 1 : res_op0 = _r1;
21598 : }
21599 1 : tree _r;
21600 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21601 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
21602 1 : return _r;
21603 : }
21604 0 : next_after_fail1889:;
21605 : }
21606 : }
21607 : }
21608 : }
21609 : break;
21610 : }
21611 : default:;
21612 : }
21613 : }
21614 1757019 : switch (TREE_CODE (_q20))
21615 : {
21616 11301 : case MINUS_EXPR:
21617 11301 : {
21618 11301 : tree _q30 = TREE_OPERAND (_q20, 0);
21619 11301 : tree _q31 = TREE_OPERAND (_q20, 1);
21620 11301 : if (zerop (_q21))
21621 : {
21622 7383 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21623 : {
21624 0 : switch (TREE_CODE (_p2))
21625 : {
21626 0 : case MINUS_EXPR:
21627 0 : {
21628 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21629 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21630 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21631 : {
21632 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21633 : {
21634 0 : {
21635 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21636 0 : const enum tree_code cmp = LT_EXPR;
21637 0 : if (!HONOR_SIGNED_ZEROS (type)
21638 0 : && !TYPE_UNSIGNED (type)
21639 : )
21640 : {
21641 0 : if (ANY_INTEGRAL_TYPE_P (type)
21642 0 : && !TYPE_OVERFLOW_WRAPS (type)
21643 0 : && (!VECTOR_TYPE_P (type)
21644 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21645 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21646 : )
21647 : {
21648 0 : {
21649 0 : tree utype = unsigned_type_for (type);
21650 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1890;
21651 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1890;
21652 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1890;
21653 0 : {
21654 0 : tree res_op0;
21655 0 : {
21656 0 : tree _o1[1], _r1;
21657 0 : {
21658 0 : tree _o2[1], _r2;
21659 0 : _o2[0] = captures[0];
21660 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21661 0 : _o1[0] = _r2;
21662 : }
21663 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21664 0 : res_op0 = _r1;
21665 : }
21666 0 : tree _r;
21667 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21668 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21669 0 : return _r;
21670 : }
21671 0 : next_after_fail1890:;
21672 : }
21673 : }
21674 : else
21675 : {
21676 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1891;
21677 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1891;
21678 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1891;
21679 0 : {
21680 0 : tree res_op0;
21681 0 : {
21682 0 : tree _o1[1], _r1;
21683 0 : _o1[0] = captures[0];
21684 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21685 0 : res_op0 = _r1;
21686 : }
21687 0 : tree _r;
21688 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21689 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21690 0 : return _r;
21691 : }
21692 0 : next_after_fail1891:;
21693 : }
21694 : }
21695 : }
21696 : }
21697 : }
21698 : break;
21699 : }
21700 : default:;
21701 : }
21702 : }
21703 : }
21704 : break;
21705 : }
21706 1757019 : default:;
21707 : }
21708 1757019 : if (integer_zerop (_q21))
21709 : {
21710 323523 : switch (TREE_CODE (_p1))
21711 : {
21712 25 : case BIT_NOT_EXPR:
21713 25 : {
21714 25 : tree _q50 = TREE_OPERAND (_p1, 0);
21715 25 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
21716 : {
21717 13 : {
21718 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
21719 13 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
21720 13 : if (res) return res;
21721 : }
21722 : }
21723 : break;
21724 : }
21725 323510 : default:;
21726 : }
21727 323510 : switch (TREE_CODE (_p2))
21728 : {
21729 8 : case BIT_NOT_EXPR:
21730 8 : {
21731 8 : tree _q60 = TREE_OPERAND (_p2, 0);
21732 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21733 : {
21734 8 : {
21735 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21736 8 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
21737 8 : if (res) return res;
21738 : }
21739 : }
21740 : break;
21741 : }
21742 323502 : default:;
21743 : }
21744 323502 : switch (TREE_CODE (_p1))
21745 : {
21746 287325 : case INTEGER_CST:
21747 287325 : {
21748 287325 : if (integer_zerop (_p2))
21749 : {
21750 8879 : {
21751 8879 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21752 8879 : if (integer_pow2p (captures[1])
21753 8879 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
21754 : )
21755 : {
21756 8614 : {
21757 8614 : int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1;
21758 8614 : if (shift >= 0
21759 : )
21760 : {
21761 8599 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1892;
21762 8599 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1892;
21763 8599 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1892;
21764 8599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1892;
21765 8599 : {
21766 8599 : tree res_op0;
21767 8599 : {
21768 8599 : tree _o1[1], _r1;
21769 8599 : {
21770 8599 : tree _o2[2], _r2;
21771 8599 : _o2[0] = captures[0];
21772 8599 : _o2[1] = build_int_cst (integer_type_node, shift);
21773 8599 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
21774 8599 : _o1[0] = _r2;
21775 : }
21776 8599 : if (TREE_TYPE (_o1[0]) != type)
21777 : {
21778 8574 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
21779 : }
21780 : else
21781 : _r1 = _o1[0];
21782 8599 : res_op0 = _r1;
21783 : }
21784 8599 : tree res_op1;
21785 8599 : res_op1 = captures[1];
21786 8599 : tree _r;
21787 8599 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
21788 8599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21789 8614 : return _r;
21790 : }
21791 : next_after_fail1892:;
21792 : }
21793 : else
21794 : {
21795 15 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1893;
21796 15 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1893;
21797 15 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1893;
21798 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1893;
21799 15 : {
21800 15 : tree res_op0;
21801 15 : {
21802 15 : tree _o1[1], _r1;
21803 15 : _o1[0] = captures[0];
21804 15 : if (TREE_TYPE (_o1[0]) != type)
21805 : {
21806 15 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
21807 : }
21808 : else
21809 : _r1 = _o1[0];
21810 15 : res_op0 = _r1;
21811 : }
21812 15 : tree res_op1;
21813 15 : res_op1 = captures[1];
21814 15 : tree _r;
21815 15 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
21816 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
21817 15 : return _r;
21818 : }
21819 : next_after_fail1893:;
21820 : }
21821 : }
21822 : }
21823 : }
21824 : }
21825 : break;
21826 : }
21827 : default:;
21828 : }
21829 : }
21830 : break;
21831 : }
21832 11523220 : default:;
21833 : }
21834 11523220 : {
21835 11523220 : tree _p0_pops[1];
21836 11523220 : if (tree_logical_inverted_value (_p0, _p0_pops))
21837 : {
21838 467307 : tree _q20 = _p0_pops[0];
21839 467307 : if (tree_truth_valued_p (_q20))
21840 : {
21841 4464 : {
21842 4464 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
21843 8928 : if (COND_EXPR == VEC_COND_EXPR
21844 4464 : || TYPE_UNSIGNED (TREE_TYPE (captures[0]))
21845 : )
21846 : {
21847 3150 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1894;
21848 46 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1894;
21849 37 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1894;
21850 37 : {
21851 37 : tree res_op0;
21852 37 : res_op0 = captures[0];
21853 37 : tree res_op1;
21854 37 : res_op1 = captures[2];
21855 37 : tree res_op2;
21856 37 : res_op2 = captures[1];
21857 37 : tree _r;
21858 37 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
21859 37 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
21860 37 : return _r;
21861 : }
21862 4427 : next_after_fail1894:;
21863 : }
21864 : }
21865 : }
21866 : }
21867 : }
21868 11523183 : return NULL_TREE;
21869 : }
21870 : #pragma GCC diagnostic pop
|