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 167965691 : tree_truth_valued_p (tree t)
11 : {
12 167965691 : const tree type = TREE_TYPE (t);
13 167965691 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 167965691 : if (TREE_SIDE_EFFECTS (t)) return false;
15 162685157 : {
16 162685157 : tree captures[1] ATTRIBUTE_UNUSED = { t };
17 162685157 : if (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1
18 : )
19 : {
20 5891146 : {
21 5891146 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 20, __FILE__, __LINE__, false);
22 5891146 : return true;
23 : }
24 : }
25 : }
26 156794011 : switch (TREE_CODE (t))
27 : {
28 805 : case LT_EXPR:
29 805 : {
30 805 : tree _p0 = TREE_OPERAND (t, 0);
31 805 : tree _p1 = TREE_OPERAND (t, 1);
32 805 : {
33 805 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
34 805 : {
35 805 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
36 805 : return true;
37 : }
38 : }
39 708 : break;
40 : }
41 708 : case LE_EXPR:
42 708 : {
43 708 : tree _p0 = TREE_OPERAND (t, 0);
44 708 : tree _p1 = TREE_OPERAND (t, 1);
45 708 : {
46 708 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
47 708 : {
48 708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
49 708 : return true;
50 : }
51 : }
52 11951 : break;
53 : }
54 11951 : case EQ_EXPR:
55 11951 : {
56 11951 : tree _p0 = TREE_OPERAND (t, 0);
57 11951 : tree _p1 = TREE_OPERAND (t, 1);
58 11951 : {
59 11951 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
60 11951 : {
61 11951 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
62 11951 : return true;
63 : }
64 : }
65 4437 : break;
66 : }
67 4437 : case NE_EXPR:
68 4437 : {
69 4437 : tree _p0 = TREE_OPERAND (t, 0);
70 4437 : tree _p1 = TREE_OPERAND (t, 1);
71 4437 : {
72 4437 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
73 4437 : {
74 4437 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
75 4437 : return true;
76 : }
77 : }
78 380 : break;
79 : }
80 380 : case GE_EXPR:
81 380 : {
82 380 : tree _p0 = TREE_OPERAND (t, 0);
83 380 : tree _p1 = TREE_OPERAND (t, 1);
84 380 : {
85 380 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
86 380 : {
87 380 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
88 380 : return true;
89 : }
90 : }
91 237109 : break;
92 : }
93 237109 : case GT_EXPR:
94 237109 : {
95 237109 : tree _p0 = TREE_OPERAND (t, 0);
96 237109 : tree _p1 = TREE_OPERAND (t, 1);
97 237109 : {
98 237109 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
99 237109 : {
100 237109 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
101 237109 : return true;
102 : }
103 : }
104 136115 : break;
105 : }
106 136115 : case UNORDERED_EXPR:
107 136115 : {
108 136115 : tree _p0 = TREE_OPERAND (t, 0);
109 136115 : tree _p1 = TREE_OPERAND (t, 1);
110 136115 : {
111 136115 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
112 136115 : {
113 136115 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
114 136115 : return true;
115 : }
116 : }
117 16 : break;
118 : }
119 16 : case ORDERED_EXPR:
120 16 : {
121 16 : tree _p0 = TREE_OPERAND (t, 0);
122 16 : tree _p1 = TREE_OPERAND (t, 1);
123 16 : {
124 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
125 16 : {
126 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
127 16 : return true;
128 : }
129 : }
130 70 : break;
131 : }
132 70 : case UNLT_EXPR:
133 70 : {
134 70 : tree _p0 = TREE_OPERAND (t, 0);
135 70 : tree _p1 = TREE_OPERAND (t, 1);
136 70 : {
137 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
138 70 : {
139 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
140 70 : return true;
141 : }
142 : }
143 1157 : break;
144 : }
145 1157 : case UNLE_EXPR:
146 1157 : {
147 1157 : tree _p0 = TREE_OPERAND (t, 0);
148 1157 : tree _p1 = TREE_OPERAND (t, 1);
149 1157 : {
150 1157 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
151 1157 : {
152 1157 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
153 1157 : return true;
154 : }
155 : }
156 70 : break;
157 : }
158 70 : case UNGT_EXPR:
159 70 : {
160 70 : tree _p0 = TREE_OPERAND (t, 0);
161 70 : tree _p1 = TREE_OPERAND (t, 1);
162 70 : {
163 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
164 70 : {
165 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
166 70 : return true;
167 : }
168 : }
169 70 : break;
170 : }
171 70 : case UNGE_EXPR:
172 70 : {
173 70 : tree _p0 = TREE_OPERAND (t, 0);
174 70 : tree _p1 = TREE_OPERAND (t, 1);
175 70 : {
176 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
177 70 : {
178 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
179 70 : return true;
180 : }
181 : }
182 84 : break;
183 : }
184 84 : case UNEQ_EXPR:
185 84 : {
186 84 : tree _p0 = TREE_OPERAND (t, 0);
187 84 : tree _p1 = TREE_OPERAND (t, 1);
188 84 : {
189 84 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
190 84 : {
191 84 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
192 84 : return true;
193 : }
194 : }
195 24 : break;
196 : }
197 24 : case LTGT_EXPR:
198 24 : {
199 24 : tree _p0 = TREE_OPERAND (t, 0);
200 24 : tree _p1 = TREE_OPERAND (t, 1);
201 24 : {
202 24 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
203 24 : {
204 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
205 24 : return true;
206 : }
207 : }
208 106 : break;
209 : }
210 106 : case TRUTH_AND_EXPR:
211 106 : {
212 106 : tree _p0 = TREE_OPERAND (t, 0);
213 106 : tree _p1 = TREE_OPERAND (t, 1);
214 106 : {
215 106 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
216 106 : {
217 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
218 106 : return true;
219 : }
220 : }
221 512 : break;
222 : }
223 512 : case TRUTH_ANDIF_EXPR:
224 512 : {
225 512 : tree _p0 = TREE_OPERAND (t, 0);
226 512 : tree _p1 = TREE_OPERAND (t, 1);
227 512 : {
228 512 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
229 512 : {
230 512 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
231 512 : return true;
232 : }
233 : }
234 53 : break;
235 : }
236 53 : case TRUTH_OR_EXPR:
237 53 : {
238 53 : tree _p0 = TREE_OPERAND (t, 0);
239 53 : tree _p1 = TREE_OPERAND (t, 1);
240 53 : {
241 53 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
242 53 : {
243 53 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
244 53 : return true;
245 : }
246 : }
247 1409 : break;
248 : }
249 1409 : case TRUTH_ORIF_EXPR:
250 1409 : {
251 1409 : tree _p0 = TREE_OPERAND (t, 0);
252 1409 : tree _p1 = TREE_OPERAND (t, 1);
253 1409 : {
254 1409 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
255 1409 : {
256 1409 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
257 1409 : return true;
258 : }
259 : }
260 0 : break;
261 : }
262 0 : case TRUTH_XOR_EXPR:
263 0 : {
264 0 : tree _p0 = TREE_OPERAND (t, 0);
265 0 : tree _p1 = TREE_OPERAND (t, 1);
266 0 : {
267 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
268 0 : {
269 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
270 0 : return true;
271 : }
272 : }
273 528619 : break;
274 : }
275 528619 : case TRUTH_NOT_EXPR:
276 528619 : {
277 528619 : tree _p0 = TREE_OPERAND (t, 0);
278 528619 : {
279 528619 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
280 528619 : {
281 528619 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 22, __FILE__, __LINE__, false);
282 528619 : return true;
283 : }
284 : }
285 : break;
286 : }
287 : default:;
288 : }
289 : return false;
290 : }
291 :
292 : tree
293 0 : generic_simplify_41 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
294 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
295 : const enum tree_code ARG_UNUSED (op))
296 : {
297 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
298 0 : if (INTEGRAL_TYPE_P (type)
299 0 : && tree_int_cst_sgn (captures[5]) > 0
300 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
301 : )
302 : {
303 0 : {
304 0 : tree t = type;
305 0 : if (!TYPE_OVERFLOW_WRAPS (t))
306 0 : t = unsigned_type_for (t);
307 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
308 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
309 0 : wi::lshift (wone, wi::to_wide (captures[5])));
310 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail118;
311 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail118;
312 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail118;
313 0 : {
314 0 : tree res_op0;
315 0 : {
316 0 : tree _o1[2], _r1;
317 0 : {
318 0 : tree _o2[1], _r2;
319 0 : _o2[0] = captures[2];
320 0 : if (TREE_TYPE (_o2[0]) != t)
321 : {
322 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
323 : }
324 : else
325 : _r2 = _o2[0];
326 0 : _o1[0] = _r2;
327 : }
328 0 : _o1[1] = wide_int_to_tree (t, c);
329 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
330 0 : res_op0 = _r1;
331 : }
332 0 : tree _r;
333 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
334 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 89, __FILE__, __LINE__, true);
335 0 : return _r;
336 : }
337 0 : next_after_fail118:;
338 0 : }
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 11 : generic_simplify_53 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
345 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
346 : const combined_fn ARG_UNUSED (PARITY))
347 : {
348 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
349 11 : if (types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
350 : )
351 : {
352 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail132;
353 10 : {
354 10 : tree res_op0;
355 10 : {
356 10 : tree _o1[2], _r1;
357 10 : _o1[0] = captures[1];
358 10 : _o1[1] = captures[3];
359 10 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
360 10 : res_op0 = _r1;
361 : }
362 10 : tree _r;
363 10 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
364 10 : if (!_r)
365 0 : goto next_after_fail132;
366 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, true);
367 10 : return _r;
368 : }
369 : next_after_fail132:;
370 : }
371 : else
372 : {
373 2 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
374 2 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[3]))
375 : )
376 : {
377 1 : {
378 1 : tree utype = TREE_TYPE (captures[1]);
379 1 : if (TYPE_PRECISION (utype) < TYPE_PRECISION (TREE_TYPE (captures[3])))
380 1 : utype = TREE_TYPE (captures[3]);
381 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail133;
382 1 : {
383 1 : tree res_op0;
384 1 : {
385 1 : tree _o1[2], _r1;
386 1 : {
387 1 : tree _o2[1], _r2;
388 1 : _o2[0] = captures[1];
389 1 : if (TREE_TYPE (_o2[0]) != utype)
390 : {
391 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
392 : }
393 : else
394 : _r2 = _o2[0];
395 1 : _o1[0] = _r2;
396 : }
397 1 : {
398 1 : tree _o2[1], _r2;
399 1 : _o2[0] = captures[3];
400 1 : if (TREE_TYPE (_o2[0]) != utype)
401 : {
402 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
403 : }
404 : else
405 : _r2 = _o2[0];
406 1 : _o1[1] = _r2;
407 : }
408 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
409 1 : res_op0 = _r1;
410 : }
411 1 : tree _r;
412 1 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
413 1 : if (!_r)
414 1 : goto next_after_fail133;
415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 101, __FILE__, __LINE__, true);
416 0 : return _r;
417 : }
418 : next_after_fail133:;
419 : }
420 : }
421 : }
422 : return NULL_TREE;
423 : }
424 :
425 : tree
426 122742 : generic_simplify_70 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
427 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
428 : {
429 122742 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
430 122742 : if (!TYPE_SATURATING (type)
431 : )
432 : {
433 122742 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
434 245484 : && !FIXED_POINT_TYPE_P (type)
435 : )
436 : {
437 122742 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
438 : )
439 : {
440 121887 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail159;
441 121887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail159;
442 121887 : {
443 121887 : tree res_op0;
444 121887 : {
445 121887 : tree _o1[1], _r1;
446 121887 : _o1[0] = captures[0];
447 121887 : if (TREE_TYPE (_o1[0]) != type)
448 : {
449 119191 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
450 : }
451 : else
452 : _r1 = _o1[0];
453 121887 : res_op0 = _r1;
454 : }
455 121887 : tree _r;
456 121887 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
457 121887 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 127, __FILE__, __LINE__, true);
458 121887 : return _r;
459 : }
460 : next_after_fail159:;
461 : }
462 : }
463 : }
464 : return NULL_TREE;
465 : }
466 :
467 : tree
468 0 : generic_simplify_77 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
469 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
470 : {
471 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
472 0 : if (VECTOR_TYPE_P (type)
473 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
474 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
475 0 : && (TYPE_MODE (TREE_TYPE (type))
476 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
477 : )
478 : {
479 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail167;
480 0 : {
481 0 : tree res_op0;
482 0 : res_op0 = captures[0];
483 0 : tree res_op1;
484 0 : {
485 0 : tree _o1[1], _r1;
486 0 : {
487 0 : tree _o2[3], _r2;
488 0 : _o2[0] = captures[2];
489 0 : {
490 0 : tree _o3[1], _r3;
491 0 : _o3[0] = captures[3];
492 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
493 0 : _o2[1] = _r3;
494 : }
495 0 : _o2[2] = captures[4];
496 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
497 0 : _o1[0] = _r2;
498 : }
499 0 : if (TREE_TYPE (_o1[0]) != type)
500 : {
501 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
502 : }
503 : else
504 : _r1 = _o1[0];
505 0 : res_op1 = _r1;
506 : }
507 0 : tree _r;
508 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
509 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 135, __FILE__, __LINE__, true);
510 0 : return _r;
511 : }
512 0 : next_after_fail167:;
513 : }
514 : return NULL_TREE;
515 : }
516 :
517 : tree
518 85 : generic_simplify_86 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
519 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
520 : {
521 85 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
522 85 : if (INTEGRAL_TYPE_P (type)
523 85 : || (VECTOR_INTEGER_TYPE_P (type)
524 : && ((optimize_vectors_before_lowering_p ()
525 1 : && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
526 0 : || target_supports_op_p (type, TRUNC_MOD_EXPR,
527 : optab_vector)))
528 : )
529 : {
530 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail177;
531 85 : {
532 85 : tree res_op0;
533 85 : {
534 85 : tree _o1[2], _r1;
535 85 : _o1[0] = captures[0];
536 85 : _o1[1] = captures[1];
537 85 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
538 85 : res_op0 = _r1;
539 : }
540 85 : tree _r;
541 85 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
542 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 145, __FILE__, __LINE__, true);
543 85 : return _r;
544 : }
545 0 : next_after_fail177:;
546 : }
547 : return NULL_TREE;
548 : }
549 :
550 : tree
551 1 : generic_simplify_93 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
552 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
553 : {
554 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
555 1 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
556 1 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
557 : )
558 : {
559 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail184;
560 1 : {
561 1 : tree res_op0;
562 1 : {
563 1 : tree _o1[2], _r1;
564 1 : {
565 1 : tree _o2[1], _r2;
566 1 : _o2[0] = captures[3];
567 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
568 1 : _o1[0] = _r2;
569 : }
570 1 : _o1[1] = captures[0];
571 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
572 1 : res_op0 = _r1;
573 : }
574 1 : tree _r;
575 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
576 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 152, __FILE__, __LINE__, true);
577 1 : return _r;
578 : }
579 0 : next_after_fail184:;
580 : }
581 : return NULL_TREE;
582 : }
583 :
584 : tree
585 664 : generic_simplify_101 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
586 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
587 : {
588 664 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
589 664 : if (!TYPE_SATURATING (type)
590 : )
591 : {
592 664 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
593 1328 : && !FIXED_POINT_TYPE_P (type)
594 : )
595 : {
596 664 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
597 : )
598 : {
599 24 : if (!CONSTANT_CLASS_P (captures[2])
600 : )
601 : {
602 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail194;
603 24 : {
604 24 : tree res_op0;
605 24 : {
606 24 : tree _o1[1], _r1;
607 24 : _o1[0] = captures[2];
608 24 : if (TREE_TYPE (_o1[0]) != type)
609 : {
610 24 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
611 : }
612 : else
613 : _r1 = _o1[0];
614 24 : res_op0 = _r1;
615 : }
616 24 : tree res_op1;
617 24 : {
618 24 : tree _o1[2], _r1;
619 24 : _o1[0] = captures[0];
620 24 : {
621 24 : tree _o2[1], _r2;
622 24 : _o2[0] = captures[1];
623 24 : if (TREE_TYPE (_o2[0]) != type)
624 : {
625 24 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
626 : }
627 : else
628 : _r2 = _o2[0];
629 24 : _o1[1] = _r2;
630 : }
631 24 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
632 24 : if (EXPR_P (_r1))
633 0 : goto next_after_fail194;
634 24 : res_op1 = _r1;
635 : }
636 24 : tree _r;
637 24 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
638 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 161, __FILE__, __LINE__, true);
639 24 : return _r;
640 : }
641 : next_after_fail194:;
642 : }
643 : }
644 : else
645 : {
646 1280 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
647 1280 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
648 : )
649 : {
650 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail195;
651 1 : {
652 1 : tree res_op0;
653 1 : {
654 1 : tree _o1[2], _r1;
655 1 : _o1[0] = captures[2];
656 1 : {
657 1 : tree _o2[2], _r2;
658 1 : {
659 1 : tree _o3[1], _r3;
660 1 : _o3[0] = captures[0];
661 1 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
662 : {
663 1 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
664 : }
665 : else
666 : _r3 = _o3[0];
667 1 : _o2[0] = _r3;
668 : }
669 1 : _o2[1] = captures[1];
670 1 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
671 1 : if (EXPR_P (_r2))
672 0 : goto next_after_fail195;
673 1 : _o1[1] = _r2;
674 : }
675 1 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
676 1 : res_op0 = _r1;
677 : }
678 1 : tree _r;
679 1 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
680 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 162, __FILE__, __LINE__, true);
681 1 : return _r;
682 : }
683 : next_after_fail195:;
684 : }
685 : else
686 : {
687 639 : if (types_match (type, captures[2]) && !TYPE_OVERFLOW_SANITIZED (type)
688 : )
689 : {
690 630 : {
691 630 : tree cst = const_binop (MINUS_EXPR, type, captures[0], captures[1]);
692 630 : if (cst && !TREE_OVERFLOW (cst)
693 : )
694 : {
695 630 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail196;
696 630 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail196;
697 630 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail196;
698 630 : {
699 630 : tree res_op0;
700 630 : res_op0 = cst;
701 630 : tree res_op1;
702 630 : res_op1 = captures[2];
703 630 : tree _r;
704 630 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
705 630 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 163, __FILE__, __LINE__, true);
706 630 : return _r;
707 : }
708 : next_after_fail196:;
709 : }
710 : }
711 : }
712 : }
713 : }
714 : }
715 : }
716 : return NULL_TREE;
717 : }
718 :
719 : tree
720 1 : generic_simplify_130 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
721 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
722 : {
723 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
724 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail227;
725 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail227;
726 1 : {
727 1 : tree _r;
728 1 : _r = captures[0];
729 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 189, __FILE__, __LINE__, true);
730 : return _r;
731 : }
732 : next_after_fail227:;
733 : return NULL_TREE;
734 : }
735 :
736 : tree
737 0 : generic_simplify_139 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
738 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
739 : const enum tree_code ARG_UNUSED (op))
740 : {
741 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
742 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
743 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
744 : )
745 : {
746 0 : if (single_use (captures[4]) && single_use (captures[5])
747 : )
748 : {
749 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail238;
750 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail238;
751 0 : {
752 0 : tree res_op0;
753 0 : res_op0 = captures[0];
754 0 : tree res_op1;
755 0 : {
756 0 : tree _o1[1], _r1;
757 0 : _o1[0] = captures[6];
758 0 : if (TREE_TYPE (_o1[0]) != type)
759 : {
760 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
761 : }
762 : else
763 : _r1 = _o1[0];
764 0 : res_op1 = _r1;
765 : }
766 0 : tree _r;
767 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
768 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 194, __FILE__, __LINE__, true);
769 0 : return _r;
770 : }
771 : next_after_fail238:;
772 : }
773 : else
774 : {
775 : if (single_use (captures[0]) && single_use (captures[1])
776 : )
777 : {
778 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail239;
779 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail239;
780 : {
781 : tree res_op0;
782 : {
783 : tree _o1[1], _r1;
784 : _o1[0] = captures[3];
785 : if (TREE_TYPE (_o1[0]) != type)
786 : {
787 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
788 : }
789 : else
790 : _r1 = _o1[0];
791 : res_op0 = _r1;
792 : }
793 : tree res_op1;
794 : res_op1 = captures[4];
795 : tree _r;
796 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
797 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
798 : return _r;
799 : }
800 : next_after_fail239:;
801 : }
802 : }
803 : }
804 : return NULL_TREE;
805 : }
806 :
807 : tree
808 4 : generic_simplify_154 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
809 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
810 : {
811 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
812 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail259;
813 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail259;
814 4 : {
815 4 : tree _r;
816 4 : _r = captures[2];
817 4 : if (TREE_SIDE_EFFECTS (captures[1]))
818 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
819 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 208, __FILE__, __LINE__, true);
820 : return _r;
821 : }
822 : next_after_fail259:;
823 : return NULL_TREE;
824 : }
825 :
826 : tree
827 3 : generic_simplify_157 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
828 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
829 : const enum tree_code ARG_UNUSED (code2),
830 : const enum tree_code ARG_UNUSED (code1))
831 : {
832 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
833 3 : if ((TREE_CODE (captures[2]) == INTEGER_CST
834 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
835 3 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
836 3 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
837 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
838 3 : && bitwise_equal_p (captures[2], captures[5]))
839 : )
840 : {
841 3 : {
842 3 : bool one_before = false;
843 3 : bool one_after = false;
844 3 : int cmp = 0;
845 3 : bool allbits = true;
846 3 : if (TREE_CODE (captures[2]) == INTEGER_CST
847 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
848 : {
849 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
850 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
851 0 : auto t2 = wi::to_wide (captures[5]);
852 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
853 0 : if (cmp < 0
854 0 : && t1 == t2 - 1)
855 : one_before = true;
856 0 : if (cmp > 0
857 0 : && t1 == t2 + 1)
858 : one_after = true;
859 : }
860 3 : bool val;
861 3 : switch (code2)
862 : {
863 0 : case EQ_EXPR: val = (cmp == 0); break;
864 0 : case NE_EXPR: val = (cmp != 0); break;
865 0 : case LT_EXPR: val = (cmp < 0); break;
866 3 : case GT_EXPR: val = (cmp > 0); break;
867 0 : case LE_EXPR: val = (cmp <= 0); break;
868 0 : case GE_EXPR: val = (cmp >= 0); break;
869 0 : default: gcc_unreachable ();
870 : }
871 3 : if (code1 == EQ_EXPR && val
872 : )
873 : {
874 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail262;
875 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail262;
876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail262;
877 0 : {
878 0 : tree _r;
879 0 : _r = captures[3];
880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
881 0 : return _r;
882 : }
883 : next_after_fail262:;
884 : }
885 : else
886 : {
887 3 : if (code1 == NE_EXPR && val && allbits
888 : )
889 : {
890 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail263;
891 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail263;
892 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail263;
893 0 : {
894 0 : tree _r;
895 0 : _r = constant_boolean_node (true, type);
896 0 : if (TREE_SIDE_EFFECTS (captures[1]))
897 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
898 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
899 0 : return _r;
900 : }
901 : next_after_fail263:;
902 : }
903 : else
904 : {
905 3 : if (code1 == NE_EXPR && !val && allbits
906 : )
907 : {
908 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail264;
909 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail264;
910 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail264;
911 0 : {
912 0 : tree _r;
913 0 : _r = captures[0];
914 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
915 0 : return _r;
916 : }
917 : next_after_fail264:;
918 : }
919 : else
920 : {
921 3 : if (code1 == EQ_EXPR
922 3 : && code2 == GT_EXPR
923 3 : && cmp == 0
924 3 : && allbits
925 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
926 3 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
927 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
928 : )
929 : {
930 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail265;
931 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail265;
932 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail265;
933 3 : {
934 3 : tree res_op0;
935 3 : res_op0 = captures[4];
936 3 : tree res_op1;
937 3 : res_op1 = captures[5];
938 3 : tree _r;
939 3 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
940 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
941 3 : return _r;
942 : }
943 : next_after_fail265:;
944 : }
945 : else
946 : {
947 0 : if (code1 == EQ_EXPR
948 0 : && code2 == LT_EXPR
949 0 : && cmp == 0
950 0 : && allbits
951 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
952 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
953 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
954 : )
955 : {
956 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail266;
957 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail266;
958 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail266;
959 0 : {
960 0 : tree res_op0;
961 0 : res_op0 = captures[4];
962 0 : tree res_op1;
963 0 : res_op1 = captures[5];
964 0 : tree _r;
965 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
966 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
967 0 : return _r;
968 : }
969 : next_after_fail266:;
970 : }
971 : else
972 : {
973 0 : if (code1 == EQ_EXPR
974 0 : && code2 == GE_EXPR
975 : && one_before
976 0 : && allbits
977 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
978 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
979 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
980 : )
981 : {
982 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail267;
983 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail267;
984 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail267;
985 0 : {
986 0 : tree res_op0;
987 0 : res_op0 = captures[4];
988 0 : tree res_op1;
989 0 : {
990 0 : tree _o1[1], _r1;
991 0 : _o1[0] = captures[2];
992 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
993 : {
994 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
995 : }
996 : else
997 : _r1 = _o1[0];
998 0 : res_op1 = _r1;
999 : }
1000 0 : tree _r;
1001 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1002 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
1003 0 : return _r;
1004 : }
1005 : next_after_fail267:;
1006 : }
1007 : else
1008 : {
1009 0 : if (code1 == EQ_EXPR
1010 0 : && code2 == LE_EXPR
1011 : && one_after
1012 0 : && allbits
1013 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1014 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1015 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1016 : )
1017 : {
1018 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail268;
1019 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail268;
1020 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail268;
1021 0 : {
1022 0 : tree res_op0;
1023 0 : res_op0 = captures[4];
1024 0 : tree res_op1;
1025 0 : {
1026 0 : tree _o1[1], _r1;
1027 0 : _o1[0] = captures[2];
1028 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1029 : {
1030 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1031 : }
1032 : else
1033 : _r1 = _o1[0];
1034 0 : res_op1 = _r1;
1035 : }
1036 0 : tree _r;
1037 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1038 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
1039 0 : return _r;
1040 : }
1041 : next_after_fail268:;
1042 : }
1043 : }
1044 : }
1045 : }
1046 : }
1047 : }
1048 : }
1049 : }
1050 : }
1051 : return NULL_TREE;
1052 : }
1053 :
1054 : tree
1055 8 : generic_simplify_201 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1056 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1057 : const combined_fn ARG_UNUSED (POW))
1058 : {
1059 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1060 8 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1061 : )
1062 : {
1063 8 : if (!TREE_OVERFLOW (captures[2])
1064 : )
1065 : {
1066 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail342;
1067 8 : {
1068 8 : tree res_op0;
1069 8 : res_op0 = captures[0];
1070 8 : tree res_op1;
1071 8 : {
1072 8 : tree _o1[2], _r1;
1073 8 : _o1[0] = captures[2];
1074 8 : _o1[1] = build_one_cst (type);
1075 8 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1076 8 : res_op1 = _r1;
1077 : }
1078 8 : tree _r;
1079 8 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1080 8 : if (!_r)
1081 0 : goto next_after_fail342;
1082 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 255, __FILE__, __LINE__, true);
1083 8 : return _r;
1084 : }
1085 : next_after_fail342:;
1086 : }
1087 : }
1088 : return NULL_TREE;
1089 : }
1090 :
1091 : tree
1092 20887 : generic_simplify_208 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1093 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1094 : const enum tree_code ARG_UNUSED (cmp),
1095 : const enum tree_code ARG_UNUSED (mod))
1096 : {
1097 20887 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1098 20887 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1099 : )
1100 : {
1101 20887 : {
1102 20887 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1103 20887 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail349;
1104 20887 : {
1105 20887 : tree res_op0;
1106 20887 : {
1107 20887 : tree _o1[2], _r1;
1108 20887 : {
1109 20887 : tree _o2[1], _r2;
1110 20887 : _o2[0] = captures[0];
1111 20887 : if (TREE_TYPE (_o2[0]) != utype)
1112 : {
1113 20887 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1114 : }
1115 : else
1116 : _r2 = _o2[0];
1117 20887 : _o1[0] = _r2;
1118 : }
1119 20887 : {
1120 20887 : tree _o2[1], _r2;
1121 20887 : _o2[0] = captures[1];
1122 20887 : if (TREE_TYPE (_o2[0]) != utype)
1123 : {
1124 20887 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1125 : }
1126 : else
1127 : _r2 = _o2[0];
1128 20887 : _o1[1] = _r2;
1129 : }
1130 20887 : _r1 = fold_build2_loc (loc, mod, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1131 20887 : res_op0 = _r1;
1132 : }
1133 20887 : tree res_op1;
1134 20887 : {
1135 20887 : tree _o1[1], _r1;
1136 20887 : _o1[0] = captures[2];
1137 20887 : if (TREE_TYPE (_o1[0]) != utype)
1138 : {
1139 20887 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1140 : }
1141 : else
1142 : _r1 = _o1[0];
1143 20887 : res_op1 = _r1;
1144 : }
1145 20887 : tree _r;
1146 20887 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1147 20887 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 262, __FILE__, __LINE__, true);
1148 20887 : return _r;
1149 : }
1150 0 : next_after_fail349:;
1151 : }
1152 : }
1153 : return NULL_TREE;
1154 : }
1155 :
1156 : tree
1157 24204 : generic_simplify_223 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1159 : const enum tree_code ARG_UNUSED (op))
1160 : {
1161 24204 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1162 48408 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1163 48270 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1164 21639 : || ((op == EQ_EXPR || op == NE_EXPR)
1165 1766 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))))
1166 48339 : && (CONSTANT_CLASS_P (captures[2]) || single_use (captures[1]))
1167 : )
1168 : {
1169 4262 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail380;
1170 4262 : {
1171 4262 : tree res_op0;
1172 4262 : res_op0 = captures[2];
1173 4262 : tree res_op1;
1174 4262 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1175 4262 : tree _r;
1176 4262 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1177 4262 : if (TREE_SIDE_EFFECTS (captures[0]))
1178 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1179 4262 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 292, __FILE__, __LINE__, true);
1180 4262 : return _r;
1181 : }
1182 0 : next_after_fail380:;
1183 : }
1184 : return NULL_TREE;
1185 : }
1186 :
1187 : tree
1188 40393149 : generic_simplify_231 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1189 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1190 : const enum tree_code ARG_UNUSED (cmp))
1191 : {
1192 40393149 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1193 80786472 : if (wi::bit_and_not (get_known_nonzero_bits (captures[1]),
1194 121179447 : get_nonzero_bits (captures[0])) != 0
1195 : )
1196 : {
1197 76617 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail388;
1198 76617 : {
1199 76617 : tree _r;
1200 76617 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1201 76617 : if (TREE_SIDE_EFFECTS (captures[0]))
1202 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1203 76617 : if (TREE_SIDE_EFFECTS (captures[1]))
1204 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1205 76617 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 299, __FILE__, __LINE__, true);
1206 76617 : return _r;
1207 : }
1208 0 : next_after_fail388:;
1209 : }
1210 : return NULL_TREE;
1211 : }
1212 :
1213 : tree
1214 13 : generic_simplify_238 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1215 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1216 : const enum tree_code ARG_UNUSED (cmp))
1217 : {
1218 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1219 13 : if (tree_fits_shwi_p (captures[3])
1220 13 : && tree_to_shwi (captures[3]) > 0
1221 26 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1222 : )
1223 : {
1224 13 : if (tree_to_shwi (captures[3]) > wi::ctz (wi::to_wide (captures[5]))
1225 : )
1226 : {
1227 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail398;
1228 0 : {
1229 0 : tree _r;
1230 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1231 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1232 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1233 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1234 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1235 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1236 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1237 0 : if (TREE_SIDE_EFFECTS (captures[5]))
1238 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
1239 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 309, __FILE__, __LINE__, true);
1240 0 : return _r;
1241 : }
1242 0 : next_after_fail398:;
1243 : }
1244 : else
1245 : {
1246 13 : {
1247 13 : wide_int c1 = wi::to_wide (captures[3]);
1248 13 : wide_int c2 = wi::lrshift (wi::to_wide (captures[4]), c1);
1249 13 : wide_int c3 = wi::lrshift (wi::to_wide (captures[5]), c1);
1250 13 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail399;
1251 13 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail399;
1252 13 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail399;
1253 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail399;
1254 13 : {
1255 13 : tree res_op0;
1256 13 : {
1257 13 : tree _o1[2], _r1;
1258 13 : _o1[0] = captures[2];
1259 13 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[2]), c2);
1260 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1261 13 : res_op0 = _r1;
1262 : }
1263 13 : tree res_op1;
1264 13 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[2]), c3);
1265 13 : tree _r;
1266 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1267 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 310, __FILE__, __LINE__, true);
1268 13 : return _r;
1269 : }
1270 0 : next_after_fail399:;
1271 13 : }
1272 : }
1273 : }
1274 : return NULL_TREE;
1275 : }
1276 :
1277 : tree
1278 30003 : generic_simplify_253 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1279 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1280 : const enum tree_code ARG_UNUSED (cmp),
1281 : const enum tree_code ARG_UNUSED (scmp))
1282 : {
1283 30003 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1284 30003 : if (integer_zerop (captures[2])
1285 : )
1286 : {
1287 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1288 7 : {
1289 7 : tree res_op0;
1290 7 : res_op0 = captures[2];
1291 7 : tree res_op1;
1292 7 : res_op1 = captures[3];
1293 7 : tree _r;
1294 7 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1295 7 : if (TREE_SIDE_EFFECTS (captures[1]))
1296 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1297 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 333, __FILE__, __LINE__, true);
1298 7 : return _r;
1299 : }
1300 0 : next_after_fail423:;
1301 : }
1302 : else
1303 : {
1304 59992 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1305 59992 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1306 59992 : && single_use (captures[0])
1307 : )
1308 : {
1309 5947 : if (tree_int_cst_sgn (captures[2]) < 0
1310 : )
1311 : {
1312 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail424;
1313 15 : {
1314 15 : tree res_op0;
1315 15 : res_op0 = captures[1];
1316 15 : tree res_op1;
1317 15 : res_op1 = captures[3];
1318 15 : tree _r;
1319 15 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1320 15 : if (TREE_SIDE_EFFECTS (captures[2]))
1321 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1322 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1323 15 : return _r;
1324 : }
1325 0 : next_after_fail424:;
1326 : }
1327 : else
1328 : {
1329 5932 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail425;
1330 5932 : {
1331 5932 : tree res_op0;
1332 5932 : res_op0 = captures[1];
1333 5932 : tree res_op1;
1334 5932 : res_op1 = captures[3];
1335 5932 : tree _r;
1336 5932 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1337 5932 : if (TREE_SIDE_EFFECTS (captures[2]))
1338 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1339 5932 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1340 5932 : return _r;
1341 : }
1342 0 : next_after_fail425:;
1343 : }
1344 : }
1345 : }
1346 : return NULL_TREE;
1347 : }
1348 :
1349 : tree
1350 81940 : generic_simplify_266 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1351 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1352 : const enum tree_code ARG_UNUSED (cmp),
1353 : const enum tree_code ARG_UNUSED (icmp))
1354 : {
1355 81940 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1356 81940 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[2]))
1357 81940 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[2]))
1358 : )
1359 : {
1360 81449 : {
1361 81449 : tree itype = TREE_TYPE (captures[1]);
1362 81449 : signop isign = TYPE_SIGN (itype);
1363 81449 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[2]))));
1364 81449 : bool itype_ok = fmt.can_represent_integral_type_p (itype);
1365 81449 : bool value_ok = itype_ok;
1366 81449 : const REAL_VALUE_TYPE *cst = TREE_REAL_CST_PTR (captures[2]);
1367 81449 : bool exception_p = real_isnan (cst)
1368 150 : && flag_trapping_math
1369 81599 : && ((cmp != EQ_EXPR && cmp != NE_EXPR)
1370 30 : || (cst->signalling
1371 30 : && HONOR_SNANS (TREE_TYPE (captures[2]))));
1372 81449 : if (flag_trapping_math && !value_ok)
1373 : exception_p = true;
1374 39955 : if (! exception_p
1375 : )
1376 : {
1377 39805 : {
1378 39805 : signop isign = TYPE_SIGN (itype);
1379 39805 : wide_int imin_val = wi::min_value (itype);
1380 39805 : wide_int imax_val = wi::max_value (itype);
1381 39805 : REAL_VALUE_TYPE imin, imax;
1382 39805 : real_from_integer (&imin, fmt, imin_val, isign);
1383 39805 : real_from_integer (&imax, fmt, imax_val, isign);
1384 39805 : REAL_VALUE_TYPE icst;
1385 39805 : if (cmp == GT_EXPR || cmp == GE_EXPR)
1386 39063 : real_ceil (&icst, fmt, cst);
1387 742 : else if (cmp == LT_EXPR || cmp == LE_EXPR)
1388 232 : real_floor (&icst, fmt, cst);
1389 : else
1390 510 : real_trunc (&icst, fmt, cst);
1391 39805 : bool cst_int_p = real_isfinite (cst) && real_identical (&icst, cst);
1392 39805 : bool overflow_p = false;
1393 39805 : wide_int icst_val
1394 39805 : = real_to_integer (&icst, &overflow_p, TYPE_PRECISION (itype));
1395 39805 : if (real_compare (LT_EXPR, cst, &imin)
1396 : )
1397 : {
1398 19567 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail476;
1399 19567 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail476;
1400 19567 : {
1401 19567 : tree _r;
1402 19567 : _r = constant_boolean_node (cmp == GT_EXPR || cmp == GE_EXPR || cmp == NE_EXPR,
1403 : type);
1404 19567 : if (TREE_SIDE_EFFECTS (captures[1]))
1405 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1406 19567 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 385, __FILE__, __LINE__, true);
1407 19567 : return _r;
1408 : }
1409 208 : next_after_fail476:;
1410 : }
1411 : else
1412 : {
1413 20238 : if (real_compare (GT_EXPR, cst, &imax)
1414 : )
1415 : {
1416 120 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail477;
1417 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail477;
1418 120 : {
1419 120 : tree _r;
1420 120 : _r = constant_boolean_node (cmp == LT_EXPR || cmp == LE_EXPR || cmp == NE_EXPR,
1421 : type);
1422 120 : if (TREE_SIDE_EFFECTS (captures[1]))
1423 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1424 120 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 386, __FILE__, __LINE__, true);
1425 120 : return _r;
1426 : }
1427 208 : next_after_fail477:;
1428 : }
1429 : else
1430 : {
1431 20118 : if (!cst_int_p
1432 136 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1433 : )
1434 : {
1435 28 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail478;
1436 28 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail478;
1437 28 : {
1438 28 : tree _r;
1439 28 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1440 28 : if (TREE_SIDE_EFFECTS (captures[1]))
1441 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1442 28 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 387, __FILE__, __LINE__, true);
1443 28 : return _r;
1444 : }
1445 208 : next_after_fail478:;
1446 : }
1447 : else
1448 : {
1449 20090 : if (cst_int_p
1450 80036 : && fold_cmp_float_cst_p (imin_val, imax_val, cmp, &icst, fmt,
1451 : icst_val, isign)
1452 : )
1453 : {
1454 19774 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail479;
1455 19774 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail479;
1456 19774 : {
1457 19774 : tree res_op0;
1458 19774 : res_op0 = captures[1];
1459 19774 : tree res_op1;
1460 19774 : res_op1 = wide_int_to_tree (itype, icst_val);
1461 19774 : tree _r;
1462 19774 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1463 19774 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 388, __FILE__, __LINE__, true);
1464 19774 : return _r;
1465 : }
1466 208 : next_after_fail479:;
1467 : }
1468 : else
1469 : {
1470 632 : if (!cst_int_p
1471 748 : && fold_cmp_float_cst_p (imin_val, imax_val, icmp, &icst, fmt,
1472 : icst_val, isign)
1473 : )
1474 : {
1475 108 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail480;
1476 108 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail480;
1477 108 : {
1478 108 : tree res_op0;
1479 108 : res_op0 = captures[1];
1480 108 : tree res_op1;
1481 108 : res_op1 = wide_int_to_tree (itype, icst_val);
1482 108 : tree _r;
1483 108 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1484 108 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 389, __FILE__, __LINE__, true);
1485 108 : return _r;
1486 : }
1487 208 : next_after_fail480:;
1488 : }
1489 : }
1490 : }
1491 : }
1492 : }
1493 39805 : }
1494 : }
1495 : }
1496 : }
1497 : return NULL_TREE;
1498 : }
1499 :
1500 : tree
1501 112334 : generic_simplify_282 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1502 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1503 : const enum tree_code ARG_UNUSED (cmp),
1504 : const enum tree_code ARG_UNUSED (icmp))
1505 : {
1506 112334 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1507 112334 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail515;
1508 112310 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail515;
1509 112310 : {
1510 112310 : tree res_op0;
1511 112310 : res_op0 = captures[0];
1512 112310 : tree res_op1;
1513 112310 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1514 112310 : tree _r;
1515 112310 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1516 112310 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
1517 : return _r;
1518 : }
1519 : next_after_fail515:;
1520 : return NULL_TREE;
1521 : }
1522 :
1523 : tree
1524 18 : generic_simplify_287 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1525 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1526 : const enum tree_code ARG_UNUSED (cmp),
1527 : const enum tree_code ARG_UNUSED (ncmp))
1528 : {
1529 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1530 36 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1531 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1532 36 : && types_match (captures[0], captures[2])
1533 : )
1534 : {
1535 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail520;
1536 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail520;
1537 2 : {
1538 2 : tree res_op0;
1539 2 : {
1540 2 : tree _o1[2], _r1;
1541 2 : _o1[0] = captures[0];
1542 2 : _o1[1] = captures[2];
1543 2 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1544 2 : res_op0 = _r1;
1545 : }
1546 2 : tree res_op1;
1547 2 : res_op1 = captures[1];
1548 2 : tree _r;
1549 2 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1550 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 419, __FILE__, __LINE__, true);
1551 2 : return _r;
1552 : }
1553 : next_after_fail520:;
1554 : }
1555 : return NULL_TREE;
1556 : }
1557 :
1558 : tree
1559 0 : generic_simplify_293 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1560 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1561 : const enum tree_code ARG_UNUSED (inner),
1562 : const enum tree_code ARG_UNUSED (outer))
1563 : {
1564 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1565 0 : {
1566 0 : bool cst1 = integer_onep (captures[1]);
1567 0 : bool cst0 = integer_zerop (captures[1]);
1568 0 : bool innereq = inner == EQ_EXPR;
1569 0 : bool outereq = outer == EQ_EXPR;
1570 0 : if (innereq ? cst0 : cst1
1571 : )
1572 : {
1573 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail540;
1574 0 : {
1575 0 : tree _r;
1576 0 : _r = constant_boolean_node (!outereq, type);
1577 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1578 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1579 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1580 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1581 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 431, __FILE__, __LINE__, true);
1582 0 : return _r;
1583 : }
1584 0 : next_after_fail540:;
1585 : }
1586 : else
1587 : {
1588 0 : if (innereq ? cst1 : cst0
1589 : )
1590 : {
1591 0 : {
1592 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1593 0 : tree ucst1 = build_one_cst (utype);
1594 0 : if (!outereq
1595 : )
1596 : {
1597 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail541;
1598 0 : {
1599 0 : tree res_op0;
1600 0 : {
1601 0 : tree _o1[1], _r1;
1602 0 : _o1[0] = captures[0];
1603 0 : if (TREE_TYPE (_o1[0]) != utype)
1604 : {
1605 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1606 : }
1607 : else
1608 : _r1 = _o1[0];
1609 0 : res_op0 = _r1;
1610 : }
1611 0 : tree res_op1;
1612 0 : res_op1 = ucst1;
1613 0 : tree _r;
1614 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1615 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1616 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1617 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 432, __FILE__, __LINE__, true);
1618 0 : return _r;
1619 : }
1620 0 : next_after_fail541:;
1621 : }
1622 : else
1623 : {
1624 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail542;
1625 0 : {
1626 0 : tree res_op0;
1627 0 : {
1628 0 : tree _o1[1], _r1;
1629 0 : _o1[0] = captures[0];
1630 0 : if (TREE_TYPE (_o1[0]) != utype)
1631 : {
1632 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1633 : }
1634 : else
1635 : _r1 = _o1[0];
1636 0 : res_op0 = _r1;
1637 : }
1638 0 : tree res_op1;
1639 0 : res_op1 = ucst1;
1640 0 : tree _r;
1641 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1642 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1643 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1644 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 433, __FILE__, __LINE__, true);
1645 0 : return _r;
1646 : }
1647 0 : next_after_fail542:;
1648 : }
1649 : }
1650 : }
1651 : else
1652 : {
1653 0 : {
1654 0 : tree value = build_int_cst (TREE_TYPE (captures[0]), !innereq);
1655 0 : if (outereq
1656 : )
1657 : {
1658 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail543;
1659 0 : {
1660 0 : tree res_op0;
1661 0 : res_op0 = captures[0];
1662 0 : tree res_op1;
1663 0 : res_op1 = value;
1664 0 : tree _r;
1665 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1666 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1667 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1668 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 434, __FILE__, __LINE__, true);
1669 0 : return _r;
1670 : }
1671 0 : next_after_fail543:;
1672 : }
1673 : else
1674 : {
1675 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail544;
1676 0 : {
1677 0 : tree res_op0;
1678 0 : res_op0 = captures[0];
1679 0 : tree res_op1;
1680 0 : res_op1 = value;
1681 0 : tree _r;
1682 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
1683 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1684 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1685 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 435, __FILE__, __LINE__, true);
1686 0 : return _r;
1687 : }
1688 0 : next_after_fail544:;
1689 : }
1690 : }
1691 : }
1692 : }
1693 : }
1694 : return NULL_TREE;
1695 : }
1696 :
1697 : tree
1698 374 : generic_simplify_299 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1699 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1700 : const enum tree_code ARG_UNUSED (op),
1701 : const combined_fn ARG_UNUSED (ctz))
1702 : {
1703 374 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1704 374 : {
1705 374 : tree type0 = TREE_TYPE (captures[1]);
1706 374 : int prec = TYPE_PRECISION (type0);
1707 374 : bool ok = true;
1708 374 : if (sanitize_flags_p (SANITIZE_BUILTIN)
1709 374 : && (!cfun
1710 64 : || (cfun->curr_properties & PROP_ssa) == 0))
1711 : ok = false;
1712 620 : if (ok && prec <= MAX_FIXED_MODE_SIZE
1713 : )
1714 : {
1715 310 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) >= prec
1716 : )
1717 : {
1718 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail561;
1719 36 : {
1720 36 : tree _r;
1721 36 : _r = constant_boolean_node (op == EQ_EXPR ? false : true, type);
1722 36 : if (TREE_SIDE_EFFECTS (captures[1]))
1723 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1724 36 : if (TREE_SIDE_EFFECTS (captures[2]))
1725 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1726 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 452, __FILE__, __LINE__, true);
1727 310 : return _r;
1728 : }
1729 0 : next_after_fail561:;
1730 : }
1731 : else
1732 : {
1733 274 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail562;
1734 274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail562;
1735 274 : {
1736 274 : tree res_op0;
1737 274 : {
1738 274 : tree _o1[2], _r1;
1739 274 : _o1[0] = captures[1];
1740 274 : _o1[1] = wide_int_to_tree (type0,
1741 274 : wi::mask (tree_to_uhwi (captures[2]) + 1,
1742 : false, prec));
1743 274 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1744 274 : res_op0 = _r1;
1745 : }
1746 274 : tree res_op1;
1747 274 : res_op1 = wide_int_to_tree (type0,
1748 274 : wi::shifted_mask (tree_to_uhwi (captures[2]), 1,
1749 : false, prec));
1750 274 : tree _r;
1751 274 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1752 274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 453, __FILE__, __LINE__, true);
1753 274 : return _r;
1754 : }
1755 64 : next_after_fail562:;
1756 : }
1757 : }
1758 : }
1759 64 : return NULL_TREE;
1760 : }
1761 :
1762 : tree
1763 0 : generic_simplify_311 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1764 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1765 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1766 : {
1767 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1768 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail578;
1769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail578;
1770 0 : {
1771 0 : tree _r;
1772 0 : _r = captures[1];
1773 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 469, __FILE__, __LINE__, true);
1774 : return _r;
1775 : }
1776 : next_after_fail578:;
1777 : return NULL_TREE;
1778 : }
1779 :
1780 : tree
1781 768 : generic_simplify_318 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1782 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1783 : const enum tree_code ARG_UNUSED (div))
1784 : {
1785 768 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1786 1536 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
1787 768 : && !integer_zerop (captures[0])
1788 1035 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1789 : )
1790 : {
1791 111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail587;
1792 111 : {
1793 111 : tree _r;
1794 111 : _r = build_one_cst (type);
1795 111 : if (TREE_SIDE_EFFECTS (captures[0]))
1796 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1797 111 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 476, __FILE__, __LINE__, true);
1798 111 : return _r;
1799 : }
1800 0 : next_after_fail587:;
1801 : }
1802 : return NULL_TREE;
1803 : }
1804 :
1805 : tree
1806 192 : generic_simplify_324 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1807 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1808 : const enum tree_code ARG_UNUSED (div))
1809 : {
1810 192 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1811 192 : if (ANY_INTEGRAL_TYPE_P (type)
1812 : )
1813 : {
1814 192 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1815 : )
1816 : {
1817 164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail594;
1818 164 : {
1819 164 : tree _r;
1820 164 : _r = captures[1];
1821 164 : if (TREE_SIDE_EFFECTS (captures[2]))
1822 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1823 164 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 483, __FILE__, __LINE__, true);
1824 164 : return _r;
1825 : }
1826 0 : next_after_fail594:;
1827 : }
1828 : }
1829 : return NULL_TREE;
1830 : }
1831 :
1832 : tree
1833 217621 : generic_simplify_328 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1834 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1835 : const enum tree_code ARG_UNUSED (mod))
1836 : {
1837 217621 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1838 217621 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail598;
1839 217621 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail598;
1840 217621 : {
1841 217621 : tree _r;
1842 217621 : _r = build_zero_cst (type);
1843 217621 : if (TREE_SIDE_EFFECTS (captures[0]))
1844 47 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1845 217621 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 487, __FILE__, __LINE__, true);
1846 : return _r;
1847 : }
1848 : next_after_fail598:;
1849 : return NULL_TREE;
1850 : }
1851 :
1852 : tree
1853 6 : generic_simplify_338 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1854 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1855 : const combined_fn ARG_UNUSED (SIN),
1856 : const combined_fn ARG_UNUSED (TAN),
1857 : const combined_fn ARG_UNUSED (COS))
1858 : {
1859 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1860 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1861 : )
1862 : {
1863 6 : if (! HONOR_NANS (captures[1])
1864 6 : && ! HONOR_INFINITIES (captures[1])
1865 : )
1866 : {
1867 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail610;
1868 6 : {
1869 6 : tree res_op0;
1870 6 : res_op0 = captures[1];
1871 6 : tree _r;
1872 6 : _r = maybe_build_call_expr_loc (loc, COS, type, 1, res_op0);
1873 6 : if (!_r)
1874 0 : goto next_after_fail610;
1875 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 499, __FILE__, __LINE__, true);
1876 6 : return _r;
1877 : }
1878 : next_after_fail610:;
1879 : }
1880 : }
1881 : return NULL_TREE;
1882 : }
1883 :
1884 : tree
1885 168099 : generic_simplify_346 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1886 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1887 : const enum tree_code ARG_UNUSED (cmp))
1888 : {
1889 168099 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1890 168099 : {
1891 168099 : tree from_type = TREE_TYPE (captures[0]);
1892 168099 : tree c1_type = TREE_TYPE (captures[1]), c2_type = TREE_TYPE (captures[2]);
1893 168099 : enum tree_code code = ERROR_MARK;
1894 168099 : if (integer_zerop (captures[1])
1895 69008 : && INTEGRAL_TYPE_P (from_type)
1896 66213 : && (cmp == GE_EXPR || cmp == LT_EXPR)
1897 17729 : && TYPE_UNSIGNED (from_type)
1898 1793 : && !TYPE_UNSIGNED (c1_type)
1899 1793 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (c1_type)
1900 587 : && int_fits_type_p (captures[2], from_type)
1901 168686 : && (types_match (c2_type, from_type)
1902 0 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1903 0 : && (TYPE_UNSIGNED (from_type)
1904 0 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1905 : {
1906 587 : tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
1907 587 : widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (type) - 1, 0);
1908 587 : code = minmax_from_comparison (ncmp, captures[0], c1, wi::to_widest (captures[2]));
1909 587 : }
1910 587 : if (code == ERROR_MARK
1911 168094 : && INTEGRAL_TYPE_P (from_type)
1912 165299 : && int_fits_type_p (captures[2], from_type)
1913 165298 : && (types_match (c1_type, from_type)
1914 7199 : || (TYPE_PRECISION (c1_type) > TYPE_PRECISION (from_type)
1915 0 : && (TYPE_UNSIGNED (from_type)
1916 0 : || TYPE_SIGN (c1_type) == TYPE_SIGN (from_type))))
1917 158686 : && (types_match (c2_type, from_type)
1918 62588 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1919 19483 : && (TYPE_UNSIGNED (from_type)
1920 670 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1921 : {
1922 114405 : if (cmp != EQ_EXPR)
1923 114393 : code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[2]);
1924 12 : else if (int_fits_type_p (captures[1], from_type))
1925 : code = EQ_EXPR;
1926 : }
1927 168087 : if (code == MAX_EXPR
1928 : )
1929 : {
1930 19726 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail618;
1931 19726 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail618;
1932 19726 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail618;
1933 19726 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail618;
1934 19726 : {
1935 19726 : tree res_op0;
1936 19726 : {
1937 19726 : tree _o1[2], _r1;
1938 19726 : _o1[0] = captures[0];
1939 19726 : {
1940 19726 : tree _o2[1], _r2;
1941 19726 : _o2[0] = captures[2];
1942 19726 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1943 : {
1944 315 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1945 : }
1946 : else
1947 : _r2 = _o2[0];
1948 19726 : _o1[1] = _r2;
1949 : }
1950 19726 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1951 19726 : res_op0 = _r1;
1952 : }
1953 19726 : tree _r;
1954 19726 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1955 19726 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 507, __FILE__, __LINE__, true);
1956 19726 : return _r;
1957 : }
1958 : next_after_fail618:;
1959 : }
1960 : else
1961 : {
1962 148373 : if (code == MIN_EXPR
1963 : )
1964 : {
1965 258 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail619;
1966 258 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail619;
1967 258 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail619;
1968 258 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail619;
1969 258 : {
1970 258 : tree res_op0;
1971 258 : {
1972 258 : tree _o1[2], _r1;
1973 258 : _o1[0] = captures[0];
1974 258 : {
1975 258 : tree _o2[1], _r2;
1976 258 : _o2[0] = captures[2];
1977 258 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1978 : {
1979 100 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1980 : }
1981 : else
1982 : _r2 = _o2[0];
1983 258 : _o1[1] = _r2;
1984 : }
1985 258 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1986 258 : res_op0 = _r1;
1987 : }
1988 258 : tree _r;
1989 258 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1990 258 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 508, __FILE__, __LINE__, true);
1991 258 : return _r;
1992 : }
1993 : next_after_fail619:;
1994 : }
1995 : else
1996 : {
1997 148115 : if (code == EQ_EXPR
1998 : )
1999 : {
2000 12 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail620;
2001 12 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail620;
2002 12 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail620;
2003 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail620;
2004 12 : {
2005 12 : if (! tree_invariant_p (captures[1])) goto next_after_fail620;
2006 12 : tree res_op0;
2007 12 : {
2008 12 : tree _o1[3], _r1;
2009 12 : {
2010 12 : tree _o2[2], _r2;
2011 12 : _o2[0] = captures[0];
2012 12 : {
2013 12 : tree _o3[1], _r3;
2014 12 : _o3[0] = unshare_expr (captures[1]);
2015 12 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
2016 : {
2017 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
2018 : }
2019 : else
2020 : _r3 = _o3[0];
2021 12 : _o2[1] = _r3;
2022 : }
2023 12 : _r2 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o2[0], _o2[1]);
2024 12 : _o1[0] = _r2;
2025 : }
2026 12 : {
2027 12 : tree _o2[1], _r2;
2028 12 : _o2[0] = captures[1];
2029 12 : if (TREE_TYPE (_o2[0]) != from_type)
2030 : {
2031 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
2032 : }
2033 : else
2034 : _r2 = _o2[0];
2035 12 : _o1[1] = _r2;
2036 : }
2037 12 : {
2038 12 : tree _o2[1], _r2;
2039 12 : _o2[0] = captures[2];
2040 12 : if (TREE_TYPE (_o2[0]) != from_type)
2041 : {
2042 7 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
2043 : }
2044 : else
2045 : _r2 = _o2[0];
2046 12 : _o1[2] = _r2;
2047 : }
2048 12 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
2049 12 : res_op0 = _r1;
2050 : }
2051 12 : tree _r;
2052 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2053 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 509, __FILE__, __LINE__, true);
2054 12 : return _r;
2055 : }
2056 : next_after_fail620:;
2057 : }
2058 : }
2059 : }
2060 : }
2061 : return NULL_TREE;
2062 : }
2063 :
2064 : tree
2065 0 : generic_simplify_387 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2066 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2067 : const enum tree_code ARG_UNUSED (legt))
2068 : {
2069 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2070 0 : if (!HONOR_NANS (captures[0])
2071 : )
2072 : {
2073 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail671;
2074 0 : {
2075 0 : tree _r;
2076 0 : _r = constant_boolean_node (legt == LE_EXPR, type);
2077 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2078 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2079 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2080 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2081 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 558, __FILE__, __LINE__, true);
2082 0 : return _r;
2083 : }
2084 0 : next_after_fail671:;
2085 : }
2086 : return NULL_TREE;
2087 : }
2088 :
2089 : tree
2090 0 : generic_simplify_395 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2091 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2092 : const enum tree_code ARG_UNUSED (cmp),
2093 : const enum tree_code ARG_UNUSED (cmp2))
2094 : {
2095 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2096 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
2097 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2098 0 : && wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2099 : )
2100 : {
2101 0 : {
2102 0 : tree utype = TREE_TYPE (captures[2]);
2103 0 : wide_int denom = wi::to_wide (captures[1]);
2104 0 : wide_int right = wi::to_wide (captures[2]);
2105 0 : wide_int smax = wi::sdiv_trunc (wi::max_value (TREE_TYPE (captures[0])), denom);
2106 0 : wide_int smin = wi::sdiv_trunc (wi::min_value (TREE_TYPE (captures[0])), denom);
2107 0 : bool small = wi::leu_p (right, smax);
2108 0 : bool large = wi::geu_p (right, smin);
2109 0 : if (small || large
2110 : )
2111 : {
2112 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail680;
2113 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail680;
2114 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail680;
2115 0 : {
2116 0 : tree res_op0;
2117 0 : {
2118 0 : tree _o1[1], _r1;
2119 0 : _o1[0] = captures[0];
2120 0 : if (TREE_TYPE (_o1[0]) != utype)
2121 : {
2122 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
2123 : }
2124 : else
2125 : _r1 = _o1[0];
2126 0 : res_op0 = _r1;
2127 : }
2128 0 : tree res_op1;
2129 0 : {
2130 0 : tree _o1[2], _r1;
2131 0 : _o1[0] = captures[2];
2132 0 : {
2133 0 : tree _o2[1], _r2;
2134 0 : _o2[0] = captures[1];
2135 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
2136 : {
2137 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
2138 : }
2139 : else
2140 : _r2 = _o2[0];
2141 0 : _o1[1] = _r2;
2142 : }
2143 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2144 0 : res_op1 = _r1;
2145 : }
2146 0 : tree _r;
2147 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 567, __FILE__, __LINE__, true);
2149 0 : return _r;
2150 : }
2151 0 : next_after_fail680:;
2152 : }
2153 : else
2154 : {
2155 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail681;
2156 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail681;
2157 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail681;
2158 0 : {
2159 0 : tree res_op0;
2160 0 : res_op0 = captures[0];
2161 0 : tree res_op1;
2162 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
2163 0 : tree _r;
2164 0 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
2165 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 568, __FILE__, __LINE__, true);
2166 0 : return _r;
2167 : }
2168 0 : next_after_fail681:;
2169 : }
2170 0 : }
2171 : }
2172 : return NULL_TREE;
2173 : }
2174 :
2175 : tree
2176 0 : generic_simplify_411 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2177 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2178 : const enum tree_code ARG_UNUSED (cmp))
2179 : {
2180 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2181 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2182 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2183 : )
2184 : {
2185 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail734;
2186 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail734;
2187 0 : {
2188 0 : tree res_op0;
2189 0 : res_op0 = captures[1];
2190 0 : tree res_op1;
2191 0 : res_op1 = captures[0];
2192 0 : tree _r;
2193 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2194 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 586, __FILE__, __LINE__, true);
2195 0 : return _r;
2196 : }
2197 : next_after_fail734:;
2198 : }
2199 : return NULL_TREE;
2200 : }
2201 :
2202 : tree
2203 71 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2204 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2205 : const enum tree_code ARG_UNUSED (cmp),
2206 : const enum tree_code ARG_UNUSED (out))
2207 : {
2208 71 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2209 142 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2210 71 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2211 71 : && TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2212 56 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2213 56 : && (TYPE_PRECISION (TREE_TYPE (captures[1]))
2214 56 : >= 2 * TYPE_PRECISION (TREE_TYPE (captures[2])))
2215 56 : && TYPE_MAX_VALUE (TREE_TYPE (captures[2]))
2216 56 : && (wi::to_widest (captures[4])
2217 127 : == wi::to_widest (TYPE_MAX_VALUE (TREE_TYPE (captures[2]))))
2218 56 : && types_match (captures[2], captures[3])
2219 56 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2220 183 : && (optab_handler (umulv4_optab, TYPE_MODE (TREE_TYPE (captures[2])))
2221 : != CODE_FOR_nothing)
2222 : )
2223 : {
2224 56 : {
2225 56 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2226 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail738;
2227 56 : {
2228 56 : tree res_op0;
2229 56 : {
2230 56 : tree _o1[1], _r1;
2231 56 : {
2232 56 : tree _o2[2], _r2;
2233 56 : _o2[0] = captures[2];
2234 56 : _o2[1] = captures[3];
2235 56 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2236 56 : if (!_r2)
2237 0 : goto next_after_fail738;
2238 56 : _o1[0] = _r2;
2239 : }
2240 56 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2241 56 : res_op0 = _r1;
2242 : }
2243 56 : tree res_op1;
2244 56 : res_op1 = build_zero_cst (t);
2245 56 : tree _r;
2246 56 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2247 56 : if (TREE_SIDE_EFFECTS (captures[4]))
2248 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2249 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 604, __FILE__, __LINE__, true);
2250 56 : return _r;
2251 : }
2252 : next_after_fail738:;
2253 : }
2254 : }
2255 : return NULL_TREE;
2256 : }
2257 :
2258 : tree
2259 0 : generic_simplify_425 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2260 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2261 : const enum tree_code ARG_UNUSED (shiftrotate))
2262 : {
2263 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2264 0 : {
2265 0 : tree tem = uniform_vector_p (captures[1]);
2266 0 : if (tem
2267 : )
2268 : {
2269 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail752;
2270 0 : {
2271 0 : tree res_op0;
2272 0 : res_op0 = captures[0];
2273 0 : tree res_op1;
2274 0 : res_op1 = tem;
2275 0 : tree _r;
2276 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2277 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2278 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 618, __FILE__, __LINE__, true);
2280 0 : return _r;
2281 : }
2282 0 : next_after_fail752:;
2283 : }
2284 : }
2285 : return NULL_TREE;
2286 : }
2287 :
2288 : tree
2289 3525034 : generic_simplify_432 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2290 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2291 : const enum tree_code ARG_UNUSED (bitop))
2292 : {
2293 3525034 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2294 3525034 : if (0
2295 : && TREE_CODE (captures[3]) != INTEGER_CST
2296 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2297 : && types_match (type, captures[2])
2298 : && !POINTER_TYPE_P (TREE_TYPE (captures[2]))
2299 : && TREE_CODE (TREE_TYPE (captures[2])) != OFFSET_TYPE
2300 : )
2301 : {
2302 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail766;
2303 : {
2304 : tree res_op0;
2305 : res_op0 = captures[2];
2306 : tree res_op1;
2307 : {
2308 : tree _o1[1], _r1;
2309 : _o1[0] = captures[3];
2310 : if (TREE_TYPE (_o1[0]) != type)
2311 : {
2312 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2313 : }
2314 : else
2315 : _r1 = _o1[0];
2316 : res_op1 = _r1;
2317 : }
2318 : tree _r;
2319 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2320 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 630, __FILE__, __LINE__, true);
2321 : return _r;
2322 : }
2323 : next_after_fail766:;
2324 : }
2325 3525034 : return NULL_TREE;
2326 : }
2327 :
2328 : tree
2329 7343 : generic_simplify_436 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2330 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2331 : const enum tree_code ARG_UNUSED (minmax))
2332 : {
2333 7343 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2334 7343 : if (INTEGRAL_TYPE_P (type)
2335 7343 : && types_match (captures[1], type) && int_fits_type_p (captures[2], type)
2336 641 : && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type)
2337 7343 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2338 : )
2339 : {
2340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail772;
2341 0 : {
2342 0 : tree res_op0;
2343 0 : res_op0 = captures[1];
2344 0 : tree res_op1;
2345 0 : {
2346 0 : tree _o1[1], _r1;
2347 0 : _o1[0] = captures[2];
2348 0 : if (TREE_TYPE (_o1[0]) != type)
2349 : {
2350 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2351 : }
2352 : else
2353 : _r1 = _o1[0];
2354 0 : res_op1 = _r1;
2355 : }
2356 0 : tree _r;
2357 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
2358 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2359 0 : return _r;
2360 : }
2361 0 : next_after_fail772:;
2362 : }
2363 : return NULL_TREE;
2364 : }
2365 :
2366 : tree
2367 4967815 : generic_simplify_441 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2368 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2369 : {
2370 4967815 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2371 4967815 : if (INTEGRAL_TYPE_P (type)
2372 2755243 : && TYPE_PRECISION (type) == 1
2373 4981607 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
2374 : )
2375 : {
2376 13792 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail789;
2377 13792 : {
2378 13792 : tree res_op0;
2379 13792 : res_op0 = captures[0];
2380 13792 : tree _r;
2381 13792 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2382 13792 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 641, __FILE__, __LINE__, true);
2383 13792 : return _r;
2384 : }
2385 0 : next_after_fail789:;
2386 : }
2387 : return NULL_TREE;
2388 : }
2389 :
2390 : tree
2391 0 : generic_simplify_444 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2392 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2393 : const combined_fn ARG_UNUSED (coshs),
2394 : const combined_fn ARG_UNUSED (atanhs),
2395 : const combined_fn ARG_UNUSED (sqrts))
2396 : {
2397 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2398 0 : if (!flag_errno_math
2399 : )
2400 : {
2401 0 : {
2402 0 : tree t_one = build_one_cst (type);
2403 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2404 0 : {
2405 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail792;
2406 0 : tree res_op0;
2407 0 : res_op0 = t_one;
2408 0 : tree res_op1;
2409 0 : {
2410 0 : tree _o1[1], _r1;
2411 0 : {
2412 0 : tree _o2[2], _r2;
2413 0 : {
2414 0 : tree _o3[2], _r3;
2415 0 : _o3[0] = t_one;
2416 0 : _o3[1] = unshare_expr (captures[1]);
2417 0 : _r3 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2418 0 : _o2[0] = _r3;
2419 : }
2420 0 : {
2421 0 : tree _o3[2], _r3;
2422 0 : _o3[0] = t_one;
2423 0 : _o3[1] = captures[1];
2424 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2425 0 : _o2[1] = _r3;
2426 : }
2427 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2428 0 : _o1[0] = _r2;
2429 : }
2430 0 : _r1 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o1[0]), 1, _o1[0]);
2431 0 : if (!_r1)
2432 0 : goto next_after_fail792;
2433 0 : res_op1 = _r1;
2434 : }
2435 0 : tree _r;
2436 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
2437 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 644, __FILE__, __LINE__, true);
2438 0 : return _r;
2439 : }
2440 : next_after_fail792:;
2441 : }
2442 : }
2443 : return NULL_TREE;
2444 : }
2445 :
2446 : tree
2447 0 : generic_simplify_448 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2448 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2449 : const combined_fn ARG_UNUSED (POW))
2450 : {
2451 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2452 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail796;
2453 0 : {
2454 0 : tree _r;
2455 0 : _r = captures[0];
2456 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2457 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2458 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 648, __FILE__, __LINE__, true);
2459 : return _r;
2460 : }
2461 0 : next_after_fail796:;
2462 0 : return NULL_TREE;
2463 : }
2464 :
2465 : tree
2466 0 : generic_simplify_452 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2467 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2468 : const combined_fn ARG_UNUSED (HYPOT))
2469 : {
2470 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2471 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail800;
2472 0 : {
2473 0 : tree res_op0;
2474 0 : res_op0 = captures[0];
2475 0 : tree _r;
2476 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2477 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2478 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2479 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 652, __FILE__, __LINE__, true);
2480 : return _r;
2481 : }
2482 0 : next_after_fail800:;
2483 0 : return NULL_TREE;
2484 : }
2485 :
2486 : tree
2487 8 : generic_simplify_455 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2488 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2489 : {
2490 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2491 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2492 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
2493 : )
2494 : {
2495 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail803;
2496 0 : {
2497 0 : tree res_op0;
2498 0 : res_op0 = captures[0];
2499 0 : tree res_op1;
2500 0 : res_op1 = captures[1];
2501 0 : tree _r;
2502 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2503 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 655, __FILE__, __LINE__, true);
2504 0 : return _r;
2505 : }
2506 0 : next_after_fail803:;
2507 : }
2508 : return NULL_TREE;
2509 : }
2510 :
2511 : tree
2512 0 : generic_simplify_461 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2513 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2514 : {
2515 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2516 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail809;
2517 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail809;
2518 0 : {
2519 0 : tree res_op0;
2520 0 : res_op0 = captures[0];
2521 0 : tree res_op1;
2522 0 : {
2523 0 : tree _o1[1], _r1;
2524 0 : _o1[0] = captures[5];
2525 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2526 0 : res_op1 = _r1;
2527 : }
2528 0 : tree _r;
2529 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2530 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 660, __FILE__, __LINE__, true);
2531 : return _r;
2532 : }
2533 : next_after_fail809:;
2534 : return NULL_TREE;
2535 : }
2536 :
2537 : tree
2538 0 : generic_simplify_467 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2539 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2540 : {
2541 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2542 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail815;
2543 0 : {
2544 0 : tree res_op0;
2545 0 : res_op0 = captures[0];
2546 0 : tree res_op1;
2547 0 : res_op1 = captures[1];
2548 0 : tree _r;
2549 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2550 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 666, __FILE__, __LINE__, true);
2551 : return _r;
2552 : }
2553 0 : next_after_fail815:;
2554 0 : return NULL_TREE;
2555 : }
2556 :
2557 : tree
2558 2 : generic_simplify_469 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2559 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2560 : {
2561 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2562 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail817;
2563 2 : {
2564 2 : tree res_op0;
2565 2 : {
2566 2 : tree _o1[2], _r1;
2567 2 : _o1[0] = captures[1];
2568 2 : _o1[1] = captures[2];
2569 2 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2570 2 : res_op0 = _r1;
2571 : }
2572 2 : tree _r;
2573 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2574 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
2575 : return _r;
2576 : }
2577 0 : next_after_fail817:;
2578 0 : return NULL_TREE;
2579 : }
2580 :
2581 : tree
2582 8 : generic_simplify_476 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2583 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2584 : const enum tree_code ARG_UNUSED (eqne))
2585 : {
2586 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2587 8 : if (eqne == EQ_EXPR
2588 : )
2589 : {
2590 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail825;
2591 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail825;
2592 4 : {
2593 4 : tree _r;
2594 4 : _r = constant_boolean_node (false, type);
2595 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2596 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2597 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2598 4 : return _r;
2599 : }
2600 : next_after_fail825:;
2601 : }
2602 : else
2603 : {
2604 4 : if (eqne == NE_EXPR
2605 : )
2606 : {
2607 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail826;
2608 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail826;
2609 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail826;
2610 4 : {
2611 4 : tree _r;
2612 4 : _r = captures[0];
2613 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2614 4 : return _r;
2615 : }
2616 : next_after_fail826:;
2617 : }
2618 : }
2619 : return NULL_TREE;
2620 : }
2621 :
2622 : tree
2623 4 : generic_simplify_487 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2624 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2625 : {
2626 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2627 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail869;
2628 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail869;
2629 4 : {
2630 4 : tree _r;
2631 4 : _r = captures[2];
2632 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2633 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2634 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2635 : return _r;
2636 : }
2637 : next_after_fail869:;
2638 : return NULL_TREE;
2639 : }
2640 :
2641 : tree
2642 34248 : generic_simplify_491 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2643 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2644 : const enum tree_code ARG_UNUSED (shift))
2645 : {
2646 34248 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2647 34248 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2648 34248 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2649 34248 : && tree_fits_uhwi_p (captures[4])
2650 34248 : && tree_to_uhwi (captures[4]) > 0
2651 68495 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2652 : )
2653 : {
2654 34247 : {
2655 34247 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2656 34247 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2657 34247 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2658 34247 : tree shift_type = TREE_TYPE (captures[2]);
2659 34247 : unsigned int prec;
2660 34247 : if (shift == LSHIFT_EXPR)
2661 5442 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2662 28805 : else if (shift == RSHIFT_EXPR
2663 28805 : && type_has_mode_precision_p (shift_type))
2664 : {
2665 28805 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2666 28805 : tree arg00 = captures[3];
2667 28805 : if (captures[2] != captures[3]
2668 28805 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2669 : {
2670 28547 : tree inner_type = TREE_TYPE (captures[3]);
2671 28547 : if (type_has_mode_precision_p (inner_type)
2672 28547 : && TYPE_PRECISION (inner_type) < prec)
2673 : {
2674 270 : prec = TYPE_PRECISION (inner_type);
2675 270 : if (shiftc < prec)
2676 269 : shift_type = inner_type;
2677 : }
2678 : }
2679 28805 : zerobits = HOST_WIDE_INT_M1U;
2680 28805 : if (shiftc < prec)
2681 : {
2682 28804 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2683 28804 : zerobits <<= prec - shiftc;
2684 : }
2685 28805 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2686 28805 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2687 : {
2688 826 : if ((mask & zerobits) == 0)
2689 819 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2690 : else
2691 : zerobits = 0;
2692 : }
2693 : }
2694 34240 : if ((mask & zerobits) == mask
2695 : )
2696 : {
2697 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail873;
2698 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail873;
2699 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail873;
2700 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail873;
2701 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail873;
2702 1 : {
2703 1 : tree _r;
2704 1 : _r = build_int_cst (type, 0);
2705 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 695, __FILE__, __LINE__, true);
2706 1 : return _r;
2707 : }
2708 : next_after_fail873:;
2709 : }
2710 : else
2711 : {
2712 34246 : {
2713 34246 : newmask = mask | zerobits;
2714 34246 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2715 : )
2716 : {
2717 : {
2718 7360 : for (prec = BITS_PER_UNIT;
2719 11252 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2720 9060 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2721 : break;
2722 3892 : if (prec < HOST_BITS_PER_WIDE_INT
2723 2192 : || newmask == HOST_WIDE_INT_M1U
2724 : )
2725 : {
2726 2120 : {
2727 2120 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2728 2120 : if (!tree_int_cst_equal (newmaskt, captures[5])
2729 : )
2730 : {
2731 2120 : if (shift_type != TREE_TYPE (captures[2])
2732 : )
2733 : {
2734 96 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail874;
2735 96 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail874;
2736 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail874;
2737 96 : {
2738 96 : tree res_op0;
2739 96 : {
2740 96 : tree _o1[1], _r1;
2741 96 : {
2742 96 : tree _o2[2], _r2;
2743 96 : {
2744 96 : tree _o3[1], _r3;
2745 96 : _o3[0] = captures[2];
2746 96 : if (TREE_TYPE (_o3[0]) != shift_type)
2747 : {
2748 96 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2749 : }
2750 : else
2751 : _r3 = _o3[0];
2752 96 : _o2[0] = _r3;
2753 : }
2754 96 : _o2[1] = captures[4];
2755 96 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2756 96 : _o1[0] = _r2;
2757 : }
2758 96 : if (TREE_TYPE (_o1[0]) != type)
2759 : {
2760 96 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2761 : }
2762 : else
2763 : _r1 = _o1[0];
2764 96 : res_op0 = _r1;
2765 : }
2766 96 : tree res_op1;
2767 96 : res_op1 = newmaskt;
2768 96 : tree _r;
2769 96 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2770 96 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
2771 96 : return _r;
2772 : }
2773 : next_after_fail874:;
2774 : }
2775 : else
2776 : {
2777 2024 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail875;
2778 897 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail875;
2779 897 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail875;
2780 897 : {
2781 897 : tree res_op0;
2782 897 : res_op0 = captures[0];
2783 897 : tree res_op1;
2784 897 : res_op1 = newmaskt;
2785 897 : tree _r;
2786 897 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2787 897 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 697, __FILE__, __LINE__, true);
2788 897 : return _r;
2789 : }
2790 : next_after_fail875:;
2791 : }
2792 : }
2793 : }
2794 : }
2795 : }
2796 : }
2797 : }
2798 : }
2799 : }
2800 : }
2801 : return NULL_TREE;
2802 : }
2803 :
2804 : tree
2805 438618 : generic_simplify_500 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2806 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2807 : const enum tree_code ARG_UNUSED (op))
2808 : {
2809 438618 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2810 877236 : if (INTEGRAL_TYPE_P (type)
2811 438618 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2812 68049 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2813 68049 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2814 68049 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2815 68049 : && type_has_mode_precision_p (type)
2816 68049 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2817 33 : && types_match (captures[2], captures[4])
2818 33 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
2819 33 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
2820 438645 : && (wi::to_wide (captures[5])
2821 438672 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
2822 438672 : true, TYPE_PRECISION (type))) == 0
2823 : )
2824 : {
2825 25 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2826 : )
2827 : {
2828 12 : {
2829 12 : tree ntype = TREE_TYPE (captures[2]);
2830 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail891;
2831 12 : {
2832 12 : tree res_op0;
2833 12 : {
2834 12 : tree _o1[2], _r1;
2835 12 : {
2836 12 : tree _o2[2], _r2;
2837 12 : _o2[0] = captures[2];
2838 12 : _o2[1] = captures[4];
2839 12 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2840 12 : _o1[0] = _r2;
2841 : }
2842 12 : {
2843 12 : tree _o2[1], _r2;
2844 12 : _o2[0] = captures[5];
2845 12 : if (TREE_TYPE (_o2[0]) != ntype)
2846 : {
2847 12 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2848 : }
2849 : else
2850 : _r2 = _o2[0];
2851 12 : _o1[1] = _r2;
2852 : }
2853 12 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2854 12 : res_op0 = _r1;
2855 : }
2856 12 : tree _r;
2857 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2858 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
2859 12 : return _r;
2860 : }
2861 0 : next_after_fail891:;
2862 : }
2863 : }
2864 : else
2865 : {
2866 13 : {
2867 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2868 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail892;
2869 13 : {
2870 13 : tree res_op0;
2871 13 : {
2872 13 : tree _o1[2], _r1;
2873 13 : {
2874 13 : tree _o2[2], _r2;
2875 13 : {
2876 13 : tree _o3[1], _r3;
2877 13 : _o3[0] = captures[2];
2878 13 : if (TREE_TYPE (_o3[0]) != utype)
2879 : {
2880 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2881 : }
2882 : else
2883 : _r3 = _o3[0];
2884 13 : _o2[0] = _r3;
2885 : }
2886 13 : {
2887 13 : tree _o3[1], _r3;
2888 13 : _o3[0] = captures[4];
2889 13 : if (TREE_TYPE (_o3[0]) != utype)
2890 : {
2891 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2892 : }
2893 : else
2894 : _r3 = _o3[0];
2895 13 : _o2[1] = _r3;
2896 : }
2897 13 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2898 13 : _o1[0] = _r2;
2899 : }
2900 13 : {
2901 13 : tree _o2[1], _r2;
2902 13 : _o2[0] = captures[5];
2903 13 : if (TREE_TYPE (_o2[0]) != utype)
2904 : {
2905 13 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2906 : }
2907 : else
2908 : _r2 = _o2[0];
2909 13 : _o1[1] = _r2;
2910 : }
2911 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2912 13 : res_op0 = _r1;
2913 : }
2914 13 : tree _r;
2915 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2916 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 704, __FILE__, __LINE__, true);
2917 13 : return _r;
2918 : }
2919 0 : next_after_fail892:;
2920 : }
2921 : }
2922 : }
2923 : return NULL_TREE;
2924 : }
2925 :
2926 : tree
2927 0 : generic_simplify_531 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2928 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2929 : const enum tree_code ARG_UNUSED (minmax))
2930 : {
2931 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2932 0 : if (TYPE_UNSIGNED (type)
2933 0 : || (tree_int_cst_sgn (captures[2]) == tree_int_cst_sgn (captures[4]))
2934 : )
2935 : {
2936 0 : {
2937 0 : auto andvalue = wi::to_wide (captures[2]) & wi::to_wide (captures[4]);
2938 0 : if (andvalue == ((minmax == MIN_EXPR)
2939 0 : ? wi::to_wide (captures[2]) : wi::to_wide (captures[4]))
2940 : )
2941 : {
2942 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail925;
2943 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail925;
2944 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail925;
2945 0 : {
2946 0 : tree _r;
2947 0 : _r = captures[0];
2948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2949 0 : return _r;
2950 : }
2951 0 : next_after_fail925:;
2952 : }
2953 : else
2954 : {
2955 0 : if (andvalue == ((minmax != MIN_EXPR)
2956 0 : ? wi::to_wide (captures[2]) : wi::to_wide (captures[4]))
2957 : )
2958 : {
2959 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail926;
2960 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail926;
2961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail926;
2962 0 : {
2963 0 : tree _r;
2964 0 : _r = captures[3];
2965 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 735, __FILE__, __LINE__, true);
2966 0 : return _r;
2967 : }
2968 0 : next_after_fail926:;
2969 : }
2970 : }
2971 0 : }
2972 : }
2973 : return NULL_TREE;
2974 : }
2975 :
2976 : tree
2977 0 : generic_simplify_543 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2978 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2979 : const combined_fn ARG_UNUSED (FMIN_ALL))
2980 : {
2981 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2982 0 : if (flag_finite_math_only
2983 : )
2984 : {
2985 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail951;
2986 0 : {
2987 0 : tree res_op0;
2988 0 : res_op0 = captures[0];
2989 0 : tree res_op1;
2990 0 : res_op1 = captures[1];
2991 0 : tree _r;
2992 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
2993 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 748, __FILE__, __LINE__, true);
2994 0 : return _r;
2995 : }
2996 0 : next_after_fail951:;
2997 : }
2998 : return NULL_TREE;
2999 : }
3000 :
3001 : tree
3002 0 : generic_simplify_548 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3003 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3004 : const enum tree_code ARG_UNUSED (cmp))
3005 : {
3006 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3007 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail956;
3008 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail956;
3009 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail956;
3010 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail956;
3011 0 : {
3012 0 : tree _r;
3013 0 : _r = captures[3];
3014 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
3015 : return _r;
3016 : }
3017 : next_after_fail956:;
3018 : return NULL_TREE;
3019 : }
3020 :
3021 : tree
3022 0 : generic_simplify_558 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3023 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3024 : const combined_fn ARG_UNUSED (cond_op))
3025 : {
3026 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3027 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail966;
3028 0 : {
3029 0 : tree res_op0;
3030 0 : {
3031 0 : tree _o1[2], _r1;
3032 0 : _o1[0] = captures[2];
3033 0 : _o1[1] = captures[0];
3034 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3035 0 : res_op0 = _r1;
3036 : }
3037 0 : tree res_op1;
3038 0 : res_op1 = captures[3];
3039 0 : tree res_op2;
3040 0 : res_op2 = captures[4];
3041 0 : tree res_op3;
3042 0 : res_op3 = captures[5];
3043 0 : tree _r;
3044 0 : _r = maybe_build_call_expr_loc (loc, cond_op, type, 4, res_op0, res_op1, res_op2, res_op3);
3045 0 : if (!_r)
3046 0 : goto next_after_fail966;
3047 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 758, __FILE__, __LINE__, true);
3048 : return _r;
3049 : }
3050 : next_after_fail966:;
3051 : return NULL_TREE;
3052 : }
3053 :
3054 : tree
3055 1 : generic_simplify_563 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3056 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
3057 : {
3058 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3059 1 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), type)
3060 : )
3061 : {
3062 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail974;
3063 1 : {
3064 1 : tree res_op0;
3065 1 : {
3066 1 : tree _o1[1], _r1;
3067 1 : _o1[0] = captures[0];
3068 1 : if (TREE_TYPE (_o1[0]) != type)
3069 : {
3070 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3071 : }
3072 : else
3073 : _r1 = _o1[0];
3074 1 : res_op0 = _r1;
3075 : }
3076 1 : tree _r;
3077 1 : _r = non_lvalue_loc (loc, res_op0);
3078 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 766, __FILE__, __LINE__, true);
3079 1 : return _r;
3080 : }
3081 0 : next_after_fail974:;
3082 : }
3083 : return NULL_TREE;
3084 : }
3085 :
3086 : tree
3087 0 : generic_simplify_573 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3088 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3089 : const combined_fn ARG_UNUSED (logs))
3090 : {
3091 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3092 0 : if (flag_unsafe_math_optimizations
3093 : )
3094 : {
3095 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3096 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
3097 0 : && ! flag_trapping_math
3098 0 : && ! flag_errno_math
3099 : )
3100 : {
3101 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
3102 0 : {
3103 0 : tree res_op0;
3104 0 : {
3105 0 : tree _o1[1], _r1;
3106 0 : _o1[0] = captures[1];
3107 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3108 0 : if (!_r1)
3109 0 : goto next_after_fail984;
3110 0 : if (EXPR_P (_r1))
3111 0 : goto next_after_fail984;
3112 0 : res_op0 = _r1;
3113 : }
3114 0 : tree res_op1;
3115 0 : {
3116 0 : tree _o1[1], _r1;
3117 0 : _o1[0] = captures[2];
3118 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3119 0 : if (!_r1)
3120 0 : goto next_after_fail984;
3121 0 : res_op1 = _r1;
3122 : }
3123 0 : tree _r;
3124 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 776, __FILE__, __LINE__, true);
3126 0 : return _r;
3127 : }
3128 : next_after_fail984:;
3129 : }
3130 : }
3131 : return NULL_TREE;
3132 : }
3133 :
3134 : tree
3135 0 : generic_simplify_586 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3136 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3137 : const combined_fn ARG_UNUSED (froms),
3138 : const combined_fn ARG_UNUSED (tos))
3139 : {
3140 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3141 0 : if (optimize && canonicalize_math_p ()
3142 : )
3143 : {
3144 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail997;
3145 0 : {
3146 0 : tree res_op0;
3147 0 : res_op0 = captures[0];
3148 0 : tree _r;
3149 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3150 0 : if (!_r)
3151 0 : goto next_after_fail997;
3152 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 789, __FILE__, __LINE__, true);
3153 0 : return _r;
3154 : }
3155 : next_after_fail997:;
3156 : }
3157 : return NULL_TREE;
3158 : }
3159 :
3160 : tree
3161 0 : generic_simplify_594 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3162 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3163 : const combined_fn ARG_UNUSED (fmas))
3164 : {
3165 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3166 0 : if (canonicalize_math_after_vectorization_p ()
3167 : )
3168 : {
3169 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1005;
3170 : {
3171 : tree res_op0;
3172 : res_op0 = captures[0];
3173 : tree res_op1;
3174 : res_op1 = captures[1];
3175 : tree res_op2;
3176 : res_op2 = captures[2];
3177 : tree _r;
3178 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3179 : if (!_r)
3180 : goto next_after_fail1005;
3181 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 797, __FILE__, __LINE__, true);
3182 : return _r;
3183 : }
3184 0 : next_after_fail1005:;
3185 : }
3186 0 : return NULL_TREE;
3187 : }
3188 :
3189 : tree
3190 0 : generic_simplify_604 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3191 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3192 : const combined_fn ARG_UNUSED (fmas))
3193 : {
3194 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3195 0 : if (canonicalize_math_after_vectorization_p ()
3196 : )
3197 : {
3198 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
3199 : {
3200 : tree res_op0;
3201 : res_op0 = captures[0];
3202 : tree res_op1;
3203 : res_op1 = captures[1];
3204 : tree res_op2;
3205 : res_op2 = captures[2];
3206 : tree res_op3;
3207 : res_op3 = captures[3];
3208 : tree res_op4;
3209 : res_op4 = captures[4];
3210 : tree _r;
3211 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3212 : if (!_r)
3213 : goto next_after_fail1015;
3214 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 807, __FILE__, __LINE__, true);
3215 : return _r;
3216 : }
3217 0 : next_after_fail1015:;
3218 : }
3219 0 : return NULL_TREE;
3220 : }
3221 :
3222 : tree
3223 0 : generic_simplify_613 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3224 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3225 : const combined_fn ARG_UNUSED (ctz))
3226 : {
3227 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3228 0 : {
3229 0 : tree t = TREE_TYPE (captures[0]);
3230 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1024;
3231 0 : {
3232 0 : tree res_op0;
3233 0 : {
3234 0 : tree _o1[1], _r1;
3235 0 : _o1[0] = captures[1];
3236 0 : if (TREE_TYPE (_o1[0]) != t)
3237 : {
3238 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3239 : }
3240 : else
3241 : _r1 = _o1[0];
3242 0 : res_op0 = _r1;
3243 : }
3244 0 : tree _r;
3245 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3246 0 : if (!_r)
3247 0 : goto next_after_fail1024;
3248 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3249 : return _r;
3250 : }
3251 : next_after_fail1024:;
3252 : }
3253 : return NULL_TREE;
3254 : }
3255 :
3256 : tree
3257 0 : generic_simplify_623 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3258 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3259 : const combined_fn ARG_UNUSED (bswap),
3260 : const combined_fn ARG_UNUSED (parity))
3261 : {
3262 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3263 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3264 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3265 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3266 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3267 : )
3268 : {
3269 0 : {
3270 0 : tree type0 = TREE_TYPE (captures[0]);
3271 0 : tree type1 = TREE_TYPE (captures[1]);
3272 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1035;
3273 0 : {
3274 0 : tree res_op0;
3275 0 : {
3276 0 : tree _o1[1], _r1;
3277 0 : {
3278 0 : tree _o2[1], _r2;
3279 0 : _o2[0] = captures[2];
3280 0 : if (TREE_TYPE (_o2[0]) != type1)
3281 : {
3282 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3283 : }
3284 : else
3285 : _r2 = _o2[0];
3286 0 : _o1[0] = _r2;
3287 : }
3288 0 : if (TREE_TYPE (_o1[0]) != type0)
3289 : {
3290 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3291 : }
3292 : else
3293 : _r1 = _o1[0];
3294 0 : res_op0 = _r1;
3295 : }
3296 0 : tree _r;
3297 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3298 0 : if (!_r)
3299 0 : goto next_after_fail1035;
3300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3301 0 : return _r;
3302 : }
3303 : next_after_fail1035:;
3304 : }
3305 : }
3306 : return NULL_TREE;
3307 : }
3308 :
3309 : tree
3310 874903615 : generic_simplify_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3311 : {
3312 874903615 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3313 874903615 : switch (TREE_CODE (_p0))
3314 : {
3315 734501 : case NEGATE_EXPR:
3316 734501 : {
3317 734501 : tree _q20 = TREE_OPERAND (_p0, 0);
3318 734501 : switch (TREE_CODE (_q20))
3319 : {
3320 403448 : CASE_CONVERT:
3321 403448 : {
3322 403448 : tree _q30 = TREE_OPERAND (_q20, 0);
3323 403448 : {
3324 403448 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3325 403448 : if (INTEGRAL_TYPE_P (type)
3326 403147 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
3327 399379 : && (TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3328 398136 : || TYPE_UNSIGNED (type))
3329 429958 : && TREE_CODE (type) != BOOLEAN_TYPE
3330 : )
3331 : {
3332 26510 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1049;
3333 26510 : {
3334 26510 : tree res_op0;
3335 26510 : {
3336 26510 : tree _o1[1], _r1;
3337 26510 : _o1[0] = captures[2];
3338 26510 : if (TREE_TYPE (_o1[0]) != type)
3339 : {
3340 26468 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3341 : }
3342 : else
3343 : _r1 = _o1[0];
3344 26510 : res_op0 = _r1;
3345 : }
3346 26510 : tree _r;
3347 26510 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3348 26510 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3349 26510 : return _r;
3350 : }
3351 0 : next_after_fail1049:;
3352 : }
3353 : }
3354 376938 : break;
3355 : }
3356 : default:;
3357 : }
3358 : break;
3359 : }
3360 1251498 : case BIT_AND_EXPR:
3361 1251498 : {
3362 1251498 : tree _q20 = TREE_OPERAND (_p0, 0);
3363 1251498 : tree _q21 = TREE_OPERAND (_p0, 1);
3364 1251498 : {
3365 1251498 : tree _q20_pops[1];
3366 1251498 : if (tree_nop_convert (_q20, _q20_pops))
3367 : {
3368 627558 : tree _q30 = _q20_pops[0];
3369 627558 : {
3370 627558 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3371 627558 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_AND_EXPR);
3372 627558 : if (res) return res;
3373 : }
3374 : }
3375 : }
3376 1251498 : {
3377 1251498 : tree _q21_pops[1];
3378 1251498 : if (tree_nop_convert (_q21, _q21_pops))
3379 : {
3380 535248 : tree _q40 = _q21_pops[0];
3381 535248 : {
3382 535248 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3383 535248 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_AND_EXPR);
3384 535248 : if (res) return res;
3385 : }
3386 : }
3387 : }
3388 1251498 : switch (TREE_CODE (_q20))
3389 : {
3390 703657 : CASE_CONVERT:
3391 703657 : {
3392 703657 : tree _q30 = TREE_OPERAND (_q20, 0);
3393 703657 : {
3394 703657 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3395 703657 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_AND_EXPR);
3396 703657 : if (res) return res;
3397 : }
3398 703657 : break;
3399 : }
3400 1251498 : default:;
3401 : }
3402 1251498 : switch (TREE_CODE (_q21))
3403 : {
3404 536029 : CASE_CONVERT:
3405 536029 : {
3406 536029 : tree _q40 = TREE_OPERAND (_q21, 0);
3407 536029 : {
3408 536029 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3409 536029 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_AND_EXPR);
3410 536029 : if (res) return res;
3411 : }
3412 536029 : break;
3413 : }
3414 : default:;
3415 : }
3416 : break;
3417 : }
3418 1167505 : case BIT_IOR_EXPR:
3419 1167505 : {
3420 1167505 : tree _q20 = TREE_OPERAND (_p0, 0);
3421 1167505 : tree _q21 = TREE_OPERAND (_p0, 1);
3422 1167505 : {
3423 1167505 : tree _q20_pops[1];
3424 1167505 : if (tree_nop_convert (_q20, _q20_pops))
3425 : {
3426 435535 : tree _q30 = _q20_pops[0];
3427 435535 : {
3428 435535 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3429 435535 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_IOR_EXPR);
3430 435535 : if (res) return res;
3431 : }
3432 : }
3433 : }
3434 1167505 : {
3435 1167505 : tree _q21_pops[1];
3436 1167505 : if (tree_nop_convert (_q21, _q21_pops))
3437 : {
3438 1088430 : tree _q40 = _q21_pops[0];
3439 1088430 : {
3440 1088430 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3441 1088430 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_IOR_EXPR);
3442 1088430 : if (res) return res;
3443 : }
3444 : }
3445 : }
3446 1167505 : switch (TREE_CODE (_q20))
3447 : {
3448 454225 : CASE_CONVERT:
3449 454225 : {
3450 454225 : tree _q30 = TREE_OPERAND (_q20, 0);
3451 454225 : {
3452 454225 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3453 454225 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_IOR_EXPR);
3454 454225 : if (res) return res;
3455 : }
3456 454225 : break;
3457 : }
3458 1167505 : default:;
3459 : }
3460 1167505 : switch (TREE_CODE (_q21))
3461 : {
3462 1096750 : CASE_CONVERT:
3463 1096750 : {
3464 1096750 : tree _q40 = TREE_OPERAND (_q21, 0);
3465 1096750 : {
3466 1096750 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3467 1096750 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_IOR_EXPR);
3468 1096750 : if (res) return res;
3469 : }
3470 1096750 : break;
3471 : }
3472 : default:;
3473 : }
3474 : break;
3475 : }
3476 613865 : case BIT_XOR_EXPR:
3477 613865 : {
3478 613865 : tree _q20 = TREE_OPERAND (_p0, 0);
3479 613865 : tree _q21 = TREE_OPERAND (_p0, 1);
3480 613865 : {
3481 613865 : tree _q20_pops[1];
3482 613865 : if (tree_nop_convert (_q20, _q20_pops))
3483 : {
3484 346571 : tree _q30 = _q20_pops[0];
3485 346571 : {
3486 346571 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3487 346571 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_XOR_EXPR);
3488 346571 : if (res) return res;
3489 : }
3490 : }
3491 : }
3492 613865 : {
3493 613865 : tree _q21_pops[1];
3494 613865 : if (tree_nop_convert (_q21, _q21_pops))
3495 : {
3496 491692 : tree _q40 = _q21_pops[0];
3497 491692 : {
3498 491692 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3499 491692 : tree res = generic_simplify_432 (loc, type, _p0, captures, BIT_XOR_EXPR);
3500 491692 : if (res) return res;
3501 : }
3502 : }
3503 : }
3504 613865 : switch (TREE_CODE (_q20))
3505 : {
3506 389953 : CASE_CONVERT:
3507 389953 : {
3508 389953 : tree _q30 = TREE_OPERAND (_q20, 0);
3509 389953 : {
3510 389953 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3511 389953 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_XOR_EXPR);
3512 389953 : if (res) return res;
3513 : }
3514 389953 : break;
3515 : }
3516 613865 : default:;
3517 : }
3518 613865 : switch (TREE_CODE (_q21))
3519 : {
3520 534067 : CASE_CONVERT:
3521 534067 : {
3522 534067 : tree _q40 = TREE_OPERAND (_q21, 0);
3523 534067 : {
3524 534067 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3525 534067 : tree res = generic_simplify_433 (loc, type, _p0, captures, BIT_XOR_EXPR);
3526 534067 : if (res) return res;
3527 : }
3528 534067 : break;
3529 : }
3530 : default:;
3531 : }
3532 : break;
3533 : }
3534 9488682 : case MULT_EXPR:
3535 9488682 : {
3536 9488682 : tree _q20 = TREE_OPERAND (_p0, 0);
3537 9488682 : tree _q21 = TREE_OPERAND (_p0, 1);
3538 9488682 : if (tree_zero_one_valued_p (_q20))
3539 : {
3540 57092 : switch (TREE_CODE (_q21))
3541 : {
3542 51615 : case INTEGER_CST:
3543 51615 : {
3544 51615 : {
3545 51615 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3546 51615 : if (INTEGRAL_TYPE_P (type)
3547 51615 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3548 51615 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
3549 51621 : && (TYPE_UNSIGNED (type) || TYPE_PRECISION (type) > 1)
3550 : )
3551 : {
3552 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1050;
3553 6 : {
3554 6 : tree res_op0;
3555 6 : {
3556 6 : tree _o1[1], _r1;
3557 6 : _o1[0] = captures[1];
3558 6 : if (TREE_TYPE (_o1[0]) != type)
3559 : {
3560 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3561 : }
3562 : else
3563 : _r1 = _o1[0];
3564 6 : res_op0 = _r1;
3565 : }
3566 6 : tree res_op1;
3567 6 : {
3568 6 : tree _o1[1], _r1;
3569 6 : _o1[0] = captures[2];
3570 6 : if (TREE_TYPE (_o1[0]) != type)
3571 : {
3572 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3573 : }
3574 : else
3575 : _r1 = _o1[0];
3576 6 : res_op1 = _r1;
3577 : }
3578 6 : tree _r;
3579 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3580 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
3581 6 : return _r;
3582 : }
3583 0 : next_after_fail1050:;
3584 : }
3585 : }
3586 51609 : break;
3587 : }
3588 : default:;
3589 : }
3590 : }
3591 : break;
3592 : }
3593 1200969 : case POINTER_DIFF_EXPR:
3594 1200969 : {
3595 1200969 : tree _q20 = TREE_OPERAND (_p0, 0);
3596 1200969 : tree _q21 = TREE_OPERAND (_p0, 1);
3597 1200969 : switch (TREE_CODE (_q21))
3598 : {
3599 200 : case INTEGER_CST:
3600 200 : {
3601 200 : {
3602 200 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3603 200 : if (POINTER_TYPE_P (type)
3604 : )
3605 : {
3606 18 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1051;
3607 18 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1051;
3608 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1051;
3609 18 : {
3610 18 : tree _r;
3611 18 : _r = build_fold_addr_expr_with_type
3612 : (build2 (MEM_REF, char_type_node, captures[0],
3613 : wide_int_to_tree (ptr_type_node, wi::neg (wi::to_wide (captures[1])))),
3614 : type);
3615 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 836, __FILE__, __LINE__, true);
3616 18 : return _r;
3617 : }
3618 182 : next_after_fail1051:;
3619 : }
3620 : }
3621 182 : break;
3622 : }
3623 : default:;
3624 : }
3625 : break;
3626 : }
3627 215234 : case EQ_EXPR:
3628 215234 : {
3629 215234 : tree _q20 = TREE_OPERAND (_p0, 0);
3630 215234 : tree _q21 = TREE_OPERAND (_p0, 1);
3631 215234 : if (tree_zero_one_valued_p (_q20))
3632 : {
3633 1704 : switch (TREE_CODE (_q21))
3634 : {
3635 811 : case INTEGER_CST:
3636 811 : {
3637 811 : {
3638 811 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3639 811 : tree res = generic_simplify_434 (loc, type, _p0, captures, EQ_EXPR);
3640 811 : if (res) return res;
3641 : }
3642 764 : break;
3643 : }
3644 : default:;
3645 : }
3646 : }
3647 : break;
3648 : }
3649 269419 : case NE_EXPR:
3650 269419 : {
3651 269419 : tree _q20 = TREE_OPERAND (_p0, 0);
3652 269419 : tree _q21 = TREE_OPERAND (_p0, 1);
3653 269419 : if (tree_zero_one_valued_p (_q20))
3654 : {
3655 1882 : switch (TREE_CODE (_q21))
3656 : {
3657 1556 : case INTEGER_CST:
3658 1556 : {
3659 1556 : {
3660 1556 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3661 1556 : tree res = generic_simplify_434 (loc, type, _p0, captures, NE_EXPR);
3662 1556 : if (res) return res;
3663 : }
3664 1 : break;
3665 : }
3666 : default:;
3667 : }
3668 : }
3669 : break;
3670 : }
3671 1999 : case MIN_EXPR:
3672 1999 : {
3673 1999 : tree _q20 = TREE_OPERAND (_p0, 0);
3674 1999 : tree _q21 = TREE_OPERAND (_p0, 1);
3675 1999 : switch (TREE_CODE (_q20))
3676 : {
3677 733 : CASE_CONVERT:
3678 733 : {
3679 733 : tree _q30 = TREE_OPERAND (_q20, 0);
3680 733 : switch (TREE_CODE (_q21))
3681 : {
3682 47 : CASE_CONVERT:
3683 47 : {
3684 47 : tree _q50 = TREE_OPERAND (_q21, 0);
3685 47 : {
3686 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3687 47 : tree res = generic_simplify_435 (loc, type, _p0, captures, MIN_EXPR);
3688 47 : if (res) return res;
3689 : }
3690 47 : {
3691 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3692 47 : tree res = generic_simplify_435 (loc, type, _p0, captures, MIN_EXPR);
3693 47 : if (res) return res;
3694 : }
3695 47 : break;
3696 : }
3697 659 : case INTEGER_CST:
3698 659 : {
3699 659 : {
3700 659 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3701 659 : tree res = generic_simplify_436 (loc, type, _p0, captures, MIN_EXPR);
3702 659 : if (res) return res;
3703 : }
3704 659 : break;
3705 : }
3706 : default:;
3707 : }
3708 : break;
3709 : }
3710 : default:;
3711 : }
3712 : break;
3713 : }
3714 274469 : case MAX_EXPR:
3715 274469 : {
3716 274469 : tree _q20 = TREE_OPERAND (_p0, 0);
3717 274469 : tree _q21 = TREE_OPERAND (_p0, 1);
3718 274469 : switch (TREE_CODE (_q20))
3719 : {
3720 6724 : CASE_CONVERT:
3721 6724 : {
3722 6724 : tree _q30 = TREE_OPERAND (_q20, 0);
3723 6724 : switch (TREE_CODE (_q21))
3724 : {
3725 0 : CASE_CONVERT:
3726 0 : {
3727 0 : tree _q50 = TREE_OPERAND (_q21, 0);
3728 0 : {
3729 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3730 0 : tree res = generic_simplify_435 (loc, type, _p0, captures, MAX_EXPR);
3731 0 : if (res) return res;
3732 : }
3733 0 : {
3734 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3735 0 : tree res = generic_simplify_435 (loc, type, _p0, captures, MAX_EXPR);
3736 0 : if (res) return res;
3737 : }
3738 0 : break;
3739 : }
3740 6684 : case INTEGER_CST:
3741 6684 : {
3742 6684 : {
3743 6684 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3744 6684 : tree res = generic_simplify_436 (loc, type, _p0, captures, MAX_EXPR);
3745 6684 : if (res) return res;
3746 : }
3747 6684 : break;
3748 : }
3749 : default:;
3750 : }
3751 : break;
3752 : }
3753 : default:;
3754 : }
3755 : break;
3756 : }
3757 467932 : case LSHIFT_EXPR:
3758 467932 : {
3759 467932 : tree _q20 = TREE_OPERAND (_p0, 0);
3760 467932 : tree _q21 = TREE_OPERAND (_p0, 1);
3761 467932 : switch (TREE_CODE (_q21))
3762 : {
3763 141418 : case INTEGER_CST:
3764 141418 : {
3765 141418 : {
3766 141418 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3767 141418 : if (INTEGRAL_TYPE_P (type)
3768 141391 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3769 141391 : && !integer_zerop (captures[2])
3770 282036 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3771 : )
3772 : {
3773 139335 : if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3774 139335 : || wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (type))
3775 : )
3776 : {
3777 139007 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1052;
3778 139007 : {
3779 139007 : tree res_op0;
3780 139007 : {
3781 139007 : tree _o1[1], _r1;
3782 139007 : _o1[0] = captures[1];
3783 139007 : if (TREE_TYPE (_o1[0]) != type)
3784 : {
3785 129933 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3786 : }
3787 : else
3788 : _r1 = _o1[0];
3789 139007 : res_op0 = _r1;
3790 : }
3791 139007 : tree res_op1;
3792 139007 : res_op1 = captures[2];
3793 139007 : tree _r;
3794 139007 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
3795 139007 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 837, __FILE__, __LINE__, true);
3796 139007 : return _r;
3797 : }
3798 0 : next_after_fail1052:;
3799 : }
3800 : else
3801 : {
3802 328 : if (wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])))
3803 : )
3804 : {
3805 279 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1053;
3806 279 : {
3807 279 : tree _r;
3808 279 : _r = build_zero_cst (type);
3809 279 : if (TREE_SIDE_EFFECTS (captures[1]))
3810 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3811 279 : if (TREE_SIDE_EFFECTS (captures[2]))
3812 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3813 279 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
3814 279 : return _r;
3815 : }
3816 0 : next_after_fail1053:;
3817 : }
3818 : }
3819 : }
3820 : }
3821 2132 : break;
3822 : }
3823 : default:;
3824 : }
3825 : break;
3826 : }
3827 874736193 : default:;
3828 : }
3829 874736193 : {
3830 874736193 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3831 1749472386 : if ((
3832 :
3833 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3834 : || (
3835 : 1
3836 874736193 : && type == TREE_TYPE (captures[0]))
3837 : )
3838 : {
3839 50777466 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1054;
3840 50777466 : {
3841 50777466 : tree _r;
3842 50777466 : _r = captures[0];
3843 50777466 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 839, __FILE__, __LINE__, true);
3844 50777466 : return _r;
3845 : }
3846 0 : next_after_fail1054:;
3847 : }
3848 : }
3849 823958727 : switch (TREE_CODE (_p0))
3850 : {
3851 136201159 : CASE_CONVERT:
3852 136201159 : {
3853 136201159 : tree _q20 = TREE_OPERAND (_p0, 0);
3854 136201159 : {
3855 136201159 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3856 136201159 : {
3857 136201159 : tree inside_type = TREE_TYPE (captures[1]);
3858 136201159 : tree inter_type = TREE_TYPE (captures[0]);
3859 136201159 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3860 136201159 : int inside_ptr = POINTER_TYPE_P (inside_type);
3861 136201159 : int inside_float = FLOAT_TYPE_P (inside_type);
3862 136201159 : int inside_vec = VECTOR_TYPE_P (inside_type);
3863 136201159 : unsigned int inside_prec = element_precision (inside_type);
3864 136201159 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3865 136201159 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3866 136201159 : int inter_ptr = POINTER_TYPE_P (inter_type);
3867 136201159 : int inter_float = FLOAT_TYPE_P (inter_type);
3868 136201159 : int inter_vec = VECTOR_TYPE_P (inter_type);
3869 136201159 : unsigned int inter_prec = element_precision (inter_type);
3870 136201159 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3871 136201159 : int final_int = INTEGRAL_TYPE_P (type);
3872 136201159 : int final_ptr = POINTER_TYPE_P (type);
3873 136201159 : int final_float = FLOAT_TYPE_P (type);
3874 136201159 : int final_vec = VECTOR_TYPE_P (type);
3875 136201159 : unsigned int final_prec = element_precision (type);
3876 136201159 : int final_unsignedp = TYPE_UNSIGNED (type);
3877 136201159 : if (((
3878 :
3879 : && useless_type_conversion_p (type, inside_type))
3880 : || (
3881 : 1
3882 136201159 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3883 23340701 : && (((inter_int || inter_ptr) && final_int)
3884 17647170 : || (inter_float && final_float))
3885 141980270 : && inter_prec >= final_prec
3886 : )
3887 : {
3888 5247436 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1055;
3889 5247436 : {
3890 5247436 : tree res_op0;
3891 5247436 : res_op0 = captures[1];
3892 5247436 : tree _r;
3893 5247436 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3894 5247436 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
3895 5247436 : return _r;
3896 : }
3897 0 : next_after_fail1055:;
3898 : }
3899 : else
3900 : {
3901 130953723 : if (((inter_int && inside_int) || (inter_float && inside_float))
3902 12954922 : && (final_int || final_float)
3903 12823370 : && inter_prec >= inside_prec
3904 11544118 : && (inter_float || inter_unsignedp == inside_unsignedp)
3905 : )
3906 : {
3907 7978580 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1056;
3908 7978580 : {
3909 7978580 : tree res_op0;
3910 7978580 : res_op0 = captures[1];
3911 7978580 : tree _r;
3912 7978580 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3913 7978580 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
3914 7978580 : return _r;
3915 : }
3916 0 : next_after_fail1056:;
3917 0 : }
3918 : else
3919 : {
3920 122975143 : if (inside_int && inter_int && final_int
3921 4838486 : && ((inside_prec < inter_prec && inter_prec < final_prec
3922 183511 : && inside_unsignedp && !inter_unsignedp)
3923 4681774 : || final_prec == inter_prec
3924 2400321 : || (inside_prec < inter_prec && inter_prec > final_prec
3925 158204 : && !inside_unsignedp && inter_unsignedp))
3926 : )
3927 : {
3928 2509528 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1057;
3929 2509528 : {
3930 2509528 : tree res_op0;
3931 2509528 : res_op0 = captures[1];
3932 2509528 : tree _r;
3933 2509528 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3934 2509528 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3935 2509528 : return _r;
3936 : }
3937 0 : next_after_fail1057:;
3938 0 : }
3939 : else
3940 : {
3941 120465615 : if (! inside_float && ! inter_float && ! final_float
3942 : && ! inside_vec && ! inter_vec && ! final_vec
3943 120459307 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3944 119712252 : && ! (inside_int && inter_int
3945 1713451 : && inter_unsignedp != inside_unsignedp
3946 1713451 : && inter_prec < final_prec)
3947 118302590 : && ((inter_unsignedp && inter_prec > inside_prec)
3948 118302590 : == (final_unsignedp && final_prec > inter_prec))
3949 118278932 : && ! (inside_ptr && inter_prec != final_prec)
3950 117785480 : && ! (final_ptr && inside_prec != inter_prec)
3951 : )
3952 : {
3953 117764572 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1058;
3954 117764572 : {
3955 117764572 : tree res_op0;
3956 117764572 : res_op0 = captures[1];
3957 117764572 : tree _r;
3958 117764572 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3959 117764572 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3960 117764572 : return _r;
3961 : }
3962 0 : next_after_fail1058:;
3963 0 : }
3964 : else
3965 : {
3966 2701043 : if (inside_int && inter_int && final_int
3967 2186486 : && final_prec <= inside_prec
3968 687002 : && inter_prec >= inside_prec
3969 : )
3970 : {
3971 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1059;
3972 0 : {
3973 0 : tree res_op0;
3974 0 : res_op0 = captures[1];
3975 0 : tree _r;
3976 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3977 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3978 0 : return _r;
3979 : }
3980 0 : next_after_fail1059:;
3981 0 : }
3982 : else
3983 : {
3984 : if (0
3985 : && final_int && inter_int && inside_int
3986 : && final_prec >= inside_prec
3987 : && inside_prec > inter_prec
3988 : && inter_unsignedp
3989 : )
3990 : {
3991 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1060;
3992 : {
3993 : tree res_op0;
3994 : {
3995 : tree _o1[2], _r1;
3996 : _o1[0] = captures[1];
3997 : _o1[1] = wide_int_to_tree
3998 : (inside_type,
3999 : wi::mask (inter_prec, false,
4000 : TYPE_PRECISION (inside_type)));
4001 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4002 : res_op0 = _r1;
4003 : }
4004 : tree _r;
4005 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4006 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
4007 : return _r;
4008 : }
4009 : next_after_fail1060:;
4010 : }
4011 : else
4012 : {
4013 : if (0
4014 : && inside_int && inter_float && final_int &&
4015 : (unsigned) significand_size (TYPE_MODE (inter_type))
4016 : >= inside_prec - !inside_unsignedp
4017 : )
4018 : {
4019 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1061;
4020 : {
4021 : tree res_op0;
4022 : res_op0 = captures[1];
4023 : tree _r;
4024 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4025 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
4026 : return _r;
4027 : }
4028 : next_after_fail1061:;
4029 : }
4030 : }
4031 : }
4032 : }
4033 : }
4034 : }
4035 : }
4036 : }
4037 : }
4038 2701043 : break;
4039 : }
4040 3067 : case FLOAT_EXPR:
4041 3067 : {
4042 3067 : tree _q20 = TREE_OPERAND (_p0, 0);
4043 3067 : {
4044 3067 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4045 3067 : {
4046 3067 : tree inside_type = TREE_TYPE (captures[1]);
4047 3067 : tree inter_type = TREE_TYPE (captures[0]);
4048 3067 : int inside_int = INTEGRAL_TYPE_P (inside_type);
4049 3067 : int inside_ptr = POINTER_TYPE_P (inside_type);
4050 3067 : int inside_float = FLOAT_TYPE_P (inside_type);
4051 3067 : int inside_vec = VECTOR_TYPE_P (inside_type);
4052 3067 : unsigned int inside_prec = element_precision (inside_type);
4053 3067 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
4054 3067 : int inter_int = INTEGRAL_TYPE_P (inter_type);
4055 3067 : int inter_ptr = POINTER_TYPE_P (inter_type);
4056 3067 : int inter_float = FLOAT_TYPE_P (inter_type);
4057 3067 : int inter_vec = VECTOR_TYPE_P (inter_type);
4058 3067 : unsigned int inter_prec = element_precision (inter_type);
4059 3067 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
4060 3067 : int final_int = INTEGRAL_TYPE_P (type);
4061 3067 : int final_ptr = POINTER_TYPE_P (type);
4062 3067 : int final_float = FLOAT_TYPE_P (type);
4063 3067 : int final_vec = VECTOR_TYPE_P (type);
4064 3067 : unsigned int final_prec = element_precision (type);
4065 3067 : int final_unsignedp = TYPE_UNSIGNED (type);
4066 3067 : if (((
4067 :
4068 : && useless_type_conversion_p (type, inside_type))
4069 : || (
4070 : 1
4071 3067 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
4072 0 : && (((inter_int || inter_ptr) && final_int)
4073 0 : || (inter_float && final_float))
4074 3067 : && inter_prec >= final_prec
4075 : )
4076 : {
4077 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1062;
4078 0 : {
4079 0 : tree res_op0;
4080 0 : res_op0 = captures[1];
4081 0 : tree _r;
4082 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4083 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
4084 0 : return _r;
4085 : }
4086 0 : next_after_fail1062:;
4087 : }
4088 : else
4089 : {
4090 3067 : if (((inter_int && inside_int) || (inter_float && inside_float))
4091 0 : && (final_int || final_float)
4092 0 : && inter_prec >= inside_prec
4093 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
4094 : )
4095 : {
4096 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1063;
4097 0 : {
4098 0 : tree res_op0;
4099 0 : res_op0 = captures[1];
4100 0 : tree _r;
4101 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4102 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
4103 0 : return _r;
4104 : }
4105 0 : next_after_fail1063:;
4106 0 : }
4107 : else
4108 : {
4109 3067 : if (inside_int && inter_int && final_int
4110 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
4111 0 : && inside_unsignedp && !inter_unsignedp)
4112 0 : || final_prec == inter_prec
4113 0 : || (inside_prec < inter_prec && inter_prec > final_prec
4114 0 : && !inside_unsignedp && inter_unsignedp))
4115 : )
4116 : {
4117 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1064;
4118 0 : {
4119 0 : tree res_op0;
4120 0 : res_op0 = captures[1];
4121 0 : tree _r;
4122 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4123 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
4124 0 : return _r;
4125 : }
4126 0 : next_after_fail1064:;
4127 0 : }
4128 : else
4129 : {
4130 3067 : if (! inside_float && ! inter_float && ! final_float
4131 : && ! inside_vec && ! inter_vec && ! final_vec
4132 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
4133 0 : && ! (inside_int && inter_int
4134 0 : && inter_unsignedp != inside_unsignedp
4135 0 : && inter_prec < final_prec)
4136 0 : && ((inter_unsignedp && inter_prec > inside_prec)
4137 0 : == (final_unsignedp && final_prec > inter_prec))
4138 0 : && ! (inside_ptr && inter_prec != final_prec)
4139 0 : && ! (final_ptr && inside_prec != inter_prec)
4140 : )
4141 : {
4142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1065;
4143 0 : {
4144 0 : tree res_op0;
4145 0 : res_op0 = captures[1];
4146 0 : tree _r;
4147 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
4149 0 : return _r;
4150 : }
4151 0 : next_after_fail1065:;
4152 0 : }
4153 : else
4154 : {
4155 3067 : if (inside_int && inter_int && final_int
4156 0 : && final_prec <= inside_prec
4157 0 : && inter_prec >= inside_prec
4158 : )
4159 : {
4160 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1066;
4161 0 : {
4162 0 : tree res_op0;
4163 0 : res_op0 = captures[1];
4164 0 : tree _r;
4165 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4166 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
4167 0 : return _r;
4168 : }
4169 0 : next_after_fail1066:;
4170 0 : }
4171 : else
4172 : {
4173 : if (0
4174 : && final_int && inter_int && inside_int
4175 : && final_prec >= inside_prec
4176 : && inside_prec > inter_prec
4177 : && inter_unsignedp
4178 : )
4179 : {
4180 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1067;
4181 : {
4182 : tree res_op0;
4183 : {
4184 : tree _o1[2], _r1;
4185 : _o1[0] = captures[1];
4186 : _o1[1] = wide_int_to_tree
4187 : (inside_type,
4188 : wi::mask (inter_prec, false,
4189 : TYPE_PRECISION (inside_type)));
4190 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4191 : res_op0 = _r1;
4192 : }
4193 : tree _r;
4194 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4195 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
4196 : return _r;
4197 : }
4198 : next_after_fail1067:;
4199 : }
4200 : else
4201 : {
4202 : if (0
4203 : && inside_int && inter_float && final_int &&
4204 : (unsigned) significand_size (TYPE_MODE (inter_type))
4205 : >= inside_prec - !inside_unsignedp
4206 : )
4207 : {
4208 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1068;
4209 : {
4210 : tree res_op0;
4211 : res_op0 = captures[1];
4212 : tree _r;
4213 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4214 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
4215 : return _r;
4216 : }
4217 : next_after_fail1068:;
4218 : }
4219 : }
4220 : }
4221 : }
4222 : }
4223 : }
4224 : }
4225 : }
4226 : }
4227 3067 : break;
4228 : }
4229 885405 : case BIT_AND_EXPR:
4230 885405 : {
4231 885405 : tree _q20 = TREE_OPERAND (_p0, 0);
4232 885405 : tree _q21 = TREE_OPERAND (_p0, 1);
4233 885405 : switch (TREE_CODE (_q21))
4234 : {
4235 233923 : case INTEGER_CST:
4236 233923 : {
4237 233923 : {
4238 233923 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4239 233923 : if (INTEGRAL_TYPE_P (type)
4240 233415 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4241 233415 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
4242 386550 : && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]),
4243 152627 : TYPE_PRECISION (type)), 0)
4244 : )
4245 : {
4246 13315 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1069;
4247 13315 : {
4248 13315 : tree res_op0;
4249 13315 : res_op0 = captures[0];
4250 13315 : tree _r;
4251 13315 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4252 13315 : if (TREE_SIDE_EFFECTS (captures[1]))
4253 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4254 13315 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
4255 13315 : return _r;
4256 : }
4257 0 : next_after_fail1069:;
4258 : }
4259 : }
4260 220608 : break;
4261 : }
4262 : default:;
4263 : }
4264 : break;
4265 : }
4266 5 : case VEC_COND_EXPR:
4267 5 : {
4268 5 : tree _q20 = TREE_OPERAND (_p0, 0);
4269 5 : tree _q21 = TREE_OPERAND (_p0, 1);
4270 5 : tree _q22 = TREE_OPERAND (_p0, 2);
4271 5 : {
4272 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4273 5 : if (VECTOR_TYPE_P (type)
4274 0 : && types_match (TREE_TYPE (captures[1]), truth_type_for (type))
4275 5 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4276 0 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
4277 : )
4278 : {
4279 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1070;
4280 0 : {
4281 0 : tree res_op0;
4282 0 : res_op0 = captures[1];
4283 0 : tree res_op1;
4284 0 : {
4285 0 : tree _o1[1], _r1;
4286 0 : _o1[0] = captures[2];
4287 0 : if (TREE_TYPE (_o1[0]) != type)
4288 : {
4289 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4290 0 : if (EXPR_P (_r1))
4291 0 : goto next_after_fail1070;
4292 : }
4293 : else
4294 : _r1 = _o1[0];
4295 0 : res_op1 = _r1;
4296 : }
4297 0 : tree res_op2;
4298 0 : {
4299 0 : tree _o1[1], _r1;
4300 0 : _o1[0] = captures[3];
4301 0 : if (TREE_TYPE (_o1[0]) != type)
4302 : {
4303 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4304 0 : if (EXPR_P (_r1))
4305 0 : goto next_after_fail1070;
4306 : }
4307 : else
4308 : _r1 = _o1[0];
4309 0 : res_op2 = _r1;
4310 : }
4311 0 : tree _r;
4312 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4313 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
4314 0 : return _r;
4315 : }
4316 5 : next_after_fail1070:;
4317 : }
4318 : }
4319 5 : break;
4320 : }
4321 656849 : case COND_EXPR:
4322 656849 : {
4323 656849 : tree _q20 = TREE_OPERAND (_p0, 0);
4324 656849 : tree _q21 = TREE_OPERAND (_p0, 1);
4325 656849 : tree _q22 = TREE_OPERAND (_p0, 2);
4326 656849 : switch (TREE_CODE (_q21))
4327 : {
4328 185370 : case INTEGER_CST:
4329 185370 : {
4330 185370 : switch (TREE_CODE (_q22))
4331 : {
4332 117749 : case INTEGER_CST:
4333 117749 : {
4334 117749 : {
4335 117749 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4336 117749 : if (INTEGRAL_TYPE_P (type)
4337 117749 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4338 : )
4339 : {
4340 117749 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1071;
4341 117749 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1071;
4342 117749 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1071;
4343 117749 : {
4344 117749 : tree res_op0;
4345 117749 : res_op0 = captures[1];
4346 117749 : tree res_op1;
4347 117749 : {
4348 117749 : tree _o1[1], _r1;
4349 117749 : _o1[0] = captures[2];
4350 117749 : if (TREE_TYPE (_o1[0]) != type)
4351 : {
4352 117749 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4353 : }
4354 : else
4355 : _r1 = _o1[0];
4356 117749 : res_op1 = _r1;
4357 : }
4358 117749 : tree res_op2;
4359 117749 : {
4360 117749 : tree _o1[1], _r1;
4361 117749 : _o1[0] = captures[3];
4362 117749 : if (TREE_TYPE (_o1[0]) != type)
4363 : {
4364 117749 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4365 : }
4366 : else
4367 : _r1 = _o1[0];
4368 117749 : res_op2 = _r1;
4369 : }
4370 117749 : tree _r;
4371 117749 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4372 117749 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
4373 117749 : return _r;
4374 : }
4375 0 : next_after_fail1071:;
4376 : }
4377 : }
4378 0 : break;
4379 : }
4380 : default:;
4381 : }
4382 : break;
4383 : }
4384 : default:;
4385 : }
4386 : break;
4387 : }
4388 11951902 : case PLUS_EXPR:
4389 11951902 : {
4390 11951902 : tree _q20 = TREE_OPERAND (_p0, 0);
4391 11951902 : tree _q21 = TREE_OPERAND (_p0, 1);
4392 11951902 : switch (TREE_CODE (_q20))
4393 : {
4394 4611861 : CASE_CONVERT:
4395 4611861 : {
4396 4611861 : tree _q30 = TREE_OPERAND (_q20, 0);
4397 4611861 : switch (TREE_CODE (_q21))
4398 : {
4399 357178 : CASE_CONVERT:
4400 357178 : {
4401 357178 : tree _q50 = TREE_OPERAND (_q21, 0);
4402 357178 : {
4403 357178 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4404 357178 : tree res = generic_simplify_437 (loc, type, _p0, captures, PLUS_EXPR);
4405 357178 : if (res) return res;
4406 : }
4407 357122 : break;
4408 : }
4409 4611805 : default:;
4410 : }
4411 4611805 : {
4412 4611805 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4413 4611805 : tree res = generic_simplify_438 (loc, type, _p0, captures, PLUS_EXPR);
4414 4611805 : if (res) return res;
4415 : }
4416 4599164 : break;
4417 : }
4418 11939205 : default:;
4419 : }
4420 11939205 : switch (TREE_CODE (_q21))
4421 : {
4422 1621496 : CASE_CONVERT:
4423 1621496 : {
4424 1621496 : tree _q40 = TREE_OPERAND (_q21, 0);
4425 1621496 : {
4426 1621496 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4427 1621496 : tree res = generic_simplify_439 (loc, type, _p0, captures, PLUS_EXPR);
4428 1621496 : if (res) return res;
4429 : }
4430 1621496 : break;
4431 : }
4432 11939205 : default:;
4433 : }
4434 11939205 : {
4435 11939205 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4436 11939205 : tree res = generic_simplify_440 (loc, type, _p0, captures, PLUS_EXPR);
4437 11939205 : if (res) return res;
4438 : }
4439 11939171 : break;
4440 : }
4441 911116 : case MINUS_EXPR:
4442 911116 : {
4443 911116 : tree _q20 = TREE_OPERAND (_p0, 0);
4444 911116 : tree _q21 = TREE_OPERAND (_p0, 1);
4445 911116 : switch (TREE_CODE (_q20))
4446 : {
4447 319944 : CASE_CONVERT:
4448 319944 : {
4449 319944 : tree _q30 = TREE_OPERAND (_q20, 0);
4450 319944 : switch (TREE_CODE (_q21))
4451 : {
4452 164365 : CASE_CONVERT:
4453 164365 : {
4454 164365 : tree _q50 = TREE_OPERAND (_q21, 0);
4455 164365 : {
4456 164365 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4457 164365 : tree res = generic_simplify_437 (loc, type, _p0, captures, MINUS_EXPR);
4458 164365 : if (res) return res;
4459 : }
4460 164336 : break;
4461 : }
4462 319915 : default:;
4463 : }
4464 319915 : {
4465 319915 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4466 319915 : tree res = generic_simplify_438 (loc, type, _p0, captures, MINUS_EXPR);
4467 319915 : if (res) return res;
4468 : }
4469 318795 : break;
4470 : }
4471 909967 : default:;
4472 : }
4473 909967 : switch (TREE_CODE (_q21))
4474 : {
4475 223431 : CASE_CONVERT:
4476 223431 : {
4477 223431 : tree _q40 = TREE_OPERAND (_q21, 0);
4478 223431 : {
4479 223431 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4480 223431 : tree res = generic_simplify_439 (loc, type, _p0, captures, MINUS_EXPR);
4481 223431 : if (res) return res;
4482 : }
4483 223421 : break;
4484 : }
4485 909957 : default:;
4486 : }
4487 909957 : {
4488 909957 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4489 909957 : tree res = generic_simplify_440 (loc, type, _p0, captures, MINUS_EXPR);
4490 909957 : if (res) return res;
4491 : }
4492 909925 : break;
4493 : }
4494 9265744 : case MULT_EXPR:
4495 9265744 : {
4496 9265744 : tree _q20 = TREE_OPERAND (_p0, 0);
4497 9265744 : tree _q21 = TREE_OPERAND (_p0, 1);
4498 9265744 : switch (TREE_CODE (_q20))
4499 : {
4500 4159283 : CASE_CONVERT:
4501 4159283 : {
4502 4159283 : tree _q30 = TREE_OPERAND (_q20, 0);
4503 4159283 : switch (TREE_CODE (_q21))
4504 : {
4505 358930 : CASE_CONVERT:
4506 358930 : {
4507 358930 : tree _q50 = TREE_OPERAND (_q21, 0);
4508 358930 : {
4509 358930 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4510 358930 : tree res = generic_simplify_437 (loc, type, _p0, captures, MULT_EXPR);
4511 358930 : if (res) return res;
4512 : }
4513 358930 : break;
4514 : }
4515 4159283 : default:;
4516 : }
4517 4159283 : {
4518 4159283 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4519 4159283 : tree res = generic_simplify_438 (loc, type, _p0, captures, MULT_EXPR);
4520 4159283 : if (res) return res;
4521 : }
4522 4159162 : break;
4523 : }
4524 9265623 : default:;
4525 : }
4526 9265623 : switch (TREE_CODE (_q21))
4527 : {
4528 795538 : CASE_CONVERT:
4529 795538 : {
4530 795538 : tree _q40 = TREE_OPERAND (_q21, 0);
4531 795538 : {
4532 795538 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4533 795538 : tree res = generic_simplify_439 (loc, type, _p0, captures, MULT_EXPR);
4534 795538 : if (res) return res;
4535 : }
4536 795538 : break;
4537 : }
4538 9265623 : default:;
4539 : }
4540 9265623 : {
4541 9265623 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4542 9265623 : tree res = generic_simplify_440 (loc, type, _p0, captures, MULT_EXPR);
4543 9265623 : if (res) return res;
4544 : }
4545 9265590 : break;
4546 : }
4547 3079 : case RDIV_EXPR:
4548 3079 : {
4549 3079 : tree _q20 = TREE_OPERAND (_p0, 0);
4550 3079 : tree _q21 = TREE_OPERAND (_p0, 1);
4551 3079 : switch (TREE_CODE (_q20))
4552 : {
4553 981 : CASE_CONVERT:
4554 981 : {
4555 981 : tree _q30 = TREE_OPERAND (_q20, 0);
4556 981 : switch (TREE_CODE (_q21))
4557 : {
4558 674 : CASE_CONVERT:
4559 674 : {
4560 674 : tree _q50 = TREE_OPERAND (_q21, 0);
4561 674 : {
4562 674 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4563 674 : tree res = generic_simplify_437 (loc, type, _p0, captures, RDIV_EXPR);
4564 674 : if (res) return res;
4565 : }
4566 673 : break;
4567 : }
4568 980 : default:;
4569 : }
4570 980 : {
4571 980 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4572 980 : tree res = generic_simplify_438 (loc, type, _p0, captures, RDIV_EXPR);
4573 980 : if (res) return res;
4574 : }
4575 978 : break;
4576 : }
4577 3076 : default:;
4578 : }
4579 3076 : switch (TREE_CODE (_q21))
4580 : {
4581 1663 : CASE_CONVERT:
4582 1663 : {
4583 1663 : tree _q40 = TREE_OPERAND (_q21, 0);
4584 1663 : {
4585 1663 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4586 1663 : tree res = generic_simplify_439 (loc, type, _p0, captures, RDIV_EXPR);
4587 1663 : if (res) return res;
4588 : }
4589 1018 : break;
4590 : }
4591 2431 : default:;
4592 : }
4593 2431 : {
4594 2431 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4595 2431 : tree res = generic_simplify_440 (loc, type, _p0, captures, RDIV_EXPR);
4596 2431 : if (res) return res;
4597 : }
4598 2389 : break;
4599 : }
4600 692498 : case NEGATE_EXPR:
4601 692498 : {
4602 692498 : tree _q20 = TREE_OPERAND (_p0, 0);
4603 692498 : {
4604 692498 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4605 692498 : tree res = generic_simplify_441 (loc, type, _p0, captures);
4606 692498 : if (res) return res;
4607 : }
4608 692476 : break;
4609 : }
4610 : default:;
4611 : }
4612 : return NULL_TREE;
4613 : }
4614 :
4615 : tree
4616 7190 : generic_simplify_CEIL_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4617 : {
4618 7190 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4619 7190 : if (integer_onep (_p1))
4620 : {
4621 1755 : {
4622 1755 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4623 1755 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4624 1755 : if (res) return res;
4625 : }
4626 : }
4627 5435 : if (integer_zerop (_p0))
4628 : {
4629 0 : {
4630 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4631 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4632 0 : if (res) return res;
4633 : }
4634 : }
4635 5435 : switch (TREE_CODE (_p1))
4636 : {
4637 34 : case SSA_NAME:
4638 34 : {
4639 34 : {
4640 34 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4641 34 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4642 34 : if (res) return res;
4643 : }
4644 34 : break;
4645 : }
4646 5435 : default:;
4647 : }
4648 5435 : if (integer_minus_onep (_p1))
4649 : {
4650 0 : {
4651 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4652 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4653 0 : if (res) return res;
4654 : }
4655 : }
4656 5435 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4657 : {
4658 0 : {
4659 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4660 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4661 0 : if (res) return res;
4662 : }
4663 : }
4664 5435 : switch (TREE_CODE (_p1))
4665 : {
4666 0 : case ABS_EXPR:
4667 0 : {
4668 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4669 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4670 : {
4671 0 : {
4672 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4673 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4674 0 : if (res) return res;
4675 : }
4676 : }
4677 : break;
4678 : }
4679 5435 : default:;
4680 : }
4681 5435 : switch (TREE_CODE (_p0))
4682 : {
4683 0 : case ABS_EXPR:
4684 0 : {
4685 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4686 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4687 : {
4688 0 : {
4689 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4690 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4691 0 : if (res) return res;
4692 : }
4693 : }
4694 : break;
4695 : }
4696 5435 : default:;
4697 : }
4698 5435 : switch (TREE_CODE (_p1))
4699 : {
4700 0 : case NEGATE_EXPR:
4701 0 : {
4702 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4703 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4704 : {
4705 0 : {
4706 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4707 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4708 0 : if (res) return res;
4709 : }
4710 : }
4711 : break;
4712 : }
4713 5435 : default:;
4714 : }
4715 5435 : switch (TREE_CODE (_p0))
4716 : {
4717 0 : case NEGATE_EXPR:
4718 0 : {
4719 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4720 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4721 : {
4722 0 : {
4723 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4724 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4725 0 : if (res) return res;
4726 : }
4727 : }
4728 : break;
4729 : }
4730 536 : CASE_CONVERT:
4731 536 : {
4732 536 : tree _q20 = TREE_OPERAND (_p0, 0);
4733 536 : switch (TREE_CODE (_q20))
4734 : {
4735 0 : case BIT_AND_EXPR:
4736 0 : {
4737 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4738 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4739 0 : switch (TREE_CODE (_q31))
4740 : {
4741 0 : case INTEGER_CST:
4742 0 : {
4743 0 : switch (TREE_CODE (_p1))
4744 : {
4745 0 : case INTEGER_CST:
4746 0 : {
4747 0 : {
4748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4749 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4750 0 : if (res) return res;
4751 : }
4752 0 : break;
4753 : }
4754 : default:;
4755 : }
4756 : break;
4757 : }
4758 : default:;
4759 : }
4760 : break;
4761 : }
4762 : default:;
4763 : }
4764 : break;
4765 : }
4766 0 : case BIT_AND_EXPR:
4767 0 : {
4768 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4769 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4770 0 : switch (TREE_CODE (_q21))
4771 : {
4772 0 : case INTEGER_CST:
4773 0 : {
4774 0 : switch (TREE_CODE (_p1))
4775 : {
4776 0 : case INTEGER_CST:
4777 0 : {
4778 0 : {
4779 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4780 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4781 0 : if (res) return res;
4782 : }
4783 0 : break;
4784 : }
4785 : default:;
4786 : }
4787 : break;
4788 : }
4789 : default:;
4790 : }
4791 : break;
4792 : }
4793 0 : case MULT_EXPR:
4794 0 : {
4795 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4796 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4797 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4798 : {
4799 0 : {
4800 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4801 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4802 0 : if (res) return res;
4803 : }
4804 : }
4805 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4806 : {
4807 0 : {
4808 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4809 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4810 0 : if (res) return res;
4811 : }
4812 : }
4813 0 : switch (TREE_CODE (_q21))
4814 : {
4815 0 : case INTEGER_CST:
4816 0 : {
4817 0 : switch (TREE_CODE (_p1))
4818 : {
4819 0 : case MULT_EXPR:
4820 0 : {
4821 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4822 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4823 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4824 : {
4825 0 : switch (TREE_CODE (_q51))
4826 : {
4827 0 : case INTEGER_CST:
4828 0 : {
4829 0 : {
4830 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4831 0 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4832 0 : if (res) return res;
4833 : }
4834 0 : break;
4835 : }
4836 : default:;
4837 : }
4838 : }
4839 : break;
4840 : }
4841 : default:;
4842 : }
4843 : break;
4844 : }
4845 : default:;
4846 : }
4847 : break;
4848 : }
4849 0 : case VEC_COND_EXPR:
4850 0 : {
4851 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4852 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4853 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4854 0 : switch (TREE_CODE (_p1))
4855 : {
4856 0 : case VEC_COND_EXPR:
4857 0 : {
4858 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4859 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4860 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4861 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4862 : {
4863 0 : {
4864 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4865 0 : if (VECTOR_TYPE_P (type)
4866 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4867 : || types_match (type, TREE_TYPE (captures[2]))
4868 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4869 : || (optimize_vectors_before_lowering_p ()
4870 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4871 : )
4872 : {
4873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
4874 0 : {
4875 0 : tree res_op0;
4876 0 : res_op0 = captures[1];
4877 0 : tree res_op1;
4878 0 : {
4879 0 : tree _o1[2], _r1;
4880 0 : _o1[0] = captures[2];
4881 0 : _o1[1] = captures[5];
4882 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4883 0 : if (EXPR_P (_r1))
4884 0 : goto next_after_fail1590;
4885 0 : res_op1 = _r1;
4886 : }
4887 0 : tree res_op2;
4888 0 : {
4889 0 : tree _o1[2], _r1;
4890 0 : _o1[0] = captures[3];
4891 0 : _o1[1] = captures[6];
4892 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4893 0 : if (EXPR_P (_r1))
4894 0 : goto next_after_fail1590;
4895 0 : res_op2 = _r1;
4896 : }
4897 0 : tree _r;
4898 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4899 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
4900 0 : return _r;
4901 : }
4902 0 : next_after_fail1590:;
4903 : }
4904 : }
4905 : }
4906 : break;
4907 : }
4908 0 : default:;
4909 : }
4910 0 : {
4911 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4912 0 : if (VECTOR_TYPE_P (type)
4913 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4914 : || types_match (type, TREE_TYPE (captures[2]))
4915 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4916 : || (optimize_vectors_before_lowering_p ()
4917 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4918 : )
4919 : {
4920 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1591;
4921 0 : {
4922 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1591;
4923 0 : tree res_op0;
4924 0 : res_op0 = captures[1];
4925 0 : tree res_op1;
4926 0 : {
4927 0 : tree _o1[2], _r1;
4928 0 : _o1[0] = captures[2];
4929 0 : _o1[1] = unshare_expr (captures[4]);
4930 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4931 0 : if (EXPR_P (_r1))
4932 0 : goto next_after_fail1591;
4933 0 : res_op1 = _r1;
4934 : }
4935 0 : tree res_op2;
4936 0 : {
4937 0 : tree _o1[2], _r1;
4938 0 : _o1[0] = captures[3];
4939 0 : _o1[1] = captures[4];
4940 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4941 0 : if (EXPR_P (_r1))
4942 0 : goto next_after_fail1591;
4943 0 : res_op2 = _r1;
4944 : }
4945 0 : tree _r;
4946 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4947 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
4948 0 : return _r;
4949 : }
4950 0 : next_after_fail1591:;
4951 : }
4952 : }
4953 0 : break;
4954 : }
4955 5435 : default:;
4956 : }
4957 5435 : switch (TREE_CODE (_p1))
4958 : {
4959 0 : case VEC_COND_EXPR:
4960 0 : {
4961 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4962 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4963 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4964 0 : {
4965 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4966 0 : if (VECTOR_TYPE_P (type)
4967 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4968 : || types_match (type, TREE_TYPE (captures[3]))
4969 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4970 : || (optimize_vectors_before_lowering_p ()
4971 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4972 : )
4973 : {
4974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1592;
4975 0 : {
4976 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1592;
4977 0 : tree res_op0;
4978 0 : res_op0 = captures[2];
4979 0 : tree res_op1;
4980 0 : {
4981 0 : tree _o1[2], _r1;
4982 0 : _o1[0] = unshare_expr (captures[0]);
4983 0 : _o1[1] = captures[3];
4984 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4985 0 : if (EXPR_P (_r1))
4986 0 : goto next_after_fail1592;
4987 0 : res_op1 = _r1;
4988 : }
4989 0 : tree res_op2;
4990 0 : {
4991 0 : tree _o1[2], _r1;
4992 0 : _o1[0] = captures[0];
4993 0 : _o1[1] = captures[4];
4994 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4995 0 : if (EXPR_P (_r1))
4996 0 : goto next_after_fail1592;
4997 0 : res_op2 = _r1;
4998 : }
4999 0 : tree _r;
5000 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
5002 0 : return _r;
5003 : }
5004 0 : next_after_fail1592:;
5005 : }
5006 : }
5007 0 : break;
5008 : }
5009 : default:;
5010 : }
5011 : return NULL_TREE;
5012 : }
5013 :
5014 : tree
5015 3578008 : generic_simplify_EXACT_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5016 : {
5017 3578008 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5018 3578008 : if (integer_onep (_p1))
5019 : {
5020 2151985 : {
5021 2151985 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5022 2151985 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5023 2151985 : if (res) return res;
5024 : }
5025 : }
5026 1426023 : switch (TREE_CODE (_p0))
5027 : {
5028 9076 : CASE_CONVERT:
5029 9076 : {
5030 9076 : tree _q20 = TREE_OPERAND (_p0, 0);
5031 9076 : switch (TREE_CODE (_p1))
5032 : {
5033 0 : CASE_CONVERT:
5034 0 : {
5035 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5036 0 : switch (TREE_CODE (_q40))
5037 : {
5038 0 : case LSHIFT_EXPR:
5039 0 : {
5040 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5041 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5042 0 : if (integer_onep (_q50))
5043 : {
5044 0 : {
5045 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
5046 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5047 0 : if (res) return res;
5048 : }
5049 : }
5050 : break;
5051 : }
5052 : default:;
5053 : }
5054 : break;
5055 : }
5056 0 : case LSHIFT_EXPR:
5057 0 : {
5058 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5059 0 : tree _q41 = TREE_OPERAND (_p1, 1);
5060 0 : if (integer_onep (_q40))
5061 : {
5062 0 : {
5063 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
5064 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5065 0 : if (res) return res;
5066 : }
5067 : }
5068 : break;
5069 : }
5070 : default:;
5071 : }
5072 : break;
5073 : }
5074 1426023 : default:;
5075 : }
5076 1426023 : switch (TREE_CODE (_p1))
5077 : {
5078 2 : CASE_CONVERT:
5079 2 : {
5080 2 : tree _q30 = TREE_OPERAND (_p1, 0);
5081 2 : switch (TREE_CODE (_q30))
5082 : {
5083 0 : case LSHIFT_EXPR:
5084 0 : {
5085 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5086 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5087 0 : if (integer_onep (_q40))
5088 : {
5089 0 : {
5090 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
5091 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5092 0 : if (res) return res;
5093 : }
5094 : }
5095 : break;
5096 : }
5097 : default:;
5098 : }
5099 : break;
5100 : }
5101 0 : case LSHIFT_EXPR:
5102 0 : {
5103 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5104 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5105 0 : if (integer_onep (_q30))
5106 : {
5107 0 : {
5108 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
5109 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5110 0 : if (res) return res;
5111 : }
5112 : }
5113 : break;
5114 : }
5115 1426023 : default:;
5116 : }
5117 1426023 : if (integer_zerop (_p0))
5118 : {
5119 0 : {
5120 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5121 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5122 0 : if (res) return res;
5123 : }
5124 : }
5125 1426023 : switch (TREE_CODE (_p1))
5126 : {
5127 0 : case SSA_NAME:
5128 0 : {
5129 0 : {
5130 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5131 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5132 0 : if (res) return res;
5133 : }
5134 0 : break;
5135 : }
5136 1426023 : default:;
5137 : }
5138 1426023 : if (integer_minus_onep (_p1))
5139 : {
5140 0 : {
5141 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5142 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5143 0 : if (res) return res;
5144 : }
5145 : }
5146 1426023 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5147 : {
5148 0 : {
5149 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5150 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5151 0 : if (res) return res;
5152 : }
5153 : }
5154 1426023 : switch (TREE_CODE (_p1))
5155 : {
5156 0 : case ABS_EXPR:
5157 0 : {
5158 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5159 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5160 : {
5161 0 : {
5162 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5163 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5164 0 : if (res) return res;
5165 : }
5166 : }
5167 : break;
5168 : }
5169 1426023 : default:;
5170 : }
5171 1426023 : switch (TREE_CODE (_p0))
5172 : {
5173 0 : case ABS_EXPR:
5174 0 : {
5175 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5176 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5177 : {
5178 0 : {
5179 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5180 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5181 0 : if (res) return res;
5182 : }
5183 : }
5184 : break;
5185 : }
5186 1426023 : default:;
5187 : }
5188 1426023 : switch (TREE_CODE (_p1))
5189 : {
5190 0 : case NEGATE_EXPR:
5191 0 : {
5192 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5193 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5194 : {
5195 0 : {
5196 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5197 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5198 0 : if (res) return res;
5199 : }
5200 : }
5201 : break;
5202 : }
5203 1426023 : default:;
5204 : }
5205 1426023 : switch (TREE_CODE (_p0))
5206 : {
5207 1231 : case NEGATE_EXPR:
5208 1231 : {
5209 1231 : tree _q20 = TREE_OPERAND (_p0, 0);
5210 1231 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5211 : {
5212 0 : {
5213 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5214 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5215 0 : if (res) return res;
5216 : }
5217 : }
5218 : break;
5219 : }
5220 0 : case EXACT_DIV_EXPR:
5221 0 : {
5222 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5223 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5224 0 : switch (TREE_CODE (_q21))
5225 : {
5226 0 : case INTEGER_CST:
5227 0 : {
5228 0 : switch (TREE_CODE (_p1))
5229 : {
5230 0 : case INTEGER_CST:
5231 0 : {
5232 0 : {
5233 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5234 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5235 0 : if (res) return res;
5236 : }
5237 0 : break;
5238 : }
5239 : default:;
5240 : }
5241 : break;
5242 : }
5243 : default:;
5244 : }
5245 : break;
5246 : }
5247 9076 : CASE_CONVERT:
5248 9076 : {
5249 9076 : tree _q20 = TREE_OPERAND (_p0, 0);
5250 9076 : switch (TREE_CODE (_q20))
5251 : {
5252 0 : case BIT_AND_EXPR:
5253 0 : {
5254 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5255 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5256 0 : switch (TREE_CODE (_q31))
5257 : {
5258 0 : case INTEGER_CST:
5259 0 : {
5260 0 : switch (TREE_CODE (_p1))
5261 : {
5262 0 : case INTEGER_CST:
5263 0 : {
5264 0 : {
5265 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5266 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5267 0 : if (res) return res;
5268 : }
5269 0 : break;
5270 : }
5271 : default:;
5272 : }
5273 : break;
5274 : }
5275 : default:;
5276 : }
5277 : break;
5278 : }
5279 : default:;
5280 : }
5281 : break;
5282 : }
5283 0 : case BIT_AND_EXPR:
5284 0 : {
5285 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5286 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5287 0 : switch (TREE_CODE (_q21))
5288 : {
5289 0 : case INTEGER_CST:
5290 0 : {
5291 0 : switch (TREE_CODE (_p1))
5292 : {
5293 0 : case INTEGER_CST:
5294 0 : {
5295 0 : {
5296 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5297 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5298 0 : if (res) return res;
5299 : }
5300 0 : break;
5301 : }
5302 : default:;
5303 : }
5304 : break;
5305 : }
5306 : default:;
5307 : }
5308 : break;
5309 : }
5310 19409 : case MULT_EXPR:
5311 19409 : {
5312 19409 : tree _q20 = TREE_OPERAND (_p0, 0);
5313 19409 : tree _q21 = TREE_OPERAND (_p0, 1);
5314 19409 : if (integer_pow2p (_q21))
5315 : {
5316 18182 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5317 : {
5318 18154 : {
5319 18154 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5320 18154 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5321 18154 : if (res) return res;
5322 : }
5323 : }
5324 : }
5325 1262 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5326 : {
5327 7 : {
5328 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5329 7 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5330 7 : if (res) return res;
5331 : }
5332 : }
5333 1255 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5334 : {
5335 0 : {
5336 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5337 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5338 0 : if (res) return res;
5339 : }
5340 : }
5341 1255 : switch (TREE_CODE (_q21))
5342 : {
5343 1255 : case INTEGER_CST:
5344 1255 : {
5345 1255 : switch (TREE_CODE (_p1))
5346 : {
5347 0 : case MULT_EXPR:
5348 0 : {
5349 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5350 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5351 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5352 : {
5353 0 : switch (TREE_CODE (_q51))
5354 : {
5355 0 : case INTEGER_CST:
5356 0 : {
5357 0 : {
5358 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5359 0 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5360 0 : if (res) return res;
5361 : }
5362 0 : break;
5363 : }
5364 : default:;
5365 : }
5366 : }
5367 : break;
5368 : }
5369 : default:;
5370 : }
5371 : break;
5372 : }
5373 : default:;
5374 : }
5375 : break;
5376 : }
5377 0 : case VEC_COND_EXPR:
5378 0 : {
5379 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5380 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5381 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5382 0 : switch (TREE_CODE (_p1))
5383 : {
5384 0 : case VEC_COND_EXPR:
5385 0 : {
5386 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5387 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5388 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5389 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5390 : {
5391 0 : {
5392 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5393 0 : if (VECTOR_TYPE_P (type)
5394 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5395 : || types_match (type, TREE_TYPE (captures[2]))
5396 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5397 : || (optimize_vectors_before_lowering_p ()
5398 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5399 : )
5400 : {
5401 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
5402 0 : {
5403 0 : tree res_op0;
5404 0 : res_op0 = captures[1];
5405 0 : tree res_op1;
5406 0 : {
5407 0 : tree _o1[2], _r1;
5408 0 : _o1[0] = captures[2];
5409 0 : _o1[1] = captures[5];
5410 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5411 0 : if (EXPR_P (_r1))
5412 0 : goto next_after_fail1599;
5413 0 : res_op1 = _r1;
5414 : }
5415 0 : tree res_op2;
5416 0 : {
5417 0 : tree _o1[2], _r1;
5418 0 : _o1[0] = captures[3];
5419 0 : _o1[1] = captures[6];
5420 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5421 0 : if (EXPR_P (_r1))
5422 0 : goto next_after_fail1599;
5423 0 : res_op2 = _r1;
5424 : }
5425 0 : tree _r;
5426 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5427 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
5428 0 : return _r;
5429 : }
5430 0 : next_after_fail1599:;
5431 : }
5432 : }
5433 : }
5434 : break;
5435 : }
5436 0 : default:;
5437 : }
5438 0 : {
5439 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5440 0 : if (VECTOR_TYPE_P (type)
5441 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5442 : || types_match (type, TREE_TYPE (captures[2]))
5443 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5444 : || (optimize_vectors_before_lowering_p ()
5445 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5446 : )
5447 : {
5448 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1600;
5449 0 : {
5450 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1600;
5451 0 : tree res_op0;
5452 0 : res_op0 = captures[1];
5453 0 : tree res_op1;
5454 0 : {
5455 0 : tree _o1[2], _r1;
5456 0 : _o1[0] = captures[2];
5457 0 : _o1[1] = unshare_expr (captures[4]);
5458 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5459 0 : if (EXPR_P (_r1))
5460 0 : goto next_after_fail1600;
5461 0 : res_op1 = _r1;
5462 : }
5463 0 : tree res_op2;
5464 0 : {
5465 0 : tree _o1[2], _r1;
5466 0 : _o1[0] = captures[3];
5467 0 : _o1[1] = captures[4];
5468 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5469 0 : if (EXPR_P (_r1))
5470 0 : goto next_after_fail1600;
5471 0 : res_op2 = _r1;
5472 : }
5473 0 : tree _r;
5474 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5475 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
5476 0 : return _r;
5477 : }
5478 0 : next_after_fail1600:;
5479 : }
5480 : }
5481 0 : break;
5482 : }
5483 1407869 : default:;
5484 : }
5485 1407869 : switch (TREE_CODE (_p1))
5486 : {
5487 0 : case VEC_COND_EXPR:
5488 0 : {
5489 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5490 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5491 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5492 0 : {
5493 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5494 0 : if (VECTOR_TYPE_P (type)
5495 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5496 : || types_match (type, TREE_TYPE (captures[3]))
5497 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5498 : || (optimize_vectors_before_lowering_p ()
5499 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5500 : )
5501 : {
5502 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
5503 0 : {
5504 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1601;
5505 0 : tree res_op0;
5506 0 : res_op0 = captures[2];
5507 0 : tree res_op1;
5508 0 : {
5509 0 : tree _o1[2], _r1;
5510 0 : _o1[0] = unshare_expr (captures[0]);
5511 0 : _o1[1] = captures[3];
5512 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5513 0 : if (EXPR_P (_r1))
5514 0 : goto next_after_fail1601;
5515 0 : res_op1 = _r1;
5516 : }
5517 0 : tree res_op2;
5518 0 : {
5519 0 : tree _o1[2], _r1;
5520 0 : _o1[0] = captures[0];
5521 0 : _o1[1] = captures[4];
5522 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5523 0 : if (EXPR_P (_r1))
5524 0 : goto next_after_fail1601;
5525 0 : res_op2 = _r1;
5526 : }
5527 0 : tree _r;
5528 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5529 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
5530 0 : return _r;
5531 : }
5532 0 : next_after_fail1601:;
5533 : }
5534 : }
5535 0 : break;
5536 : }
5537 : default:;
5538 : }
5539 : return NULL_TREE;
5540 : }
5541 :
5542 : tree
5543 9388971 : generic_simplify_LE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5544 : {
5545 9388971 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5546 9388971 : switch (TREE_CODE (_p0))
5547 : {
5548 2318 : case RDIV_EXPR:
5549 2318 : {
5550 2318 : tree _q20 = TREE_OPERAND (_p0, 0);
5551 2318 : tree _q21 = TREE_OPERAND (_p0, 1);
5552 2318 : switch (TREE_CODE (_q20))
5553 : {
5554 548 : case REAL_CST:
5555 548 : {
5556 548 : if (real_zerop (_p1))
5557 : {
5558 2 : {
5559 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5560 2 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
5561 2 : if (res) return res;
5562 : }
5563 : }
5564 : break;
5565 : }
5566 : default:;
5567 : }
5568 : break;
5569 : }
5570 9388969 : default:;
5571 : }
5572 9388969 : switch (TREE_CODE (_p1))
5573 : {
5574 7 : case TRUNC_MOD_EXPR:
5575 7 : {
5576 7 : tree _q30 = TREE_OPERAND (_p1, 0);
5577 7 : tree _q31 = TREE_OPERAND (_p1, 1);
5578 7 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5579 : {
5580 0 : {
5581 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5582 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR);
5583 0 : if (res) return res;
5584 : }
5585 : }
5586 : break;
5587 : }
5588 9388969 : default:;
5589 : }
5590 9388969 : switch (TREE_CODE (_p0))
5591 : {
5592 62770 : case MULT_EXPR:
5593 62770 : {
5594 62770 : tree _q20 = TREE_OPERAND (_p0, 0);
5595 62770 : tree _q21 = TREE_OPERAND (_p0, 1);
5596 62770 : switch (TREE_CODE (_p1))
5597 : {
5598 2714 : case MULT_EXPR:
5599 2714 : {
5600 2714 : tree _q50 = TREE_OPERAND (_p1, 0);
5601 2714 : tree _q51 = TREE_OPERAND (_p1, 1);
5602 2714 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5603 : {
5604 1901 : {
5605 1901 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5606 1901 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5607 1901 : if (res) return res;
5608 : }
5609 : }
5610 1719 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5611 : {
5612 1 : {
5613 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5614 1 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5615 1 : if (res) return res;
5616 : }
5617 : }
5618 1719 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5619 : {
5620 4 : {
5621 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5622 4 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5623 4 : if (res) return res;
5624 : }
5625 : }
5626 1719 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5627 : {
5628 307 : {
5629 307 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5630 307 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5631 307 : if (res) return res;
5632 : }
5633 : }
5634 : break;
5635 : }
5636 : default:;
5637 : }
5638 : break;
5639 : }
5640 1636198 : case PLUS_EXPR:
5641 1636198 : {
5642 1636198 : tree _q20 = TREE_OPERAND (_p0, 0);
5643 1636198 : tree _q21 = TREE_OPERAND (_p0, 1);
5644 1636198 : if (integer_minus_onep (_q21))
5645 : {
5646 532047 : switch (TREE_CODE (_p1))
5647 : {
5648 332807 : case INTEGER_CST:
5649 332807 : {
5650 332807 : {
5651 332807 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5652 332807 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
5653 332807 : if (res) return res;
5654 : }
5655 332805 : break;
5656 : }
5657 : default:;
5658 : }
5659 : }
5660 1636196 : switch (TREE_CODE (_p1))
5661 : {
5662 91345 : case PLUS_EXPR:
5663 91345 : {
5664 91345 : tree _q50 = TREE_OPERAND (_p1, 0);
5665 91345 : tree _q51 = TREE_OPERAND (_p1, 1);
5666 91345 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5667 : {
5668 7426 : {
5669 7426 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5670 7426 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, LE_EXPR);
5671 7426 : if (res) return res;
5672 : }
5673 : }
5674 87141 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5675 : {
5676 13 : {
5677 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5678 13 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, LE_EXPR);
5679 13 : if (res) return res;
5680 : }
5681 : }
5682 87141 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5683 : {
5684 207 : {
5685 207 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5686 207 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, LE_EXPR);
5687 207 : if (res) return res;
5688 : }
5689 : }
5690 87141 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5691 : {
5692 7748 : {
5693 7748 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5694 7748 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, LE_EXPR);
5695 7748 : if (res) return res;
5696 : }
5697 : }
5698 : break;
5699 : }
5700 1631393 : default:;
5701 : }
5702 1631393 : switch (TREE_CODE (_q21))
5703 : {
5704 1504271 : case INTEGER_CST:
5705 1504271 : {
5706 1504271 : switch (TREE_CODE (_p1))
5707 : {
5708 84485 : case PLUS_EXPR:
5709 84485 : {
5710 84485 : tree _q50 = TREE_OPERAND (_p1, 0);
5711 84485 : tree _q51 = TREE_OPERAND (_p1, 1);
5712 84485 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5713 : {
5714 3164 : {
5715 3164 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5716 3164 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5717 3164 : if (res) return res;
5718 : }
5719 : }
5720 : break;
5721 : }
5722 : default:;
5723 : }
5724 : break;
5725 : }
5726 1631393 : default:;
5727 : }
5728 1631393 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5729 : {
5730 69511 : {
5731 69511 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5732 69511 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5733 69511 : if (res) return res;
5734 : }
5735 : }
5736 1592718 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5737 : {
5738 3128 : {
5739 3128 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5740 3128 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5741 3128 : if (res) return res;
5742 : }
5743 : }
5744 : break;
5745 : }
5746 1675584 : CASE_CONVERT:
5747 1675584 : {
5748 1675584 : tree _q20 = TREE_OPERAND (_p0, 0);
5749 1675584 : switch (TREE_CODE (_q20))
5750 : {
5751 0 : case EXACT_DIV_EXPR:
5752 0 : {
5753 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5754 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5755 0 : switch (TREE_CODE (_q31))
5756 : {
5757 0 : case INTEGER_CST:
5758 0 : {
5759 0 : switch (TREE_CODE (_p1))
5760 : {
5761 0 : CASE_CONVERT:
5762 0 : {
5763 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5764 0 : switch (TREE_CODE (_q60))
5765 : {
5766 0 : case EXACT_DIV_EXPR:
5767 0 : {
5768 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5769 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5770 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5771 : {
5772 0 : {
5773 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5774 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, LE_EXPR);
5775 0 : if (res) return res;
5776 : }
5777 : }
5778 : break;
5779 : }
5780 : default:;
5781 : }
5782 : break;
5783 : }
5784 : default:;
5785 : }
5786 : break;
5787 : }
5788 : default:;
5789 : }
5790 : break;
5791 : }
5792 : default:;
5793 : }
5794 : break;
5795 : }
5796 433 : case EXACT_DIV_EXPR:
5797 433 : {
5798 433 : tree _q20 = TREE_OPERAND (_p0, 0);
5799 433 : tree _q21 = TREE_OPERAND (_p0, 1);
5800 433 : switch (TREE_CODE (_q21))
5801 : {
5802 433 : case INTEGER_CST:
5803 433 : {
5804 433 : switch (TREE_CODE (_p1))
5805 : {
5806 0 : case EXACT_DIV_EXPR:
5807 0 : {
5808 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5809 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5810 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5811 : {
5812 0 : {
5813 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5814 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, LE_EXPR);
5815 0 : if (res) return res;
5816 : }
5817 : }
5818 : break;
5819 : }
5820 : default:;
5821 : }
5822 : break;
5823 : }
5824 : default:;
5825 : }
5826 : break;
5827 : }
5828 10905 : case TRUNC_DIV_EXPR:
5829 10905 : {
5830 10905 : tree _q20 = TREE_OPERAND (_p0, 0);
5831 10905 : tree _q21 = TREE_OPERAND (_p0, 1);
5832 10905 : switch (TREE_CODE (_q21))
5833 : {
5834 2772 : case INTEGER_CST:
5835 2772 : {
5836 2772 : switch (TREE_CODE (_p1))
5837 : {
5838 1345 : case INTEGER_CST:
5839 1345 : {
5840 1345 : {
5841 1345 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5842 1345 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, LE_EXPR);
5843 1345 : if (res) return res;
5844 : }
5845 679 : break;
5846 : }
5847 : default:;
5848 : }
5849 : break;
5850 : }
5851 : default:;
5852 : }
5853 : break;
5854 : }
5855 65957 : case MINUS_EXPR:
5856 65957 : {
5857 65957 : tree _q20 = TREE_OPERAND (_p0, 0);
5858 65957 : tree _q21 = TREE_OPERAND (_p0, 1);
5859 65957 : switch (TREE_CODE (_p1))
5860 : {
5861 493 : case MINUS_EXPR:
5862 493 : {
5863 493 : tree _q50 = TREE_OPERAND (_p1, 0);
5864 493 : tree _q51 = TREE_OPERAND (_p1, 1);
5865 493 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5866 : {
5867 54 : {
5868 54 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5869 54 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, LE_EXPR);
5870 54 : if (res) return res;
5871 : }
5872 : }
5873 493 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5874 : {
5875 26 : {
5876 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5877 26 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR);
5878 26 : if (res) return res;
5879 : }
5880 : }
5881 : break;
5882 : }
5883 : default:;
5884 : }
5885 : break;
5886 : }
5887 5421 : case POINTER_DIFF_EXPR:
5888 5421 : {
5889 5421 : tree _q20 = TREE_OPERAND (_p0, 0);
5890 5421 : tree _q21 = TREE_OPERAND (_p0, 1);
5891 5421 : switch (TREE_CODE (_p1))
5892 : {
5893 259 : case POINTER_DIFF_EXPR:
5894 259 : {
5895 259 : tree _q50 = TREE_OPERAND (_p1, 0);
5896 259 : tree _q51 = TREE_OPERAND (_p1, 1);
5897 259 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5898 : {
5899 0 : {
5900 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5901 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, LE_EXPR);
5902 0 : if (res) return res;
5903 : }
5904 : }
5905 259 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5906 : {
5907 0 : {
5908 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5909 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, LE_EXPR);
5910 0 : if (res) return res;
5911 : }
5912 : }
5913 : break;
5914 : }
5915 : default:;
5916 : }
5917 : break;
5918 : }
5919 9343519 : default:;
5920 : }
5921 9343519 : switch (TREE_CODE (_p1))
5922 : {
5923 123332 : case PLUS_EXPR:
5924 123332 : {
5925 123332 : tree _q30 = TREE_OPERAND (_p1, 0);
5926 123332 : tree _q31 = TREE_OPERAND (_p1, 1);
5927 123332 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5928 : {
5929 0 : {
5930 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5931 0 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, GE_EXPR);
5932 0 : if (res) return res;
5933 : }
5934 : }
5935 123332 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5936 : {
5937 57 : {
5938 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
5939 57 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, GE_EXPR);
5940 57 : if (res) return res;
5941 : }
5942 : }
5943 : break;
5944 : }
5945 1199 : case MINUS_EXPR:
5946 1199 : {
5947 1199 : tree _q30 = TREE_OPERAND (_p1, 0);
5948 1199 : tree _q31 = TREE_OPERAND (_p1, 1);
5949 1199 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5950 : {
5951 0 : {
5952 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5953 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR);
5954 0 : if (res) return res;
5955 : }
5956 : }
5957 : break;
5958 : }
5959 9343492 : default:;
5960 : }
5961 9343492 : switch (TREE_CODE (_p0))
5962 : {
5963 65957 : case MINUS_EXPR:
5964 65957 : {
5965 65957 : tree _q20 = TREE_OPERAND (_p0, 0);
5966 65957 : tree _q21 = TREE_OPERAND (_p0, 1);
5967 65957 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5968 : {
5969 2509 : {
5970 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5971 2509 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, GE_EXPR);
5972 2509 : if (res) return res;
5973 : }
5974 : }
5975 : break;
5976 : }
5977 5418 : case BIT_AND_EXPR:
5978 5418 : {
5979 5418 : tree _q20 = TREE_OPERAND (_p0, 0);
5980 5418 : tree _q21 = TREE_OPERAND (_p0, 1);
5981 5418 : if (tree_expr_nonnegative_p (_q20))
5982 : {
5983 4509 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5984 : {
5985 0 : {
5986 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5987 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5988 0 : if (res) return res;
5989 : }
5990 : }
5991 : }
5992 5418 : if (tree_expr_nonnegative_p (_q21))
5993 : {
5994 5025 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5995 : {
5996 0 : {
5997 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5998 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5999 0 : if (res) return res;
6000 : }
6001 : }
6002 : }
6003 : break;
6004 : }
6005 9343492 : default:;
6006 : }
6007 9343492 : switch (TREE_CODE (_p1))
6008 : {
6009 46 : case BIT_IOR_EXPR:
6010 46 : {
6011 46 : tree _q30 = TREE_OPERAND (_p1, 0);
6012 46 : tree _q31 = TREE_OPERAND (_p1, 1);
6013 46 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6014 : {
6015 0 : if (tree_expr_nonnegative_p (_q30))
6016 : {
6017 0 : {
6018 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6019 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
6020 0 : if (res) return res;
6021 : }
6022 : }
6023 : }
6024 46 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6025 : {
6026 0 : if (tree_expr_nonnegative_p (_q31))
6027 : {
6028 0 : {
6029 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6030 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
6031 0 : if (res) return res;
6032 : }
6033 : }
6034 : }
6035 : break;
6036 : }
6037 9343492 : default:;
6038 : }
6039 9343492 : switch (TREE_CODE (_p0))
6040 : {
6041 10373 : case MIN_EXPR:
6042 10373 : {
6043 10373 : tree _q20 = TREE_OPERAND (_p0, 0);
6044 10373 : tree _q21 = TREE_OPERAND (_p0, 1);
6045 10373 : switch (TREE_CODE (_p1))
6046 : {
6047 8 : case MAX_EXPR:
6048 8 : {
6049 8 : tree _q50 = TREE_OPERAND (_p1, 0);
6050 8 : tree _q51 = TREE_OPERAND (_p1, 1);
6051 8 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6052 : {
6053 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6054 : {
6055 0 : {
6056 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6057 0 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, LE_EXPR);
6058 0 : if (res) return res;
6059 : }
6060 : }
6061 : }
6062 : break;
6063 : }
6064 : default:;
6065 : }
6066 : break;
6067 : }
6068 4394 : case MAX_EXPR:
6069 4394 : {
6070 4394 : tree _q20 = TREE_OPERAND (_p0, 0);
6071 4394 : tree _q21 = TREE_OPERAND (_p0, 1);
6072 4394 : switch (TREE_CODE (_p1))
6073 : {
6074 4 : case MIN_EXPR:
6075 4 : {
6076 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6077 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6078 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6079 : {
6080 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6081 : {
6082 0 : {
6083 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6084 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
6085 0 : if (res) return res;
6086 : }
6087 : }
6088 : }
6089 : break;
6090 : }
6091 4394 : default:;
6092 : }
6093 4394 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6094 : {
6095 0 : {
6096 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6097 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6098 0 : if (res) return res;
6099 : }
6100 : }
6101 4394 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6102 : {
6103 1 : {
6104 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6105 1 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6106 1 : if (res) return res;
6107 : }
6108 : }
6109 : break;
6110 : }
6111 9343491 : default:;
6112 : }
6113 9343491 : switch (TREE_CODE (_p1))
6114 : {
6115 307 : case MIN_EXPR:
6116 307 : {
6117 307 : tree _q30 = TREE_OPERAND (_p1, 0);
6118 307 : tree _q31 = TREE_OPERAND (_p1, 1);
6119 307 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6120 : {
6121 0 : {
6122 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6123 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6124 0 : if (res) return res;
6125 : }
6126 : }
6127 307 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6128 : {
6129 0 : {
6130 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6131 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6132 0 : if (res) return res;
6133 : }
6134 : }
6135 : break;
6136 : }
6137 18 : case MAX_EXPR:
6138 18 : {
6139 18 : tree _q30 = TREE_OPERAND (_p1, 0);
6140 18 : tree _q31 = TREE_OPERAND (_p1, 1);
6141 18 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6142 : {
6143 0 : {
6144 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6145 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6146 0 : if (res) return res;
6147 : }
6148 : }
6149 18 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6150 : {
6151 0 : {
6152 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6153 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6154 0 : if (res) return res;
6155 : }
6156 : }
6157 : break;
6158 : }
6159 9343491 : default:;
6160 : }
6161 9343491 : switch (TREE_CODE (_p0))
6162 : {
6163 10373 : case MIN_EXPR:
6164 10373 : {
6165 10373 : tree _q20 = TREE_OPERAND (_p0, 0);
6166 10373 : tree _q21 = TREE_OPERAND (_p0, 1);
6167 10373 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6168 : {
6169 0 : {
6170 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6171 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6172 0 : if (res) return res;
6173 : }
6174 : }
6175 10373 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6176 : {
6177 0 : {
6178 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6179 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6180 0 : if (res) return res;
6181 : }
6182 : }
6183 10373 : switch (TREE_CODE (_q21))
6184 : {
6185 939 : case INTEGER_CST:
6186 939 : {
6187 939 : switch (TREE_CODE (_p1))
6188 : {
6189 0 : case INTEGER_CST:
6190 0 : {
6191 0 : {
6192 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6193 0 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, MIN_EXPR, LE_EXPR, BIT_IOR_EXPR);
6194 0 : if (res) return res;
6195 : }
6196 0 : break;
6197 : }
6198 : default:;
6199 : }
6200 : break;
6201 : }
6202 : default:;
6203 : }
6204 : break;
6205 : }
6206 4393 : case MAX_EXPR:
6207 4393 : {
6208 4393 : tree _q20 = TREE_OPERAND (_p0, 0);
6209 4393 : tree _q21 = TREE_OPERAND (_p0, 1);
6210 4393 : switch (TREE_CODE (_q21))
6211 : {
6212 4153 : case INTEGER_CST:
6213 4153 : {
6214 4153 : switch (TREE_CODE (_p1))
6215 : {
6216 0 : case INTEGER_CST:
6217 0 : {
6218 0 : {
6219 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6220 0 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, BIT_AND_EXPR);
6221 0 : if (res) return res;
6222 : }
6223 0 : break;
6224 : }
6225 : default:;
6226 : }
6227 : break;
6228 : }
6229 : default:;
6230 : }
6231 : break;
6232 : }
6233 9 : case VEC_COND_EXPR:
6234 9 : {
6235 9 : tree _q20 = TREE_OPERAND (_p0, 0);
6236 9 : tree _q21 = TREE_OPERAND (_p0, 1);
6237 9 : tree _q22 = TREE_OPERAND (_p0, 2);
6238 9 : switch (TREE_CODE (_p1))
6239 : {
6240 2 : case VEC_COND_EXPR:
6241 2 : {
6242 2 : tree _q60 = TREE_OPERAND (_p1, 0);
6243 2 : tree _q61 = TREE_OPERAND (_p1, 1);
6244 2 : tree _q62 = TREE_OPERAND (_p1, 2);
6245 2 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6246 : {
6247 0 : {
6248 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
6249 0 : if (VECTOR_TYPE_P (type)
6250 0 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6251 0 : || types_match (type, TREE_TYPE (captures[2]))
6252 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6253 : || (optimize_vectors_before_lowering_p ()
6254 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6255 : )
6256 : {
6257 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1647;
6258 0 : {
6259 0 : tree res_op0;
6260 0 : res_op0 = captures[1];
6261 0 : tree res_op1;
6262 0 : {
6263 0 : tree _o1[2], _r1;
6264 0 : _o1[0] = captures[2];
6265 0 : _o1[1] = captures[5];
6266 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6267 0 : if (EXPR_P (_r1))
6268 0 : goto next_after_fail1647;
6269 0 : res_op1 = _r1;
6270 : }
6271 0 : tree res_op2;
6272 0 : {
6273 0 : tree _o1[2], _r1;
6274 0 : _o1[0] = captures[3];
6275 0 : _o1[1] = captures[6];
6276 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6277 0 : if (EXPR_P (_r1))
6278 0 : goto next_after_fail1647;
6279 0 : res_op2 = _r1;
6280 : }
6281 0 : tree _r;
6282 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6283 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
6284 0 : return _r;
6285 : }
6286 0 : next_after_fail1647:;
6287 : }
6288 : }
6289 : }
6290 : break;
6291 : }
6292 9 : default:;
6293 : }
6294 9 : {
6295 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
6296 9 : if (VECTOR_TYPE_P (type)
6297 9 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6298 9 : || types_match (type, TREE_TYPE (captures[2]))
6299 9 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6300 : || (optimize_vectors_before_lowering_p ()
6301 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6302 : )
6303 : {
6304 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1648;
6305 9 : {
6306 9 : if (! tree_invariant_p (captures[4])) goto next_after_fail1648;
6307 7 : tree res_op0;
6308 7 : res_op0 = captures[1];
6309 7 : tree res_op1;
6310 7 : {
6311 7 : tree _o1[2], _r1;
6312 7 : _o1[0] = captures[2];
6313 7 : _o1[1] = unshare_expr (captures[4]);
6314 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6315 7 : if (EXPR_P (_r1))
6316 0 : goto next_after_fail1648;
6317 7 : res_op1 = _r1;
6318 : }
6319 7 : tree res_op2;
6320 7 : {
6321 7 : tree _o1[2], _r1;
6322 7 : _o1[0] = captures[3];
6323 7 : _o1[1] = captures[4];
6324 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6325 7 : if (EXPR_P (_r1))
6326 0 : goto next_after_fail1648;
6327 7 : res_op2 = _r1;
6328 : }
6329 7 : tree _r;
6330 7 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6331 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
6332 7 : return _r;
6333 : }
6334 2 : next_after_fail1648:;
6335 : }
6336 : }
6337 2 : break;
6338 : }
6339 9343484 : default:;
6340 : }
6341 9343484 : switch (TREE_CODE (_p1))
6342 : {
6343 2 : case VEC_COND_EXPR:
6344 2 : {
6345 2 : tree _q30 = TREE_OPERAND (_p1, 0);
6346 2 : tree _q31 = TREE_OPERAND (_p1, 1);
6347 2 : tree _q32 = TREE_OPERAND (_p1, 2);
6348 2 : {
6349 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
6350 2 : if (VECTOR_TYPE_P (type)
6351 2 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6352 2 : || types_match (type, TREE_TYPE (captures[3]))
6353 2 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
6354 : || (optimize_vectors_before_lowering_p ()
6355 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
6356 : )
6357 : {
6358 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
6359 2 : {
6360 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail1649;
6361 0 : tree res_op0;
6362 0 : res_op0 = captures[2];
6363 0 : tree res_op1;
6364 0 : {
6365 0 : tree _o1[2], _r1;
6366 0 : _o1[0] = unshare_expr (captures[0]);
6367 0 : _o1[1] = captures[3];
6368 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6369 0 : if (EXPR_P (_r1))
6370 0 : goto next_after_fail1649;
6371 0 : res_op1 = _r1;
6372 : }
6373 0 : tree res_op2;
6374 0 : {
6375 0 : tree _o1[2], _r1;
6376 0 : _o1[0] = captures[0];
6377 0 : _o1[1] = captures[4];
6378 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6379 0 : if (EXPR_P (_r1))
6380 0 : goto next_after_fail1649;
6381 0 : res_op2 = _r1;
6382 : }
6383 0 : tree _r;
6384 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6385 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
6386 0 : return _r;
6387 : }
6388 2 : next_after_fail1649:;
6389 : }
6390 : }
6391 2 : break;
6392 : }
6393 9343484 : default:;
6394 : }
6395 9343484 : if (uniform_integer_cst_p (_p1))
6396 : {
6397 6824456 : {
6398 6824456 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6399 6824456 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, LT_EXPR);
6400 6824456 : if (res) return res;
6401 : }
6402 : }
6403 9246186 : switch (TREE_CODE (_p0))
6404 : {
6405 61354 : case MULT_EXPR:
6406 61354 : {
6407 61354 : tree _q20 = TREE_OPERAND (_p0, 0);
6408 61354 : tree _q21 = TREE_OPERAND (_p0, 1);
6409 61354 : switch (TREE_CODE (_q21))
6410 : {
6411 53244 : case INTEGER_CST:
6412 53244 : {
6413 53244 : if (integer_zerop (_p1))
6414 : {
6415 808 : {
6416 808 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6417 808 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6418 808 : if (res) return res;
6419 : }
6420 : }
6421 : break;
6422 : }
6423 : default:;
6424 : }
6425 : break;
6426 : }
6427 9245545 : default:;
6428 : }
6429 9245545 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6430 : {
6431 5282 : {
6432 5282 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6433 5282 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, LE_EXPR);
6434 5282 : if (res) return res;
6435 : }
6436 : }
6437 9240305 : switch (TREE_CODE (_p0))
6438 : {
6439 2716 : case BIT_NOT_EXPR:
6440 2716 : {
6441 2716 : tree _q20 = TREE_OPERAND (_p0, 0);
6442 2716 : switch (TREE_CODE (_p1))
6443 : {
6444 0 : case BIT_NOT_EXPR:
6445 0 : {
6446 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6447 0 : {
6448 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
6449 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR);
6450 0 : if (res) return res;
6451 : }
6452 0 : break;
6453 : }
6454 2716 : default:;
6455 : }
6456 2716 : {
6457 2716 : tree _p1_pops[1];
6458 2716 : if (tree_nop_convert (_p1, _p1_pops))
6459 : {
6460 0 : tree _q40 = _p1_pops[0];
6461 0 : switch (TREE_CODE (_q40))
6462 : {
6463 0 : case BIT_NOT_EXPR:
6464 0 : {
6465 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6466 0 : {
6467 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
6468 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR);
6469 0 : if (res) return res;
6470 : }
6471 0 : break;
6472 : }
6473 : default:;
6474 : }
6475 : }
6476 : }
6477 2716 : if (CONSTANT_CLASS_P (_p1))
6478 : {
6479 2424 : {
6480 2424 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6481 2424 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6482 2424 : if (res) return res;
6483 : }
6484 : }
6485 : break;
6486 : }
6487 9237881 : default:;
6488 : }
6489 9237881 : {
6490 9237881 : tree _p0_pops[1];
6491 9237881 : if (tree_nop_convert (_p0, _p0_pops))
6492 : {
6493 847717 : tree _q20 = _p0_pops[0];
6494 847717 : switch (TREE_CODE (_q20))
6495 : {
6496 0 : case BIT_NOT_EXPR:
6497 0 : {
6498 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6499 0 : switch (TREE_CODE (_p1))
6500 : {
6501 0 : case BIT_NOT_EXPR:
6502 0 : {
6503 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6504 0 : {
6505 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
6506 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LE_EXPR);
6507 0 : if (res) return res;
6508 : }
6509 0 : break;
6510 : }
6511 0 : default:;
6512 : }
6513 0 : {
6514 0 : tree _p1_pops[1];
6515 0 : if (tree_nop_convert (_p1, _p1_pops))
6516 : {
6517 0 : tree _q50 = _p1_pops[0];
6518 0 : switch (TREE_CODE (_q50))
6519 : {
6520 0 : case BIT_NOT_EXPR:
6521 0 : {
6522 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6523 0 : {
6524 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
6525 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LE_EXPR);
6526 0 : if (res) return res;
6527 : }
6528 0 : break;
6529 : }
6530 : default:;
6531 : }
6532 : }
6533 : }
6534 0 : if (CONSTANT_CLASS_P (_p1))
6535 : {
6536 0 : {
6537 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
6538 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6539 0 : if (res) return res;
6540 : }
6541 : }
6542 : break;
6543 : }
6544 : default:;
6545 : }
6546 : }
6547 : }
6548 9237881 : switch (TREE_CODE (_p1))
6549 : {
6550 196537 : case REAL_CST:
6551 196537 : {
6552 196537 : {
6553 196537 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6554 196537 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, LE_EXPR);
6555 196537 : if (res) return res;
6556 : }
6557 196460 : break;
6558 : }
6559 9237804 : default:;
6560 : }
6561 9237804 : switch (TREE_CODE (_p0))
6562 : {
6563 1591111 : case PLUS_EXPR:
6564 1591111 : {
6565 1591111 : tree _q20 = TREE_OPERAND (_p0, 0);
6566 1591111 : tree _q21 = TREE_OPERAND (_p0, 1);
6567 1591111 : switch (TREE_CODE (_q21))
6568 : {
6569 86 : case REAL_CST:
6570 86 : {
6571 86 : switch (TREE_CODE (_p1))
6572 : {
6573 81 : case REAL_CST:
6574 81 : {
6575 81 : {
6576 81 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6577 81 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR);
6578 81 : if (res) return res;
6579 : }
6580 81 : break;
6581 : }
6582 : default:;
6583 : }
6584 : break;
6585 : }
6586 1484597 : case INTEGER_CST:
6587 1484597 : {
6588 1484597 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6589 : {
6590 1974 : {
6591 1974 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
6592 1974 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
6593 1974 : if (res) return res;
6594 : }
6595 : }
6596 : break;
6597 : }
6598 : default:;
6599 : }
6600 : break;
6601 : }
6602 60305 : case MINUS_EXPR:
6603 60305 : {
6604 60305 : tree _q20 = TREE_OPERAND (_p0, 0);
6605 60305 : tree _q21 = TREE_OPERAND (_p0, 1);
6606 60305 : switch (TREE_CODE (_q21))
6607 : {
6608 1225 : case REAL_CST:
6609 1225 : {
6610 1225 : switch (TREE_CODE (_p1))
6611 : {
6612 1202 : case REAL_CST:
6613 1202 : {
6614 1202 : {
6615 1202 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6616 1202 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, MINUS_EXPR, LE_EXPR);
6617 1202 : if (res) return res;
6618 : }
6619 1202 : break;
6620 : }
6621 : default:;
6622 : }
6623 : break;
6624 : }
6625 60305 : default:;
6626 : }
6627 60305 : switch (TREE_CODE (_q20))
6628 : {
6629 2 : case REAL_CST:
6630 2 : {
6631 2 : switch (TREE_CODE (_p1))
6632 : {
6633 0 : case REAL_CST:
6634 0 : {
6635 0 : {
6636 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6637 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, LE_EXPR);
6638 0 : if (res) return res;
6639 : }
6640 0 : break;
6641 : }
6642 : default:;
6643 : }
6644 : break;
6645 : }
6646 : default:;
6647 : }
6648 : break;
6649 : }
6650 12216 : case FLOAT_EXPR:
6651 12216 : {
6652 12216 : tree _q20 = TREE_OPERAND (_p0, 0);
6653 12216 : switch (TREE_CODE (_p1))
6654 : {
6655 1 : case FLOAT_EXPR:
6656 1 : {
6657 1 : tree _q40 = TREE_OPERAND (_p1, 0);
6658 1 : {
6659 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6660 1 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6661 1 : if (res) return res;
6662 : }
6663 1 : break;
6664 : }
6665 274 : case REAL_CST:
6666 274 : {
6667 274 : {
6668 274 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6669 274 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6670 274 : if (res) return res;
6671 : }
6672 174 : break;
6673 : }
6674 : default:;
6675 : }
6676 : break;
6677 : }
6678 433 : case EXACT_DIV_EXPR:
6679 433 : {
6680 433 : tree _q20 = TREE_OPERAND (_p0, 0);
6681 433 : tree _q21 = TREE_OPERAND (_p0, 1);
6682 433 : switch (TREE_CODE (_q21))
6683 : {
6684 433 : case INTEGER_CST:
6685 433 : {
6686 433 : switch (TREE_CODE (_p1))
6687 : {
6688 356 : case INTEGER_CST:
6689 356 : {
6690 356 : {
6691 356 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6692 356 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, LE_EXPR);
6693 356 : if (res) return res;
6694 : }
6695 0 : break;
6696 : }
6697 : default:;
6698 : }
6699 : break;
6700 : }
6701 : default:;
6702 : }
6703 : break;
6704 : }
6705 1672209 : CASE_CONVERT:
6706 1672209 : {
6707 1672209 : tree _q20 = TREE_OPERAND (_p0, 0);
6708 1672209 : switch (TREE_CODE (_q20))
6709 : {
6710 0 : case EXACT_DIV_EXPR:
6711 0 : {
6712 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6713 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6714 0 : switch (TREE_CODE (_q31))
6715 : {
6716 0 : case INTEGER_CST:
6717 0 : {
6718 0 : switch (TREE_CODE (_p1))
6719 : {
6720 0 : case INTEGER_CST:
6721 0 : {
6722 0 : {
6723 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6724 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6725 0 : if (res) return res;
6726 : }
6727 0 : break;
6728 : }
6729 : default:;
6730 : }
6731 : break;
6732 : }
6733 : default:;
6734 : }
6735 : break;
6736 : }
6737 1672209 : default:;
6738 : }
6739 1672209 : switch (TREE_CODE (_p1))
6740 : {
6741 80502 : CASE_CONVERT:
6742 80502 : {
6743 80502 : tree _q40 = TREE_OPERAND (_p1, 0);
6744 80502 : {
6745 80502 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6746 80502 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, LE_EXPR);
6747 80502 : if (res) return res;
6748 : }
6749 29934 : break;
6750 : }
6751 1621641 : default:;
6752 : }
6753 1621641 : {
6754 1621641 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
6755 1621641 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, LE_EXPR);
6756 1621641 : if (res) return res;
6757 : }
6758 954795 : switch (TREE_CODE (_q20))
6759 : {
6760 10313 : case ADDR_EXPR:
6761 10313 : {
6762 10313 : switch (TREE_CODE (_p1))
6763 : {
6764 6188 : CASE_CONVERT:
6765 6188 : {
6766 6188 : tree _q40 = TREE_OPERAND (_p1, 0);
6767 6188 : switch (TREE_CODE (_q40))
6768 : {
6769 6188 : case ADDR_EXPR:
6770 6188 : {
6771 6188 : {
6772 6188 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6773 6188 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, LE_EXPR);
6774 6188 : if (res) return res;
6775 : }
6776 160 : break;
6777 : }
6778 : default:;
6779 : }
6780 : break;
6781 : }
6782 7 : case ADDR_EXPR:
6783 7 : {
6784 7 : {
6785 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6786 7 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, LE_EXPR);
6787 7 : if (res) return res;
6788 : }
6789 0 : break;
6790 : }
6791 : default:;
6792 : }
6793 : break;
6794 : }
6795 948760 : default:;
6796 : }
6797 948760 : if (uniform_integer_cst_p (_p1))
6798 : {
6799 500746 : {
6800 500746 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6801 500746 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, LE_EXPR);
6802 500746 : if (res) return res;
6803 : }
6804 : }
6805 : break;
6806 : }
6807 5418 : case BIT_AND_EXPR:
6808 5418 : {
6809 5418 : tree _q20 = TREE_OPERAND (_p0, 0);
6810 5418 : tree _q21 = TREE_OPERAND (_p0, 1);
6811 5418 : switch (TREE_CODE (_q21))
6812 : {
6813 4942 : case INTEGER_CST:
6814 4942 : {
6815 4942 : switch (TREE_CODE (_p1))
6816 : {
6817 2792 : case INTEGER_CST:
6818 2792 : {
6819 2792 : {
6820 2792 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6821 2792 : tree res = generic_simplify_410 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
6822 2792 : if (res) return res;
6823 : }
6824 2745 : break;
6825 : }
6826 : default:;
6827 : }
6828 : break;
6829 : }
6830 : default:;
6831 : }
6832 : break;
6833 : }
6834 5568 : case NEGATE_EXPR:
6835 5568 : {
6836 5568 : tree _q20 = TREE_OPERAND (_p0, 0);
6837 5568 : switch (TREE_CODE (_p1))
6838 : {
6839 32 : case NEGATE_EXPR:
6840 32 : {
6841 32 : tree _q40 = TREE_OPERAND (_p1, 0);
6842 32 : {
6843 32 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6844 32 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6845 32 : if (res) return res;
6846 : }
6847 32 : break;
6848 : }
6849 5568 : default:;
6850 : }
6851 5568 : if (CONSTANT_CLASS_P (_p1))
6852 : {
6853 457 : {
6854 457 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6855 457 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6856 457 : if (res) return res;
6857 : }
6858 : }
6859 : break;
6860 : }
6861 1506 : case ADDR_EXPR:
6862 1506 : {
6863 1506 : switch (TREE_CODE (_p1))
6864 : {
6865 19 : CASE_CONVERT:
6866 19 : {
6867 19 : tree _q30 = TREE_OPERAND (_p1, 0);
6868 19 : switch (TREE_CODE (_q30))
6869 : {
6870 19 : case ADDR_EXPR:
6871 19 : {
6872 19 : {
6873 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
6874 19 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, LE_EXPR);
6875 19 : if (res) return res;
6876 : }
6877 0 : break;
6878 : }
6879 : default:;
6880 : }
6881 : break;
6882 : }
6883 674 : case ADDR_EXPR:
6884 674 : {
6885 674 : {
6886 674 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
6887 674 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, LE_EXPR);
6888 674 : if (res) return res;
6889 : }
6890 302 : break;
6891 : }
6892 : default:;
6893 : }
6894 : break;
6895 : }
6896 134016 : case CALL_EXPR:
6897 134016 : switch (get_call_combined_fn (_p0))
6898 : {
6899 2 : case CFN_BUILT_IN_SQRTF:
6900 2 : if (call_expr_nargs (_p0) == 1)
6901 : {
6902 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6903 2 : switch (TREE_CODE (_p1))
6904 : {
6905 2 : case REAL_CST:
6906 2 : {
6907 2 : {
6908 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6909 2 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6910 2 : if (res) return res;
6911 : }
6912 0 : break;
6913 : }
6914 0 : case CALL_EXPR:
6915 0 : switch (get_call_combined_fn (_p1))
6916 : {
6917 0 : case CFN_BUILT_IN_SQRTF:
6918 0 : if (call_expr_nargs (_p1) == 1)
6919 : {
6920 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6921 0 : {
6922 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6923 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6924 0 : if (res) return res;
6925 : }
6926 : }
6927 : break;
6928 : default:;
6929 : }
6930 : break;
6931 : default:;
6932 : }
6933 : }
6934 : break;
6935 0 : case CFN_BUILT_IN_SQRTL:
6936 0 : if (call_expr_nargs (_p0) == 1)
6937 : {
6938 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6939 0 : switch (TREE_CODE (_p1))
6940 : {
6941 0 : case REAL_CST:
6942 0 : {
6943 0 : {
6944 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6945 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6946 0 : if (res) return res;
6947 : }
6948 0 : break;
6949 : }
6950 0 : case CALL_EXPR:
6951 0 : switch (get_call_combined_fn (_p1))
6952 : {
6953 0 : case CFN_BUILT_IN_SQRTL:
6954 0 : if (call_expr_nargs (_p1) == 1)
6955 : {
6956 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6957 0 : {
6958 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6959 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6960 0 : if (res) return res;
6961 : }
6962 : }
6963 : break;
6964 : default:;
6965 : }
6966 : break;
6967 : default:;
6968 : }
6969 : }
6970 : break;
6971 2 : case CFN_BUILT_IN_SQRT:
6972 2 : if (call_expr_nargs (_p0) == 1)
6973 : {
6974 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6975 2 : switch (TREE_CODE (_p1))
6976 : {
6977 2 : case REAL_CST:
6978 2 : {
6979 2 : {
6980 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6981 2 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6982 2 : if (res) return res;
6983 : }
6984 2 : break;
6985 : }
6986 0 : case CALL_EXPR:
6987 0 : switch (get_call_combined_fn (_p1))
6988 : {
6989 0 : case CFN_BUILT_IN_SQRT:
6990 0 : if (call_expr_nargs (_p1) == 1)
6991 : {
6992 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6993 0 : {
6994 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6995 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6996 0 : if (res) return res;
6997 : }
6998 : }
6999 : break;
7000 : default:;
7001 : }
7002 : break;
7003 : default:;
7004 : }
7005 : }
7006 : break;
7007 0 : case CFN_SQRT:
7008 0 : if (call_expr_nargs (_p0) == 1)
7009 : {
7010 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7011 0 : switch (TREE_CODE (_p1))
7012 : {
7013 0 : case REAL_CST:
7014 0 : {
7015 0 : {
7016 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7017 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
7018 0 : if (res) return res;
7019 : }
7020 0 : break;
7021 : }
7022 0 : case CALL_EXPR:
7023 0 : switch (get_call_combined_fn (_p1))
7024 : {
7025 0 : case CFN_SQRT:
7026 0 : if (call_expr_nargs (_p1) == 1)
7027 : {
7028 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7029 0 : {
7030 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7031 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
7032 0 : if (res) return res;
7033 : }
7034 : }
7035 : break;
7036 : default:;
7037 : }
7038 : break;
7039 : default:;
7040 : }
7041 : }
7042 : break;
7043 : default:;
7044 : }
7045 : break;
7046 8489142 : default:;
7047 : }
7048 8489142 : if (uniform_integer_cst_p (_p1))
7049 : {
7050 6034607 : {
7051 6034607 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
7052 6034607 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR);
7053 6034607 : if (res) return res;
7054 : }
7055 : }
7056 8081782 : switch (TREE_CODE (_p0))
7057 : {
7058 911439 : CASE_CONVERT:
7059 911439 : {
7060 911439 : tree _q20 = TREE_OPERAND (_p0, 0);
7061 911439 : switch (TREE_CODE (_q20))
7062 : {
7063 94184 : case PLUS_EXPR:
7064 94184 : {
7065 94184 : tree _q30 = TREE_OPERAND (_q20, 0);
7066 94184 : tree _q31 = TREE_OPERAND (_q20, 1);
7067 94184 : switch (TREE_CODE (_q30))
7068 : {
7069 79490 : CASE_CONVERT:
7070 79490 : {
7071 79490 : tree _q40 = TREE_OPERAND (_q30, 0);
7072 79490 : switch (TREE_CODE (_q31))
7073 : {
7074 78917 : case INTEGER_CST:
7075 78917 : {
7076 78917 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7077 : {
7078 4 : {
7079 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
7080 4 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
7081 4 : if (res) return res;
7082 : }
7083 : }
7084 : break;
7085 : }
7086 : default:;
7087 : }
7088 : break;
7089 : }
7090 : default:;
7091 : }
7092 : break;
7093 : }
7094 : default:;
7095 : }
7096 : break;
7097 : }
7098 8081778 : default:;
7099 : }
7100 8081778 : switch (TREE_CODE (_p1))
7101 : {
7102 198284 : CASE_CONVERT:
7103 198284 : {
7104 198284 : tree _q30 = TREE_OPERAND (_p1, 0);
7105 198284 : switch (TREE_CODE (_q30))
7106 : {
7107 1766 : case PLUS_EXPR:
7108 1766 : {
7109 1766 : tree _q40 = TREE_OPERAND (_q30, 0);
7110 1766 : tree _q41 = TREE_OPERAND (_q30, 1);
7111 1766 : switch (TREE_CODE (_q40))
7112 : {
7113 461 : CASE_CONVERT:
7114 461 : {
7115 461 : tree _q50 = TREE_OPERAND (_q40, 0);
7116 461 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7117 : {
7118 0 : switch (TREE_CODE (_q41))
7119 : {
7120 0 : case INTEGER_CST:
7121 0 : {
7122 0 : {
7123 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
7124 0 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7125 0 : if (res) return res;
7126 : }
7127 0 : break;
7128 : }
7129 : default:;
7130 : }
7131 : }
7132 : break;
7133 : }
7134 : default:;
7135 : }
7136 : break;
7137 : }
7138 : default:;
7139 : }
7140 : break;
7141 : }
7142 122989 : case PLUS_EXPR:
7143 122989 : {
7144 122989 : tree _q30 = TREE_OPERAND (_p1, 0);
7145 122989 : tree _q31 = TREE_OPERAND (_p1, 1);
7146 122989 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7147 : {
7148 30 : switch (TREE_CODE (_q31))
7149 : {
7150 30 : case INTEGER_CST:
7151 30 : {
7152 30 : {
7153 30 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
7154 30 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7155 30 : if (res) return res;
7156 : }
7157 0 : break;
7158 : }
7159 : default:;
7160 : }
7161 : }
7162 : break;
7163 : }
7164 8081748 : default:;
7165 : }
7166 8081748 : switch (TREE_CODE (_p0))
7167 : {
7168 58163 : case MINUS_EXPR:
7169 58163 : {
7170 58163 : tree _q20 = TREE_OPERAND (_p0, 0);
7171 58163 : tree _q21 = TREE_OPERAND (_p0, 1);
7172 58163 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7173 : {
7174 2509 : {
7175 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7176 2509 : tree res = generic_simplify_399 (loc, type, _p0, _p1, captures, LE_EXPR);
7177 2509 : if (res) return res;
7178 : }
7179 : }
7180 : break;
7181 : }
7182 8081621 : default:;
7183 : }
7184 8081621 : switch (TREE_CODE (_p1))
7185 : {
7186 122959 : case PLUS_EXPR:
7187 122959 : {
7188 122959 : tree _q30 = TREE_OPERAND (_p1, 0);
7189 122959 : tree _q31 = TREE_OPERAND (_p1, 1);
7190 122959 : switch (TREE_CODE (_q30))
7191 : {
7192 4 : case MINUS_EXPR:
7193 4 : {
7194 4 : tree _q40 = TREE_OPERAND (_q30, 0);
7195 4 : tree _q41 = TREE_OPERAND (_q30, 1);
7196 4 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7197 : {
7198 0 : if (integer_minus_onep (_q31))
7199 : {
7200 0 : {
7201 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
7202 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, GE_EXPR);
7203 0 : if (res) return res;
7204 : }
7205 : }
7206 : }
7207 : break;
7208 : }
7209 : default:;
7210 : }
7211 : break;
7212 : }
7213 8081621 : default:;
7214 : }
7215 8081621 : switch (TREE_CODE (_p0))
7216 : {
7217 12 : case REALPART_EXPR:
7218 12 : {
7219 12 : tree _q20 = TREE_OPERAND (_p0, 0);
7220 12 : switch (TREE_CODE (_q20))
7221 : {
7222 0 : case CALL_EXPR:
7223 0 : switch (get_call_combined_fn (_q20))
7224 : {
7225 0 : case CFN_SUB_OVERFLOW:
7226 0 : if (call_expr_nargs (_q20) == 2)
7227 : {
7228 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7229 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
7230 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7231 : {
7232 0 : {
7233 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7234 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7235 0 : if (res) return res;
7236 : }
7237 : }
7238 : }
7239 : break;
7240 : default:;
7241 : }
7242 : break;
7243 : default:;
7244 : }
7245 : break;
7246 : }
7247 8081621 : default:;
7248 : }
7249 8081621 : switch (TREE_CODE (_p1))
7250 : {
7251 0 : case REALPART_EXPR:
7252 0 : {
7253 0 : tree _q30 = TREE_OPERAND (_p1, 0);
7254 0 : switch (TREE_CODE (_q30))
7255 : {
7256 0 : case CALL_EXPR:
7257 0 : switch (get_call_combined_fn (_q30))
7258 : {
7259 0 : case CFN_ADD_OVERFLOW:
7260 0 : if (call_expr_nargs (_q30) == 2)
7261 : {
7262 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
7263 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
7264 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7265 : {
7266 0 : {
7267 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7268 0 : tree res = generic_simplify_413 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7269 0 : if (res) return res;
7270 : }
7271 : }
7272 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7273 : {
7274 0 : {
7275 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q40 };
7276 0 : tree res = generic_simplify_413 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7277 0 : if (res) return res;
7278 : }
7279 : }
7280 : }
7281 : break;
7282 : default:;
7283 : }
7284 : break;
7285 : default:;
7286 : }
7287 : break;
7288 : }
7289 337 : case TRUNC_DIV_EXPR:
7290 337 : {
7291 337 : tree _q30 = TREE_OPERAND (_p1, 0);
7292 337 : tree _q31 = TREE_OPERAND (_p1, 1);
7293 337 : if (integer_all_onesp (_q30))
7294 : {
7295 0 : {
7296 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
7297 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7298 0 : if (res) return res;
7299 : }
7300 : }
7301 : break;
7302 : }
7303 8081621 : default:;
7304 : }
7305 8081621 : switch (TREE_CODE (_p0))
7306 : {
7307 58392 : case MULT_EXPR:
7308 58392 : {
7309 58392 : tree _q20 = TREE_OPERAND (_p0, 0);
7310 58392 : tree _q21 = TREE_OPERAND (_p0, 1);
7311 58392 : switch (TREE_CODE (_q20))
7312 : {
7313 4538 : CASE_CONVERT:
7314 4538 : {
7315 4538 : tree _q30 = TREE_OPERAND (_q20, 0);
7316 4538 : switch (TREE_CODE (_q21))
7317 : {
7318 25 : CASE_CONVERT:
7319 25 : {
7320 25 : tree _q50 = TREE_OPERAND (_q21, 0);
7321 25 : switch (TREE_CODE (_p1))
7322 : {
7323 25 : case INTEGER_CST:
7324 25 : {
7325 25 : {
7326 25 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _p1 };
7327 25 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7328 25 : if (res) return res;
7329 : }
7330 0 : break;
7331 : }
7332 : default:;
7333 : }
7334 : break;
7335 : }
7336 : default:;
7337 : }
7338 : break;
7339 : }
7340 58367 : default:;
7341 : }
7342 58367 : switch (TREE_CODE (_q21))
7343 : {
7344 821 : case REAL_CST:
7345 821 : {
7346 821 : switch (TREE_CODE (_p1))
7347 : {
7348 553 : case REAL_CST:
7349 553 : {
7350 553 : {
7351 553 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7352 553 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7353 553 : if (res) return res;
7354 : }
7355 551 : break;
7356 : }
7357 : default:;
7358 : }
7359 : break;
7360 : }
7361 : default:;
7362 : }
7363 : break;
7364 : }
7365 22 : case REAL_CST:
7366 22 : {
7367 22 : switch (TREE_CODE (_p1))
7368 : {
7369 0 : case CALL_EXPR:
7370 0 : switch (get_call_combined_fn (_p1))
7371 : {
7372 0 : case CFN_BUILT_IN_EXP:
7373 0 : if (call_expr_nargs (_p1) == 1)
7374 : {
7375 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7376 0 : {
7377 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7378 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7379 0 : if (res) return res;
7380 : }
7381 : }
7382 : break;
7383 0 : case CFN_BUILT_IN_LOG:
7384 0 : if (call_expr_nargs (_p1) == 1)
7385 : {
7386 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7387 0 : {
7388 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7389 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7390 0 : if (res) return res;
7391 : }
7392 : }
7393 : break;
7394 0 : case CFN_BUILT_IN_EXP10F:
7395 0 : if (call_expr_nargs (_p1) == 1)
7396 : {
7397 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7398 0 : {
7399 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7400 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7401 0 : if (res) return res;
7402 : }
7403 : }
7404 : break;
7405 0 : case CFN_BUILT_IN_EXP10L:
7406 0 : if (call_expr_nargs (_p1) == 1)
7407 : {
7408 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7409 0 : {
7410 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7411 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7412 0 : if (res) return res;
7413 : }
7414 : }
7415 : break;
7416 0 : case CFN_BUILT_IN_EXP2:
7417 0 : if (call_expr_nargs (_p1) == 1)
7418 : {
7419 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7420 0 : {
7421 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7422 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7423 0 : if (res) return res;
7424 : }
7425 : }
7426 : break;
7427 0 : case CFN_BUILT_IN_EXPF:
7428 0 : if (call_expr_nargs (_p1) == 1)
7429 : {
7430 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7431 0 : {
7432 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7433 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7434 0 : if (res) return res;
7435 : }
7436 : }
7437 : break;
7438 0 : case CFN_BUILT_IN_EXPL:
7439 0 : if (call_expr_nargs (_p1) == 1)
7440 : {
7441 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7442 0 : {
7443 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7444 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7445 0 : if (res) return res;
7446 : }
7447 : }
7448 : break;
7449 0 : case CFN_BUILT_IN_LOG2:
7450 0 : if (call_expr_nargs (_p1) == 1)
7451 : {
7452 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7453 0 : {
7454 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7455 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7456 0 : if (res) return res;
7457 : }
7458 : }
7459 : break;
7460 0 : case CFN_BUILT_IN_LOGF:
7461 0 : if (call_expr_nargs (_p1) == 1)
7462 : {
7463 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7464 0 : {
7465 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7466 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7467 0 : if (res) return res;
7468 : }
7469 : }
7470 : break;
7471 0 : case CFN_BUILT_IN_LOGL:
7472 0 : if (call_expr_nargs (_p1) == 1)
7473 : {
7474 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7475 0 : {
7476 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7477 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7478 0 : if (res) return res;
7479 : }
7480 : }
7481 : break;
7482 0 : case CFN_BUILT_IN_LOG10F:
7483 0 : if (call_expr_nargs (_p1) == 1)
7484 : {
7485 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7486 0 : {
7487 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7488 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7489 0 : if (res) return res;
7490 : }
7491 : }
7492 : break;
7493 0 : case CFN_BUILT_IN_LOG10L:
7494 0 : if (call_expr_nargs (_p1) == 1)
7495 : {
7496 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7497 0 : {
7498 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7499 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7500 0 : if (res) return res;
7501 : }
7502 : }
7503 : break;
7504 0 : case CFN_EXP:
7505 0 : if (call_expr_nargs (_p1) == 1)
7506 : {
7507 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7508 0 : {
7509 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7510 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7511 0 : if (res) return res;
7512 : }
7513 : }
7514 : break;
7515 0 : case CFN_LOG:
7516 0 : if (call_expr_nargs (_p1) == 1)
7517 : {
7518 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7519 0 : {
7520 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7521 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7522 0 : if (res) return res;
7523 : }
7524 : }
7525 : break;
7526 0 : case CFN_EXP2:
7527 0 : if (call_expr_nargs (_p1) == 1)
7528 : {
7529 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7530 0 : {
7531 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7532 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7533 0 : if (res) return res;
7534 : }
7535 : }
7536 : break;
7537 0 : case CFN_LOG2:
7538 0 : if (call_expr_nargs (_p1) == 1)
7539 : {
7540 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7541 0 : {
7542 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7543 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7544 0 : if (res) return res;
7545 : }
7546 : }
7547 : break;
7548 0 : case CFN_EXP10:
7549 0 : if (call_expr_nargs (_p1) == 1)
7550 : {
7551 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7552 0 : {
7553 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7554 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7555 0 : if (res) return res;
7556 : }
7557 : }
7558 : break;
7559 0 : case CFN_LOG10:
7560 0 : if (call_expr_nargs (_p1) == 1)
7561 : {
7562 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7563 0 : {
7564 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7565 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7566 0 : if (res) return res;
7567 : }
7568 : }
7569 : break;
7570 0 : case CFN_BUILT_IN_EXP10:
7571 0 : if (call_expr_nargs (_p1) == 1)
7572 : {
7573 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7574 0 : {
7575 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7576 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7577 0 : if (res) return res;
7578 : }
7579 : }
7580 : break;
7581 0 : case CFN_BUILT_IN_EXP2F:
7582 0 : if (call_expr_nargs (_p1) == 1)
7583 : {
7584 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7585 0 : {
7586 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7587 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7588 0 : if (res) return res;
7589 : }
7590 : }
7591 : break;
7592 0 : case CFN_BUILT_IN_EXP2L:
7593 0 : if (call_expr_nargs (_p1) == 1)
7594 : {
7595 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7596 0 : {
7597 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7598 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7599 0 : if (res) return res;
7600 : }
7601 : }
7602 : break;
7603 0 : case CFN_BUILT_IN_LOG10:
7604 0 : if (call_expr_nargs (_p1) == 1)
7605 : {
7606 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7607 0 : {
7608 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7609 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7610 0 : if (res) return res;
7611 : }
7612 : }
7613 : break;
7614 0 : case CFN_BUILT_IN_LOG2F:
7615 0 : if (call_expr_nargs (_p1) == 1)
7616 : {
7617 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7618 0 : {
7619 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7620 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7621 0 : if (res) return res;
7622 : }
7623 : }
7624 : break;
7625 0 : case CFN_BUILT_IN_LOG2L:
7626 0 : if (call_expr_nargs (_p1) == 1)
7627 : {
7628 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7629 0 : {
7630 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7631 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7632 0 : if (res) return res;
7633 : }
7634 : }
7635 : break;
7636 : default:;
7637 : }
7638 : break;
7639 : default:;
7640 : }
7641 : break;
7642 : }
7643 1504088 : case PLUS_EXPR:
7644 1504088 : {
7645 1504088 : tree _q20 = TREE_OPERAND (_p0, 0);
7646 1504088 : tree _q21 = TREE_OPERAND (_p0, 1);
7647 1504088 : switch (TREE_CODE (_q21))
7648 : {
7649 1400072 : case INTEGER_CST:
7650 1400072 : {
7651 1400072 : switch (TREE_CODE (_p1))
7652 : {
7653 876196 : case INTEGER_CST:
7654 876196 : {
7655 876196 : {
7656 876196 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7657 876196 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, LE_EXPR, GE_EXPR);
7658 876196 : if (res) return res;
7659 : }
7660 693030 : break;
7661 : }
7662 : default:;
7663 : }
7664 : break;
7665 : }
7666 : default:;
7667 : }
7668 : break;
7669 : }
7670 58036 : case MINUS_EXPR:
7671 58036 : {
7672 58036 : tree _q20 = TREE_OPERAND (_p0, 0);
7673 58036 : tree _q21 = TREE_OPERAND (_p0, 1);
7674 58036 : switch (TREE_CODE (_q21))
7675 : {
7676 2171 : case INTEGER_CST:
7677 2171 : {
7678 2171 : switch (TREE_CODE (_p1))
7679 : {
7680 2171 : case INTEGER_CST:
7681 2171 : {
7682 2171 : {
7683 2171 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7684 2171 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, LE_EXPR, GE_EXPR);
7685 2171 : if (res) return res;
7686 : }
7687 2171 : break;
7688 : }
7689 : default:;
7690 : }
7691 : break;
7692 : }
7693 58036 : default:;
7694 : }
7695 58036 : switch (TREE_CODE (_q20))
7696 : {
7697 2055 : case INTEGER_CST:
7698 2055 : {
7699 2055 : switch (TREE_CODE (_p1))
7700 : {
7701 1097 : case INTEGER_CST:
7702 1097 : {
7703 1097 : {
7704 1097 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7705 1097 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7706 1097 : if (res) return res;
7707 : }
7708 0 : break;
7709 : }
7710 : default:;
7711 : }
7712 : break;
7713 : }
7714 : default:;
7715 : }
7716 : break;
7717 : }
7718 133208 : case CALL_EXPR:
7719 133208 : switch (get_call_combined_fn (_p0))
7720 : {
7721 18 : case CFN_BUILT_IN_CTZ:
7722 18 : if (call_expr_nargs (_p0) == 1)
7723 : {
7724 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7725 18 : switch (TREE_CODE (_p1))
7726 : {
7727 18 : case INTEGER_CST:
7728 18 : {
7729 18 : {
7730 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7731 18 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZ);
7732 18 : if (res) return res;
7733 : }
7734 16 : break;
7735 : }
7736 : default:;
7737 : }
7738 : }
7739 : break;
7740 0 : case CFN_BUILT_IN_EXP:
7741 0 : if (call_expr_nargs (_p0) == 1)
7742 : {
7743 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7744 0 : switch (TREE_CODE (_p1))
7745 : {
7746 0 : case REAL_CST:
7747 0 : {
7748 0 : {
7749 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7750 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7751 0 : if (res) return res;
7752 : }
7753 0 : break;
7754 : }
7755 : default:;
7756 : }
7757 : }
7758 : break;
7759 8 : case CFN_BUILT_IN_FFS:
7760 8 : if (call_expr_nargs (_p0) == 1)
7761 : {
7762 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7763 8 : switch (TREE_CODE (_p1))
7764 : {
7765 8 : case INTEGER_CST:
7766 8 : {
7767 8 : {
7768 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7769 8 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFS);
7770 8 : if (res) return res;
7771 : }
7772 2 : break;
7773 : }
7774 : default:;
7775 : }
7776 : }
7777 : break;
7778 0 : case CFN_BUILT_IN_LOG:
7779 0 : if (call_expr_nargs (_p0) == 1)
7780 : {
7781 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7782 0 : switch (TREE_CODE (_p1))
7783 : {
7784 0 : case REAL_CST:
7785 0 : {
7786 0 : {
7787 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7788 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7789 0 : if (res) return res;
7790 : }
7791 0 : break;
7792 : }
7793 : default:;
7794 : }
7795 : }
7796 : break;
7797 0 : case CFN_BUILT_IN_FFSIMAX:
7798 0 : if (call_expr_nargs (_p0) == 1)
7799 : {
7800 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7801 0 : switch (TREE_CODE (_p1))
7802 : {
7803 0 : case INTEGER_CST:
7804 0 : {
7805 0 : {
7806 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7807 0 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSIMAX);
7808 0 : if (res) return res;
7809 : }
7810 0 : break;
7811 : }
7812 : default:;
7813 : }
7814 : }
7815 : break;
7816 0 : case CFN_BUILT_IN_EXP10F:
7817 0 : if (call_expr_nargs (_p0) == 1)
7818 : {
7819 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7820 0 : switch (TREE_CODE (_p1))
7821 : {
7822 0 : case REAL_CST:
7823 0 : {
7824 0 : {
7825 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7826 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7827 0 : if (res) return res;
7828 : }
7829 0 : break;
7830 : }
7831 : default:;
7832 : }
7833 : }
7834 : break;
7835 0 : case CFN_BUILT_IN_EXP10L:
7836 0 : if (call_expr_nargs (_p0) == 1)
7837 : {
7838 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7839 0 : switch (TREE_CODE (_p1))
7840 : {
7841 0 : case REAL_CST:
7842 0 : {
7843 0 : {
7844 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7845 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7846 0 : if (res) return res;
7847 : }
7848 0 : break;
7849 : }
7850 : default:;
7851 : }
7852 : }
7853 : break;
7854 37 : case CFN_BUILT_IN_POPCOUNT:
7855 37 : if (call_expr_nargs (_p0) == 1)
7856 : {
7857 37 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7858 37 : if (integer_zerop (_p1))
7859 : {
7860 1 : {
7861 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7862 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
7863 1 : if (res) return res;
7864 : }
7865 : }
7866 : }
7867 : break;
7868 0 : case CFN_BUILT_IN_CTZL:
7869 0 : if (call_expr_nargs (_p0) == 1)
7870 : {
7871 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7872 0 : switch (TREE_CODE (_p1))
7873 : {
7874 0 : case INTEGER_CST:
7875 0 : {
7876 0 : {
7877 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7878 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZL);
7879 0 : if (res) return res;
7880 : }
7881 0 : break;
7882 : }
7883 : default:;
7884 : }
7885 : }
7886 : break;
7887 0 : case CFN_BUILT_IN_EXP2:
7888 0 : if (call_expr_nargs (_p0) == 1)
7889 : {
7890 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7891 0 : switch (TREE_CODE (_p1))
7892 : {
7893 0 : case REAL_CST:
7894 0 : {
7895 0 : {
7896 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7897 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7898 0 : if (res) return res;
7899 : }
7900 0 : break;
7901 : }
7902 : default:;
7903 : }
7904 : }
7905 : break;
7906 0 : case CFN_BUILT_IN_EXPF:
7907 0 : if (call_expr_nargs (_p0) == 1)
7908 : {
7909 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7910 0 : switch (TREE_CODE (_p1))
7911 : {
7912 0 : case REAL_CST:
7913 0 : {
7914 0 : {
7915 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7916 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7917 0 : if (res) return res;
7918 : }
7919 0 : break;
7920 : }
7921 : default:;
7922 : }
7923 : }
7924 : break;
7925 0 : case CFN_BUILT_IN_EXPL:
7926 0 : if (call_expr_nargs (_p0) == 1)
7927 : {
7928 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7929 0 : switch (TREE_CODE (_p1))
7930 : {
7931 0 : case REAL_CST:
7932 0 : {
7933 0 : {
7934 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7935 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7936 0 : if (res) return res;
7937 : }
7938 0 : break;
7939 : }
7940 : default:;
7941 : }
7942 : }
7943 : break;
7944 3 : case CFN_BUILT_IN_FFSL:
7945 3 : if (call_expr_nargs (_p0) == 1)
7946 : {
7947 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7948 3 : switch (TREE_CODE (_p1))
7949 : {
7950 3 : case INTEGER_CST:
7951 3 : {
7952 3 : {
7953 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7954 3 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSL);
7955 3 : if (res) return res;
7956 : }
7957 0 : break;
7958 : }
7959 : default:;
7960 : }
7961 : }
7962 : break;
7963 0 : case CFN_BUILT_IN_LOG2:
7964 0 : if (call_expr_nargs (_p0) == 1)
7965 : {
7966 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7967 0 : switch (TREE_CODE (_p1))
7968 : {
7969 0 : case REAL_CST:
7970 0 : {
7971 0 : {
7972 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7973 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7974 0 : if (res) return res;
7975 : }
7976 0 : break;
7977 : }
7978 : default:;
7979 : }
7980 : }
7981 : break;
7982 0 : case CFN_BUILT_IN_LOGF:
7983 0 : if (call_expr_nargs (_p0) == 1)
7984 : {
7985 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7986 0 : switch (TREE_CODE (_p1))
7987 : {
7988 0 : case REAL_CST:
7989 0 : {
7990 0 : {
7991 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7992 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7993 0 : if (res) return res;
7994 : }
7995 0 : break;
7996 : }
7997 : default:;
7998 : }
7999 : }
8000 : break;
8001 0 : case CFN_BUILT_IN_LOGL:
8002 0 : if (call_expr_nargs (_p0) == 1)
8003 : {
8004 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8005 0 : switch (TREE_CODE (_p1))
8006 : {
8007 0 : case REAL_CST:
8008 0 : {
8009 0 : {
8010 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8011 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
8012 0 : if (res) return res;
8013 : }
8014 0 : break;
8015 : }
8016 : default:;
8017 : }
8018 : }
8019 : break;
8020 1 : case CFN_BUILT_IN_POPCOUNTLL:
8021 1 : if (call_expr_nargs (_p0) == 1)
8022 : {
8023 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8024 1 : if (integer_zerop (_p1))
8025 : {
8026 1 : {
8027 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8028 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8029 1 : if (res) return res;
8030 : }
8031 : }
8032 : }
8033 : break;
8034 0 : case CFN_BUILT_IN_LOG10F:
8035 0 : if (call_expr_nargs (_p0) == 1)
8036 : {
8037 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8038 0 : switch (TREE_CODE (_p1))
8039 : {
8040 0 : case REAL_CST:
8041 0 : {
8042 0 : {
8043 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8044 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
8045 0 : if (res) return res;
8046 : }
8047 0 : break;
8048 : }
8049 : default:;
8050 : }
8051 : }
8052 : break;
8053 0 : case CFN_BUILT_IN_LOG10L:
8054 0 : if (call_expr_nargs (_p0) == 1)
8055 : {
8056 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8057 0 : switch (TREE_CODE (_p1))
8058 : {
8059 0 : case REAL_CST:
8060 0 : {
8061 0 : {
8062 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8063 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
8064 0 : if (res) return res;
8065 : }
8066 0 : break;
8067 : }
8068 : default:;
8069 : }
8070 : }
8071 : break;
8072 0 : case CFN_BUILT_IN_CTZIMAX:
8073 0 : if (call_expr_nargs (_p0) == 1)
8074 : {
8075 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8076 0 : switch (TREE_CODE (_p1))
8077 : {
8078 0 : case INTEGER_CST:
8079 0 : {
8080 0 : {
8081 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8082 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
8083 0 : if (res) return res;
8084 : }
8085 0 : break;
8086 : }
8087 : default:;
8088 : }
8089 : }
8090 : break;
8091 0 : case CFN_POPCOUNT:
8092 0 : if (call_expr_nargs (_p0) == 1)
8093 : {
8094 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8095 0 : if (integer_zerop (_p1))
8096 : {
8097 0 : {
8098 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8099 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_POPCOUNT);
8100 0 : if (res) return res;
8101 : }
8102 : }
8103 : }
8104 : break;
8105 0 : case CFN_CTZ:
8106 0 : if (call_expr_nargs (_p0) == 2)
8107 : {
8108 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8109 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
8110 0 : switch (TREE_CODE (_p1))
8111 : {
8112 0 : case INTEGER_CST:
8113 0 : {
8114 0 : {
8115 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8116 0 : tree res = generic_simplify_407 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR);
8117 0 : if (res) return res;
8118 : }
8119 0 : break;
8120 : }
8121 : default:;
8122 : }
8123 : }
8124 0 : if (call_expr_nargs (_p0) == 1)
8125 : {
8126 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8127 0 : switch (TREE_CODE (_p1))
8128 : {
8129 0 : case INTEGER_CST:
8130 0 : {
8131 0 : {
8132 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8133 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_CTZ);
8134 0 : if (res) return res;
8135 : }
8136 0 : break;
8137 : }
8138 : default:;
8139 : }
8140 : }
8141 : break;
8142 0 : case CFN_EXP:
8143 0 : if (call_expr_nargs (_p0) == 1)
8144 : {
8145 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8146 0 : switch (TREE_CODE (_p1))
8147 : {
8148 0 : case REAL_CST:
8149 0 : {
8150 0 : {
8151 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8152 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8153 0 : if (res) return res;
8154 : }
8155 0 : break;
8156 : }
8157 : default:;
8158 : }
8159 : }
8160 : break;
8161 0 : case CFN_FFS:
8162 0 : if (call_expr_nargs (_p0) == 1)
8163 : {
8164 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8165 0 : switch (TREE_CODE (_p1))
8166 : {
8167 0 : case INTEGER_CST:
8168 0 : {
8169 0 : {
8170 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8171 0 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_FFS);
8172 0 : if (res) return res;
8173 : }
8174 0 : break;
8175 : }
8176 : default:;
8177 : }
8178 : }
8179 : break;
8180 0 : case CFN_LOG:
8181 0 : if (call_expr_nargs (_p0) == 1)
8182 : {
8183 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8184 0 : switch (TREE_CODE (_p1))
8185 : {
8186 0 : case REAL_CST:
8187 0 : {
8188 0 : {
8189 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8190 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8191 0 : if (res) return res;
8192 : }
8193 0 : break;
8194 : }
8195 : default:;
8196 : }
8197 : }
8198 : break;
8199 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8200 0 : if (call_expr_nargs (_p0) == 1)
8201 : {
8202 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8203 0 : if (integer_zerop (_p1))
8204 : {
8205 0 : {
8206 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8207 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8208 0 : if (res) return res;
8209 : }
8210 : }
8211 : }
8212 : break;
8213 0 : case CFN_EXP2:
8214 0 : if (call_expr_nargs (_p0) == 1)
8215 : {
8216 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8217 0 : switch (TREE_CODE (_p1))
8218 : {
8219 0 : case REAL_CST:
8220 0 : {
8221 0 : {
8222 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8223 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8224 0 : if (res) return res;
8225 : }
8226 0 : break;
8227 : }
8228 : default:;
8229 : }
8230 : }
8231 : break;
8232 0 : case CFN_LOG2:
8233 0 : if (call_expr_nargs (_p0) == 1)
8234 : {
8235 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8236 0 : switch (TREE_CODE (_p1))
8237 : {
8238 0 : case REAL_CST:
8239 0 : {
8240 0 : {
8241 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8242 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8243 0 : if (res) return res;
8244 : }
8245 0 : break;
8246 : }
8247 : default:;
8248 : }
8249 : }
8250 : break;
8251 0 : case CFN_EXP10:
8252 0 : if (call_expr_nargs (_p0) == 1)
8253 : {
8254 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8255 0 : switch (TREE_CODE (_p1))
8256 : {
8257 0 : case REAL_CST:
8258 0 : {
8259 0 : {
8260 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8261 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8262 0 : if (res) return res;
8263 : }
8264 0 : break;
8265 : }
8266 : default:;
8267 : }
8268 : }
8269 : break;
8270 1 : case CFN_BUILT_IN_POPCOUNTL:
8271 1 : if (call_expr_nargs (_p0) == 1)
8272 : {
8273 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8274 1 : if (integer_zerop (_p1))
8275 : {
8276 1 : {
8277 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8278 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
8279 1 : if (res) return res;
8280 : }
8281 : }
8282 : }
8283 : break;
8284 0 : case CFN_BUILT_IN_CTZLL:
8285 0 : if (call_expr_nargs (_p0) == 1)
8286 : {
8287 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8288 0 : switch (TREE_CODE (_p1))
8289 : {
8290 0 : case INTEGER_CST:
8291 0 : {
8292 0 : {
8293 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8294 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZLL);
8295 0 : if (res) return res;
8296 : }
8297 0 : break;
8298 : }
8299 : default:;
8300 : }
8301 : }
8302 : break;
8303 0 : case CFN_LOG10:
8304 0 : if (call_expr_nargs (_p0) == 1)
8305 : {
8306 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8307 0 : switch (TREE_CODE (_p1))
8308 : {
8309 0 : case REAL_CST:
8310 0 : {
8311 0 : {
8312 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8313 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8314 0 : if (res) return res;
8315 : }
8316 0 : break;
8317 : }
8318 : default:;
8319 : }
8320 : }
8321 : break;
8322 0 : case CFN_BUILT_IN_EXP10:
8323 0 : if (call_expr_nargs (_p0) == 1)
8324 : {
8325 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8326 0 : switch (TREE_CODE (_p1))
8327 : {
8328 0 : case REAL_CST:
8329 0 : {
8330 0 : {
8331 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8332 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8333 0 : if (res) return res;
8334 : }
8335 0 : break;
8336 : }
8337 : default:;
8338 : }
8339 : }
8340 : break;
8341 0 : case CFN_BUILT_IN_EXP2F:
8342 0 : if (call_expr_nargs (_p0) == 1)
8343 : {
8344 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8345 0 : switch (TREE_CODE (_p1))
8346 : {
8347 0 : case REAL_CST:
8348 0 : {
8349 0 : {
8350 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8351 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8352 0 : if (res) return res;
8353 : }
8354 0 : break;
8355 : }
8356 : default:;
8357 : }
8358 : }
8359 : break;
8360 0 : case CFN_BUILT_IN_EXP2L:
8361 0 : if (call_expr_nargs (_p0) == 1)
8362 : {
8363 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8364 0 : switch (TREE_CODE (_p1))
8365 : {
8366 0 : case REAL_CST:
8367 0 : {
8368 0 : {
8369 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8370 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8371 0 : if (res) return res;
8372 : }
8373 0 : break;
8374 : }
8375 : default:;
8376 : }
8377 : }
8378 : break;
8379 3 : case CFN_BUILT_IN_FFSLL:
8380 3 : if (call_expr_nargs (_p0) == 1)
8381 : {
8382 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8383 3 : switch (TREE_CODE (_p1))
8384 : {
8385 3 : case INTEGER_CST:
8386 3 : {
8387 3 : {
8388 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8389 3 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSLL);
8390 3 : if (res) return res;
8391 : }
8392 0 : break;
8393 : }
8394 : default:;
8395 : }
8396 : }
8397 : break;
8398 0 : case CFN_BUILT_IN_LOG10:
8399 0 : if (call_expr_nargs (_p0) == 1)
8400 : {
8401 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8402 0 : switch (TREE_CODE (_p1))
8403 : {
8404 0 : case REAL_CST:
8405 0 : {
8406 0 : {
8407 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8408 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8409 0 : if (res) return res;
8410 : }
8411 0 : break;
8412 : }
8413 : default:;
8414 : }
8415 : }
8416 : break;
8417 0 : case CFN_BUILT_IN_LOG2F:
8418 0 : if (call_expr_nargs (_p0) == 1)
8419 : {
8420 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8421 0 : switch (TREE_CODE (_p1))
8422 : {
8423 0 : case REAL_CST:
8424 0 : {
8425 0 : {
8426 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8427 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8428 0 : if (res) return res;
8429 : }
8430 0 : break;
8431 : }
8432 : default:;
8433 : }
8434 : }
8435 : break;
8436 0 : case CFN_BUILT_IN_LOG2L:
8437 0 : if (call_expr_nargs (_p0) == 1)
8438 : {
8439 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8440 0 : switch (TREE_CODE (_p1))
8441 : {
8442 0 : case REAL_CST:
8443 0 : {
8444 0 : {
8445 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8446 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8447 0 : if (res) return res;
8448 : }
8449 0 : break;
8450 : }
8451 : default:;
8452 : }
8453 : }
8454 : break;
8455 : default:;
8456 : }
8457 : break;
8458 : default:;
8459 : }
8460 : return NULL_TREE;
8461 : }
8462 :
8463 : tree
8464 4284 : generic_simplify_CEIL_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8465 : {
8466 4284 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8467 4284 : if (integer_zerop (_p0))
8468 : {
8469 0 : {
8470 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8471 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8472 0 : if (res) return res;
8473 : }
8474 : }
8475 4284 : if (integer_onep (_p1))
8476 : {
8477 0 : {
8478 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8479 0 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8480 0 : if (res) return res;
8481 : }
8482 : }
8483 4284 : if (integer_minus_onep (_p1))
8484 : {
8485 0 : {
8486 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8487 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8488 0 : if (res) return res;
8489 : }
8490 : }
8491 4284 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8492 : {
8493 0 : {
8494 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8495 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8496 0 : if (res) return res;
8497 : }
8498 : }
8499 4284 : switch (TREE_CODE (_p0))
8500 : {
8501 0 : case CEIL_MOD_EXPR:
8502 0 : {
8503 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8504 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8505 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8506 : {
8507 0 : {
8508 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8509 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8510 0 : if (res) return res;
8511 : }
8512 : }
8513 : break;
8514 : }
8515 0 : case MULT_EXPR:
8516 0 : {
8517 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8518 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8519 0 : switch (TREE_CODE (_q21))
8520 : {
8521 0 : case INTEGER_CST:
8522 0 : {
8523 0 : switch (TREE_CODE (_p1))
8524 : {
8525 0 : case INTEGER_CST:
8526 0 : {
8527 0 : {
8528 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8529 0 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8530 0 : if (res) return res;
8531 : }
8532 0 : break;
8533 : }
8534 : default:;
8535 : }
8536 : break;
8537 : }
8538 : default:;
8539 : }
8540 : break;
8541 : }
8542 0 : case VEC_COND_EXPR:
8543 0 : {
8544 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8545 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8546 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8547 0 : switch (TREE_CODE (_p1))
8548 : {
8549 0 : case VEC_COND_EXPR:
8550 0 : {
8551 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8552 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8553 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8554 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8555 : {
8556 0 : {
8557 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8558 0 : if (VECTOR_TYPE_P (type)
8559 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8560 : || types_match (type, TREE_TYPE (captures[2]))
8561 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8562 : || (optimize_vectors_before_lowering_p ()
8563 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8564 : )
8565 : {
8566 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1657;
8567 0 : {
8568 0 : tree res_op0;
8569 0 : res_op0 = captures[1];
8570 0 : tree res_op1;
8571 0 : {
8572 0 : tree _o1[2], _r1;
8573 0 : _o1[0] = captures[2];
8574 0 : _o1[1] = captures[5];
8575 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8576 0 : if (EXPR_P (_r1))
8577 0 : goto next_after_fail1657;
8578 0 : res_op1 = _r1;
8579 : }
8580 0 : tree res_op2;
8581 0 : {
8582 0 : tree _o1[2], _r1;
8583 0 : _o1[0] = captures[3];
8584 0 : _o1[1] = captures[6];
8585 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8586 0 : if (EXPR_P (_r1))
8587 0 : goto next_after_fail1657;
8588 0 : res_op2 = _r1;
8589 : }
8590 0 : tree _r;
8591 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8592 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8593 0 : return _r;
8594 : }
8595 0 : next_after_fail1657:;
8596 : }
8597 : }
8598 : }
8599 : break;
8600 : }
8601 0 : default:;
8602 : }
8603 0 : {
8604 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8605 0 : if (VECTOR_TYPE_P (type)
8606 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8607 : || types_match (type, TREE_TYPE (captures[2]))
8608 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8609 : || (optimize_vectors_before_lowering_p ()
8610 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8611 : )
8612 : {
8613 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1658;
8614 0 : {
8615 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1658;
8616 0 : tree res_op0;
8617 0 : res_op0 = captures[1];
8618 0 : tree res_op1;
8619 0 : {
8620 0 : tree _o1[2], _r1;
8621 0 : _o1[0] = captures[2];
8622 0 : _o1[1] = unshare_expr (captures[4]);
8623 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8624 0 : if (EXPR_P (_r1))
8625 0 : goto next_after_fail1658;
8626 0 : res_op1 = _r1;
8627 : }
8628 0 : tree res_op2;
8629 0 : {
8630 0 : tree _o1[2], _r1;
8631 0 : _o1[0] = captures[3];
8632 0 : _o1[1] = captures[4];
8633 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8634 0 : if (EXPR_P (_r1))
8635 0 : goto next_after_fail1658;
8636 0 : res_op2 = _r1;
8637 : }
8638 0 : tree _r;
8639 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8640 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
8641 0 : return _r;
8642 : }
8643 0 : next_after_fail1658:;
8644 : }
8645 : }
8646 0 : break;
8647 : }
8648 4284 : default:;
8649 : }
8650 4284 : switch (TREE_CODE (_p1))
8651 : {
8652 0 : case VEC_COND_EXPR:
8653 0 : {
8654 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8655 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8656 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8657 0 : {
8658 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8659 0 : if (VECTOR_TYPE_P (type)
8660 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8661 : || types_match (type, TREE_TYPE (captures[3]))
8662 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8663 : || (optimize_vectors_before_lowering_p ()
8664 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8665 : )
8666 : {
8667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1659;
8668 0 : {
8669 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1659;
8670 0 : tree res_op0;
8671 0 : res_op0 = captures[2];
8672 0 : tree res_op1;
8673 0 : {
8674 0 : tree _o1[2], _r1;
8675 0 : _o1[0] = unshare_expr (captures[0]);
8676 0 : _o1[1] = captures[3];
8677 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8678 0 : if (EXPR_P (_r1))
8679 0 : goto next_after_fail1659;
8680 0 : res_op1 = _r1;
8681 : }
8682 0 : tree res_op2;
8683 0 : {
8684 0 : tree _o1[2], _r1;
8685 0 : _o1[0] = captures[0];
8686 0 : _o1[1] = captures[4];
8687 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8688 0 : if (EXPR_P (_r1))
8689 0 : goto next_after_fail1659;
8690 0 : res_op2 = _r1;
8691 : }
8692 0 : tree _r;
8693 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
8695 0 : return _r;
8696 : }
8697 0 : next_after_fail1659:;
8698 : }
8699 : }
8700 0 : break;
8701 : }
8702 : default:;
8703 : }
8704 : return NULL_TREE;
8705 : }
8706 :
8707 : tree
8708 0 : generic_simplify_ROUND_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8709 : {
8710 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8711 0 : if (integer_zerop (_p0))
8712 : {
8713 0 : {
8714 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8715 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8716 0 : if (res) return res;
8717 : }
8718 : }
8719 0 : if (integer_onep (_p1))
8720 : {
8721 0 : {
8722 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8723 0 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8724 0 : if (res) return res;
8725 : }
8726 : }
8727 0 : if (integer_minus_onep (_p1))
8728 : {
8729 0 : {
8730 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8731 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8732 0 : if (res) return res;
8733 : }
8734 : }
8735 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8736 : {
8737 0 : {
8738 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8739 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8740 0 : if (res) return res;
8741 : }
8742 : }
8743 0 : switch (TREE_CODE (_p0))
8744 : {
8745 0 : case ROUND_MOD_EXPR:
8746 0 : {
8747 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8748 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8749 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8750 : {
8751 0 : {
8752 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8753 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8754 0 : if (res) return res;
8755 : }
8756 : }
8757 : break;
8758 : }
8759 0 : case MULT_EXPR:
8760 0 : {
8761 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8762 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8763 0 : switch (TREE_CODE (_q21))
8764 : {
8765 0 : case INTEGER_CST:
8766 0 : {
8767 0 : switch (TREE_CODE (_p1))
8768 : {
8769 0 : case INTEGER_CST:
8770 0 : {
8771 0 : {
8772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8773 0 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8774 0 : if (res) return res;
8775 : }
8776 0 : break;
8777 : }
8778 : default:;
8779 : }
8780 : break;
8781 : }
8782 : default:;
8783 : }
8784 : break;
8785 : }
8786 0 : case VEC_COND_EXPR:
8787 0 : {
8788 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8789 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8790 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8791 0 : switch (TREE_CODE (_p1))
8792 : {
8793 0 : case VEC_COND_EXPR:
8794 0 : {
8795 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8796 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8797 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8798 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8799 : {
8800 0 : {
8801 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8802 0 : if (VECTOR_TYPE_P (type)
8803 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8804 : || types_match (type, TREE_TYPE (captures[2]))
8805 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8806 : || (optimize_vectors_before_lowering_p ()
8807 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8808 : )
8809 : {
8810 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1660;
8811 0 : {
8812 0 : tree res_op0;
8813 0 : res_op0 = captures[1];
8814 0 : tree res_op1;
8815 0 : {
8816 0 : tree _o1[2], _r1;
8817 0 : _o1[0] = captures[2];
8818 0 : _o1[1] = captures[5];
8819 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8820 0 : if (EXPR_P (_r1))
8821 0 : goto next_after_fail1660;
8822 0 : res_op1 = _r1;
8823 : }
8824 0 : tree res_op2;
8825 0 : {
8826 0 : tree _o1[2], _r1;
8827 0 : _o1[0] = captures[3];
8828 0 : _o1[1] = captures[6];
8829 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8830 0 : if (EXPR_P (_r1))
8831 0 : goto next_after_fail1660;
8832 0 : res_op2 = _r1;
8833 : }
8834 0 : tree _r;
8835 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8836 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8837 0 : return _r;
8838 : }
8839 0 : next_after_fail1660:;
8840 : }
8841 : }
8842 : }
8843 : break;
8844 : }
8845 0 : default:;
8846 : }
8847 0 : {
8848 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8849 0 : if (VECTOR_TYPE_P (type)
8850 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8851 : || types_match (type, TREE_TYPE (captures[2]))
8852 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8853 : || (optimize_vectors_before_lowering_p ()
8854 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8855 : )
8856 : {
8857 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1661;
8858 0 : {
8859 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1661;
8860 0 : tree res_op0;
8861 0 : res_op0 = captures[1];
8862 0 : tree res_op1;
8863 0 : {
8864 0 : tree _o1[2], _r1;
8865 0 : _o1[0] = captures[2];
8866 0 : _o1[1] = unshare_expr (captures[4]);
8867 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8868 0 : if (EXPR_P (_r1))
8869 0 : goto next_after_fail1661;
8870 0 : res_op1 = _r1;
8871 : }
8872 0 : tree res_op2;
8873 0 : {
8874 0 : tree _o1[2], _r1;
8875 0 : _o1[0] = captures[3];
8876 0 : _o1[1] = captures[4];
8877 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8878 0 : if (EXPR_P (_r1))
8879 0 : goto next_after_fail1661;
8880 0 : res_op2 = _r1;
8881 : }
8882 0 : tree _r;
8883 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8884 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
8885 0 : return _r;
8886 : }
8887 0 : next_after_fail1661:;
8888 : }
8889 : }
8890 0 : break;
8891 : }
8892 0 : default:;
8893 : }
8894 0 : switch (TREE_CODE (_p1))
8895 : {
8896 0 : case VEC_COND_EXPR:
8897 0 : {
8898 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8899 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8900 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8901 0 : {
8902 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8903 0 : if (VECTOR_TYPE_P (type)
8904 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8905 : || types_match (type, TREE_TYPE (captures[3]))
8906 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8907 : || (optimize_vectors_before_lowering_p ()
8908 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8909 : )
8910 : {
8911 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1662;
8912 0 : {
8913 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1662;
8914 0 : tree res_op0;
8915 0 : res_op0 = captures[2];
8916 0 : tree res_op1;
8917 0 : {
8918 0 : tree _o1[2], _r1;
8919 0 : _o1[0] = unshare_expr (captures[0]);
8920 0 : _o1[1] = captures[3];
8921 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8922 0 : if (EXPR_P (_r1))
8923 0 : goto next_after_fail1662;
8924 0 : res_op1 = _r1;
8925 : }
8926 0 : tree res_op2;
8927 0 : {
8928 0 : tree _o1[2], _r1;
8929 0 : _o1[0] = captures[0];
8930 0 : _o1[1] = captures[4];
8931 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8932 0 : if (EXPR_P (_r1))
8933 0 : goto next_after_fail1662;
8934 0 : res_op2 = _r1;
8935 : }
8936 0 : tree _r;
8937 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8938 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
8939 0 : return _r;
8940 : }
8941 0 : next_after_fail1662:;
8942 : }
8943 : }
8944 0 : break;
8945 : }
8946 : default:;
8947 : }
8948 : return NULL_TREE;
8949 : }
8950 :
8951 : tree
8952 2123192 : generic_simplify_TRUNC_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8953 : {
8954 2123192 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8955 2123192 : if (integer_zerop (_p0))
8956 : {
8957 922 : {
8958 922 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8959 922 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8960 922 : if (res) return res;
8961 : }
8962 : }
8963 2122407 : if (integer_onep (_p1))
8964 : {
8965 217621 : {
8966 217621 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8967 217621 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8968 217621 : if (res) return res;
8969 : }
8970 : }
8971 1904786 : if (integer_minus_onep (_p1))
8972 : {
8973 529 : {
8974 529 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8975 529 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8976 529 : if (res) return res;
8977 : }
8978 : }
8979 1904766 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8980 : {
8981 230 : {
8982 230 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8983 230 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8984 230 : if (res) return res;
8985 : }
8986 : }
8987 1904673 : switch (TREE_CODE (_p0))
8988 : {
8989 107 : case TRUNC_MOD_EXPR:
8990 107 : {
8991 107 : tree _q20 = TREE_OPERAND (_p0, 0);
8992 107 : tree _q21 = TREE_OPERAND (_p0, 1);
8993 107 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8994 : {
8995 52 : {
8996 52 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8997 52 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8998 52 : if (res) return res;
8999 : }
9000 : }
9001 : break;
9002 : }
9003 7356 : case MULT_EXPR:
9004 7356 : {
9005 7356 : tree _q20 = TREE_OPERAND (_p0, 0);
9006 7356 : tree _q21 = TREE_OPERAND (_p0, 1);
9007 7356 : switch (TREE_CODE (_q21))
9008 : {
9009 7263 : case INTEGER_CST:
9010 7263 : {
9011 7263 : switch (TREE_CODE (_p1))
9012 : {
9013 7241 : case INTEGER_CST:
9014 7241 : {
9015 7241 : {
9016 7241 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9017 7241 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9018 7241 : if (res) return res;
9019 : }
9020 7241 : break;
9021 : }
9022 : default:;
9023 : }
9024 : break;
9025 : }
9026 : default:;
9027 : }
9028 : break;
9029 : }
9030 1904621 : default:;
9031 : }
9032 1904621 : switch (TREE_CODE (_p1))
9033 : {
9034 1623596 : case INTEGER_CST:
9035 1623596 : {
9036 1623596 : {
9037 1623596 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9038 1623596 : if (TYPE_SIGN (type) == SIGNED
9039 287244 : && !TREE_OVERFLOW (captures[1])
9040 1623600 : && wi::neg_p (wi::to_wide (captures[1]))
9041 313 : && !TYPE_OVERFLOW_TRAPS (type)
9042 1623909 : && !sign_bit_p (captures[1], captures[1])
9043 : )
9044 : {
9045 309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1663;
9046 309 : {
9047 309 : tree res_op0;
9048 309 : res_op0 = captures[0];
9049 309 : tree res_op1;
9050 309 : {
9051 309 : tree _o1[1], _r1;
9052 309 : _o1[0] = captures[1];
9053 309 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
9054 309 : res_op1 = _r1;
9055 : }
9056 309 : tree _r;
9057 309 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
9058 309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
9059 309 : return _r;
9060 : }
9061 0 : next_after_fail1663:;
9062 : }
9063 : }
9064 1623287 : break;
9065 : }
9066 58721 : CASE_CONVERT:
9067 58721 : {
9068 58721 : tree _q30 = TREE_OPERAND (_p1, 0);
9069 58721 : switch (TREE_CODE (_q30))
9070 : {
9071 0 : case NEGATE_EXPR:
9072 0 : {
9073 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9074 0 : {
9075 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
9076 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures);
9077 0 : if (res) return res;
9078 : }
9079 0 : break;
9080 : }
9081 58721 : default:;
9082 : }
9083 58721 : {
9084 58721 : tree _q30_pops[1];
9085 58721 : if (tree_power_of_two_cand (_q30, _q30_pops))
9086 : {
9087 7 : tree _q40 = _q30_pops[0];
9088 7 : {
9089 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
9090 7 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9091 7 : if (res) return res;
9092 : }
9093 : }
9094 : }
9095 58714 : break;
9096 : }
9097 94 : case NEGATE_EXPR:
9098 94 : {
9099 94 : tree _q30 = TREE_OPERAND (_p1, 0);
9100 94 : {
9101 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9102 94 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures);
9103 94 : if (res) return res;
9104 : }
9105 94 : break;
9106 : }
9107 1904305 : default:;
9108 : }
9109 1904305 : {
9110 1904305 : tree _p1_pops[1];
9111 1904305 : if (tree_power_of_two_cand (_p1, _p1_pops))
9112 : {
9113 1623296 : tree _q30 = _p1_pops[0];
9114 1623296 : {
9115 1623296 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9116 1623296 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9117 1623296 : if (res) return res;
9118 : }
9119 : }
9120 : }
9121 922883 : switch (TREE_CODE (_p0))
9122 : {
9123 0 : case VEC_COND_EXPR:
9124 0 : {
9125 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9126 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9127 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9128 0 : switch (TREE_CODE (_p1))
9129 : {
9130 0 : case VEC_COND_EXPR:
9131 0 : {
9132 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9133 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9134 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9135 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9136 : {
9137 0 : {
9138 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9139 0 : if (VECTOR_TYPE_P (type)
9140 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9141 : || types_match (type, TREE_TYPE (captures[2]))
9142 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9143 : || (optimize_vectors_before_lowering_p ()
9144 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9145 : )
9146 : {
9147 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1664;
9148 0 : {
9149 0 : tree res_op0;
9150 0 : res_op0 = captures[1];
9151 0 : tree res_op1;
9152 0 : {
9153 0 : tree _o1[2], _r1;
9154 0 : _o1[0] = captures[2];
9155 0 : _o1[1] = captures[5];
9156 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9157 0 : if (EXPR_P (_r1))
9158 0 : goto next_after_fail1664;
9159 0 : res_op1 = _r1;
9160 : }
9161 0 : tree res_op2;
9162 0 : {
9163 0 : tree _o1[2], _r1;
9164 0 : _o1[0] = captures[3];
9165 0 : _o1[1] = captures[6];
9166 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9167 0 : if (EXPR_P (_r1))
9168 0 : goto next_after_fail1664;
9169 0 : res_op2 = _r1;
9170 : }
9171 0 : tree _r;
9172 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9173 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
9174 0 : return _r;
9175 : }
9176 0 : next_after_fail1664:;
9177 : }
9178 : }
9179 : }
9180 : break;
9181 : }
9182 0 : default:;
9183 : }
9184 0 : {
9185 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9186 0 : if (VECTOR_TYPE_P (type)
9187 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9188 : || types_match (type, TREE_TYPE (captures[2]))
9189 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9190 : || (optimize_vectors_before_lowering_p ()
9191 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9192 : )
9193 : {
9194 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1665;
9195 0 : {
9196 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1665;
9197 0 : tree res_op0;
9198 0 : res_op0 = captures[1];
9199 0 : tree res_op1;
9200 0 : {
9201 0 : tree _o1[2], _r1;
9202 0 : _o1[0] = captures[2];
9203 0 : _o1[1] = unshare_expr (captures[4]);
9204 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9205 0 : if (EXPR_P (_r1))
9206 0 : goto next_after_fail1665;
9207 0 : res_op1 = _r1;
9208 : }
9209 0 : tree res_op2;
9210 0 : {
9211 0 : tree _o1[2], _r1;
9212 0 : _o1[0] = captures[3];
9213 0 : _o1[1] = captures[4];
9214 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9215 0 : if (EXPR_P (_r1))
9216 0 : goto next_after_fail1665;
9217 0 : res_op2 = _r1;
9218 : }
9219 0 : tree _r;
9220 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9221 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
9222 0 : return _r;
9223 : }
9224 0 : next_after_fail1665:;
9225 : }
9226 : }
9227 0 : break;
9228 : }
9229 922883 : default:;
9230 : }
9231 922883 : switch (TREE_CODE (_p1))
9232 : {
9233 7 : case VEC_COND_EXPR:
9234 7 : {
9235 7 : tree _q30 = TREE_OPERAND (_p1, 0);
9236 7 : tree _q31 = TREE_OPERAND (_p1, 1);
9237 7 : tree _q32 = TREE_OPERAND (_p1, 2);
9238 7 : {
9239 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9240 7 : if (VECTOR_TYPE_P (type)
9241 7 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9242 : || types_match (type, TREE_TYPE (captures[3]))
9243 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9244 : || (optimize_vectors_before_lowering_p ()
9245 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9246 : )
9247 : {
9248 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1666;
9249 7 : {
9250 7 : if (! tree_invariant_p (captures[0])) goto next_after_fail1666;
9251 0 : tree res_op0;
9252 0 : res_op0 = captures[2];
9253 0 : tree res_op1;
9254 0 : {
9255 0 : tree _o1[2], _r1;
9256 0 : _o1[0] = unshare_expr (captures[0]);
9257 0 : _o1[1] = captures[3];
9258 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9259 0 : if (EXPR_P (_r1))
9260 0 : goto next_after_fail1666;
9261 0 : res_op1 = _r1;
9262 : }
9263 0 : tree res_op2;
9264 0 : {
9265 0 : tree _o1[2], _r1;
9266 0 : _o1[0] = captures[0];
9267 0 : _o1[1] = captures[4];
9268 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9269 0 : if (EXPR_P (_r1))
9270 0 : goto next_after_fail1666;
9271 0 : res_op2 = _r1;
9272 : }
9273 0 : tree _r;
9274 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9275 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
9276 0 : return _r;
9277 : }
9278 7 : next_after_fail1666:;
9279 : }
9280 : }
9281 7 : break;
9282 : }
9283 : default:;
9284 : }
9285 : return NULL_TREE;
9286 : }
9287 :
9288 : tree
9289 1028800 : generic_simplify_RSHIFT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
9290 : {
9291 1028800 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9292 1028800 : switch (TREE_CODE (_p1))
9293 : {
9294 135 : case TRUNC_MOD_EXPR:
9295 135 : {
9296 135 : tree _q30 = TREE_OPERAND (_p1, 0);
9297 135 : tree _q31 = TREE_OPERAND (_p1, 1);
9298 135 : {
9299 135 : tree _q31_pops[1];
9300 135 : if (tree_power_of_two_cand (_q31, _q31_pops))
9301 : {
9302 127 : tree _q50 = _q31_pops[0];
9303 127 : {
9304 127 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9305 127 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, TRUNC_MOD_EXPR);
9306 127 : if (res) return res;
9307 : }
9308 : }
9309 : }
9310 14 : break;
9311 : }
9312 0 : case FLOOR_MOD_EXPR:
9313 0 : {
9314 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9315 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9316 0 : {
9317 0 : tree _q31_pops[1];
9318 0 : if (tree_power_of_two_cand (_q31, _q31_pops))
9319 : {
9320 0 : tree _q50 = _q31_pops[0];
9321 0 : {
9322 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9323 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, FLOOR_MOD_EXPR);
9324 0 : if (res) return res;
9325 : }
9326 : }
9327 : }
9328 0 : break;
9329 : }
9330 1028679 : default:;
9331 : }
9332 1028679 : if (uniform_integer_cst_p (_p1))
9333 : {
9334 823984 : {
9335 823984 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9336 823984 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9337 823984 : if (res) return res;
9338 : }
9339 : }
9340 1027922 : switch (TREE_CODE (_p0))
9341 : {
9342 58 : case NEGATE_EXPR:
9343 58 : {
9344 58 : tree _q20 = TREE_OPERAND (_p0, 0);
9345 58 : switch (TREE_CODE (_p1))
9346 : {
9347 57 : case INTEGER_CST:
9348 57 : {
9349 57 : {
9350 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9351 57 : if (!TYPE_UNSIGNED (type)
9352 57 : && TYPE_OVERFLOW_UNDEFINED (type)
9353 : )
9354 : {
9355 32 : {
9356 32 : tree stype = TREE_TYPE (captures[2]);
9357 32 : tree bt = truth_type_for (type);
9358 32 : tree zeros = build_zero_cst (type);
9359 32 : tree INTEGER_CST = NULL_TREE;
9360 32 : if (INTEGRAL_TYPE_P (type)
9361 : && canonicalize_math_after_vectorization_p ()
9362 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9363 : )
9364 : {
9365 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1675;
9366 : {
9367 : tree res_op0;
9368 : {
9369 : tree _o1[1], _r1;
9370 : {
9371 : tree _o2[2], _r2;
9372 : _o2[0] = captures[1];
9373 : _o2[1] = zeros;
9374 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9375 : _o1[0] = _r2;
9376 : }
9377 : if (TREE_TYPE (_o1[0]) != type)
9378 : {
9379 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9380 : }
9381 : else
9382 : _r1 = _o1[0];
9383 : res_op0 = _r1;
9384 : }
9385 : tree _r;
9386 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9387 : if (TREE_SIDE_EFFECTS (captures[2]))
9388 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9389 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
9390 : return _r;
9391 : }
9392 : next_after_fail1675:;
9393 : }
9394 : else
9395 : {
9396 0 : if (VECTOR_INTEGER_TYPE_P (type)
9397 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9398 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9399 0 : && (INTEGER_CST = uniform_integer_cst_p (captures[2])) != NULL
9400 32 : && wi::eq_p (wi::to_wide (INTEGER_CST), element_precision (type) - 1)
9401 : )
9402 : {
9403 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1676;
9404 0 : {
9405 0 : tree res_op0;
9406 0 : {
9407 0 : tree _o1[2], _r1;
9408 0 : _o1[0] = captures[1];
9409 0 : _o1[1] = zeros;
9410 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9411 0 : res_op0 = _r1;
9412 : }
9413 0 : tree _r;
9414 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9415 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9416 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9417 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
9418 0 : return _r;
9419 : }
9420 0 : next_after_fail1676:;
9421 : }
9422 : }
9423 : }
9424 : }
9425 : }
9426 57 : break;
9427 : }
9428 0 : case VECTOR_CST:
9429 0 : {
9430 0 : {
9431 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9432 0 : if (!TYPE_UNSIGNED (type)
9433 0 : && TYPE_OVERFLOW_UNDEFINED (type)
9434 : )
9435 : {
9436 0 : {
9437 0 : tree stype = TREE_TYPE (captures[2]);
9438 0 : tree bt = truth_type_for (type);
9439 0 : tree zeros = build_zero_cst (type);
9440 0 : tree VECTOR_CST = NULL_TREE;
9441 0 : if (INTEGRAL_TYPE_P (type)
9442 : && canonicalize_math_after_vectorization_p ()
9443 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9444 : )
9445 : {
9446 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1677;
9447 : {
9448 : tree res_op0;
9449 : {
9450 : tree _o1[1], _r1;
9451 : {
9452 : tree _o2[2], _r2;
9453 : _o2[0] = captures[1];
9454 : _o2[1] = zeros;
9455 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9456 : _o1[0] = _r2;
9457 : }
9458 : if (TREE_TYPE (_o1[0]) != type)
9459 : {
9460 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9461 : }
9462 : else
9463 : _r1 = _o1[0];
9464 : res_op0 = _r1;
9465 : }
9466 : tree _r;
9467 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9468 : if (TREE_SIDE_EFFECTS (captures[2]))
9469 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9470 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
9471 : return _r;
9472 : }
9473 : next_after_fail1677:;
9474 : }
9475 : else
9476 : {
9477 0 : if (VECTOR_INTEGER_TYPE_P (type)
9478 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9479 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9480 0 : && (VECTOR_CST = uniform_integer_cst_p (captures[2])) != NULL
9481 0 : && wi::eq_p (wi::to_wide (VECTOR_CST), element_precision (type) - 1)
9482 : )
9483 : {
9484 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1678;
9485 0 : {
9486 0 : tree res_op0;
9487 0 : {
9488 0 : tree _o1[2], _r1;
9489 0 : _o1[0] = captures[1];
9490 0 : _o1[1] = zeros;
9491 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9492 0 : res_op0 = _r1;
9493 : }
9494 0 : tree _r;
9495 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9496 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9497 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9498 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
9499 0 : return _r;
9500 : }
9501 0 : next_after_fail1678:;
9502 : }
9503 : }
9504 : }
9505 : }
9506 : }
9507 0 : break;
9508 : }
9509 : default:;
9510 : }
9511 : break;
9512 : }
9513 441 : case LSHIFT_EXPR:
9514 441 : {
9515 441 : tree _q20 = TREE_OPERAND (_p0, 0);
9516 441 : tree _q21 = TREE_OPERAND (_p0, 1);
9517 441 : switch (TREE_CODE (_q21))
9518 : {
9519 362 : case INTEGER_CST:
9520 362 : {
9521 362 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
9522 : {
9523 67 : {
9524 67 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
9525 67 : tree res = generic_simplify_430 (loc, type, _p0, _p1, captures);
9526 67 : if (res) return res;
9527 : }
9528 : }
9529 : break;
9530 : }
9531 : default:;
9532 : }
9533 : break;
9534 : }
9535 1027895 : default:;
9536 : }
9537 1027895 : {
9538 1027895 : tree _p0_pops[1];
9539 1027895 : if (tree_nop_convert (_p0, _p0_pops))
9540 : {
9541 171851 : tree _q20 = _p0_pops[0];
9542 171851 : switch (TREE_CODE (_q20))
9543 : {
9544 20 : case LSHIFT_EXPR:
9545 20 : {
9546 20 : tree _q30 = TREE_OPERAND (_q20, 0);
9547 20 : tree _q31 = TREE_OPERAND (_q20, 1);
9548 20 : switch (TREE_CODE (_q31))
9549 : {
9550 0 : case INTEGER_CST:
9551 0 : {
9552 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
9553 : {
9554 0 : {
9555 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p1, _q31 };
9556 0 : tree res = generic_simplify_430 (loc, type, _p0, _p1, captures);
9557 0 : if (res) return res;
9558 : }
9559 : }
9560 : break;
9561 : }
9562 : default:;
9563 : }
9564 : break;
9565 : }
9566 : default:;
9567 : }
9568 : }
9569 : }
9570 1027895 : if (integer_all_onesp (_p0))
9571 : {
9572 11738 : {
9573 11738 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9574 11738 : if (!TYPE_UNSIGNED (type)
9575 : )
9576 : {
9577 119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1679;
9578 119 : {
9579 119 : tree _r;
9580 119 : _r = captures[0];
9581 119 : if (TREE_SIDE_EFFECTS (captures[1]))
9582 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9583 119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1017, __FILE__, __LINE__, true);
9584 119 : return _r;
9585 : }
9586 0 : next_after_fail1679:;
9587 : }
9588 : }
9589 : }
9590 1027776 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9591 : {
9592 25 : {
9593 25 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9594 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1680;
9595 25 : {
9596 25 : tree _r;
9597 25 : _r = build_zero_cst (type);
9598 25 : if (TREE_SIDE_EFFECTS (captures[0]))
9599 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
9600 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1018, __FILE__, __LINE__, true);
9601 25 : return _r;
9602 : }
9603 0 : next_after_fail1680:;
9604 : }
9605 : }
9606 1027751 : if (integer_zerop (_p1))
9607 : {
9608 1301 : {
9609 1301 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9610 1301 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9611 1301 : if (res) return res;
9612 : }
9613 : }
9614 1026450 : if (integer_zerop (_p0))
9615 : {
9616 152 : {
9617 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9618 152 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9619 152 : if (res) return res;
9620 : }
9621 : }
9622 1026298 : switch (TREE_CODE (_p1))
9623 : {
9624 0 : case VECTOR_CST:
9625 0 : {
9626 0 : {
9627 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9628 0 : tree res = generic_simplify_425 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9629 0 : if (res) return res;
9630 : }
9631 0 : break;
9632 : }
9633 0 : case CONSTRUCTOR:
9634 0 : {
9635 0 : {
9636 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9637 0 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9638 0 : if (res) return res;
9639 : }
9640 0 : break;
9641 : }
9642 1026298 : default:;
9643 : }
9644 1026298 : switch (TREE_CODE (_p0))
9645 : {
9646 118 : case RSHIFT_EXPR:
9647 118 : {
9648 118 : tree _q20 = TREE_OPERAND (_p0, 0);
9649 118 : tree _q21 = TREE_OPERAND (_p0, 1);
9650 118 : switch (TREE_CODE (_q21))
9651 : {
9652 73 : case INTEGER_CST:
9653 73 : {
9654 73 : switch (TREE_CODE (_p1))
9655 : {
9656 47 : case INTEGER_CST:
9657 47 : {
9658 47 : {
9659 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9660 47 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9661 47 : if (res) return res;
9662 : }
9663 0 : break;
9664 : }
9665 : default:;
9666 : }
9667 : break;
9668 : }
9669 : default:;
9670 : }
9671 : break;
9672 : }
9673 196283 : CASE_CONVERT:
9674 196283 : {
9675 196283 : tree _q20 = TREE_OPERAND (_p0, 0);
9676 196283 : switch (TREE_CODE (_q20))
9677 : {
9678 6 : case BIT_AND_EXPR:
9679 6 : {
9680 6 : tree _q30 = TREE_OPERAND (_q20, 0);
9681 6 : tree _q31 = TREE_OPERAND (_q20, 1);
9682 6 : switch (TREE_CODE (_q31))
9683 : {
9684 0 : case INTEGER_CST:
9685 0 : {
9686 0 : switch (TREE_CODE (_p1))
9687 : {
9688 0 : case INTEGER_CST:
9689 0 : {
9690 0 : {
9691 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9692 0 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9693 0 : if (res) return res;
9694 : }
9695 0 : break;
9696 : }
9697 : default:;
9698 : }
9699 : break;
9700 : }
9701 : default:;
9702 : }
9703 : break;
9704 : }
9705 14 : case BIT_XOR_EXPR:
9706 14 : {
9707 14 : tree _q30 = TREE_OPERAND (_q20, 0);
9708 14 : tree _q31 = TREE_OPERAND (_q20, 1);
9709 14 : switch (TREE_CODE (_q31))
9710 : {
9711 0 : case INTEGER_CST:
9712 0 : {
9713 0 : switch (TREE_CODE (_p1))
9714 : {
9715 0 : case INTEGER_CST:
9716 0 : {
9717 0 : {
9718 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9719 0 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9720 0 : if (res) return res;
9721 : }
9722 0 : break;
9723 : }
9724 : default:;
9725 : }
9726 : break;
9727 : }
9728 : default:;
9729 : }
9730 : break;
9731 : }
9732 43 : case BIT_IOR_EXPR:
9733 43 : {
9734 43 : tree _q30 = TREE_OPERAND (_q20, 0);
9735 43 : tree _q31 = TREE_OPERAND (_q20, 1);
9736 43 : switch (TREE_CODE (_q31))
9737 : {
9738 24 : case INTEGER_CST:
9739 24 : {
9740 24 : switch (TREE_CODE (_p1))
9741 : {
9742 7 : case INTEGER_CST:
9743 7 : {
9744 7 : {
9745 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9746 7 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9747 7 : if (res) return res;
9748 : }
9749 0 : break;
9750 : }
9751 : default:;
9752 : }
9753 : break;
9754 : }
9755 : default:;
9756 : }
9757 : break;
9758 : }
9759 203 : case CALL_EXPR:
9760 203 : switch (get_call_combined_fn (_q20))
9761 : {
9762 0 : case CFN_BSWAP:
9763 0 : if (call_expr_nargs (_q20) == 1)
9764 : {
9765 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9766 0 : switch (TREE_CODE (_p1))
9767 : {
9768 0 : case INTEGER_CST:
9769 0 : {
9770 0 : {
9771 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9772 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BSWAP);
9773 0 : if (res) return res;
9774 : }
9775 0 : break;
9776 : }
9777 : default:;
9778 : }
9779 : }
9780 : break;
9781 0 : case CFN_BUILT_IN_BSWAP128:
9782 0 : if (call_expr_nargs (_q20) == 1)
9783 : {
9784 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9785 0 : switch (TREE_CODE (_p1))
9786 : {
9787 0 : case INTEGER_CST:
9788 0 : {
9789 0 : {
9790 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9791 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
9792 0 : if (res) return res;
9793 : }
9794 0 : break;
9795 : }
9796 : default:;
9797 : }
9798 : }
9799 : break;
9800 8 : case CFN_BUILT_IN_BSWAP16:
9801 8 : if (call_expr_nargs (_q20) == 1)
9802 : {
9803 8 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9804 8 : switch (TREE_CODE (_p1))
9805 : {
9806 7 : case INTEGER_CST:
9807 7 : {
9808 7 : {
9809 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9810 7 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
9811 7 : if (res) return res;
9812 : }
9813 2 : break;
9814 : }
9815 : default:;
9816 : }
9817 : }
9818 : break;
9819 13 : case CFN_BUILT_IN_BSWAP32:
9820 13 : if (call_expr_nargs (_q20) == 1)
9821 : {
9822 13 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9823 13 : switch (TREE_CODE (_p1))
9824 : {
9825 13 : case INTEGER_CST:
9826 13 : {
9827 13 : {
9828 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9829 13 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
9830 13 : if (res) return res;
9831 : }
9832 9 : break;
9833 : }
9834 : default:;
9835 : }
9836 : }
9837 : break;
9838 18 : case CFN_BUILT_IN_BSWAP64:
9839 18 : if (call_expr_nargs (_q20) == 1)
9840 : {
9841 18 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9842 18 : switch (TREE_CODE (_p1))
9843 : {
9844 18 : case INTEGER_CST:
9845 18 : {
9846 18 : {
9847 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9848 18 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
9849 18 : if (res) return res;
9850 : }
9851 12 : break;
9852 : }
9853 : default:;
9854 : }
9855 : }
9856 : break;
9857 : default:;
9858 : }
9859 : break;
9860 : default:;
9861 : }
9862 : break;
9863 : }
9864 13912 : case BIT_AND_EXPR:
9865 13912 : {
9866 13912 : tree _q20 = TREE_OPERAND (_p0, 0);
9867 13912 : tree _q21 = TREE_OPERAND (_p0, 1);
9868 13912 : switch (TREE_CODE (_q21))
9869 : {
9870 13862 : case INTEGER_CST:
9871 13862 : {
9872 13862 : switch (TREE_CODE (_p1))
9873 : {
9874 13839 : case INTEGER_CST:
9875 13839 : {
9876 13839 : {
9877 13839 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9878 13839 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9879 13839 : if (res) return res;
9880 : }
9881 0 : break;
9882 : }
9883 : default:;
9884 : }
9885 : break;
9886 : }
9887 : default:;
9888 : }
9889 : break;
9890 : }
9891 240 : case BIT_XOR_EXPR:
9892 240 : {
9893 240 : tree _q20 = TREE_OPERAND (_p0, 0);
9894 240 : tree _q21 = TREE_OPERAND (_p0, 1);
9895 240 : switch (TREE_CODE (_q21))
9896 : {
9897 97 : case INTEGER_CST:
9898 97 : {
9899 97 : switch (TREE_CODE (_p1))
9900 : {
9901 97 : case INTEGER_CST:
9902 97 : {
9903 97 : {
9904 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9905 97 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9906 97 : if (res) return res;
9907 : }
9908 0 : break;
9909 : }
9910 : default:;
9911 : }
9912 : break;
9913 : }
9914 : default:;
9915 : }
9916 : break;
9917 : }
9918 55 : case BIT_IOR_EXPR:
9919 55 : {
9920 55 : tree _q20 = TREE_OPERAND (_p0, 0);
9921 55 : tree _q21 = TREE_OPERAND (_p0, 1);
9922 55 : switch (TREE_CODE (_q21))
9923 : {
9924 10 : case INTEGER_CST:
9925 10 : {
9926 10 : switch (TREE_CODE (_p1))
9927 : {
9928 8 : case INTEGER_CST:
9929 8 : {
9930 8 : {
9931 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9932 8 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9933 8 : if (res) return res;
9934 : }
9935 0 : break;
9936 : }
9937 : default:;
9938 : }
9939 : break;
9940 : }
9941 : default:;
9942 : }
9943 : break;
9944 : }
9945 0 : case VEC_COND_EXPR:
9946 0 : {
9947 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9948 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9949 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9950 0 : switch (TREE_CODE (_p1))
9951 : {
9952 0 : case VEC_COND_EXPR:
9953 0 : {
9954 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9955 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9956 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9957 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9958 : {
9959 0 : {
9960 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9961 0 : if (VECTOR_TYPE_P (type)
9962 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9963 : || types_match (type, TREE_TYPE (captures[2]))
9964 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9965 : || (optimize_vectors_before_lowering_p ()
9966 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9967 : )
9968 : {
9969 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1681;
9970 0 : {
9971 0 : tree res_op0;
9972 0 : res_op0 = captures[1];
9973 0 : tree res_op1;
9974 0 : {
9975 0 : tree _o1[2], _r1;
9976 0 : _o1[0] = captures[2];
9977 0 : _o1[1] = captures[5];
9978 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9979 0 : if (EXPR_P (_r1))
9980 0 : goto next_after_fail1681;
9981 0 : res_op1 = _r1;
9982 : }
9983 0 : tree res_op2;
9984 0 : {
9985 0 : tree _o1[2], _r1;
9986 0 : _o1[0] = captures[3];
9987 0 : _o1[1] = captures[6];
9988 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9989 0 : if (EXPR_P (_r1))
9990 0 : goto next_after_fail1681;
9991 0 : res_op2 = _r1;
9992 : }
9993 0 : tree _r;
9994 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9995 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
9996 0 : return _r;
9997 : }
9998 0 : next_after_fail1681:;
9999 : }
10000 : }
10001 : }
10002 : break;
10003 : }
10004 0 : default:;
10005 : }
10006 0 : {
10007 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10008 0 : if (VECTOR_TYPE_P (type)
10009 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
10010 : || types_match (type, TREE_TYPE (captures[2]))
10011 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10012 : || (optimize_vectors_before_lowering_p ()
10013 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10014 : )
10015 : {
10016 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1682;
10017 0 : {
10018 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1682;
10019 0 : tree res_op0;
10020 0 : res_op0 = captures[1];
10021 0 : tree res_op1;
10022 0 : {
10023 0 : tree _o1[2], _r1;
10024 0 : _o1[0] = captures[2];
10025 0 : _o1[1] = unshare_expr (captures[4]);
10026 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10027 0 : if (EXPR_P (_r1))
10028 0 : goto next_after_fail1682;
10029 0 : res_op1 = _r1;
10030 : }
10031 0 : tree res_op2;
10032 0 : {
10033 0 : tree _o1[2], _r1;
10034 0 : _o1[0] = captures[3];
10035 0 : _o1[1] = captures[4];
10036 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10037 0 : if (EXPR_P (_r1))
10038 0 : goto next_after_fail1682;
10039 0 : res_op2 = _r1;
10040 : }
10041 0 : tree _r;
10042 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10043 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
10044 0 : return _r;
10045 : }
10046 0 : next_after_fail1682:;
10047 : }
10048 : }
10049 0 : break;
10050 : }
10051 704 : case CALL_EXPR:
10052 704 : switch (get_call_combined_fn (_p0))
10053 : {
10054 0 : case CFN_BSWAP:
10055 0 : if (call_expr_nargs (_p0) == 1)
10056 : {
10057 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10058 0 : switch (TREE_CODE (_p1))
10059 : {
10060 0 : case INTEGER_CST:
10061 0 : {
10062 0 : {
10063 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10064 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BSWAP);
10065 0 : if (res) return res;
10066 : }
10067 0 : break;
10068 : }
10069 : default:;
10070 : }
10071 : }
10072 : break;
10073 0 : case CFN_BUILT_IN_BSWAP128:
10074 0 : if (call_expr_nargs (_p0) == 1)
10075 : {
10076 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10077 0 : switch (TREE_CODE (_p1))
10078 : {
10079 0 : case INTEGER_CST:
10080 0 : {
10081 0 : {
10082 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10083 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
10084 0 : if (res) return res;
10085 : }
10086 0 : break;
10087 : }
10088 : default:;
10089 : }
10090 : }
10091 : break;
10092 32 : case CFN_BUILT_IN_BSWAP16:
10093 32 : if (call_expr_nargs (_p0) == 1)
10094 : {
10095 32 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10096 32 : switch (TREE_CODE (_p1))
10097 : {
10098 32 : case INTEGER_CST:
10099 32 : {
10100 32 : {
10101 32 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10102 32 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
10103 32 : if (res) return res;
10104 : }
10105 9 : break;
10106 : }
10107 : default:;
10108 : }
10109 : }
10110 : break;
10111 101 : case CFN_BUILT_IN_BSWAP32:
10112 101 : if (call_expr_nargs (_p0) == 1)
10113 : {
10114 101 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10115 101 : switch (TREE_CODE (_p1))
10116 : {
10117 100 : case INTEGER_CST:
10118 100 : {
10119 100 : {
10120 100 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10121 100 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
10122 100 : if (res) return res;
10123 : }
10124 61 : break;
10125 : }
10126 : default:;
10127 : }
10128 : }
10129 : break;
10130 102 : case CFN_BUILT_IN_BSWAP64:
10131 102 : if (call_expr_nargs (_p0) == 1)
10132 : {
10133 102 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10134 102 : switch (TREE_CODE (_p1))
10135 : {
10136 101 : case INTEGER_CST:
10137 101 : {
10138 101 : {
10139 101 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10140 101 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
10141 101 : if (res) return res;
10142 : }
10143 75 : break;
10144 : }
10145 : default:;
10146 : }
10147 : }
10148 : break;
10149 : default:;
10150 : }
10151 : break;
10152 1012197 : default:;
10153 : }
10154 1012197 : if (integer_onep (_p0))
10155 : {
10156 524 : {
10157 524 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
10158 524 : if (INTEGRAL_TYPE_P (type)
10159 : )
10160 : {
10161 524 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1683;
10162 524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1683;
10163 524 : {
10164 524 : tree res_op0;
10165 524 : {
10166 524 : tree _o1[2], _r1;
10167 524 : _o1[0] = captures[0];
10168 524 : _o1[1] = build_zero_cst (TREE_TYPE (captures[0]));
10169 524 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
10170 524 : res_op0 = _r1;
10171 : }
10172 524 : tree _r;
10173 524 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
10174 524 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1019, __FILE__, __LINE__, true);
10175 524 : return _r;
10176 : }
10177 : next_after_fail1683:;
10178 : }
10179 : }
10180 : }
10181 1011673 : switch (TREE_CODE (_p1))
10182 : {
10183 11 : case VEC_COND_EXPR:
10184 11 : {
10185 11 : tree _q30 = TREE_OPERAND (_p1, 0);
10186 11 : tree _q31 = TREE_OPERAND (_p1, 1);
10187 11 : tree _q32 = TREE_OPERAND (_p1, 2);
10188 11 : {
10189 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10190 11 : if (VECTOR_TYPE_P (type)
10191 11 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
10192 : || types_match (type, TREE_TYPE (captures[3]))
10193 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10194 : || (optimize_vectors_before_lowering_p ()
10195 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10196 : )
10197 : {
10198 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1684;
10199 11 : {
10200 11 : if (! tree_invariant_p (captures[0])) goto next_after_fail1684;
10201 0 : tree res_op0;
10202 0 : res_op0 = captures[2];
10203 0 : tree res_op1;
10204 0 : {
10205 0 : tree _o1[2], _r1;
10206 0 : _o1[0] = unshare_expr (captures[0]);
10207 0 : _o1[1] = captures[3];
10208 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10209 0 : if (EXPR_P (_r1))
10210 0 : goto next_after_fail1684;
10211 0 : res_op1 = _r1;
10212 : }
10213 0 : tree res_op2;
10214 0 : {
10215 0 : tree _o1[2], _r1;
10216 0 : _o1[0] = captures[0];
10217 0 : _o1[1] = captures[4];
10218 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10219 0 : if (EXPR_P (_r1))
10220 0 : goto next_after_fail1684;
10221 0 : res_op2 = _r1;
10222 : }
10223 0 : tree _r;
10224 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10225 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
10226 0 : return _r;
10227 : }
10228 11 : next_after_fail1684:;
10229 : }
10230 : }
10231 11 : break;
10232 : }
10233 1011673 : default:;
10234 : }
10235 1011673 : switch (TREE_CODE (_p0))
10236 : {
10237 0 : case VEC_PERM_EXPR:
10238 0 : {
10239 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10240 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10241 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10242 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
10243 : {
10244 0 : switch (TREE_CODE (_p1))
10245 : {
10246 0 : case VEC_PERM_EXPR:
10247 0 : {
10248 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10249 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10250 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10251 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
10252 : {
10253 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
10254 : {
10255 0 : {
10256 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
10257 0 : if (VECTOR_INTEGER_TYPE_P (type)
10258 : )
10259 : {
10260 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1685;
10261 0 : {
10262 0 : tree res_op0;
10263 0 : {
10264 0 : tree _o1[2], _r1;
10265 0 : _o1[0] = captures[0];
10266 0 : _o1[1] = captures[2];
10267 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10268 0 : captures[3] = _r1;
10269 : }
10270 0 : res_op0 = unshare_expr (captures[3]);
10271 0 : tree res_op1;
10272 0 : res_op1 = captures[3];
10273 0 : tree res_op2;
10274 0 : res_op2 = captures[1];
10275 0 : tree _r;
10276 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
10277 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
10278 0 : return _r;
10279 : }
10280 0 : next_after_fail1685:;
10281 : }
10282 : }
10283 : }
10284 : }
10285 : break;
10286 : }
10287 : default:;
10288 : }
10289 : }
10290 : break;
10291 : }
10292 : default:;
10293 : }
10294 : return NULL_TREE;
10295 : }
10296 :
10297 : tree
10298 82452 : generic_simplify_MIN_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10299 : {
10300 82452 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10301 82452 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10302 : {
10303 0 : {
10304 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10305 0 : tree res = generic_simplify_524 (loc, type, _p0, _p1, captures, MIN_EXPR);
10306 0 : if (res) return res;
10307 : }
10308 : }
10309 82452 : switch (TREE_CODE (_p0))
10310 : {
10311 46 : case MIN_EXPR:
10312 46 : {
10313 46 : tree _q20 = TREE_OPERAND (_p0, 0);
10314 46 : tree _q21 = TREE_OPERAND (_p0, 1);
10315 46 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10316 : {
10317 0 : {
10318 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10319 0 : tree res = generic_simplify_525 (loc, type, _p0, _p1, captures, MIN_EXPR);
10320 0 : if (res) return res;
10321 : }
10322 : }
10323 46 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10324 : {
10325 0 : {
10326 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10327 0 : tree res = generic_simplify_525 (loc, type, _p0, _p1, captures, MIN_EXPR);
10328 0 : if (res) return res;
10329 : }
10330 : }
10331 : break;
10332 : }
10333 82452 : default:;
10334 : }
10335 82452 : switch (TREE_CODE (_p1))
10336 : {
10337 0 : case MIN_EXPR:
10338 0 : {
10339 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10340 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10341 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10342 : {
10343 0 : {
10344 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
10345 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MIN_EXPR);
10346 0 : if (res) return res;
10347 : }
10348 : }
10349 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10350 : {
10351 0 : {
10352 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
10353 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MIN_EXPR);
10354 0 : if (res) return res;
10355 : }
10356 : }
10357 : break;
10358 : }
10359 82452 : default:;
10360 : }
10361 82452 : switch (TREE_CODE (_p0))
10362 : {
10363 4 : case MAX_EXPR:
10364 4 : {
10365 4 : tree _q20 = TREE_OPERAND (_p0, 0);
10366 4 : tree _q21 = TREE_OPERAND (_p0, 1);
10367 4 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10368 : {
10369 3 : {
10370 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10371 3 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures);
10372 3 : if (res) return res;
10373 : }
10374 : }
10375 1 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10376 : {
10377 1 : {
10378 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10379 1 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures);
10380 1 : if (res) return res;
10381 : }
10382 : }
10383 : break;
10384 : }
10385 82448 : default:;
10386 : }
10387 82448 : switch (TREE_CODE (_p1))
10388 : {
10389 0 : case MAX_EXPR:
10390 0 : {
10391 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10392 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10393 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10394 : {
10395 0 : {
10396 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10397 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures);
10398 0 : if (res) return res;
10399 : }
10400 : }
10401 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10402 : {
10403 0 : {
10404 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10405 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures);
10406 0 : if (res) return res;
10407 : }
10408 : }
10409 : break;
10410 : }
10411 0 : case NEGATE_EXPR:
10412 0 : {
10413 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10414 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10415 : {
10416 0 : {
10417 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10418 0 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures);
10419 0 : if (res) return res;
10420 : }
10421 : }
10422 : break;
10423 : }
10424 82448 : default:;
10425 : }
10426 82448 : switch (TREE_CODE (_p0))
10427 : {
10428 2 : case NEGATE_EXPR:
10429 2 : {
10430 2 : tree _q20 = TREE_OPERAND (_p0, 0);
10431 2 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10432 : {
10433 2 : {
10434 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10435 2 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures);
10436 2 : if (res) return res;
10437 : }
10438 : }
10439 : break;
10440 : }
10441 82446 : default:;
10442 : }
10443 82446 : {
10444 82446 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10445 82446 : if (INTEGRAL_TYPE_P (type)
10446 80599 : && TYPE_MIN_VALUE (type)
10447 163045 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
10448 : )
10449 : {
10450 556 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1766;
10451 556 : {
10452 556 : tree _r;
10453 556 : _r = captures[1];
10454 556 : if (TREE_SIDE_EFFECTS (captures[0]))
10455 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10456 556 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
10457 556 : return _r;
10458 : }
10459 0 : next_after_fail1766:;
10460 : }
10461 : else
10462 : {
10463 81890 : if (INTEGRAL_TYPE_P (type)
10464 80043 : && TYPE_MAX_VALUE (type)
10465 161933 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
10466 : )
10467 : {
10468 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1767;
10469 1 : {
10470 1 : tree _r;
10471 1 : _r = captures[0];
10472 1 : if (TREE_SIDE_EFFECTS (captures[1]))
10473 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10474 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10475 1 : return _r;
10476 : }
10477 0 : next_after_fail1767:;
10478 : }
10479 : }
10480 : }
10481 81889 : switch (TREE_CODE (_p0))
10482 : {
10483 5597 : case PLUS_EXPR:
10484 5597 : {
10485 5597 : tree _q20 = TREE_OPERAND (_p0, 0);
10486 5597 : tree _q21 = TREE_OPERAND (_p0, 1);
10487 5597 : switch (TREE_CODE (_p1))
10488 : {
10489 15 : case PLUS_EXPR:
10490 15 : {
10491 15 : tree _q50 = TREE_OPERAND (_p1, 0);
10492 15 : tree _q51 = TREE_OPERAND (_p1, 1);
10493 15 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10494 : {
10495 0 : {
10496 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10497 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10498 0 : if (res) return res;
10499 : }
10500 0 : {
10501 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10502 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10503 0 : if (res) return res;
10504 : }
10505 : }
10506 15 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10507 : {
10508 0 : {
10509 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10510 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10511 0 : if (res) return res;
10512 : }
10513 : }
10514 15 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10515 : {
10516 1 : {
10517 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q51, _q21, _p0, _q20 };
10518 1 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10519 1 : if (res) return res;
10520 : }
10521 : }
10522 : break;
10523 : }
10524 5596 : default:;
10525 : }
10526 5596 : switch (TREE_CODE (_q21))
10527 : {
10528 5468 : case INTEGER_CST:
10529 5468 : {
10530 5468 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10531 : {
10532 0 : {
10533 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10534 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10535 : )
10536 : {
10537 0 : if (tree_int_cst_sgn (captures[2]) > 0
10538 : )
10539 : {
10540 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1768;
10541 0 : {
10542 0 : tree _r;
10543 0 : _r = captures[0];
10544 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10545 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10546 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1031, __FILE__, __LINE__, true);
10547 0 : return _r;
10548 : }
10549 0 : next_after_fail1768:;
10550 : }
10551 : else
10552 : {
10553 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1769;
10554 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1769;
10555 0 : {
10556 0 : tree _r;
10557 0 : _r = captures[1];
10558 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
10559 0 : return _r;
10560 : }
10561 0 : next_after_fail1769:;
10562 : }
10563 : }
10564 : }
10565 : }
10566 : break;
10567 : }
10568 : default:;
10569 : }
10570 : break;
10571 : }
10572 1006 : case MINUS_EXPR:
10573 1006 : {
10574 1006 : tree _q20 = TREE_OPERAND (_p0, 0);
10575 1006 : tree _q21 = TREE_OPERAND (_p0, 1);
10576 1006 : switch (TREE_CODE (_p1))
10577 : {
10578 988 : case MINUS_EXPR:
10579 988 : {
10580 988 : tree _q50 = TREE_OPERAND (_p1, 0);
10581 988 : tree _q51 = TREE_OPERAND (_p1, 1);
10582 988 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10583 : {
10584 0 : {
10585 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10586 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures, MIN_EXPR);
10587 0 : if (res) return res;
10588 : }
10589 0 : {
10590 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10591 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures, MIN_EXPR);
10592 0 : if (res) return res;
10593 : }
10594 : }
10595 : break;
10596 : }
10597 : default:;
10598 : }
10599 : break;
10600 : }
10601 81888 : default:;
10602 : }
10603 81888 : switch (TREE_CODE (_p1))
10604 : {
10605 21 : case PLUS_EXPR:
10606 21 : {
10607 21 : tree _q30 = TREE_OPERAND (_p1, 0);
10608 21 : tree _q31 = TREE_OPERAND (_p1, 1);
10609 21 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10610 : {
10611 0 : switch (TREE_CODE (_q31))
10612 : {
10613 0 : case INTEGER_CST:
10614 0 : {
10615 0 : {
10616 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10617 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10618 : )
10619 : {
10620 0 : if (tree_int_cst_sgn (captures[2]) > 0
10621 : )
10622 : {
10623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1770;
10624 0 : {
10625 0 : tree _r;
10626 0 : _r = captures[0];
10627 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10628 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10629 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1031, __FILE__, __LINE__, true);
10630 0 : return _r;
10631 : }
10632 0 : next_after_fail1770:;
10633 : }
10634 : else
10635 : {
10636 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1771;
10637 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1771;
10638 0 : {
10639 0 : tree _r;
10640 0 : _r = captures[1];
10641 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
10642 0 : return _r;
10643 : }
10644 0 : next_after_fail1771:;
10645 : }
10646 : }
10647 : }
10648 0 : break;
10649 : }
10650 : default:;
10651 : }
10652 : }
10653 : break;
10654 : }
10655 81888 : default:;
10656 : }
10657 81888 : switch (TREE_CODE (_p0))
10658 : {
10659 46 : case MIN_EXPR:
10660 46 : {
10661 46 : tree _q20 = TREE_OPERAND (_p0, 0);
10662 46 : tree _q21 = TREE_OPERAND (_p0, 1);
10663 46 : switch (TREE_CODE (_p1))
10664 : {
10665 0 : case MAX_EXPR:
10666 0 : {
10667 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10668 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10669 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10670 : {
10671 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10672 : {
10673 0 : {
10674 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10675 0 : if (!HONOR_NANS (captures[0])
10676 : )
10677 : {
10678 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1772;
10679 0 : {
10680 0 : tree res_op0;
10681 0 : res_op0 = captures[0];
10682 0 : tree res_op1;
10683 0 : res_op1 = captures[1];
10684 0 : tree _r;
10685 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10686 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
10687 0 : return _r;
10688 : }
10689 0 : next_after_fail1772:;
10690 : }
10691 : }
10692 : }
10693 : }
10694 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10695 : {
10696 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10697 : {
10698 0 : {
10699 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10700 0 : if (!HONOR_NANS (captures[0])
10701 : )
10702 : {
10703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1773;
10704 0 : {
10705 0 : tree res_op0;
10706 0 : res_op0 = captures[0];
10707 0 : tree res_op1;
10708 0 : res_op1 = captures[1];
10709 0 : tree _r;
10710 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10711 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
10712 0 : return _r;
10713 : }
10714 0 : next_after_fail1773:;
10715 : }
10716 : }
10717 : }
10718 : }
10719 : break;
10720 : }
10721 : default:;
10722 : }
10723 : break;
10724 : }
10725 0 : case MAX_EXPR:
10726 0 : {
10727 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10728 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10729 0 : switch (TREE_CODE (_p1))
10730 : {
10731 0 : case MIN_EXPR:
10732 0 : {
10733 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10734 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10735 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10736 : {
10737 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10738 : {
10739 0 : {
10740 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10741 0 : if (!HONOR_NANS (captures[0])
10742 : )
10743 : {
10744 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1774;
10745 0 : {
10746 0 : tree res_op0;
10747 0 : res_op0 = captures[0];
10748 0 : tree res_op1;
10749 0 : res_op1 = captures[1];
10750 0 : tree _r;
10751 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10752 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
10753 0 : return _r;
10754 : }
10755 0 : next_after_fail1774:;
10756 : }
10757 : }
10758 : }
10759 : }
10760 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10761 : {
10762 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10763 : {
10764 0 : {
10765 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10766 0 : if (!HONOR_NANS (captures[0])
10767 : )
10768 : {
10769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1775;
10770 0 : {
10771 0 : tree res_op0;
10772 0 : res_op0 = captures[0];
10773 0 : tree res_op1;
10774 0 : res_op1 = captures[1];
10775 0 : tree _r;
10776 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10777 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
10778 0 : return _r;
10779 : }
10780 0 : next_after_fail1775:;
10781 : }
10782 : }
10783 : }
10784 : }
10785 : break;
10786 : }
10787 : default:;
10788 : }
10789 : break;
10790 : }
10791 1 : case BIT_AND_EXPR:
10792 1 : {
10793 1 : tree _q20 = TREE_OPERAND (_p0, 0);
10794 1 : tree _q21 = TREE_OPERAND (_p0, 1);
10795 1 : switch (TREE_CODE (_q21))
10796 : {
10797 1 : case INTEGER_CST:
10798 1 : {
10799 1 : switch (TREE_CODE (_p1))
10800 : {
10801 0 : case BIT_AND_EXPR:
10802 0 : {
10803 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10804 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10805 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10806 : {
10807 0 : switch (TREE_CODE (_q51))
10808 : {
10809 0 : case INTEGER_CST:
10810 0 : {
10811 0 : {
10812 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10813 0 : tree res = generic_simplify_531 (loc, type, _p0, _p1, captures, MIN_EXPR);
10814 0 : if (res) return res;
10815 : }
10816 0 : break;
10817 : }
10818 : default:;
10819 : }
10820 : }
10821 : break;
10822 : }
10823 : default:;
10824 : }
10825 : break;
10826 : }
10827 : default:;
10828 : }
10829 : break;
10830 : }
10831 81888 : default:;
10832 : }
10833 81888 : switch (TREE_CODE (_p1))
10834 : {
10835 0 : case BIT_AND_EXPR:
10836 0 : {
10837 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10838 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10839 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10840 : {
10841 0 : switch (TREE_CODE (_q31))
10842 : {
10843 0 : case INTEGER_CST:
10844 0 : {
10845 0 : {
10846 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10847 0 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MIN_EXPR);
10848 0 : if (res) return res;
10849 : }
10850 0 : break;
10851 : }
10852 : default:;
10853 : }
10854 : }
10855 : break;
10856 : }
10857 81888 : default:;
10858 : }
10859 81888 : switch (TREE_CODE (_p0))
10860 : {
10861 672 : CASE_CONVERT:
10862 672 : {
10863 672 : tree _q20 = TREE_OPERAND (_p0, 0);
10864 672 : switch (TREE_CODE (_q20))
10865 : {
10866 47 : case ADDR_EXPR:
10867 47 : {
10868 47 : switch (TREE_CODE (_p1))
10869 : {
10870 47 : CASE_CONVERT:
10871 47 : {
10872 47 : tree _q40 = TREE_OPERAND (_p1, 0);
10873 47 : switch (TREE_CODE (_q40))
10874 : {
10875 47 : case ADDR_EXPR:
10876 47 : {
10877 47 : {
10878 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10879 47 : tree res = generic_simplify_533 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10880 47 : if (res) return res;
10881 : }
10882 47 : break;
10883 : }
10884 : default:;
10885 : }
10886 : break;
10887 : }
10888 0 : case ADDR_EXPR:
10889 0 : {
10890 0 : {
10891 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10892 0 : tree res = generic_simplify_534 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10893 0 : if (res) return res;
10894 : }
10895 0 : break;
10896 : }
10897 : default:;
10898 : }
10899 : break;
10900 : }
10901 : default:;
10902 : }
10903 : break;
10904 : }
10905 10 : case ADDR_EXPR:
10906 10 : {
10907 10 : switch (TREE_CODE (_p1))
10908 : {
10909 0 : CASE_CONVERT:
10910 0 : {
10911 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10912 0 : switch (TREE_CODE (_q30))
10913 : {
10914 0 : case ADDR_EXPR:
10915 0 : {
10916 0 : {
10917 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
10918 0 : tree res = generic_simplify_535 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10919 0 : if (res) return res;
10920 : }
10921 0 : break;
10922 : }
10923 : default:;
10924 : }
10925 : break;
10926 : }
10927 10 : case ADDR_EXPR:
10928 10 : {
10929 10 : {
10930 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
10931 10 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10932 10 : if (res) return res;
10933 : }
10934 10 : break;
10935 : }
10936 : default:;
10937 : }
10938 : break;
10939 : }
10940 0 : case NEGATE_EXPR:
10941 0 : {
10942 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10943 0 : switch (TREE_CODE (_p1))
10944 : {
10945 0 : case NEGATE_EXPR:
10946 0 : {
10947 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10948 0 : {
10949 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10950 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
10951 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
10952 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
10953 : )
10954 : {
10955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1776;
10956 0 : {
10957 0 : tree res_op0;
10958 0 : {
10959 0 : tree _o1[2], _r1;
10960 0 : _o1[0] = captures[1];
10961 0 : _o1[1] = captures[3];
10962 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10963 0 : res_op0 = _r1;
10964 : }
10965 0 : tree _r;
10966 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
10967 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
10968 0 : return _r;
10969 : }
10970 0 : next_after_fail1776:;
10971 : }
10972 : }
10973 0 : break;
10974 : }
10975 : default:;
10976 : }
10977 : break;
10978 : }
10979 0 : case BIT_NOT_EXPR:
10980 0 : {
10981 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10982 0 : switch (TREE_CODE (_p1))
10983 : {
10984 0 : case BIT_NOT_EXPR:
10985 0 : {
10986 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10987 0 : {
10988 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10989 0 : tree res = generic_simplify_537 (loc, type, _p0, _p1, captures, MIN_EXPR, MAX_EXPR);
10990 0 : if (res) return res;
10991 : }
10992 0 : break;
10993 : }
10994 : default:;
10995 : }
10996 : break;
10997 : }
10998 0 : case VEC_COND_EXPR:
10999 0 : {
11000 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11001 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11002 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11003 0 : switch (TREE_CODE (_p1))
11004 : {
11005 0 : case VEC_COND_EXPR:
11006 0 : {
11007 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11008 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11009 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11010 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11011 : {
11012 0 : {
11013 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11014 0 : if (VECTOR_TYPE_P (type)
11015 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11016 : || types_match (type, TREE_TYPE (captures[2]))
11017 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11018 : || (optimize_vectors_before_lowering_p ()
11019 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11020 : )
11021 : {
11022 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1777;
11023 0 : {
11024 0 : tree res_op0;
11025 0 : res_op0 = captures[1];
11026 0 : tree res_op1;
11027 0 : {
11028 0 : tree _o1[2], _r1;
11029 0 : _o1[0] = captures[2];
11030 0 : _o1[1] = captures[5];
11031 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11032 0 : if (EXPR_P (_r1))
11033 0 : goto next_after_fail1777;
11034 0 : res_op1 = _r1;
11035 : }
11036 0 : tree res_op2;
11037 0 : {
11038 0 : tree _o1[2], _r1;
11039 0 : _o1[0] = captures[3];
11040 0 : _o1[1] = captures[6];
11041 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11042 0 : if (EXPR_P (_r1))
11043 0 : goto next_after_fail1777;
11044 0 : res_op2 = _r1;
11045 : }
11046 0 : tree _r;
11047 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11048 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11049 0 : return _r;
11050 : }
11051 0 : next_after_fail1777:;
11052 : }
11053 : }
11054 : }
11055 : break;
11056 : }
11057 0 : default:;
11058 : }
11059 0 : {
11060 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11061 0 : if (VECTOR_TYPE_P (type)
11062 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11063 : || types_match (type, TREE_TYPE (captures[2]))
11064 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11065 : || (optimize_vectors_before_lowering_p ()
11066 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11067 : )
11068 : {
11069 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1778;
11070 0 : {
11071 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1778;
11072 0 : tree res_op0;
11073 0 : res_op0 = captures[1];
11074 0 : tree res_op1;
11075 0 : {
11076 0 : tree _o1[2], _r1;
11077 0 : _o1[0] = captures[2];
11078 0 : _o1[1] = unshare_expr (captures[4]);
11079 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11080 0 : if (EXPR_P (_r1))
11081 0 : goto next_after_fail1778;
11082 0 : res_op1 = _r1;
11083 : }
11084 0 : tree res_op2;
11085 0 : {
11086 0 : tree _o1[2], _r1;
11087 0 : _o1[0] = captures[3];
11088 0 : _o1[1] = captures[4];
11089 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11090 0 : if (EXPR_P (_r1))
11091 0 : goto next_after_fail1778;
11092 0 : res_op2 = _r1;
11093 : }
11094 0 : tree _r;
11095 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11096 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
11097 0 : return _r;
11098 : }
11099 0 : next_after_fail1778:;
11100 : }
11101 : }
11102 0 : break;
11103 : }
11104 81888 : default:;
11105 : }
11106 81888 : switch (TREE_CODE (_p1))
11107 : {
11108 0 : case VEC_COND_EXPR:
11109 0 : {
11110 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11111 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11112 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11113 0 : {
11114 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11115 0 : if (VECTOR_TYPE_P (type)
11116 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11117 : || types_match (type, TREE_TYPE (captures[3]))
11118 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11119 : || (optimize_vectors_before_lowering_p ()
11120 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11121 : )
11122 : {
11123 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1779;
11124 0 : {
11125 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1779;
11126 0 : tree res_op0;
11127 0 : res_op0 = captures[2];
11128 0 : tree res_op1;
11129 0 : {
11130 0 : tree _o1[2], _r1;
11131 0 : _o1[0] = unshare_expr (captures[0]);
11132 0 : _o1[1] = captures[3];
11133 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11134 0 : if (EXPR_P (_r1))
11135 0 : goto next_after_fail1779;
11136 0 : res_op1 = _r1;
11137 : }
11138 0 : tree res_op2;
11139 0 : {
11140 0 : tree _o1[2], _r1;
11141 0 : _o1[0] = captures[0];
11142 0 : _o1[1] = captures[4];
11143 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11144 0 : if (EXPR_P (_r1))
11145 0 : goto next_after_fail1779;
11146 0 : res_op2 = _r1;
11147 : }
11148 0 : tree _r;
11149 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
11151 0 : return _r;
11152 : }
11153 0 : next_after_fail1779:;
11154 : }
11155 : }
11156 0 : break;
11157 : }
11158 81888 : default:;
11159 : }
11160 81888 : if (tree_zero_one_valued_p (_p0))
11161 : {
11162 3 : if (tree_zero_one_valued_p (_p1))
11163 : {
11164 2 : {
11165 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11166 2 : tree res = generic_simplify_538 (loc, type, _p0, _p1, captures, MIN_EXPR, BIT_AND_EXPR);
11167 2 : if (res) return res;
11168 : }
11169 : }
11170 : }
11171 : return NULL_TREE;
11172 : }
11173 :
11174 : tree
11175 663576 : generic_simplify_COMPLEX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11176 : {
11177 663576 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11178 663576 : switch (TREE_CODE (_p0))
11179 : {
11180 40 : case REALPART_EXPR:
11181 40 : {
11182 40 : tree _q20 = TREE_OPERAND (_p0, 0);
11183 40 : switch (TREE_CODE (_p1))
11184 : {
11185 30 : case IMAGPART_EXPR:
11186 30 : {
11187 30 : tree _q40 = TREE_OPERAND (_p1, 0);
11188 30 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
11189 : {
11190 30 : {
11191 30 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11192 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1795;
11193 30 : {
11194 30 : tree _r;
11195 30 : _r = captures[0];
11196 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1039, __FILE__, __LINE__, true);
11197 30 : return _r;
11198 : }
11199 0 : next_after_fail1795:;
11200 : }
11201 : }
11202 : break;
11203 : }
11204 : default:;
11205 : }
11206 : break;
11207 : }
11208 : default:;
11209 : }
11210 : return NULL_TREE;
11211 : }
11212 :
11213 : tree
11214 789605 : generic_simplify_UNORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11215 : {
11216 789605 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11217 789605 : switch (TREE_CODE (_p0))
11218 : {
11219 0 : case VEC_COND_EXPR:
11220 0 : {
11221 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11222 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11223 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11224 0 : switch (TREE_CODE (_p1))
11225 : {
11226 0 : case VEC_COND_EXPR:
11227 0 : {
11228 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11229 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11230 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11231 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11232 : {
11233 0 : {
11234 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11235 0 : if (VECTOR_TYPE_P (type)
11236 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11237 0 : || types_match (type, TREE_TYPE (captures[2]))
11238 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11239 : || (optimize_vectors_before_lowering_p ()
11240 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11241 : )
11242 : {
11243 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1796;
11244 0 : {
11245 0 : tree res_op0;
11246 0 : res_op0 = captures[1];
11247 0 : tree res_op1;
11248 0 : {
11249 0 : tree _o1[2], _r1;
11250 0 : _o1[0] = captures[2];
11251 0 : _o1[1] = captures[5];
11252 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11253 0 : if (EXPR_P (_r1))
11254 0 : goto next_after_fail1796;
11255 0 : res_op1 = _r1;
11256 : }
11257 0 : tree res_op2;
11258 0 : {
11259 0 : tree _o1[2], _r1;
11260 0 : _o1[0] = captures[3];
11261 0 : _o1[1] = captures[6];
11262 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11263 0 : if (EXPR_P (_r1))
11264 0 : goto next_after_fail1796;
11265 0 : res_op2 = _r1;
11266 : }
11267 0 : tree _r;
11268 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11269 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11270 0 : return _r;
11271 : }
11272 0 : next_after_fail1796:;
11273 : }
11274 : }
11275 : }
11276 : break;
11277 : }
11278 0 : default:;
11279 : }
11280 0 : {
11281 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11282 0 : if (VECTOR_TYPE_P (type)
11283 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11284 0 : || types_match (type, TREE_TYPE (captures[2]))
11285 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11286 : || (optimize_vectors_before_lowering_p ()
11287 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11288 : )
11289 : {
11290 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
11291 0 : {
11292 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1797;
11293 0 : tree res_op0;
11294 0 : res_op0 = captures[1];
11295 0 : tree res_op1;
11296 0 : {
11297 0 : tree _o1[2], _r1;
11298 0 : _o1[0] = captures[2];
11299 0 : _o1[1] = unshare_expr (captures[4]);
11300 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11301 0 : if (EXPR_P (_r1))
11302 0 : goto next_after_fail1797;
11303 0 : res_op1 = _r1;
11304 : }
11305 0 : tree res_op2;
11306 0 : {
11307 0 : tree _o1[2], _r1;
11308 0 : _o1[0] = captures[3];
11309 0 : _o1[1] = captures[4];
11310 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11311 0 : if (EXPR_P (_r1))
11312 0 : goto next_after_fail1797;
11313 0 : res_op2 = _r1;
11314 : }
11315 0 : tree _r;
11316 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11317 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
11318 0 : return _r;
11319 : }
11320 0 : next_after_fail1797:;
11321 : }
11322 : }
11323 0 : break;
11324 : }
11325 789605 : default:;
11326 : }
11327 789605 : switch (TREE_CODE (_p1))
11328 : {
11329 0 : case VEC_COND_EXPR:
11330 0 : {
11331 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11332 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11333 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11334 0 : {
11335 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11336 0 : if (VECTOR_TYPE_P (type)
11337 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11338 0 : || types_match (type, TREE_TYPE (captures[3]))
11339 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11340 : || (optimize_vectors_before_lowering_p ()
11341 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11342 : )
11343 : {
11344 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1798;
11345 0 : {
11346 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1798;
11347 0 : tree res_op0;
11348 0 : res_op0 = captures[2];
11349 0 : tree res_op1;
11350 0 : {
11351 0 : tree _o1[2], _r1;
11352 0 : _o1[0] = unshare_expr (captures[0]);
11353 0 : _o1[1] = captures[3];
11354 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11355 0 : if (EXPR_P (_r1))
11356 0 : goto next_after_fail1798;
11357 0 : res_op1 = _r1;
11358 : }
11359 0 : tree res_op2;
11360 0 : {
11361 0 : tree _o1[2], _r1;
11362 0 : _o1[0] = captures[0];
11363 0 : _o1[1] = captures[4];
11364 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11365 0 : if (EXPR_P (_r1))
11366 0 : goto next_after_fail1798;
11367 0 : res_op2 = _r1;
11368 : }
11369 0 : tree _r;
11370 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11371 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
11372 0 : return _r;
11373 : }
11374 0 : next_after_fail1798:;
11375 : }
11376 : }
11377 0 : break;
11378 : }
11379 789605 : default:;
11380 : }
11381 789605 : switch (TREE_CODE (_p0))
11382 : {
11383 0 : case FLOAT_EXPR:
11384 0 : {
11385 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11386 0 : switch (TREE_CODE (_p1))
11387 : {
11388 0 : case FLOAT_EXPR:
11389 0 : {
11390 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11391 0 : {
11392 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11393 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11394 0 : if (res) return res;
11395 : }
11396 0 : break;
11397 : }
11398 : default:;
11399 : }
11400 : break;
11401 : }
11402 18 : case NEGATE_EXPR:
11403 18 : {
11404 18 : tree _q20 = TREE_OPERAND (_p0, 0);
11405 18 : switch (TREE_CODE (_p1))
11406 : {
11407 18 : case NEGATE_EXPR:
11408 18 : {
11409 18 : tree _q40 = TREE_OPERAND (_p1, 0);
11410 18 : {
11411 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11412 18 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11413 18 : if (res) return res;
11414 : }
11415 0 : break;
11416 : }
11417 0 : default:;
11418 : }
11419 0 : if (CONSTANT_CLASS_P (_p1))
11420 : {
11421 0 : {
11422 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11423 0 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11424 0 : if (res) return res;
11425 : }
11426 : }
11427 : break;
11428 : }
11429 789587 : default:;
11430 : }
11431 789587 : switch (TREE_CODE (_p1))
11432 : {
11433 519 : case REAL_CST:
11434 519 : {
11435 519 : {
11436 519 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11437 519 : tree res = generic_simplify_567 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
11438 519 : if (res) return res;
11439 : }
11440 519 : break;
11441 : }
11442 789587 : default:;
11443 : }
11444 789587 : {
11445 789587 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11446 789587 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
11447 : )
11448 : {
11449 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1799;
11450 0 : {
11451 0 : tree _r;
11452 0 : _r = constant_boolean_node (true, type);
11453 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11454 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11455 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11456 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11457 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1040, __FILE__, __LINE__, true);
11458 0 : return _r;
11459 : }
11460 0 : next_after_fail1799:;
11461 : }
11462 : else
11463 : {
11464 789587 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
11465 : )
11466 : {
11467 35 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1800;
11468 35 : {
11469 35 : tree _r;
11470 35 : _r = constant_boolean_node (false, type);
11471 35 : if (TREE_SIDE_EFFECTS (captures[0]))
11472 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11473 35 : if (TREE_SIDE_EFFECTS (captures[1]))
11474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11475 35 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1041, __FILE__, __LINE__, true);
11476 35 : return _r;
11477 : }
11478 0 : next_after_fail1800:;
11479 : }
11480 : }
11481 : }
11482 789552 : return NULL_TREE;
11483 : }
11484 :
11485 : tree
11486 432746 : generic_simplify_UNGE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11487 : {
11488 432746 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11489 432746 : switch (TREE_CODE (_p0))
11490 : {
11491 0 : case VEC_COND_EXPR:
11492 0 : {
11493 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11494 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11495 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11496 0 : switch (TREE_CODE (_p1))
11497 : {
11498 0 : case VEC_COND_EXPR:
11499 0 : {
11500 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11501 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11502 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11503 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11504 : {
11505 0 : {
11506 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11507 0 : if (VECTOR_TYPE_P (type)
11508 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
11509 0 : || types_match (type, TREE_TYPE (captures[2]))
11510 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11511 : || (optimize_vectors_before_lowering_p ()
11512 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11513 : )
11514 : {
11515 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1815;
11516 0 : {
11517 0 : tree res_op0;
11518 0 : res_op0 = captures[1];
11519 0 : tree res_op1;
11520 0 : {
11521 0 : tree _o1[2], _r1;
11522 0 : _o1[0] = captures[2];
11523 0 : _o1[1] = captures[5];
11524 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11525 0 : if (EXPR_P (_r1))
11526 0 : goto next_after_fail1815;
11527 0 : res_op1 = _r1;
11528 : }
11529 0 : tree res_op2;
11530 0 : {
11531 0 : tree _o1[2], _r1;
11532 0 : _o1[0] = captures[3];
11533 0 : _o1[1] = captures[6];
11534 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11535 0 : if (EXPR_P (_r1))
11536 0 : goto next_after_fail1815;
11537 0 : res_op2 = _r1;
11538 : }
11539 0 : tree _r;
11540 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11541 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11542 0 : return _r;
11543 : }
11544 0 : next_after_fail1815:;
11545 : }
11546 : }
11547 : }
11548 : break;
11549 : }
11550 0 : default:;
11551 : }
11552 0 : {
11553 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11554 0 : if (VECTOR_TYPE_P (type)
11555 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
11556 0 : || types_match (type, TREE_TYPE (captures[2]))
11557 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11558 : || (optimize_vectors_before_lowering_p ()
11559 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11560 : )
11561 : {
11562 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1816;
11563 0 : {
11564 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1816;
11565 0 : tree res_op0;
11566 0 : res_op0 = captures[1];
11567 0 : tree res_op1;
11568 0 : {
11569 0 : tree _o1[2], _r1;
11570 0 : _o1[0] = captures[2];
11571 0 : _o1[1] = unshare_expr (captures[4]);
11572 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11573 0 : if (EXPR_P (_r1))
11574 0 : goto next_after_fail1816;
11575 0 : res_op1 = _r1;
11576 : }
11577 0 : tree res_op2;
11578 0 : {
11579 0 : tree _o1[2], _r1;
11580 0 : _o1[0] = captures[3];
11581 0 : _o1[1] = captures[4];
11582 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11583 0 : if (EXPR_P (_r1))
11584 0 : goto next_after_fail1816;
11585 0 : res_op2 = _r1;
11586 : }
11587 0 : tree _r;
11588 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11589 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
11590 0 : return _r;
11591 : }
11592 0 : next_after_fail1816:;
11593 : }
11594 : }
11595 0 : break;
11596 : }
11597 432746 : default:;
11598 : }
11599 432746 : switch (TREE_CODE (_p1))
11600 : {
11601 0 : case VEC_COND_EXPR:
11602 0 : {
11603 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11604 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11605 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11606 0 : {
11607 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11608 0 : if (VECTOR_TYPE_P (type)
11609 0 : && (TREE_CODE_CLASS (UNGE_EXPR) != tcc_comparison
11610 0 : || types_match (type, TREE_TYPE (captures[3]))
11611 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11612 : || (optimize_vectors_before_lowering_p ()
11613 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11614 : )
11615 : {
11616 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1817;
11617 0 : {
11618 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1817;
11619 0 : tree res_op0;
11620 0 : res_op0 = captures[2];
11621 0 : tree res_op1;
11622 0 : {
11623 0 : tree _o1[2], _r1;
11624 0 : _o1[0] = unshare_expr (captures[0]);
11625 0 : _o1[1] = captures[3];
11626 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11627 0 : if (EXPR_P (_r1))
11628 0 : goto next_after_fail1817;
11629 0 : res_op1 = _r1;
11630 : }
11631 0 : tree res_op2;
11632 0 : {
11633 0 : tree _o1[2], _r1;
11634 0 : _o1[0] = captures[0];
11635 0 : _o1[1] = captures[4];
11636 0 : _r1 = fold_build2_loc (loc, UNGE_EXPR, type, _o1[0], _o1[1]);
11637 0 : if (EXPR_P (_r1))
11638 0 : goto next_after_fail1817;
11639 0 : res_op2 = _r1;
11640 : }
11641 0 : tree _r;
11642 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11643 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
11644 0 : return _r;
11645 : }
11646 0 : next_after_fail1817:;
11647 : }
11648 : }
11649 0 : break;
11650 : }
11651 432746 : default:;
11652 : }
11653 432746 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11654 : {
11655 30 : {
11656 30 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11657 30 : tree res = generic_simplify_569 (loc, type, _p0, _p1, captures, UNGE_EXPR);
11658 30 : if (res) return res;
11659 : }
11660 : }
11661 432716 : switch (TREE_CODE (_p0))
11662 : {
11663 299 : case FLOAT_EXPR:
11664 299 : {
11665 299 : tree _q20 = TREE_OPERAND (_p0, 0);
11666 299 : switch (TREE_CODE (_p1))
11667 : {
11668 0 : case FLOAT_EXPR:
11669 0 : {
11670 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11671 0 : {
11672 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11673 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, UNGE_EXPR, GE_EXPR);
11674 0 : if (res) return res;
11675 : }
11676 0 : break;
11677 : }
11678 : default:;
11679 : }
11680 : break;
11681 : }
11682 112 : case NEGATE_EXPR:
11683 112 : {
11684 112 : tree _q20 = TREE_OPERAND (_p0, 0);
11685 112 : switch (TREE_CODE (_p1))
11686 : {
11687 0 : case NEGATE_EXPR:
11688 0 : {
11689 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11690 0 : {
11691 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11692 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNGE_EXPR, UNLE_EXPR);
11693 0 : if (res) return res;
11694 : }
11695 0 : break;
11696 : }
11697 112 : default:;
11698 : }
11699 112 : if (CONSTANT_CLASS_P (_p1))
11700 : {
11701 112 : {
11702 112 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11703 112 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, UNGE_EXPR, UNLE_EXPR);
11704 112 : if (res) return res;
11705 : }
11706 : }
11707 : break;
11708 : }
11709 432604 : default:;
11710 : }
11711 432604 : switch (TREE_CODE (_p1))
11712 : {
11713 54109 : case REAL_CST:
11714 54109 : {
11715 54109 : {
11716 54109 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11717 54109 : tree res = generic_simplify_567 (loc, type, _p0, _p1, captures, UNGE_EXPR);
11718 54109 : if (res) return res;
11719 : }
11720 54107 : break;
11721 : }
11722 : default:;
11723 : }
11724 : return NULL_TREE;
11725 : }
11726 :
11727 : tree
11728 13061620 : 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)
11729 : {
11730 13061620 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11731 13061620 : switch (TREE_CODE (_p0))
11732 : {
11733 1821379 : case LT_EXPR:
11734 1821379 : {
11735 1821379 : tree _q20 = TREE_OPERAND (_p0, 0);
11736 1821379 : tree _q21 = TREE_OPERAND (_p0, 1);
11737 1821379 : switch (TREE_CODE (_q20))
11738 : {
11739 11321 : case MINUS_EXPR:
11740 11321 : {
11741 11321 : tree _q30 = TREE_OPERAND (_q20, 0);
11742 11321 : tree _q31 = TREE_OPERAND (_q20, 1);
11743 11321 : switch (TREE_CODE (_q30))
11744 : {
11745 594 : case SSA_NAME:
11746 594 : {
11747 594 : switch (TREE_CODE (_q31))
11748 : {
11749 0 : case CALL_EXPR:
11750 0 : switch (get_call_combined_fn (_q31))
11751 : {
11752 0 : case CFN_BUILT_IN_FLOORF:
11753 0 : if (call_expr_nargs (_q31) == 1)
11754 : {
11755 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11756 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11757 : {
11758 0 : switch (TREE_CODE (_q50))
11759 : {
11760 0 : case SSA_NAME:
11761 0 : {
11762 0 : switch (TREE_CODE (_q21))
11763 : {
11764 0 : case MINUS_EXPR:
11765 0 : {
11766 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11767 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11768 0 : switch (TREE_CODE (_q80))
11769 : {
11770 0 : case CALL_EXPR:
11771 0 : switch (get_call_combined_fn (_q80))
11772 : {
11773 0 : case CFN_BUILT_IN_CEILF:
11774 0 : if (call_expr_nargs (_q80) == 1)
11775 : {
11776 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11777 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11778 : {
11779 0 : switch (TREE_CODE (_q90))
11780 : {
11781 0 : case SSA_NAME:
11782 0 : {
11783 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11784 : {
11785 0 : switch (TREE_CODE (_q81))
11786 : {
11787 0 : case SSA_NAME:
11788 0 : {
11789 0 : switch (TREE_CODE (_p1))
11790 : {
11791 0 : case CALL_EXPR:
11792 0 : switch (get_call_combined_fn (_p1))
11793 : {
11794 0 : case CFN_BUILT_IN_FLOORF:
11795 0 : if (call_expr_nargs (_p1) == 1)
11796 : {
11797 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11798 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11799 : {
11800 0 : switch (TREE_CODE (_q140))
11801 : {
11802 0 : case SSA_NAME:
11803 0 : {
11804 0 : switch (TREE_CODE (_p2))
11805 : {
11806 0 : case CALL_EXPR:
11807 0 : switch (get_call_combined_fn (_p2))
11808 : {
11809 0 : case CFN_BUILT_IN_CEILF:
11810 0 : if (call_expr_nargs (_p2) == 1)
11811 : {
11812 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11813 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11814 : {
11815 0 : switch (TREE_CODE (_q170))
11816 : {
11817 0 : case SSA_NAME:
11818 0 : {
11819 0 : {
11820 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11821 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
11822 0 : if (res) return res;
11823 : }
11824 0 : break;
11825 : }
11826 : default:;
11827 : }
11828 : }
11829 : }
11830 : break;
11831 : default:;
11832 : }
11833 : break;
11834 : default:;
11835 : }
11836 : break;
11837 : }
11838 : default:;
11839 : }
11840 : }
11841 : }
11842 : break;
11843 : default:;
11844 : }
11845 : break;
11846 : default:;
11847 : }
11848 : break;
11849 : }
11850 : default:;
11851 : }
11852 : }
11853 : break;
11854 : }
11855 : default:;
11856 : }
11857 : }
11858 : }
11859 : break;
11860 : default:;
11861 : }
11862 : break;
11863 : default:;
11864 : }
11865 : break;
11866 : }
11867 : default:;
11868 : }
11869 : break;
11870 : }
11871 : default:;
11872 : }
11873 : }
11874 : }
11875 : break;
11876 0 : case CFN_BUILT_IN_FLOORL:
11877 0 : if (call_expr_nargs (_q31) == 1)
11878 : {
11879 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11880 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11881 : {
11882 0 : switch (TREE_CODE (_q50))
11883 : {
11884 0 : case SSA_NAME:
11885 0 : {
11886 0 : switch (TREE_CODE (_q21))
11887 : {
11888 0 : case MINUS_EXPR:
11889 0 : {
11890 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11891 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11892 0 : switch (TREE_CODE (_q80))
11893 : {
11894 0 : case CALL_EXPR:
11895 0 : switch (get_call_combined_fn (_q80))
11896 : {
11897 0 : case CFN_BUILT_IN_CEILL:
11898 0 : if (call_expr_nargs (_q80) == 1)
11899 : {
11900 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11901 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11902 : {
11903 0 : switch (TREE_CODE (_q90))
11904 : {
11905 0 : case SSA_NAME:
11906 0 : {
11907 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11908 : {
11909 0 : switch (TREE_CODE (_q81))
11910 : {
11911 0 : case SSA_NAME:
11912 0 : {
11913 0 : switch (TREE_CODE (_p1))
11914 : {
11915 0 : case CALL_EXPR:
11916 0 : switch (get_call_combined_fn (_p1))
11917 : {
11918 0 : case CFN_BUILT_IN_FLOORL:
11919 0 : if (call_expr_nargs (_p1) == 1)
11920 : {
11921 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11922 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11923 : {
11924 0 : switch (TREE_CODE (_q140))
11925 : {
11926 0 : case SSA_NAME:
11927 0 : {
11928 0 : switch (TREE_CODE (_p2))
11929 : {
11930 0 : case CALL_EXPR:
11931 0 : switch (get_call_combined_fn (_p2))
11932 : {
11933 0 : case CFN_BUILT_IN_CEILL:
11934 0 : if (call_expr_nargs (_p2) == 1)
11935 : {
11936 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11937 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11938 : {
11939 0 : switch (TREE_CODE (_q170))
11940 : {
11941 0 : case SSA_NAME:
11942 0 : {
11943 0 : {
11944 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11945 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
11946 0 : if (res) return res;
11947 : }
11948 0 : break;
11949 : }
11950 : default:;
11951 : }
11952 : }
11953 : }
11954 : break;
11955 : default:;
11956 : }
11957 : break;
11958 : default:;
11959 : }
11960 : break;
11961 : }
11962 : default:;
11963 : }
11964 : }
11965 : }
11966 : break;
11967 : default:;
11968 : }
11969 : break;
11970 : default:;
11971 : }
11972 : break;
11973 : }
11974 : default:;
11975 : }
11976 : }
11977 : break;
11978 : }
11979 : default:;
11980 : }
11981 : }
11982 : }
11983 : break;
11984 : default:;
11985 : }
11986 : break;
11987 : default:;
11988 : }
11989 : break;
11990 : }
11991 : default:;
11992 : }
11993 : break;
11994 : }
11995 : default:;
11996 : }
11997 : }
11998 : }
11999 : break;
12000 0 : case CFN_FLOOR:
12001 0 : if (call_expr_nargs (_q31) == 1)
12002 : {
12003 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12004 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12005 : {
12006 0 : switch (TREE_CODE (_q50))
12007 : {
12008 0 : case SSA_NAME:
12009 0 : {
12010 0 : switch (TREE_CODE (_q21))
12011 : {
12012 0 : case MINUS_EXPR:
12013 0 : {
12014 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12015 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12016 0 : switch (TREE_CODE (_q80))
12017 : {
12018 0 : case CALL_EXPR:
12019 0 : switch (get_call_combined_fn (_q80))
12020 : {
12021 0 : case CFN_CEIL:
12022 0 : if (call_expr_nargs (_q80) == 1)
12023 : {
12024 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12025 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12026 : {
12027 0 : switch (TREE_CODE (_q90))
12028 : {
12029 0 : case SSA_NAME:
12030 0 : {
12031 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12032 : {
12033 0 : switch (TREE_CODE (_q81))
12034 : {
12035 0 : case SSA_NAME:
12036 0 : {
12037 0 : switch (TREE_CODE (_p1))
12038 : {
12039 0 : case CALL_EXPR:
12040 0 : switch (get_call_combined_fn (_p1))
12041 : {
12042 0 : case CFN_FLOOR:
12043 0 : if (call_expr_nargs (_p1) == 1)
12044 : {
12045 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12046 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12047 : {
12048 0 : switch (TREE_CODE (_q140))
12049 : {
12050 0 : case SSA_NAME:
12051 0 : {
12052 0 : switch (TREE_CODE (_p2))
12053 : {
12054 0 : case CALL_EXPR:
12055 0 : switch (get_call_combined_fn (_p2))
12056 : {
12057 0 : case CFN_CEIL:
12058 0 : if (call_expr_nargs (_p2) == 1)
12059 : {
12060 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12061 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12062 : {
12063 0 : switch (TREE_CODE (_q170))
12064 : {
12065 0 : case SSA_NAME:
12066 0 : {
12067 0 : {
12068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12069 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
12070 0 : if (res) return res;
12071 : }
12072 0 : break;
12073 : }
12074 : default:;
12075 : }
12076 : }
12077 : }
12078 : break;
12079 : default:;
12080 : }
12081 : break;
12082 : default:;
12083 : }
12084 : break;
12085 : }
12086 : default:;
12087 : }
12088 : }
12089 : }
12090 : break;
12091 : default:;
12092 : }
12093 : break;
12094 : default:;
12095 : }
12096 : break;
12097 : }
12098 : default:;
12099 : }
12100 : }
12101 : break;
12102 : }
12103 : default:;
12104 : }
12105 : }
12106 : }
12107 : break;
12108 : default:;
12109 : }
12110 : break;
12111 : default:;
12112 : }
12113 : break;
12114 : }
12115 : default:;
12116 : }
12117 : break;
12118 : }
12119 : default:;
12120 : }
12121 : }
12122 : }
12123 : break;
12124 0 : case CFN_BUILT_IN_FLOOR:
12125 0 : if (call_expr_nargs (_q31) == 1)
12126 : {
12127 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12128 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12129 : {
12130 0 : switch (TREE_CODE (_q50))
12131 : {
12132 0 : case SSA_NAME:
12133 0 : {
12134 0 : switch (TREE_CODE (_q21))
12135 : {
12136 0 : case MINUS_EXPR:
12137 0 : {
12138 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12139 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12140 0 : switch (TREE_CODE (_q80))
12141 : {
12142 0 : case CALL_EXPR:
12143 0 : switch (get_call_combined_fn (_q80))
12144 : {
12145 0 : case CFN_BUILT_IN_CEIL:
12146 0 : if (call_expr_nargs (_q80) == 1)
12147 : {
12148 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12149 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12150 : {
12151 0 : switch (TREE_CODE (_q90))
12152 : {
12153 0 : case SSA_NAME:
12154 0 : {
12155 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12156 : {
12157 0 : switch (TREE_CODE (_q81))
12158 : {
12159 0 : case SSA_NAME:
12160 0 : {
12161 0 : switch (TREE_CODE (_p1))
12162 : {
12163 0 : case CALL_EXPR:
12164 0 : switch (get_call_combined_fn (_p1))
12165 : {
12166 0 : case CFN_BUILT_IN_FLOOR:
12167 0 : if (call_expr_nargs (_p1) == 1)
12168 : {
12169 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12170 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12171 : {
12172 0 : switch (TREE_CODE (_q140))
12173 : {
12174 0 : case SSA_NAME:
12175 0 : {
12176 0 : switch (TREE_CODE (_p2))
12177 : {
12178 0 : case CALL_EXPR:
12179 0 : switch (get_call_combined_fn (_p2))
12180 : {
12181 0 : case CFN_BUILT_IN_CEIL:
12182 0 : if (call_expr_nargs (_p2) == 1)
12183 : {
12184 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12185 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12186 : {
12187 0 : switch (TREE_CODE (_q170))
12188 : {
12189 0 : case SSA_NAME:
12190 0 : {
12191 0 : {
12192 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12193 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
12194 0 : if (res) return res;
12195 : }
12196 0 : break;
12197 : }
12198 : default:;
12199 : }
12200 : }
12201 : }
12202 : break;
12203 : default:;
12204 : }
12205 : break;
12206 : default:;
12207 : }
12208 : break;
12209 : }
12210 : default:;
12211 : }
12212 : }
12213 : }
12214 : break;
12215 : default:;
12216 : }
12217 : break;
12218 : default:;
12219 : }
12220 : break;
12221 : }
12222 : default:;
12223 : }
12224 : }
12225 : break;
12226 : }
12227 : default:;
12228 : }
12229 : }
12230 : }
12231 : break;
12232 : default:;
12233 : }
12234 : break;
12235 : default:;
12236 : }
12237 : break;
12238 : }
12239 : default:;
12240 : }
12241 : break;
12242 : }
12243 : default:;
12244 : }
12245 : }
12246 : }
12247 : break;
12248 : default:;
12249 : }
12250 : break;
12251 : default:;
12252 : }
12253 : break;
12254 : }
12255 : default:;
12256 : }
12257 : break;
12258 : }
12259 101312 : CASE_CONVERT:
12260 101312 : {
12261 101312 : tree _q30 = TREE_OPERAND (_q20, 0);
12262 101312 : switch (TREE_CODE (_q21))
12263 : {
12264 20522 : case INTEGER_CST:
12265 20522 : {
12266 20522 : switch (TREE_CODE (_p1))
12267 : {
12268 15 : CASE_CONVERT:
12269 15 : {
12270 15 : tree _q60 = TREE_OPERAND (_p1, 0);
12271 15 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12272 : {
12273 0 : switch (TREE_CODE (_p2))
12274 : {
12275 0 : case INTEGER_CST:
12276 0 : {
12277 0 : {
12278 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12279 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12280 0 : if (res) return res;
12281 : }
12282 0 : break;
12283 : }
12284 : default:;
12285 : }
12286 : }
12287 : break;
12288 : }
12289 20522 : default:;
12290 : }
12291 20522 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12292 : {
12293 6 : switch (TREE_CODE (_p2))
12294 : {
12295 6 : case INTEGER_CST:
12296 6 : {
12297 6 : {
12298 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12299 6 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12300 6 : if (res) return res;
12301 : }
12302 6 : break;
12303 : }
12304 : default:;
12305 : }
12306 : }
12307 20522 : switch (TREE_CODE (_p1))
12308 : {
12309 25 : case PLUS_EXPR:
12310 25 : {
12311 25 : tree _q60 = TREE_OPERAND (_p1, 0);
12312 25 : tree _q61 = TREE_OPERAND (_p1, 1);
12313 25 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12314 : {
12315 7 : switch (TREE_CODE (_q61))
12316 : {
12317 7 : case INTEGER_CST:
12318 7 : {
12319 7 : switch (TREE_CODE (_p2))
12320 : {
12321 7 : case INTEGER_CST:
12322 7 : {
12323 7 : {
12324 7 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12325 7 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12326 7 : if (res) return res;
12327 : }
12328 0 : break;
12329 : }
12330 : default:;
12331 : }
12332 : break;
12333 : }
12334 : default:;
12335 : }
12336 : }
12337 : break;
12338 : }
12339 0 : case MINUS_EXPR:
12340 0 : {
12341 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12342 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12343 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12344 : {
12345 0 : switch (TREE_CODE (_q61))
12346 : {
12347 0 : case INTEGER_CST:
12348 0 : {
12349 0 : switch (TREE_CODE (_p2))
12350 : {
12351 0 : case INTEGER_CST:
12352 0 : {
12353 0 : {
12354 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12355 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12356 0 : if (res) return res;
12357 : }
12358 0 : break;
12359 : }
12360 : default:;
12361 : }
12362 : break;
12363 : }
12364 : default:;
12365 : }
12366 : }
12367 : break;
12368 : }
12369 : default:;
12370 : }
12371 : break;
12372 : }
12373 : default:;
12374 : }
12375 : break;
12376 : }
12377 1821372 : default:;
12378 : }
12379 1821372 : switch (TREE_CODE (_q21))
12380 : {
12381 373614 : case INTEGER_CST:
12382 373614 : {
12383 373614 : switch (TREE_CODE (_p1))
12384 : {
12385 1117 : CASE_CONVERT:
12386 1117 : {
12387 1117 : tree _q50 = TREE_OPERAND (_p1, 0);
12388 1117 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12389 : {
12390 36 : switch (TREE_CODE (_p2))
12391 : {
12392 5 : case INTEGER_CST:
12393 5 : {
12394 5 : {
12395 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12396 5 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12397 5 : if (res) return res;
12398 : }
12399 5 : break;
12400 : }
12401 : default:;
12402 : }
12403 : }
12404 : break;
12405 : }
12406 373614 : default:;
12407 : }
12408 373614 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12409 : {
12410 81 : switch (TREE_CODE (_p2))
12411 : {
12412 8 : case INTEGER_CST:
12413 8 : {
12414 8 : {
12415 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12416 8 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12417 8 : if (res) return res;
12418 : }
12419 0 : break;
12420 : }
12421 : default:;
12422 : }
12423 : }
12424 373606 : switch (TREE_CODE (_p1))
12425 : {
12426 9411 : case PLUS_EXPR:
12427 9411 : {
12428 9411 : tree _q50 = TREE_OPERAND (_p1, 0);
12429 9411 : tree _q51 = TREE_OPERAND (_p1, 1);
12430 9411 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12431 : {
12432 9376 : switch (TREE_CODE (_q51))
12433 : {
12434 9376 : case INTEGER_CST:
12435 9376 : {
12436 9376 : switch (TREE_CODE (_p2))
12437 : {
12438 24 : case INTEGER_CST:
12439 24 : {
12440 24 : {
12441 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12442 24 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12443 24 : if (res) return res;
12444 : }
12445 24 : break;
12446 : }
12447 : default:;
12448 : }
12449 : break;
12450 : }
12451 : default:;
12452 : }
12453 : }
12454 : break;
12455 : }
12456 62 : case MINUS_EXPR:
12457 62 : {
12458 62 : tree _q50 = TREE_OPERAND (_p1, 0);
12459 62 : tree _q51 = TREE_OPERAND (_p1, 1);
12460 62 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12461 : {
12462 0 : switch (TREE_CODE (_q51))
12463 : {
12464 0 : case INTEGER_CST:
12465 0 : {
12466 0 : switch (TREE_CODE (_p2))
12467 : {
12468 0 : case INTEGER_CST:
12469 0 : {
12470 0 : {
12471 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12472 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12473 0 : if (res) return res;
12474 : }
12475 0 : break;
12476 : }
12477 : default:;
12478 : }
12479 : break;
12480 : }
12481 : default:;
12482 : }
12483 : }
12484 : break;
12485 : }
12486 : default:;
12487 : }
12488 : break;
12489 : }
12490 1821364 : default:;
12491 : }
12492 1821364 : switch (TREE_CODE (_p1))
12493 : {
12494 0 : case MIN_EXPR:
12495 0 : {
12496 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12497 0 : tree _q51 = TREE_OPERAND (_p1, 1);
12498 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12499 : {
12500 0 : switch (TREE_CODE (_p2))
12501 : {
12502 0 : case MIN_EXPR:
12503 0 : {
12504 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12505 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12506 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12507 : {
12508 0 : {
12509 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12510 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12511 0 : if (res) return res;
12512 : }
12513 : }
12514 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12515 : {
12516 0 : {
12517 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12518 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12519 0 : if (res) return res;
12520 : }
12521 : }
12522 : break;
12523 : }
12524 : default:;
12525 : }
12526 : }
12527 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12528 : {
12529 0 : switch (TREE_CODE (_p2))
12530 : {
12531 0 : case MIN_EXPR:
12532 0 : {
12533 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12534 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12535 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12536 : {
12537 0 : {
12538 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12539 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12540 0 : if (res) return res;
12541 : }
12542 : }
12543 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12544 : {
12545 0 : {
12546 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12547 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12548 0 : if (res) return res;
12549 : }
12550 : }
12551 : break;
12552 : }
12553 : default:;
12554 : }
12555 : }
12556 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12557 : {
12558 0 : switch (TREE_CODE (_p2))
12559 : {
12560 0 : case MIN_EXPR:
12561 0 : {
12562 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12563 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12564 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12565 : {
12566 0 : {
12567 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12568 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12569 0 : if (res) return res;
12570 : }
12571 : }
12572 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12573 : {
12574 0 : {
12575 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12576 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12577 0 : if (res) return res;
12578 : }
12579 : }
12580 : break;
12581 : }
12582 0 : default:;
12583 : }
12584 0 : {
12585 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
12586 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12587 0 : if (res) return res;
12588 : }
12589 : }
12590 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12591 : {
12592 0 : switch (TREE_CODE (_p2))
12593 : {
12594 0 : case MIN_EXPR:
12595 0 : {
12596 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12597 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12598 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12599 : {
12600 0 : {
12601 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12602 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12603 0 : if (res) return res;
12604 : }
12605 : }
12606 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12607 : {
12608 0 : {
12609 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12610 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12611 0 : if (res) return res;
12612 : }
12613 : }
12614 : break;
12615 : }
12616 0 : default:;
12617 : }
12618 0 : {
12619 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
12620 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12621 0 : if (res) return res;
12622 : }
12623 : }
12624 : break;
12625 : }
12626 21 : case MAX_EXPR:
12627 21 : {
12628 21 : tree _q50 = TREE_OPERAND (_p1, 0);
12629 21 : tree _q51 = TREE_OPERAND (_p1, 1);
12630 21 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12631 : {
12632 1 : switch (TREE_CODE (_p2))
12633 : {
12634 0 : case MAX_EXPR:
12635 0 : {
12636 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12637 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12638 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12639 : {
12640 0 : {
12641 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12642 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12643 0 : if (res) return res;
12644 : }
12645 : }
12646 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12647 : {
12648 0 : {
12649 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12650 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12651 0 : if (res) return res;
12652 : }
12653 : }
12654 : break;
12655 : }
12656 1 : default:;
12657 : }
12658 1 : {
12659 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
12660 1 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12661 1 : if (res) return res;
12662 : }
12663 : }
12664 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12665 : {
12666 4 : switch (TREE_CODE (_p2))
12667 : {
12668 0 : case MAX_EXPR:
12669 0 : {
12670 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12671 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12672 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12673 : {
12674 0 : {
12675 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12676 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12677 0 : if (res) return res;
12678 : }
12679 : }
12680 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12681 : {
12682 0 : {
12683 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12684 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12685 0 : if (res) return res;
12686 : }
12687 : }
12688 : break;
12689 : }
12690 : default:;
12691 : }
12692 : }
12693 20 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12694 : {
12695 8 : switch (TREE_CODE (_p2))
12696 : {
12697 0 : case MAX_EXPR:
12698 0 : {
12699 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12700 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12701 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12702 : {
12703 0 : {
12704 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12705 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12706 0 : if (res) return res;
12707 : }
12708 : }
12709 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12710 : {
12711 0 : {
12712 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12713 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12714 0 : if (res) return res;
12715 : }
12716 : }
12717 : break;
12718 : }
12719 : default:;
12720 : }
12721 : }
12722 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12723 : {
12724 1 : switch (TREE_CODE (_p2))
12725 : {
12726 1 : case MAX_EXPR:
12727 1 : {
12728 1 : tree _q80 = TREE_OPERAND (_p2, 0);
12729 1 : tree _q81 = TREE_OPERAND (_p2, 1);
12730 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12731 : {
12732 0 : {
12733 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12734 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12735 0 : if (res) return res;
12736 : }
12737 : }
12738 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12739 : {
12740 1 : {
12741 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12742 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12743 1 : if (res) return res;
12744 : }
12745 : }
12746 : break;
12747 : }
12748 : default:;
12749 : }
12750 : }
12751 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12752 : {
12753 4 : {
12754 4 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
12755 4 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12756 4 : if (res) return res;
12757 : }
12758 : }
12759 : break;
12760 : }
12761 1821362 : default:;
12762 : }
12763 1821362 : {
12764 1821362 : tree _q20_pops[1];
12765 1821362 : if (tree_nop_convert (_q20, _q20_pops))
12766 : {
12767 54018 : tree _q30 = _q20_pops[0];
12768 54018 : if (integer_zerop (_q21))
12769 : {
12770 10882 : switch (TREE_CODE (_p1))
12771 : {
12772 0 : case MIN_EXPR:
12773 0 : {
12774 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12775 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12776 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12777 : {
12778 0 : switch (TREE_CODE (_q61))
12779 : {
12780 0 : case INTEGER_CST:
12781 0 : {
12782 0 : switch (TREE_CODE (_p2))
12783 : {
12784 0 : case INTEGER_CST:
12785 0 : {
12786 0 : {
12787 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
12788 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12789 0 : if (res) return res;
12790 : }
12791 0 : break;
12792 : }
12793 : default:;
12794 : }
12795 : break;
12796 : }
12797 : default:;
12798 : }
12799 : }
12800 : break;
12801 : }
12802 : default:;
12803 : }
12804 : }
12805 : }
12806 : }
12807 1821362 : if (integer_zerop (_q21))
12808 : {
12809 327446 : if (tree_expr_nonnegative_p (_p1))
12810 : {
12811 294415 : switch (TREE_CODE (_p2))
12812 : {
12813 17 : case MIN_EXPR:
12814 17 : {
12815 17 : tree _q60 = TREE_OPERAND (_p2, 0);
12816 17 : tree _q61 = TREE_OPERAND (_p2, 1);
12817 17 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
12818 : {
12819 16 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
12820 : {
12821 9 : {
12822 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12823 9 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures);
12824 9 : if (res) return res;
12825 : }
12826 : }
12827 : }
12828 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
12829 : {
12830 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
12831 : {
12832 0 : {
12833 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12834 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures);
12835 0 : if (res) return res;
12836 : }
12837 : }
12838 : }
12839 : break;
12840 : }
12841 : default:;
12842 : }
12843 : }
12844 : }
12845 1821353 : if (tree_expr_nonnegative_p (_q20))
12846 : {
12847 516502 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
12848 : {
12849 166 : switch (TREE_CODE (_p2))
12850 : {
12851 5 : case ABS_EXPR:
12852 5 : {
12853 5 : tree _q60 = TREE_OPERAND (_p2, 0);
12854 5 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
12855 : {
12856 0 : {
12857 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
12858 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12859 0 : if (res) return res;
12860 : }
12861 : }
12862 : break;
12863 : }
12864 : default:;
12865 : }
12866 : }
12867 516502 : switch (TREE_CODE (_p1))
12868 : {
12869 0 : case ABS_EXPR:
12870 0 : {
12871 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12872 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12873 : {
12874 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
12875 : {
12876 0 : {
12877 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
12878 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12879 0 : if (res) return res;
12880 : }
12881 : }
12882 : }
12883 : break;
12884 : }
12885 : default:;
12886 : }
12887 : }
12888 : break;
12889 : }
12890 570778 : case GE_EXPR:
12891 570778 : {
12892 570778 : tree _q20 = TREE_OPERAND (_p0, 0);
12893 570778 : tree _q21 = TREE_OPERAND (_p0, 1);
12894 570778 : switch (TREE_CODE (_q20))
12895 : {
12896 38225 : case MINUS_EXPR:
12897 38225 : {
12898 38225 : tree _q30 = TREE_OPERAND (_q20, 0);
12899 38225 : tree _q31 = TREE_OPERAND (_q20, 1);
12900 38225 : switch (TREE_CODE (_q30))
12901 : {
12902 526 : case SSA_NAME:
12903 526 : {
12904 526 : switch (TREE_CODE (_q31))
12905 : {
12906 0 : case CALL_EXPR:
12907 0 : switch (get_call_combined_fn (_q31))
12908 : {
12909 0 : case CFN_BUILT_IN_FLOORF:
12910 0 : if (call_expr_nargs (_q31) == 1)
12911 : {
12912 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12913 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12914 : {
12915 0 : switch (TREE_CODE (_q50))
12916 : {
12917 0 : case SSA_NAME:
12918 0 : {
12919 0 : switch (TREE_CODE (_q21))
12920 : {
12921 0 : case MINUS_EXPR:
12922 0 : {
12923 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12924 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12925 0 : switch (TREE_CODE (_q80))
12926 : {
12927 0 : case CALL_EXPR:
12928 0 : switch (get_call_combined_fn (_q80))
12929 : {
12930 0 : case CFN_BUILT_IN_CEILF:
12931 0 : if (call_expr_nargs (_q80) == 1)
12932 : {
12933 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12934 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12935 : {
12936 0 : switch (TREE_CODE (_q90))
12937 : {
12938 0 : case SSA_NAME:
12939 0 : {
12940 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12941 : {
12942 0 : switch (TREE_CODE (_q81))
12943 : {
12944 0 : case SSA_NAME:
12945 0 : {
12946 0 : switch (TREE_CODE (_p1))
12947 : {
12948 0 : case CALL_EXPR:
12949 0 : switch (get_call_combined_fn (_p1))
12950 : {
12951 0 : case CFN_BUILT_IN_CEILF:
12952 0 : if (call_expr_nargs (_p1) == 1)
12953 : {
12954 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12955 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12956 : {
12957 0 : switch (TREE_CODE (_q140))
12958 : {
12959 0 : case SSA_NAME:
12960 0 : {
12961 0 : switch (TREE_CODE (_p2))
12962 : {
12963 0 : case CALL_EXPR:
12964 0 : switch (get_call_combined_fn (_p2))
12965 : {
12966 0 : case CFN_BUILT_IN_FLOORF:
12967 0 : if (call_expr_nargs (_p2) == 1)
12968 : {
12969 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12970 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12971 : {
12972 0 : switch (TREE_CODE (_q170))
12973 : {
12974 0 : case SSA_NAME:
12975 0 : {
12976 0 : {
12977 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12978 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
12979 0 : if (res) return res;
12980 : }
12981 0 : break;
12982 : }
12983 : default:;
12984 : }
12985 : }
12986 : }
12987 : break;
12988 : default:;
12989 : }
12990 : break;
12991 : default:;
12992 : }
12993 : break;
12994 : }
12995 : default:;
12996 : }
12997 : }
12998 : }
12999 : break;
13000 : default:;
13001 : }
13002 : break;
13003 : default:;
13004 : }
13005 : break;
13006 : }
13007 : default:;
13008 : }
13009 : }
13010 : break;
13011 : }
13012 : default:;
13013 : }
13014 : }
13015 : }
13016 : break;
13017 : default:;
13018 : }
13019 : break;
13020 : default:;
13021 : }
13022 : break;
13023 : }
13024 : default:;
13025 : }
13026 : break;
13027 : }
13028 : default:;
13029 : }
13030 : }
13031 : }
13032 : break;
13033 0 : case CFN_BUILT_IN_FLOORL:
13034 0 : if (call_expr_nargs (_q31) == 1)
13035 : {
13036 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
13037 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
13038 : {
13039 0 : switch (TREE_CODE (_q50))
13040 : {
13041 0 : case SSA_NAME:
13042 0 : {
13043 0 : switch (TREE_CODE (_q21))
13044 : {
13045 0 : case MINUS_EXPR:
13046 0 : {
13047 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13048 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13049 0 : switch (TREE_CODE (_q80))
13050 : {
13051 0 : case CALL_EXPR:
13052 0 : switch (get_call_combined_fn (_q80))
13053 : {
13054 0 : case CFN_BUILT_IN_CEILL:
13055 0 : if (call_expr_nargs (_q80) == 1)
13056 : {
13057 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
13058 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
13059 : {
13060 0 : switch (TREE_CODE (_q90))
13061 : {
13062 0 : case SSA_NAME:
13063 0 : {
13064 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13065 : {
13066 0 : switch (TREE_CODE (_q81))
13067 : {
13068 0 : case SSA_NAME:
13069 0 : {
13070 0 : switch (TREE_CODE (_p1))
13071 : {
13072 0 : case CALL_EXPR:
13073 0 : switch (get_call_combined_fn (_p1))
13074 : {
13075 0 : case CFN_BUILT_IN_CEILL:
13076 0 : if (call_expr_nargs (_p1) == 1)
13077 : {
13078 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13079 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13080 : {
13081 0 : switch (TREE_CODE (_q140))
13082 : {
13083 0 : case SSA_NAME:
13084 0 : {
13085 0 : switch (TREE_CODE (_p2))
13086 : {
13087 0 : case CALL_EXPR:
13088 0 : switch (get_call_combined_fn (_p2))
13089 : {
13090 0 : case CFN_BUILT_IN_FLOORL:
13091 0 : if (call_expr_nargs (_p2) == 1)
13092 : {
13093 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13094 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13095 : {
13096 0 : switch (TREE_CODE (_q170))
13097 : {
13098 0 : case SSA_NAME:
13099 0 : {
13100 0 : {
13101 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13102 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
13103 0 : if (res) return res;
13104 : }
13105 0 : break;
13106 : }
13107 : default:;
13108 : }
13109 : }
13110 : }
13111 : break;
13112 : default:;
13113 : }
13114 : break;
13115 : default:;
13116 : }
13117 : break;
13118 : }
13119 : default:;
13120 : }
13121 : }
13122 : }
13123 : break;
13124 : default:;
13125 : }
13126 : break;
13127 : default:;
13128 : }
13129 : break;
13130 : }
13131 : default:;
13132 : }
13133 : }
13134 : break;
13135 : }
13136 : default:;
13137 : }
13138 : }
13139 : }
13140 : break;
13141 : default:;
13142 : }
13143 : break;
13144 : default:;
13145 : }
13146 : break;
13147 : }
13148 : default:;
13149 : }
13150 : break;
13151 : }
13152 : default:;
13153 : }
13154 : }
13155 : }
13156 : break;
13157 0 : case CFN_FLOOR:
13158 0 : if (call_expr_nargs (_q31) == 1)
13159 : {
13160 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
13161 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
13162 : {
13163 0 : switch (TREE_CODE (_q50))
13164 : {
13165 0 : case SSA_NAME:
13166 0 : {
13167 0 : switch (TREE_CODE (_q21))
13168 : {
13169 0 : case MINUS_EXPR:
13170 0 : {
13171 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13172 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13173 0 : switch (TREE_CODE (_q80))
13174 : {
13175 0 : case CALL_EXPR:
13176 0 : switch (get_call_combined_fn (_q80))
13177 : {
13178 0 : case CFN_CEIL:
13179 0 : if (call_expr_nargs (_q80) == 1)
13180 : {
13181 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
13182 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
13183 : {
13184 0 : switch (TREE_CODE (_q90))
13185 : {
13186 0 : case SSA_NAME:
13187 0 : {
13188 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13189 : {
13190 0 : switch (TREE_CODE (_q81))
13191 : {
13192 0 : case SSA_NAME:
13193 0 : {
13194 0 : switch (TREE_CODE (_p1))
13195 : {
13196 0 : case CALL_EXPR:
13197 0 : switch (get_call_combined_fn (_p1))
13198 : {
13199 0 : case CFN_CEIL:
13200 0 : if (call_expr_nargs (_p1) == 1)
13201 : {
13202 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13203 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13204 : {
13205 0 : switch (TREE_CODE (_q140))
13206 : {
13207 0 : case SSA_NAME:
13208 0 : {
13209 0 : switch (TREE_CODE (_p2))
13210 : {
13211 0 : case CALL_EXPR:
13212 0 : switch (get_call_combined_fn (_p2))
13213 : {
13214 0 : case CFN_FLOOR:
13215 0 : if (call_expr_nargs (_p2) == 1)
13216 : {
13217 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13218 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13219 : {
13220 0 : switch (TREE_CODE (_q170))
13221 : {
13222 0 : case SSA_NAME:
13223 0 : {
13224 0 : {
13225 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13226 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
13227 0 : if (res) return res;
13228 : }
13229 0 : break;
13230 : }
13231 : default:;
13232 : }
13233 : }
13234 : }
13235 : break;
13236 : default:;
13237 : }
13238 : break;
13239 : default:;
13240 : }
13241 : break;
13242 : }
13243 : default:;
13244 : }
13245 : }
13246 : }
13247 : break;
13248 : default:;
13249 : }
13250 : break;
13251 : default:;
13252 : }
13253 : break;
13254 : }
13255 : default:;
13256 : }
13257 : }
13258 : break;
13259 : }
13260 : default:;
13261 : }
13262 : }
13263 : }
13264 : break;
13265 : default:;
13266 : }
13267 : break;
13268 : default:;
13269 : }
13270 : break;
13271 : }
13272 : default:;
13273 : }
13274 : break;
13275 : }
13276 : default:;
13277 : }
13278 : }
13279 : }
13280 : break;
13281 0 : case CFN_BUILT_IN_FLOOR:
13282 0 : if (call_expr_nargs (_q31) == 1)
13283 : {
13284 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
13285 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
13286 : {
13287 0 : switch (TREE_CODE (_q50))
13288 : {
13289 0 : case SSA_NAME:
13290 0 : {
13291 0 : switch (TREE_CODE (_q21))
13292 : {
13293 0 : case MINUS_EXPR:
13294 0 : {
13295 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13296 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13297 0 : switch (TREE_CODE (_q80))
13298 : {
13299 0 : case CALL_EXPR:
13300 0 : switch (get_call_combined_fn (_q80))
13301 : {
13302 0 : case CFN_BUILT_IN_CEIL:
13303 0 : if (call_expr_nargs (_q80) == 1)
13304 : {
13305 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
13306 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
13307 : {
13308 0 : switch (TREE_CODE (_q90))
13309 : {
13310 0 : case SSA_NAME:
13311 0 : {
13312 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13313 : {
13314 0 : switch (TREE_CODE (_q81))
13315 : {
13316 0 : case SSA_NAME:
13317 0 : {
13318 0 : switch (TREE_CODE (_p1))
13319 : {
13320 0 : case CALL_EXPR:
13321 0 : switch (get_call_combined_fn (_p1))
13322 : {
13323 0 : case CFN_BUILT_IN_CEIL:
13324 0 : if (call_expr_nargs (_p1) == 1)
13325 : {
13326 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13327 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13328 : {
13329 0 : switch (TREE_CODE (_q140))
13330 : {
13331 0 : case SSA_NAME:
13332 0 : {
13333 0 : switch (TREE_CODE (_p2))
13334 : {
13335 0 : case CALL_EXPR:
13336 0 : switch (get_call_combined_fn (_p2))
13337 : {
13338 0 : case CFN_BUILT_IN_FLOOR:
13339 0 : if (call_expr_nargs (_p2) == 1)
13340 : {
13341 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13342 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13343 : {
13344 0 : switch (TREE_CODE (_q170))
13345 : {
13346 0 : case SSA_NAME:
13347 0 : {
13348 0 : {
13349 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13350 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13351 0 : if (res) return res;
13352 : }
13353 0 : break;
13354 : }
13355 : default:;
13356 : }
13357 : }
13358 : }
13359 : break;
13360 : default:;
13361 : }
13362 : break;
13363 : default:;
13364 : }
13365 : break;
13366 : }
13367 : default:;
13368 : }
13369 : }
13370 : }
13371 : break;
13372 : default:;
13373 : }
13374 : break;
13375 : default:;
13376 : }
13377 : break;
13378 : }
13379 : default:;
13380 : }
13381 : }
13382 : break;
13383 : }
13384 : default:;
13385 : }
13386 : }
13387 : }
13388 : break;
13389 : default:;
13390 : }
13391 : break;
13392 : default:;
13393 : }
13394 : break;
13395 : }
13396 : default:;
13397 : }
13398 : break;
13399 : }
13400 : default:;
13401 : }
13402 : }
13403 : }
13404 : break;
13405 : default:;
13406 : }
13407 : break;
13408 : default:;
13409 : }
13410 : break;
13411 : }
13412 : default:;
13413 : }
13414 : break;
13415 : }
13416 61767 : CASE_CONVERT:
13417 61767 : {
13418 61767 : tree _q30 = TREE_OPERAND (_q20, 0);
13419 61767 : switch (TREE_CODE (_q21))
13420 : {
13421 32390 : case INTEGER_CST:
13422 32390 : {
13423 32390 : switch (TREE_CODE (_p1))
13424 : {
13425 12117 : CASE_CONVERT:
13426 12117 : {
13427 12117 : tree _q60 = TREE_OPERAND (_p1, 0);
13428 12117 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13429 : {
13430 6630 : switch (TREE_CODE (_p2))
13431 : {
13432 6622 : case INTEGER_CST:
13433 6622 : {
13434 6622 : {
13435 6622 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13436 6622 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13437 6622 : if (res) return res;
13438 : }
13439 6622 : break;
13440 : }
13441 : default:;
13442 : }
13443 : }
13444 : break;
13445 : }
13446 32390 : default:;
13447 : }
13448 32390 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
13449 : {
13450 312 : switch (TREE_CODE (_p2))
13451 : {
13452 299 : case INTEGER_CST:
13453 299 : {
13454 299 : {
13455 299 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13456 299 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13457 299 : if (res) return res;
13458 : }
13459 294 : break;
13460 : }
13461 : default:;
13462 : }
13463 : }
13464 32385 : switch (TREE_CODE (_p1))
13465 : {
13466 398 : case PLUS_EXPR:
13467 398 : {
13468 398 : tree _q60 = TREE_OPERAND (_p1, 0);
13469 398 : tree _q61 = TREE_OPERAND (_p1, 1);
13470 398 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13471 : {
13472 0 : switch (TREE_CODE (_q61))
13473 : {
13474 0 : case INTEGER_CST:
13475 0 : {
13476 0 : switch (TREE_CODE (_p2))
13477 : {
13478 0 : case INTEGER_CST:
13479 0 : {
13480 0 : {
13481 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13482 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13483 0 : if (res) return res;
13484 : }
13485 0 : break;
13486 : }
13487 : default:;
13488 : }
13489 : break;
13490 : }
13491 : default:;
13492 : }
13493 : }
13494 : break;
13495 : }
13496 73 : case MINUS_EXPR:
13497 73 : {
13498 73 : tree _q60 = TREE_OPERAND (_p1, 0);
13499 73 : tree _q61 = TREE_OPERAND (_p1, 1);
13500 73 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13501 : {
13502 0 : switch (TREE_CODE (_q61))
13503 : {
13504 0 : case INTEGER_CST:
13505 0 : {
13506 0 : switch (TREE_CODE (_p2))
13507 : {
13508 0 : case INTEGER_CST:
13509 0 : {
13510 0 : {
13511 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13512 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13513 0 : if (res) return res;
13514 : }
13515 0 : break;
13516 : }
13517 : default:;
13518 : }
13519 : break;
13520 : }
13521 : default:;
13522 : }
13523 : }
13524 : break;
13525 : }
13526 : default:;
13527 : }
13528 : break;
13529 : }
13530 : default:;
13531 : }
13532 : break;
13533 : }
13534 570773 : default:;
13535 : }
13536 570773 : switch (TREE_CODE (_q21))
13537 : {
13538 214892 : case INTEGER_CST:
13539 214892 : {
13540 214892 : switch (TREE_CODE (_p1))
13541 : {
13542 56844 : CASE_CONVERT:
13543 56844 : {
13544 56844 : tree _q50 = TREE_OPERAND (_p1, 0);
13545 56844 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13546 : {
13547 150 : switch (TREE_CODE (_p2))
13548 : {
13549 45 : case INTEGER_CST:
13550 45 : {
13551 45 : {
13552 45 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13553 45 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13554 45 : if (res) return res;
13555 : }
13556 45 : break;
13557 : }
13558 : default:;
13559 : }
13560 : }
13561 : break;
13562 : }
13563 214892 : default:;
13564 : }
13565 214892 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13566 : {
13567 42992 : switch (TREE_CODE (_p2))
13568 : {
13569 10806 : case INTEGER_CST:
13570 10806 : {
13571 10806 : {
13572 10806 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13573 10806 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13574 10806 : if (res) return res;
13575 : }
13576 19 : break;
13577 : }
13578 : default:;
13579 : }
13580 : }
13581 204105 : switch (TREE_CODE (_p1))
13582 : {
13583 17065 : case PLUS_EXPR:
13584 17065 : {
13585 17065 : tree _q50 = TREE_OPERAND (_p1, 0);
13586 17065 : tree _q51 = TREE_OPERAND (_p1, 1);
13587 17065 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13588 : {
13589 6533 : switch (TREE_CODE (_q51))
13590 : {
13591 6533 : case INTEGER_CST:
13592 6533 : {
13593 6533 : switch (TREE_CODE (_p2))
13594 : {
13595 6533 : case INTEGER_CST:
13596 6533 : {
13597 6533 : {
13598 6533 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13599 6533 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13600 6533 : if (res) return res;
13601 : }
13602 0 : break;
13603 : }
13604 : default:;
13605 : }
13606 : break;
13607 : }
13608 : default:;
13609 : }
13610 : }
13611 : break;
13612 : }
13613 223 : case MINUS_EXPR:
13614 223 : {
13615 223 : tree _q50 = TREE_OPERAND (_p1, 0);
13616 223 : tree _q51 = TREE_OPERAND (_p1, 1);
13617 223 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13618 : {
13619 0 : switch (TREE_CODE (_q51))
13620 : {
13621 0 : case INTEGER_CST:
13622 0 : {
13623 0 : switch (TREE_CODE (_p2))
13624 : {
13625 0 : case INTEGER_CST:
13626 0 : {
13627 0 : {
13628 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13629 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13630 0 : if (res) return res;
13631 : }
13632 0 : break;
13633 : }
13634 : default:;
13635 : }
13636 : break;
13637 : }
13638 : default:;
13639 : }
13640 : }
13641 : break;
13642 : }
13643 : default:;
13644 : }
13645 : break;
13646 : }
13647 553453 : default:;
13648 : }
13649 553453 : switch (TREE_CODE (_p1))
13650 : {
13651 16 : case MIN_EXPR:
13652 16 : {
13653 16 : tree _q50 = TREE_OPERAND (_p1, 0);
13654 16 : tree _q51 = TREE_OPERAND (_p1, 1);
13655 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13656 : {
13657 15 : switch (TREE_CODE (_p2))
13658 : {
13659 0 : case MIN_EXPR:
13660 0 : {
13661 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13662 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13663 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13664 : {
13665 0 : {
13666 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13667 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13668 0 : if (res) return res;
13669 : }
13670 : }
13671 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13672 : {
13673 0 : {
13674 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13675 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13676 0 : if (res) return res;
13677 : }
13678 : }
13679 : break;
13680 : }
13681 15 : default:;
13682 : }
13683 15 : {
13684 15 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
13685 15 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13686 15 : if (res) return res;
13687 : }
13688 : }
13689 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13690 : {
13691 0 : switch (TREE_CODE (_p2))
13692 : {
13693 0 : case MIN_EXPR:
13694 0 : {
13695 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13696 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13697 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13698 : {
13699 0 : {
13700 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13701 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13702 0 : if (res) return res;
13703 : }
13704 : }
13705 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13706 : {
13707 0 : {
13708 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13709 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13710 0 : if (res) return res;
13711 : }
13712 : }
13713 : break;
13714 : }
13715 : default:;
13716 : }
13717 : }
13718 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13719 : {
13720 0 : switch (TREE_CODE (_p2))
13721 : {
13722 0 : case MIN_EXPR:
13723 0 : {
13724 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13725 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13726 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13727 : {
13728 0 : {
13729 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13730 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13731 0 : if (res) return res;
13732 : }
13733 : }
13734 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13735 : {
13736 0 : {
13737 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13738 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13739 0 : if (res) return res;
13740 : }
13741 : }
13742 : break;
13743 : }
13744 : default:;
13745 : }
13746 : }
13747 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13748 : {
13749 0 : switch (TREE_CODE (_p2))
13750 : {
13751 0 : case MIN_EXPR:
13752 0 : {
13753 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13754 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13755 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13756 : {
13757 0 : {
13758 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13759 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13760 0 : if (res) return res;
13761 : }
13762 : }
13763 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13764 : {
13765 0 : {
13766 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13767 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13768 0 : if (res) return res;
13769 : }
13770 : }
13771 : break;
13772 : }
13773 : default:;
13774 : }
13775 : }
13776 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13777 : {
13778 0 : {
13779 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
13780 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13781 0 : if (res) return res;
13782 : }
13783 : }
13784 : break;
13785 : }
13786 9 : case MAX_EXPR:
13787 9 : {
13788 9 : tree _q50 = TREE_OPERAND (_p1, 0);
13789 9 : tree _q51 = TREE_OPERAND (_p1, 1);
13790 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13791 : {
13792 1 : switch (TREE_CODE (_p2))
13793 : {
13794 0 : case MAX_EXPR:
13795 0 : {
13796 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13797 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13798 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13799 : {
13800 0 : {
13801 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13802 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13803 0 : if (res) return res;
13804 : }
13805 : }
13806 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13807 : {
13808 0 : {
13809 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13810 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13811 0 : if (res) return res;
13812 : }
13813 : }
13814 : break;
13815 : }
13816 : default:;
13817 : }
13818 : }
13819 9 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13820 : {
13821 1 : switch (TREE_CODE (_p2))
13822 : {
13823 0 : case MAX_EXPR:
13824 0 : {
13825 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13826 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13827 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13828 : {
13829 0 : {
13830 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13831 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13832 0 : if (res) return res;
13833 : }
13834 : }
13835 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13836 : {
13837 0 : {
13838 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13839 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13840 0 : if (res) return res;
13841 : }
13842 : }
13843 : break;
13844 : }
13845 : default:;
13846 : }
13847 : }
13848 9 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13849 : {
13850 1 : switch (TREE_CODE (_p2))
13851 : {
13852 0 : case MAX_EXPR:
13853 0 : {
13854 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13855 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13856 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13857 : {
13858 0 : {
13859 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13860 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13861 0 : if (res) return res;
13862 : }
13863 : }
13864 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13865 : {
13866 0 : {
13867 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13868 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13869 0 : if (res) return res;
13870 : }
13871 : }
13872 : break;
13873 : }
13874 1 : default:;
13875 : }
13876 1 : {
13877 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
13878 1 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13879 1 : if (res) return res;
13880 : }
13881 : }
13882 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13883 : {
13884 8 : switch (TREE_CODE (_p2))
13885 : {
13886 0 : case MAX_EXPR:
13887 0 : {
13888 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13889 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13890 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13891 : {
13892 0 : {
13893 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13894 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13895 0 : if (res) return res;
13896 : }
13897 : }
13898 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13899 : {
13900 0 : {
13901 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13902 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13903 0 : if (res) return res;
13904 : }
13905 : }
13906 : break;
13907 : }
13908 8 : default:;
13909 : }
13910 8 : {
13911 8 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
13912 8 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13913 8 : if (res) return res;
13914 : }
13915 : }
13916 : break;
13917 : }
13918 553443 : default:;
13919 : }
13920 553443 : {
13921 553443 : tree _q20_pops[1];
13922 553443 : if (tree_nop_convert (_q20, _q20_pops))
13923 : {
13924 27108 : tree _q30 = _q20_pops[0];
13925 27108 : if (integer_zerop (_q21))
13926 : {
13927 23913 : switch (TREE_CODE (_p1))
13928 : {
13929 0 : case MAX_EXPR:
13930 0 : {
13931 0 : tree _q60 = TREE_OPERAND (_p1, 0);
13932 0 : tree _q61 = TREE_OPERAND (_p1, 1);
13933 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13934 : {
13935 0 : switch (TREE_CODE (_q61))
13936 : {
13937 0 : case INTEGER_CST:
13938 0 : {
13939 0 : switch (TREE_CODE (_p2))
13940 : {
13941 0 : case INTEGER_CST:
13942 0 : {
13943 0 : {
13944 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
13945 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13946 0 : if (res) return res;
13947 : }
13948 0 : break;
13949 : }
13950 : default:;
13951 : }
13952 : break;
13953 : }
13954 : default:;
13955 : }
13956 : }
13957 : break;
13958 : }
13959 : default:;
13960 : }
13961 : }
13962 : }
13963 : }
13964 553443 : if (tree_expr_nonnegative_p (_q21))
13965 : {
13966 402164 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13967 : {
13968 32263 : switch (TREE_CODE (_p2))
13969 : {
13970 0 : case ABS_EXPR:
13971 0 : {
13972 0 : tree _q60 = TREE_OPERAND (_p2, 0);
13973 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13974 : {
13975 0 : {
13976 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13977 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13978 0 : if (res) return res;
13979 : }
13980 : }
13981 : break;
13982 : }
13983 : default:;
13984 : }
13985 : }
13986 402164 : switch (TREE_CODE (_p1))
13987 : {
13988 12 : case ABS_EXPR:
13989 12 : {
13990 12 : tree _q50 = TREE_OPERAND (_p1, 0);
13991 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13992 : {
13993 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
13994 : {
13995 0 : {
13996 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13997 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13998 0 : if (res) return res;
13999 : }
14000 : }
14001 : }
14002 : break;
14003 : }
14004 : default:;
14005 : }
14006 : }
14007 : break;
14008 : }
14009 929706 : case GT_EXPR:
14010 929706 : {
14011 929706 : tree _q20 = TREE_OPERAND (_p0, 0);
14012 929706 : tree _q21 = TREE_OPERAND (_p0, 1);
14013 929706 : switch (TREE_CODE (_q20))
14014 : {
14015 1086 : case MINUS_EXPR:
14016 1086 : {
14017 1086 : tree _q30 = TREE_OPERAND (_q20, 0);
14018 1086 : tree _q31 = TREE_OPERAND (_q20, 1);
14019 1086 : switch (TREE_CODE (_q30))
14020 : {
14021 0 : case CALL_EXPR:
14022 0 : switch (get_call_combined_fn (_q30))
14023 : {
14024 0 : case CFN_BUILT_IN_CEIL:
14025 0 : if (call_expr_nargs (_q30) == 1)
14026 : {
14027 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14028 0 : switch (TREE_CODE (_q40))
14029 : {
14030 0 : case SSA_NAME:
14031 0 : {
14032 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14033 : {
14034 0 : switch (TREE_CODE (_q31))
14035 : {
14036 0 : case SSA_NAME:
14037 0 : {
14038 0 : switch (TREE_CODE (_q21))
14039 : {
14040 0 : case MINUS_EXPR:
14041 0 : {
14042 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14043 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14044 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14045 : {
14046 0 : switch (TREE_CODE (_q80))
14047 : {
14048 0 : case SSA_NAME:
14049 0 : {
14050 0 : switch (TREE_CODE (_q81))
14051 : {
14052 0 : case CALL_EXPR:
14053 0 : switch (get_call_combined_fn (_q81))
14054 : {
14055 0 : case CFN_BUILT_IN_FLOOR:
14056 0 : if (call_expr_nargs (_q81) == 1)
14057 : {
14058 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14059 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14060 : {
14061 0 : switch (TREE_CODE (_q110))
14062 : {
14063 0 : case SSA_NAME:
14064 0 : {
14065 0 : switch (TREE_CODE (_p1))
14066 : {
14067 0 : case CALL_EXPR:
14068 0 : switch (get_call_combined_fn (_p1))
14069 : {
14070 0 : case CFN_BUILT_IN_FLOOR:
14071 0 : if (call_expr_nargs (_p1) == 1)
14072 : {
14073 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14074 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14075 : {
14076 0 : switch (TREE_CODE (_q140))
14077 : {
14078 0 : case SSA_NAME:
14079 0 : {
14080 0 : switch (TREE_CODE (_p2))
14081 : {
14082 0 : case CALL_EXPR:
14083 0 : switch (get_call_combined_fn (_p2))
14084 : {
14085 0 : case CFN_BUILT_IN_CEIL:
14086 0 : if (call_expr_nargs (_p2) == 1)
14087 : {
14088 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14089 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14090 : {
14091 0 : switch (TREE_CODE (_q170))
14092 : {
14093 0 : case SSA_NAME:
14094 0 : {
14095 0 : {
14096 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14097 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
14098 0 : if (res) return res;
14099 : }
14100 0 : break;
14101 : }
14102 : default:;
14103 : }
14104 : }
14105 : }
14106 : break;
14107 : default:;
14108 : }
14109 : break;
14110 : default:;
14111 : }
14112 : break;
14113 : }
14114 : default:;
14115 : }
14116 : }
14117 : }
14118 : break;
14119 : default:;
14120 : }
14121 : break;
14122 : default:;
14123 : }
14124 : break;
14125 : }
14126 : default:;
14127 : }
14128 : }
14129 : }
14130 : break;
14131 : default:;
14132 : }
14133 : break;
14134 : default:;
14135 : }
14136 : break;
14137 : }
14138 : default:;
14139 : }
14140 : }
14141 : break;
14142 : }
14143 : default:;
14144 : }
14145 : break;
14146 : }
14147 : default:;
14148 : }
14149 : }
14150 : break;
14151 : }
14152 : default:;
14153 : }
14154 : }
14155 : break;
14156 0 : case CFN_CEIL:
14157 0 : if (call_expr_nargs (_q30) == 1)
14158 : {
14159 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14160 0 : switch (TREE_CODE (_q40))
14161 : {
14162 0 : case SSA_NAME:
14163 0 : {
14164 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14165 : {
14166 0 : switch (TREE_CODE (_q31))
14167 : {
14168 0 : case SSA_NAME:
14169 0 : {
14170 0 : switch (TREE_CODE (_q21))
14171 : {
14172 0 : case MINUS_EXPR:
14173 0 : {
14174 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14175 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14176 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14177 : {
14178 0 : switch (TREE_CODE (_q80))
14179 : {
14180 0 : case SSA_NAME:
14181 0 : {
14182 0 : switch (TREE_CODE (_q81))
14183 : {
14184 0 : case CALL_EXPR:
14185 0 : switch (get_call_combined_fn (_q81))
14186 : {
14187 0 : case CFN_FLOOR:
14188 0 : if (call_expr_nargs (_q81) == 1)
14189 : {
14190 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14191 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14192 : {
14193 0 : switch (TREE_CODE (_q110))
14194 : {
14195 0 : case SSA_NAME:
14196 0 : {
14197 0 : switch (TREE_CODE (_p1))
14198 : {
14199 0 : case CALL_EXPR:
14200 0 : switch (get_call_combined_fn (_p1))
14201 : {
14202 0 : case CFN_FLOOR:
14203 0 : if (call_expr_nargs (_p1) == 1)
14204 : {
14205 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14206 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14207 : {
14208 0 : switch (TREE_CODE (_q140))
14209 : {
14210 0 : case SSA_NAME:
14211 0 : {
14212 0 : switch (TREE_CODE (_p2))
14213 : {
14214 0 : case CALL_EXPR:
14215 0 : switch (get_call_combined_fn (_p2))
14216 : {
14217 0 : case CFN_CEIL:
14218 0 : if (call_expr_nargs (_p2) == 1)
14219 : {
14220 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14221 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14222 : {
14223 0 : switch (TREE_CODE (_q170))
14224 : {
14225 0 : case SSA_NAME:
14226 0 : {
14227 0 : {
14228 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14229 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
14230 0 : if (res) return res;
14231 : }
14232 0 : break;
14233 : }
14234 : default:;
14235 : }
14236 : }
14237 : }
14238 : break;
14239 : default:;
14240 : }
14241 : break;
14242 : default:;
14243 : }
14244 : break;
14245 : }
14246 : default:;
14247 : }
14248 : }
14249 : }
14250 : break;
14251 : default:;
14252 : }
14253 : break;
14254 : default:;
14255 : }
14256 : break;
14257 : }
14258 : default:;
14259 : }
14260 : }
14261 : }
14262 : break;
14263 : default:;
14264 : }
14265 : break;
14266 : default:;
14267 : }
14268 : break;
14269 : }
14270 : default:;
14271 : }
14272 : }
14273 : break;
14274 : }
14275 : default:;
14276 : }
14277 : break;
14278 : }
14279 : default:;
14280 : }
14281 : }
14282 : break;
14283 : }
14284 : default:;
14285 : }
14286 : }
14287 : break;
14288 0 : case CFN_BUILT_IN_CEILF:
14289 0 : if (call_expr_nargs (_q30) == 1)
14290 : {
14291 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14292 0 : switch (TREE_CODE (_q40))
14293 : {
14294 0 : case SSA_NAME:
14295 0 : {
14296 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14297 : {
14298 0 : switch (TREE_CODE (_q31))
14299 : {
14300 0 : case SSA_NAME:
14301 0 : {
14302 0 : switch (TREE_CODE (_q21))
14303 : {
14304 0 : case MINUS_EXPR:
14305 0 : {
14306 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14307 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14308 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14309 : {
14310 0 : switch (TREE_CODE (_q80))
14311 : {
14312 0 : case SSA_NAME:
14313 0 : {
14314 0 : switch (TREE_CODE (_q81))
14315 : {
14316 0 : case CALL_EXPR:
14317 0 : switch (get_call_combined_fn (_q81))
14318 : {
14319 0 : case CFN_BUILT_IN_FLOORF:
14320 0 : if (call_expr_nargs (_q81) == 1)
14321 : {
14322 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14323 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14324 : {
14325 0 : switch (TREE_CODE (_q110))
14326 : {
14327 0 : case SSA_NAME:
14328 0 : {
14329 0 : switch (TREE_CODE (_p1))
14330 : {
14331 0 : case CALL_EXPR:
14332 0 : switch (get_call_combined_fn (_p1))
14333 : {
14334 0 : case CFN_BUILT_IN_FLOORF:
14335 0 : if (call_expr_nargs (_p1) == 1)
14336 : {
14337 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14338 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14339 : {
14340 0 : switch (TREE_CODE (_q140))
14341 : {
14342 0 : case SSA_NAME:
14343 0 : {
14344 0 : switch (TREE_CODE (_p2))
14345 : {
14346 0 : case CALL_EXPR:
14347 0 : switch (get_call_combined_fn (_p2))
14348 : {
14349 0 : case CFN_BUILT_IN_CEILF:
14350 0 : if (call_expr_nargs (_p2) == 1)
14351 : {
14352 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14353 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14354 : {
14355 0 : switch (TREE_CODE (_q170))
14356 : {
14357 0 : case SSA_NAME:
14358 0 : {
14359 0 : {
14360 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14361 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
14362 0 : if (res) return res;
14363 : }
14364 0 : break;
14365 : }
14366 : default:;
14367 : }
14368 : }
14369 : }
14370 : break;
14371 : default:;
14372 : }
14373 : break;
14374 : default:;
14375 : }
14376 : break;
14377 : }
14378 : default:;
14379 : }
14380 : }
14381 : }
14382 : break;
14383 : default:;
14384 : }
14385 : break;
14386 : default:;
14387 : }
14388 : break;
14389 : }
14390 : default:;
14391 : }
14392 : }
14393 : }
14394 : break;
14395 : default:;
14396 : }
14397 : break;
14398 : default:;
14399 : }
14400 : break;
14401 : }
14402 : default:;
14403 : }
14404 : }
14405 : break;
14406 : }
14407 : default:;
14408 : }
14409 : break;
14410 : }
14411 : default:;
14412 : }
14413 : }
14414 : break;
14415 : }
14416 : default:;
14417 : }
14418 : }
14419 : break;
14420 0 : case CFN_BUILT_IN_CEILL:
14421 0 : if (call_expr_nargs (_q30) == 1)
14422 : {
14423 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14424 0 : switch (TREE_CODE (_q40))
14425 : {
14426 0 : case SSA_NAME:
14427 0 : {
14428 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14429 : {
14430 0 : switch (TREE_CODE (_q31))
14431 : {
14432 0 : case SSA_NAME:
14433 0 : {
14434 0 : switch (TREE_CODE (_q21))
14435 : {
14436 0 : case MINUS_EXPR:
14437 0 : {
14438 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14439 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14440 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14441 : {
14442 0 : switch (TREE_CODE (_q80))
14443 : {
14444 0 : case SSA_NAME:
14445 0 : {
14446 0 : switch (TREE_CODE (_q81))
14447 : {
14448 0 : case CALL_EXPR:
14449 0 : switch (get_call_combined_fn (_q81))
14450 : {
14451 0 : case CFN_BUILT_IN_FLOORL:
14452 0 : if (call_expr_nargs (_q81) == 1)
14453 : {
14454 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14455 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14456 : {
14457 0 : switch (TREE_CODE (_q110))
14458 : {
14459 0 : case SSA_NAME:
14460 0 : {
14461 0 : switch (TREE_CODE (_p1))
14462 : {
14463 0 : case CALL_EXPR:
14464 0 : switch (get_call_combined_fn (_p1))
14465 : {
14466 0 : case CFN_BUILT_IN_FLOORL:
14467 0 : if (call_expr_nargs (_p1) == 1)
14468 : {
14469 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14470 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14471 : {
14472 0 : switch (TREE_CODE (_q140))
14473 : {
14474 0 : case SSA_NAME:
14475 0 : {
14476 0 : switch (TREE_CODE (_p2))
14477 : {
14478 0 : case CALL_EXPR:
14479 0 : switch (get_call_combined_fn (_p2))
14480 : {
14481 0 : case CFN_BUILT_IN_CEILL:
14482 0 : if (call_expr_nargs (_p2) == 1)
14483 : {
14484 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14485 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14486 : {
14487 0 : switch (TREE_CODE (_q170))
14488 : {
14489 0 : case SSA_NAME:
14490 0 : {
14491 0 : {
14492 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14493 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
14494 0 : if (res) return res;
14495 : }
14496 0 : break;
14497 : }
14498 : default:;
14499 : }
14500 : }
14501 : }
14502 : break;
14503 : default:;
14504 : }
14505 : break;
14506 : default:;
14507 : }
14508 : break;
14509 : }
14510 : default:;
14511 : }
14512 : }
14513 : }
14514 : break;
14515 : default:;
14516 : }
14517 : break;
14518 : default:;
14519 : }
14520 : break;
14521 : }
14522 : default:;
14523 : }
14524 : }
14525 : }
14526 : break;
14527 : default:;
14528 : }
14529 : break;
14530 : default:;
14531 : }
14532 : break;
14533 : }
14534 : default:;
14535 : }
14536 : }
14537 : break;
14538 : }
14539 : default:;
14540 : }
14541 : break;
14542 : }
14543 : default:;
14544 : }
14545 : }
14546 : break;
14547 : }
14548 : default:;
14549 : }
14550 : }
14551 : break;
14552 : default:;
14553 : }
14554 : break;
14555 : default:;
14556 : }
14557 : break;
14558 : }
14559 89610 : CASE_CONVERT:
14560 89610 : {
14561 89610 : tree _q30 = TREE_OPERAND (_q20, 0);
14562 89610 : switch (TREE_CODE (_q21))
14563 : {
14564 4084 : case INTEGER_CST:
14565 4084 : {
14566 4084 : switch (TREE_CODE (_p1))
14567 : {
14568 203 : CASE_CONVERT:
14569 203 : {
14570 203 : tree _q60 = TREE_OPERAND (_p1, 0);
14571 203 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14572 : {
14573 63 : switch (TREE_CODE (_p2))
14574 : {
14575 62 : case INTEGER_CST:
14576 62 : {
14577 62 : {
14578 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14579 62 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14580 62 : if (res) return res;
14581 : }
14582 62 : break;
14583 : }
14584 : default:;
14585 : }
14586 : }
14587 : break;
14588 : }
14589 4084 : default:;
14590 : }
14591 4084 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
14592 : {
14593 5 : switch (TREE_CODE (_p2))
14594 : {
14595 3 : case INTEGER_CST:
14596 3 : {
14597 3 : {
14598 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14599 3 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14600 3 : if (res) return res;
14601 : }
14602 3 : break;
14603 : }
14604 : default:;
14605 : }
14606 : }
14607 4084 : switch (TREE_CODE (_p1))
14608 : {
14609 1170 : case PLUS_EXPR:
14610 1170 : {
14611 1170 : tree _q60 = TREE_OPERAND (_p1, 0);
14612 1170 : tree _q61 = TREE_OPERAND (_p1, 1);
14613 1170 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14614 : {
14615 24 : switch (TREE_CODE (_q61))
14616 : {
14617 24 : case INTEGER_CST:
14618 24 : {
14619 24 : switch (TREE_CODE (_p2))
14620 : {
14621 24 : case INTEGER_CST:
14622 24 : {
14623 24 : {
14624 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14625 24 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14626 24 : if (res) return res;
14627 : }
14628 24 : break;
14629 : }
14630 : default:;
14631 : }
14632 : break;
14633 : }
14634 : default:;
14635 : }
14636 : }
14637 : break;
14638 : }
14639 3 : case MINUS_EXPR:
14640 3 : {
14641 3 : tree _q60 = TREE_OPERAND (_p1, 0);
14642 3 : tree _q61 = TREE_OPERAND (_p1, 1);
14643 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14644 : {
14645 0 : switch (TREE_CODE (_q61))
14646 : {
14647 0 : case INTEGER_CST:
14648 0 : {
14649 0 : switch (TREE_CODE (_p2))
14650 : {
14651 0 : case INTEGER_CST:
14652 0 : {
14653 0 : {
14654 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14655 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14656 0 : if (res) return res;
14657 : }
14658 0 : break;
14659 : }
14660 : default:;
14661 : }
14662 : break;
14663 : }
14664 : default:;
14665 : }
14666 : }
14667 : break;
14668 : }
14669 : default:;
14670 : }
14671 : break;
14672 : }
14673 : default:;
14674 : }
14675 : break;
14676 : }
14677 929706 : default:;
14678 : }
14679 929706 : switch (TREE_CODE (_q21))
14680 : {
14681 482199 : case INTEGER_CST:
14682 482199 : {
14683 482199 : switch (TREE_CODE (_p1))
14684 : {
14685 54035 : CASE_CONVERT:
14686 54035 : {
14687 54035 : tree _q50 = TREE_OPERAND (_p1, 0);
14688 54035 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14689 : {
14690 12566 : switch (TREE_CODE (_p2))
14691 : {
14692 12530 : case INTEGER_CST:
14693 12530 : {
14694 12530 : {
14695 12530 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14696 12530 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14697 12530 : if (res) return res;
14698 : }
14699 12221 : break;
14700 : }
14701 : default:;
14702 : }
14703 : }
14704 : break;
14705 : }
14706 481890 : default:;
14707 : }
14708 481890 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14709 : {
14710 8829 : switch (TREE_CODE (_p2))
14711 : {
14712 8655 : case INTEGER_CST:
14713 8655 : {
14714 8655 : {
14715 8655 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14716 8655 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14717 8655 : if (res) return res;
14718 : }
14719 31 : break;
14720 : }
14721 : default:;
14722 : }
14723 : }
14724 473266 : switch (TREE_CODE (_p1))
14725 : {
14726 47689 : case PLUS_EXPR:
14727 47689 : {
14728 47689 : tree _q50 = TREE_OPERAND (_p1, 0);
14729 47689 : tree _q51 = TREE_OPERAND (_p1, 1);
14730 47689 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14731 : {
14732 737 : switch (TREE_CODE (_q51))
14733 : {
14734 737 : case INTEGER_CST:
14735 737 : {
14736 737 : switch (TREE_CODE (_p2))
14737 : {
14738 729 : case INTEGER_CST:
14739 729 : {
14740 729 : {
14741 729 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14742 729 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14743 729 : if (res) return res;
14744 : }
14745 17 : break;
14746 : }
14747 : default:;
14748 : }
14749 : break;
14750 : }
14751 : default:;
14752 : }
14753 : }
14754 : break;
14755 : }
14756 193 : case MINUS_EXPR:
14757 193 : {
14758 193 : tree _q50 = TREE_OPERAND (_p1, 0);
14759 193 : tree _q51 = TREE_OPERAND (_p1, 1);
14760 193 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14761 : {
14762 4 : switch (TREE_CODE (_q51))
14763 : {
14764 0 : case INTEGER_CST:
14765 0 : {
14766 0 : switch (TREE_CODE (_p2))
14767 : {
14768 0 : case INTEGER_CST:
14769 0 : {
14770 0 : {
14771 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14772 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14773 0 : if (res) return res;
14774 : }
14775 0 : break;
14776 : }
14777 : default:;
14778 : }
14779 : break;
14780 : }
14781 : default:;
14782 : }
14783 : }
14784 : break;
14785 : }
14786 : default:;
14787 : }
14788 : break;
14789 : }
14790 920061 : default:;
14791 : }
14792 920061 : switch (TREE_CODE (_p1))
14793 : {
14794 18 : case MIN_EXPR:
14795 18 : {
14796 18 : tree _q50 = TREE_OPERAND (_p1, 0);
14797 18 : tree _q51 = TREE_OPERAND (_p1, 1);
14798 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14799 : {
14800 7 : switch (TREE_CODE (_p2))
14801 : {
14802 0 : case MIN_EXPR:
14803 0 : {
14804 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14805 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14806 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14807 : {
14808 0 : {
14809 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14810 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14811 0 : if (res) return res;
14812 : }
14813 : }
14814 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14815 : {
14816 0 : {
14817 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14818 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14819 0 : if (res) return res;
14820 : }
14821 : }
14822 : break;
14823 : }
14824 7 : default:;
14825 : }
14826 7 : {
14827 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
14828 7 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14829 7 : if (res) return res;
14830 : }
14831 : }
14832 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14833 : {
14834 0 : switch (TREE_CODE (_p2))
14835 : {
14836 0 : case MIN_EXPR:
14837 0 : {
14838 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14839 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14840 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14841 : {
14842 0 : {
14843 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14844 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14845 0 : if (res) return res;
14846 : }
14847 : }
14848 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14849 : {
14850 0 : {
14851 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14852 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14853 0 : if (res) return res;
14854 : }
14855 : }
14856 : break;
14857 : }
14858 : default:;
14859 : }
14860 : }
14861 18 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14862 : {
14863 8 : switch (TREE_CODE (_p2))
14864 : {
14865 0 : case MIN_EXPR:
14866 0 : {
14867 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14868 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14869 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14870 : {
14871 0 : {
14872 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14873 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14874 0 : if (res) return res;
14875 : }
14876 : }
14877 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14878 : {
14879 0 : {
14880 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14881 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14882 0 : if (res) return res;
14883 : }
14884 : }
14885 : break;
14886 : }
14887 : default:;
14888 : }
14889 : }
14890 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14891 : {
14892 7 : switch (TREE_CODE (_p2))
14893 : {
14894 0 : case MIN_EXPR:
14895 0 : {
14896 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14897 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14898 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14899 : {
14900 0 : {
14901 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14902 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14903 0 : if (res) return res;
14904 : }
14905 : }
14906 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14907 : {
14908 0 : {
14909 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14910 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14911 0 : if (res) return res;
14912 : }
14913 : }
14914 : break;
14915 : }
14916 : default:;
14917 : }
14918 : }
14919 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14920 : {
14921 0 : {
14922 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
14923 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14924 0 : if (res) return res;
14925 : }
14926 : }
14927 : break;
14928 : }
14929 100 : case MAX_EXPR:
14930 100 : {
14931 100 : tree _q50 = TREE_OPERAND (_p1, 0);
14932 100 : tree _q51 = TREE_OPERAND (_p1, 1);
14933 100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14934 : {
14935 0 : switch (TREE_CODE (_p2))
14936 : {
14937 0 : case MAX_EXPR:
14938 0 : {
14939 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14940 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14941 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14942 : {
14943 0 : {
14944 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14945 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14946 0 : if (res) return res;
14947 : }
14948 : }
14949 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14950 : {
14951 0 : {
14952 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14953 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14954 0 : if (res) return res;
14955 : }
14956 : }
14957 : break;
14958 : }
14959 : default:;
14960 : }
14961 : }
14962 100 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14963 : {
14964 2 : switch (TREE_CODE (_p2))
14965 : {
14966 1 : case MAX_EXPR:
14967 1 : {
14968 1 : tree _q80 = TREE_OPERAND (_p2, 0);
14969 1 : tree _q81 = TREE_OPERAND (_p2, 1);
14970 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14971 : {
14972 0 : {
14973 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14974 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14975 0 : if (res) return res;
14976 : }
14977 : }
14978 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14979 : {
14980 1 : {
14981 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14982 1 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14983 1 : if (res) return res;
14984 : }
14985 : }
14986 : break;
14987 : }
14988 : default:;
14989 : }
14990 : }
14991 99 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14992 : {
14993 1 : switch (TREE_CODE (_p2))
14994 : {
14995 0 : case MAX_EXPR:
14996 0 : {
14997 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14998 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14999 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15000 : {
15001 0 : {
15002 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
15003 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15004 0 : if (res) return res;
15005 : }
15006 : }
15007 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15008 : {
15009 0 : {
15010 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
15011 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15012 0 : if (res) return res;
15013 : }
15014 : }
15015 : break;
15016 : }
15017 1 : default:;
15018 : }
15019 1 : {
15020 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
15021 1 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15022 1 : if (res) return res;
15023 : }
15024 : }
15025 98 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
15026 : {
15027 0 : switch (TREE_CODE (_p2))
15028 : {
15029 0 : case MAX_EXPR:
15030 0 : {
15031 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15032 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15033 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15034 : {
15035 0 : {
15036 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
15037 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15038 0 : if (res) return res;
15039 : }
15040 : }
15041 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15042 : {
15043 0 : {
15044 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
15045 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15046 0 : if (res) return res;
15047 : }
15048 : }
15049 : break;
15050 : }
15051 0 : default:;
15052 : }
15053 0 : {
15054 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
15055 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
15056 0 : if (res) return res;
15057 : }
15058 : }
15059 : break;
15060 : }
15061 920059 : default:;
15062 : }
15063 920059 : if (integer_zerop (_q20))
15064 : {
15065 0 : {
15066 0 : tree _q21_pops[1];
15067 0 : if (tree_nop_convert (_q21, _q21_pops))
15068 : {
15069 0 : tree _q40 = _q21_pops[0];
15070 0 : switch (TREE_CODE (_p1))
15071 : {
15072 0 : case MIN_EXPR:
15073 0 : {
15074 0 : tree _q60 = TREE_OPERAND (_p1, 0);
15075 0 : tree _q61 = TREE_OPERAND (_p1, 1);
15076 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
15077 : {
15078 0 : switch (TREE_CODE (_q61))
15079 : {
15080 0 : case INTEGER_CST:
15081 0 : {
15082 0 : switch (TREE_CODE (_p2))
15083 : {
15084 0 : case INTEGER_CST:
15085 0 : {
15086 0 : {
15087 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
15088 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
15089 0 : if (res) return res;
15090 : }
15091 0 : break;
15092 : }
15093 : default:;
15094 : }
15095 : break;
15096 : }
15097 : default:;
15098 : }
15099 : }
15100 : break;
15101 : }
15102 : default:;
15103 : }
15104 : }
15105 : }
15106 : }
15107 920059 : if (tree_expr_nonnegative_p (_q21))
15108 : {
15109 592269 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15110 : {
15111 612 : switch (TREE_CODE (_p2))
15112 : {
15113 0 : case ABS_EXPR:
15114 0 : {
15115 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15116 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15117 : {
15118 0 : {
15119 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15120 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
15121 0 : if (res) return res;
15122 : }
15123 : }
15124 : break;
15125 : }
15126 : default:;
15127 : }
15128 : }
15129 592269 : switch (TREE_CODE (_p1))
15130 : {
15131 1 : case ABS_EXPR:
15132 1 : {
15133 1 : tree _q50 = TREE_OPERAND (_p1, 0);
15134 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15135 : {
15136 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
15137 : {
15138 0 : {
15139 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15140 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
15141 0 : if (res) return res;
15142 : }
15143 : }
15144 : }
15145 : break;
15146 : }
15147 : default:;
15148 : }
15149 : }
15150 920059 : switch (TREE_CODE (_q20))
15151 : {
15152 56838 : case PLUS_EXPR:
15153 56838 : {
15154 56838 : tree _q30 = TREE_OPERAND (_q20, 0);
15155 56838 : tree _q31 = TREE_OPERAND (_q20, 1);
15156 56838 : if (integer_onep (_q31))
15157 : {
15158 28510 : switch (TREE_CODE (_p1))
15159 : {
15160 2 : case NEGATE_EXPR:
15161 2 : {
15162 2 : tree _q70 = TREE_OPERAND (_p1, 0);
15163 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
15164 : {
15165 2 : if (integer_onep (_p2))
15166 : {
15167 2 : {
15168 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15169 2 : if (TYPE_UNSIGNED (type)
15170 : )
15171 : {
15172 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1841;
15173 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1841;
15174 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1841;
15175 2 : {
15176 2 : tree res_op0;
15177 2 : {
15178 2 : tree _o1[2], _r1;
15179 2 : _o1[0] = unshare_expr (captures[0]);
15180 2 : _o1[1] = captures[1];
15181 2 : _r1 = fold_build2_loc (loc, GE_EXPR, boolean_type_node, _o1[0], _o1[1]);
15182 2 : res_op0 = _r1;
15183 : }
15184 2 : tree res_op1;
15185 2 : {
15186 2 : tree _o1[1], _r1;
15187 2 : _o1[0] = captures[0];
15188 2 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
15189 2 : res_op1 = _r1;
15190 : }
15191 2 : tree res_op2;
15192 2 : res_op2 = captures[2];
15193 2 : tree _r;
15194 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
15195 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
15196 2 : return _r;
15197 : }
15198 0 : next_after_fail1841:;
15199 : }
15200 : }
15201 : }
15202 : }
15203 : break;
15204 : }
15205 : default:;
15206 : }
15207 : }
15208 : break;
15209 : }
15210 : default:;
15211 : }
15212 : break;
15213 : }
15214 1406353 : case LE_EXPR:
15215 1406353 : {
15216 1406353 : tree _q20 = TREE_OPERAND (_p0, 0);
15217 1406353 : tree _q21 = TREE_OPERAND (_p0, 1);
15218 1406353 : switch (TREE_CODE (_q20))
15219 : {
15220 198 : case MINUS_EXPR:
15221 198 : {
15222 198 : tree _q30 = TREE_OPERAND (_q20, 0);
15223 198 : tree _q31 = TREE_OPERAND (_q20, 1);
15224 198 : switch (TREE_CODE (_q30))
15225 : {
15226 0 : case CALL_EXPR:
15227 0 : switch (get_call_combined_fn (_q30))
15228 : {
15229 0 : case CFN_BUILT_IN_CEIL:
15230 0 : if (call_expr_nargs (_q30) == 1)
15231 : {
15232 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15233 0 : switch (TREE_CODE (_q40))
15234 : {
15235 0 : case SSA_NAME:
15236 0 : {
15237 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15238 : {
15239 0 : switch (TREE_CODE (_q31))
15240 : {
15241 0 : case SSA_NAME:
15242 0 : {
15243 0 : switch (TREE_CODE (_q21))
15244 : {
15245 0 : case MINUS_EXPR:
15246 0 : {
15247 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15248 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15249 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15250 : {
15251 0 : switch (TREE_CODE (_q80))
15252 : {
15253 0 : case SSA_NAME:
15254 0 : {
15255 0 : switch (TREE_CODE (_q81))
15256 : {
15257 0 : case CALL_EXPR:
15258 0 : switch (get_call_combined_fn (_q81))
15259 : {
15260 0 : case CFN_BUILT_IN_FLOOR:
15261 0 : if (call_expr_nargs (_q81) == 1)
15262 : {
15263 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15264 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15265 : {
15266 0 : switch (TREE_CODE (_q110))
15267 : {
15268 0 : case SSA_NAME:
15269 0 : {
15270 0 : switch (TREE_CODE (_p1))
15271 : {
15272 0 : case CALL_EXPR:
15273 0 : switch (get_call_combined_fn (_p1))
15274 : {
15275 0 : case CFN_BUILT_IN_CEIL:
15276 0 : if (call_expr_nargs (_p1) == 1)
15277 : {
15278 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15279 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15280 : {
15281 0 : switch (TREE_CODE (_q140))
15282 : {
15283 0 : case SSA_NAME:
15284 0 : {
15285 0 : switch (TREE_CODE (_p2))
15286 : {
15287 0 : case CALL_EXPR:
15288 0 : switch (get_call_combined_fn (_p2))
15289 : {
15290 0 : case CFN_BUILT_IN_FLOOR:
15291 0 : if (call_expr_nargs (_p2) == 1)
15292 : {
15293 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15294 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15295 : {
15296 0 : switch (TREE_CODE (_q170))
15297 : {
15298 0 : case SSA_NAME:
15299 0 : {
15300 0 : {
15301 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15302 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
15303 0 : if (res) return res;
15304 : }
15305 0 : break;
15306 : }
15307 : default:;
15308 : }
15309 : }
15310 : }
15311 : break;
15312 : default:;
15313 : }
15314 : break;
15315 : default:;
15316 : }
15317 : break;
15318 : }
15319 : default:;
15320 : }
15321 : }
15322 : }
15323 : break;
15324 : default:;
15325 : }
15326 : break;
15327 : default:;
15328 : }
15329 : break;
15330 : }
15331 : default:;
15332 : }
15333 : }
15334 : }
15335 : break;
15336 : default:;
15337 : }
15338 : break;
15339 : default:;
15340 : }
15341 : break;
15342 : }
15343 : default:;
15344 : }
15345 : }
15346 : break;
15347 : }
15348 : default:;
15349 : }
15350 : break;
15351 : }
15352 : default:;
15353 : }
15354 : }
15355 : break;
15356 : }
15357 : default:;
15358 : }
15359 : }
15360 : break;
15361 0 : case CFN_CEIL:
15362 0 : if (call_expr_nargs (_q30) == 1)
15363 : {
15364 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15365 0 : switch (TREE_CODE (_q40))
15366 : {
15367 0 : case SSA_NAME:
15368 0 : {
15369 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15370 : {
15371 0 : switch (TREE_CODE (_q31))
15372 : {
15373 0 : case SSA_NAME:
15374 0 : {
15375 0 : switch (TREE_CODE (_q21))
15376 : {
15377 0 : case MINUS_EXPR:
15378 0 : {
15379 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15380 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15381 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15382 : {
15383 0 : switch (TREE_CODE (_q80))
15384 : {
15385 0 : case SSA_NAME:
15386 0 : {
15387 0 : switch (TREE_CODE (_q81))
15388 : {
15389 0 : case CALL_EXPR:
15390 0 : switch (get_call_combined_fn (_q81))
15391 : {
15392 0 : case CFN_FLOOR:
15393 0 : if (call_expr_nargs (_q81) == 1)
15394 : {
15395 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15396 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15397 : {
15398 0 : switch (TREE_CODE (_q110))
15399 : {
15400 0 : case SSA_NAME:
15401 0 : {
15402 0 : switch (TREE_CODE (_p1))
15403 : {
15404 0 : case CALL_EXPR:
15405 0 : switch (get_call_combined_fn (_p1))
15406 : {
15407 0 : case CFN_CEIL:
15408 0 : if (call_expr_nargs (_p1) == 1)
15409 : {
15410 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15411 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15412 : {
15413 0 : switch (TREE_CODE (_q140))
15414 : {
15415 0 : case SSA_NAME:
15416 0 : {
15417 0 : switch (TREE_CODE (_p2))
15418 : {
15419 0 : case CALL_EXPR:
15420 0 : switch (get_call_combined_fn (_p2))
15421 : {
15422 0 : case CFN_FLOOR:
15423 0 : if (call_expr_nargs (_p2) == 1)
15424 : {
15425 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15426 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15427 : {
15428 0 : switch (TREE_CODE (_q170))
15429 : {
15430 0 : case SSA_NAME:
15431 0 : {
15432 0 : {
15433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15434 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
15435 0 : if (res) return res;
15436 : }
15437 0 : break;
15438 : }
15439 : default:;
15440 : }
15441 : }
15442 : }
15443 : break;
15444 : default:;
15445 : }
15446 : break;
15447 : default:;
15448 : }
15449 : break;
15450 : }
15451 : default:;
15452 : }
15453 : }
15454 : }
15455 : break;
15456 : default:;
15457 : }
15458 : break;
15459 : default:;
15460 : }
15461 : break;
15462 : }
15463 : default:;
15464 : }
15465 : }
15466 : }
15467 : break;
15468 : default:;
15469 : }
15470 : break;
15471 : default:;
15472 : }
15473 : break;
15474 : }
15475 : default:;
15476 : }
15477 : }
15478 : break;
15479 : }
15480 : default:;
15481 : }
15482 : break;
15483 : }
15484 : default:;
15485 : }
15486 : }
15487 : break;
15488 : }
15489 : default:;
15490 : }
15491 : }
15492 : break;
15493 0 : case CFN_BUILT_IN_CEILF:
15494 0 : if (call_expr_nargs (_q30) == 1)
15495 : {
15496 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15497 0 : switch (TREE_CODE (_q40))
15498 : {
15499 0 : case SSA_NAME:
15500 0 : {
15501 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15502 : {
15503 0 : switch (TREE_CODE (_q31))
15504 : {
15505 0 : case SSA_NAME:
15506 0 : {
15507 0 : switch (TREE_CODE (_q21))
15508 : {
15509 0 : case MINUS_EXPR:
15510 0 : {
15511 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15512 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15513 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15514 : {
15515 0 : switch (TREE_CODE (_q80))
15516 : {
15517 0 : case SSA_NAME:
15518 0 : {
15519 0 : switch (TREE_CODE (_q81))
15520 : {
15521 0 : case CALL_EXPR:
15522 0 : switch (get_call_combined_fn (_q81))
15523 : {
15524 0 : case CFN_BUILT_IN_FLOORF:
15525 0 : if (call_expr_nargs (_q81) == 1)
15526 : {
15527 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15528 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15529 : {
15530 0 : switch (TREE_CODE (_q110))
15531 : {
15532 0 : case SSA_NAME:
15533 0 : {
15534 0 : switch (TREE_CODE (_p1))
15535 : {
15536 0 : case CALL_EXPR:
15537 0 : switch (get_call_combined_fn (_p1))
15538 : {
15539 0 : case CFN_BUILT_IN_CEILF:
15540 0 : if (call_expr_nargs (_p1) == 1)
15541 : {
15542 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15543 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15544 : {
15545 0 : switch (TREE_CODE (_q140))
15546 : {
15547 0 : case SSA_NAME:
15548 0 : {
15549 0 : switch (TREE_CODE (_p2))
15550 : {
15551 0 : case CALL_EXPR:
15552 0 : switch (get_call_combined_fn (_p2))
15553 : {
15554 0 : case CFN_BUILT_IN_FLOORF:
15555 0 : if (call_expr_nargs (_p2) == 1)
15556 : {
15557 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15558 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15559 : {
15560 0 : switch (TREE_CODE (_q170))
15561 : {
15562 0 : case SSA_NAME:
15563 0 : {
15564 0 : {
15565 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15566 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
15567 0 : if (res) return res;
15568 : }
15569 0 : break;
15570 : }
15571 : default:;
15572 : }
15573 : }
15574 : }
15575 : break;
15576 : default:;
15577 : }
15578 : break;
15579 : default:;
15580 : }
15581 : break;
15582 : }
15583 : default:;
15584 : }
15585 : }
15586 : }
15587 : break;
15588 : default:;
15589 : }
15590 : break;
15591 : default:;
15592 : }
15593 : break;
15594 : }
15595 : default:;
15596 : }
15597 : }
15598 : }
15599 : break;
15600 : default:;
15601 : }
15602 : break;
15603 : default:;
15604 : }
15605 : break;
15606 : }
15607 : default:;
15608 : }
15609 : }
15610 : break;
15611 : }
15612 : default:;
15613 : }
15614 : break;
15615 : }
15616 : default:;
15617 : }
15618 : }
15619 : break;
15620 : }
15621 : default:;
15622 : }
15623 : }
15624 : break;
15625 0 : case CFN_BUILT_IN_CEILL:
15626 0 : if (call_expr_nargs (_q30) == 1)
15627 : {
15628 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15629 0 : switch (TREE_CODE (_q40))
15630 : {
15631 0 : case SSA_NAME:
15632 0 : {
15633 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15634 : {
15635 0 : switch (TREE_CODE (_q31))
15636 : {
15637 0 : case SSA_NAME:
15638 0 : {
15639 0 : switch (TREE_CODE (_q21))
15640 : {
15641 0 : case MINUS_EXPR:
15642 0 : {
15643 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15644 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15645 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15646 : {
15647 0 : switch (TREE_CODE (_q80))
15648 : {
15649 0 : case SSA_NAME:
15650 0 : {
15651 0 : switch (TREE_CODE (_q81))
15652 : {
15653 0 : case CALL_EXPR:
15654 0 : switch (get_call_combined_fn (_q81))
15655 : {
15656 0 : case CFN_BUILT_IN_FLOORL:
15657 0 : if (call_expr_nargs (_q81) == 1)
15658 : {
15659 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15660 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15661 : {
15662 0 : switch (TREE_CODE (_q110))
15663 : {
15664 0 : case SSA_NAME:
15665 0 : {
15666 0 : switch (TREE_CODE (_p1))
15667 : {
15668 0 : case CALL_EXPR:
15669 0 : switch (get_call_combined_fn (_p1))
15670 : {
15671 0 : case CFN_BUILT_IN_CEILL:
15672 0 : if (call_expr_nargs (_p1) == 1)
15673 : {
15674 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15675 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15676 : {
15677 0 : switch (TREE_CODE (_q140))
15678 : {
15679 0 : case SSA_NAME:
15680 0 : {
15681 0 : switch (TREE_CODE (_p2))
15682 : {
15683 0 : case CALL_EXPR:
15684 0 : switch (get_call_combined_fn (_p2))
15685 : {
15686 0 : case CFN_BUILT_IN_FLOORL:
15687 0 : if (call_expr_nargs (_p2) == 1)
15688 : {
15689 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15690 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15691 : {
15692 0 : switch (TREE_CODE (_q170))
15693 : {
15694 0 : case SSA_NAME:
15695 0 : {
15696 0 : {
15697 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15698 0 : tree res = generic_simplify_345 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
15699 0 : if (res) return res;
15700 : }
15701 0 : break;
15702 : }
15703 : default:;
15704 : }
15705 : }
15706 : }
15707 : break;
15708 : default:;
15709 : }
15710 : break;
15711 : default:;
15712 : }
15713 : break;
15714 : }
15715 : default:;
15716 : }
15717 : }
15718 : }
15719 : break;
15720 : default:;
15721 : }
15722 : break;
15723 : default:;
15724 : }
15725 : break;
15726 : }
15727 : default:;
15728 : }
15729 : }
15730 : }
15731 : break;
15732 : default:;
15733 : }
15734 : break;
15735 : default:;
15736 : }
15737 : break;
15738 : }
15739 : default:;
15740 : }
15741 : }
15742 : break;
15743 : }
15744 : default:;
15745 : }
15746 : break;
15747 : }
15748 : default:;
15749 : }
15750 : }
15751 : break;
15752 : }
15753 : default:;
15754 : }
15755 : }
15756 : break;
15757 : default:;
15758 : }
15759 : break;
15760 : default:;
15761 : }
15762 : break;
15763 : }
15764 1406353 : default:;
15765 : }
15766 1406353 : if (integer_zerop (_q21))
15767 : {
15768 125802 : switch (TREE_CODE (_p1))
15769 : {
15770 218 : case NEGATE_EXPR:
15771 218 : {
15772 218 : tree _q50 = TREE_OPERAND (_p1, 0);
15773 218 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15774 : {
15775 70 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
15776 : {
15777 70 : if (integer_zerop (_p2))
15778 : {
15779 70 : {
15780 70 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15781 70 : if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)
15782 : )
15783 : {
15784 68 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1842;
15785 68 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1842;
15786 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1842;
15787 68 : {
15788 68 : tree res_op0;
15789 68 : res_op0 = captures[2];
15790 68 : tree res_op1;
15791 68 : res_op1 = captures[1];
15792 68 : tree _r;
15793 68 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
15794 68 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1046, __FILE__, __LINE__, true);
15795 68 : return _r;
15796 : }
15797 2 : next_after_fail1842:;
15798 : }
15799 : }
15800 : }
15801 : }
15802 : }
15803 : break;
15804 : }
15805 : default:;
15806 : }
15807 : }
15808 1406285 : switch (TREE_CODE (_q20))
15809 : {
15810 141827 : CASE_CONVERT:
15811 141827 : {
15812 141827 : tree _q30 = TREE_OPERAND (_q20, 0);
15813 141827 : switch (TREE_CODE (_q21))
15814 : {
15815 105656 : case INTEGER_CST:
15816 105656 : {
15817 105656 : switch (TREE_CODE (_p1))
15818 : {
15819 709 : CASE_CONVERT:
15820 709 : {
15821 709 : tree _q60 = TREE_OPERAND (_p1, 0);
15822 709 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15823 : {
15824 8 : switch (TREE_CODE (_p2))
15825 : {
15826 8 : case INTEGER_CST:
15827 8 : {
15828 8 : {
15829 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15830 8 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15831 8 : if (res) return res;
15832 : }
15833 8 : break;
15834 : }
15835 : default:;
15836 : }
15837 : }
15838 : break;
15839 : }
15840 105656 : default:;
15841 : }
15842 105656 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
15843 : {
15844 21 : switch (TREE_CODE (_p2))
15845 : {
15846 21 : case INTEGER_CST:
15847 21 : {
15848 21 : {
15849 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15850 21 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15851 21 : if (res) return res;
15852 : }
15853 21 : break;
15854 : }
15855 : default:;
15856 : }
15857 : }
15858 105656 : switch (TREE_CODE (_p1))
15859 : {
15860 216 : case PLUS_EXPR:
15861 216 : {
15862 216 : tree _q60 = TREE_OPERAND (_p1, 0);
15863 216 : tree _q61 = TREE_OPERAND (_p1, 1);
15864 216 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15865 : {
15866 6 : switch (TREE_CODE (_q61))
15867 : {
15868 6 : case INTEGER_CST:
15869 6 : {
15870 6 : switch (TREE_CODE (_p2))
15871 : {
15872 6 : case INTEGER_CST:
15873 6 : {
15874 6 : {
15875 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15876 6 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15877 6 : if (res) return res;
15878 : }
15879 6 : break;
15880 : }
15881 : default:;
15882 : }
15883 : break;
15884 : }
15885 : default:;
15886 : }
15887 : }
15888 : break;
15889 : }
15890 698 : case MINUS_EXPR:
15891 698 : {
15892 698 : tree _q60 = TREE_OPERAND (_p1, 0);
15893 698 : tree _q61 = TREE_OPERAND (_p1, 1);
15894 698 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15895 : {
15896 0 : switch (TREE_CODE (_q61))
15897 : {
15898 0 : case INTEGER_CST:
15899 0 : {
15900 0 : switch (TREE_CODE (_p2))
15901 : {
15902 0 : case INTEGER_CST:
15903 0 : {
15904 0 : {
15905 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15906 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15907 0 : if (res) return res;
15908 : }
15909 0 : break;
15910 : }
15911 : default:;
15912 : }
15913 : break;
15914 : }
15915 : default:;
15916 : }
15917 : }
15918 : break;
15919 : }
15920 : default:;
15921 : }
15922 : break;
15923 : }
15924 : default:;
15925 : }
15926 : break;
15927 : }
15928 1406285 : default:;
15929 : }
15930 1406285 : switch (TREE_CODE (_q21))
15931 : {
15932 1007983 : case INTEGER_CST:
15933 1007983 : {
15934 1007983 : switch (TREE_CODE (_p1))
15935 : {
15936 24300 : CASE_CONVERT:
15937 24300 : {
15938 24300 : tree _q50 = TREE_OPERAND (_p1, 0);
15939 24300 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15940 : {
15941 228 : switch (TREE_CODE (_p2))
15942 : {
15943 210 : case INTEGER_CST:
15944 210 : {
15945 210 : {
15946 210 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15947 210 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15948 210 : if (res) return res;
15949 : }
15950 110 : break;
15951 : }
15952 : default:;
15953 : }
15954 : }
15955 : break;
15956 : }
15957 1007883 : default:;
15958 : }
15959 1007883 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15960 : {
15961 289 : switch (TREE_CODE (_p2))
15962 : {
15963 252 : case INTEGER_CST:
15964 252 : {
15965 252 : {
15966 252 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15967 252 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15968 252 : if (res) return res;
15969 : }
15970 107 : break;
15971 : }
15972 : default:;
15973 : }
15974 : }
15975 1007738 : switch (TREE_CODE (_p1))
15976 : {
15977 3020 : case PLUS_EXPR:
15978 3020 : {
15979 3020 : tree _q50 = TREE_OPERAND (_p1, 0);
15980 3020 : tree _q51 = TREE_OPERAND (_p1, 1);
15981 3020 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15982 : {
15983 203 : switch (TREE_CODE (_q51))
15984 : {
15985 203 : case INTEGER_CST:
15986 203 : {
15987 203 : switch (TREE_CODE (_p2))
15988 : {
15989 184 : case INTEGER_CST:
15990 184 : {
15991 184 : {
15992 184 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15993 184 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15994 184 : if (res) return res;
15995 : }
15996 182 : break;
15997 : }
15998 : default:;
15999 : }
16000 : break;
16001 : }
16002 : default:;
16003 : }
16004 : }
16005 : break;
16006 : }
16007 7221 : case MINUS_EXPR:
16008 7221 : {
16009 7221 : tree _q50 = TREE_OPERAND (_p1, 0);
16010 7221 : tree _q51 = TREE_OPERAND (_p1, 1);
16011 7221 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16012 : {
16013 0 : switch (TREE_CODE (_q51))
16014 : {
16015 0 : case INTEGER_CST:
16016 0 : {
16017 0 : switch (TREE_CODE (_p2))
16018 : {
16019 0 : case INTEGER_CST:
16020 0 : {
16021 0 : {
16022 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
16023 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
16024 0 : if (res) return res;
16025 : }
16026 0 : break;
16027 : }
16028 : default:;
16029 : }
16030 : break;
16031 : }
16032 : default:;
16033 : }
16034 : }
16035 : break;
16036 : }
16037 : default:;
16038 : }
16039 : break;
16040 : }
16041 1406038 : default:;
16042 : }
16043 1406038 : switch (TREE_CODE (_p1))
16044 : {
16045 37 : case MIN_EXPR:
16046 37 : {
16047 37 : tree _q50 = TREE_OPERAND (_p1, 0);
16048 37 : tree _q51 = TREE_OPERAND (_p1, 1);
16049 37 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16050 : {
16051 1 : switch (TREE_CODE (_p2))
16052 : {
16053 0 : case MIN_EXPR:
16054 0 : {
16055 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16056 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16057 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16058 : {
16059 0 : {
16060 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
16061 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
16062 0 : if (res) return res;
16063 : }
16064 : }
16065 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16066 : {
16067 0 : {
16068 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
16069 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
16070 0 : if (res) return res;
16071 : }
16072 : }
16073 : break;
16074 : }
16075 : default:;
16076 : }
16077 : }
16078 37 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16079 : {
16080 1 : switch (TREE_CODE (_p2))
16081 : {
16082 0 : case MIN_EXPR:
16083 0 : {
16084 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16085 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16086 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16087 : {
16088 0 : {
16089 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
16090 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
16091 0 : if (res) return res;
16092 : }
16093 : }
16094 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16095 : {
16096 0 : {
16097 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
16098 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
16099 0 : if (res) return res;
16100 : }
16101 : }
16102 : break;
16103 : }
16104 : default:;
16105 : }
16106 : }
16107 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16108 : {
16109 1 : switch (TREE_CODE (_p2))
16110 : {
16111 0 : case MIN_EXPR:
16112 0 : {
16113 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16114 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16115 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16116 : {
16117 0 : {
16118 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
16119 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16120 0 : if (res) return res;
16121 : }
16122 : }
16123 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16124 : {
16125 0 : {
16126 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
16127 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16128 0 : if (res) return res;
16129 : }
16130 : }
16131 : break;
16132 : }
16133 1 : default:;
16134 : }
16135 1 : {
16136 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
16137 1 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16138 1 : if (res) return res;
16139 : }
16140 : }
16141 36 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16142 : {
16143 1 : switch (TREE_CODE (_p2))
16144 : {
16145 0 : case MIN_EXPR:
16146 0 : {
16147 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16148 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16149 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16150 : {
16151 0 : {
16152 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
16153 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16154 0 : if (res) return res;
16155 : }
16156 : }
16157 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16158 : {
16159 0 : {
16160 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
16161 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16162 0 : if (res) return res;
16163 : }
16164 : }
16165 : break;
16166 : }
16167 1 : default:;
16168 : }
16169 1 : {
16170 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
16171 1 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16172 1 : if (res) return res;
16173 : }
16174 : }
16175 : break;
16176 : }
16177 12 : case MAX_EXPR:
16178 12 : {
16179 12 : tree _q50 = TREE_OPERAND (_p1, 0);
16180 12 : tree _q51 = TREE_OPERAND (_p1, 1);
16181 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16182 : {
16183 0 : switch (TREE_CODE (_p2))
16184 : {
16185 0 : case MAX_EXPR:
16186 0 : {
16187 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16188 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16189 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16190 : {
16191 0 : {
16192 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
16193 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16194 0 : if (res) return res;
16195 : }
16196 : }
16197 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16198 : {
16199 0 : {
16200 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
16201 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16202 0 : if (res) return res;
16203 : }
16204 : }
16205 : break;
16206 : }
16207 0 : default:;
16208 : }
16209 0 : {
16210 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
16211 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16212 0 : if (res) return res;
16213 : }
16214 : }
16215 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16216 : {
16217 0 : switch (TREE_CODE (_p2))
16218 : {
16219 0 : case MAX_EXPR:
16220 0 : {
16221 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16222 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16223 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16224 : {
16225 0 : {
16226 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
16227 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16228 0 : if (res) return res;
16229 : }
16230 : }
16231 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16232 : {
16233 0 : {
16234 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
16235 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16236 0 : if (res) return res;
16237 : }
16238 : }
16239 : break;
16240 : }
16241 : default:;
16242 : }
16243 : }
16244 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16245 : {
16246 0 : switch (TREE_CODE (_p2))
16247 : {
16248 0 : case MAX_EXPR:
16249 0 : {
16250 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16251 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16252 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16253 : {
16254 0 : {
16255 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
16256 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16257 0 : if (res) return res;
16258 : }
16259 : }
16260 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16261 : {
16262 0 : {
16263 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
16264 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16265 0 : if (res) return res;
16266 : }
16267 : }
16268 : break;
16269 : }
16270 : default:;
16271 : }
16272 : }
16273 12 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16274 : {
16275 0 : switch (TREE_CODE (_p2))
16276 : {
16277 0 : case MAX_EXPR:
16278 0 : {
16279 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16280 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16281 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16282 : {
16283 0 : {
16284 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
16285 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16286 0 : if (res) return res;
16287 : }
16288 : }
16289 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16290 : {
16291 0 : {
16292 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
16293 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16294 0 : if (res) return res;
16295 : }
16296 : }
16297 : break;
16298 : }
16299 : default:;
16300 : }
16301 : }
16302 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16303 : {
16304 0 : {
16305 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
16306 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16307 0 : if (res) return res;
16308 : }
16309 : }
16310 : break;
16311 : }
16312 1406036 : default:;
16313 : }
16314 1406036 : if (integer_zerop (_q20))
16315 : {
16316 2 : {
16317 2 : tree _q21_pops[1];
16318 2 : if (tree_nop_convert (_q21, _q21_pops))
16319 : {
16320 0 : tree _q40 = _q21_pops[0];
16321 0 : switch (TREE_CODE (_p1))
16322 : {
16323 0 : case MAX_EXPR:
16324 0 : {
16325 0 : tree _q60 = TREE_OPERAND (_p1, 0);
16326 0 : tree _q61 = TREE_OPERAND (_p1, 1);
16327 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
16328 : {
16329 0 : switch (TREE_CODE (_q61))
16330 : {
16331 0 : case INTEGER_CST:
16332 0 : {
16333 0 : switch (TREE_CODE (_p2))
16334 : {
16335 0 : case INTEGER_CST:
16336 0 : {
16337 0 : {
16338 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
16339 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16340 0 : if (res) return res;
16341 : }
16342 0 : break;
16343 : }
16344 : default:;
16345 : }
16346 : break;
16347 : }
16348 : default:;
16349 : }
16350 : }
16351 : break;
16352 : }
16353 : default:;
16354 : }
16355 : }
16356 : }
16357 : }
16358 1406036 : if (tree_expr_nonnegative_p (_q20))
16359 : {
16360 898889 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16361 : {
16362 12 : switch (TREE_CODE (_p2))
16363 : {
16364 0 : case ABS_EXPR:
16365 0 : {
16366 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16367 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16368 : {
16369 0 : {
16370 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16371 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16372 0 : if (res) return res;
16373 : }
16374 : }
16375 : break;
16376 : }
16377 : default:;
16378 : }
16379 : }
16380 898889 : switch (TREE_CODE (_p1))
16381 : {
16382 0 : case ABS_EXPR:
16383 0 : {
16384 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16385 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16386 : {
16387 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16388 : {
16389 0 : {
16390 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
16391 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16392 0 : if (res) return res;
16393 : }
16394 : }
16395 : }
16396 : break;
16397 : }
16398 : default:;
16399 : }
16400 : }
16401 : break;
16402 : }
16403 1797329 : case EQ_EXPR:
16404 1797329 : {
16405 1797329 : tree _q20 = TREE_OPERAND (_p0, 0);
16406 1797329 : tree _q21 = TREE_OPERAND (_p0, 1);
16407 1797329 : if (tree_zero_one_valued_p (_q20))
16408 : {
16409 169974 : if (integer_zerop (_q21))
16410 : {
16411 1203 : switch (TREE_CODE (_p2))
16412 : {
16413 1 : case BIT_XOR_EXPR:
16414 1 : {
16415 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16416 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16417 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16418 : {
16419 1 : {
16420 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16421 1 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16422 1 : if (res) return res;
16423 : }
16424 : }
16425 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16426 : {
16427 0 : {
16428 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16429 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16430 0 : if (res) return res;
16431 : }
16432 : }
16433 : break;
16434 : }
16435 1 : case BIT_IOR_EXPR:
16436 1 : {
16437 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16438 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16439 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16440 : {
16441 1 : {
16442 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16443 1 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16444 1 : if (res) return res;
16445 : }
16446 : }
16447 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16448 : {
16449 0 : {
16450 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16451 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16452 0 : if (res) return res;
16453 : }
16454 : }
16455 : break;
16456 : }
16457 1 : case PLUS_EXPR:
16458 1 : {
16459 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16460 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16461 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16462 : {
16463 1 : {
16464 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16465 1 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16466 1 : if (res) return res;
16467 : }
16468 : }
16469 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16470 : {
16471 0 : {
16472 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16473 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16474 0 : if (res) return res;
16475 : }
16476 : }
16477 : break;
16478 : }
16479 : default:;
16480 : }
16481 : }
16482 : }
16483 1797326 : if (integer_zerop (_q21))
16484 : {
16485 595818 : switch (TREE_CODE (_p2))
16486 : {
16487 24196 : case PLUS_EXPR:
16488 24196 : {
16489 24196 : tree _q60 = TREE_OPERAND (_p2, 0);
16490 24196 : tree _q61 = TREE_OPERAND (_p2, 1);
16491 24196 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16492 : {
16493 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16494 : {
16495 0 : {
16496 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16497 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16498 0 : if (res) return res;
16499 : }
16500 : }
16501 : }
16502 24196 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16503 : {
16504 2011 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16505 : {
16506 0 : {
16507 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16508 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16509 0 : if (res) return res;
16510 : }
16511 : }
16512 : }
16513 : break;
16514 : }
16515 108 : case BIT_IOR_EXPR:
16516 108 : {
16517 108 : tree _q60 = TREE_OPERAND (_p2, 0);
16518 108 : tree _q61 = TREE_OPERAND (_p2, 1);
16519 108 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16520 : {
16521 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16522 : {
16523 0 : {
16524 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16525 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16526 0 : if (res) return res;
16527 : }
16528 : }
16529 : }
16530 108 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16531 : {
16532 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16533 : {
16534 0 : {
16535 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16536 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16537 0 : if (res) return res;
16538 : }
16539 : }
16540 : }
16541 : break;
16542 : }
16543 0 : case BIT_XOR_EXPR:
16544 0 : {
16545 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16546 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16547 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16548 : {
16549 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16550 : {
16551 0 : {
16552 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16553 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16554 0 : if (res) return res;
16555 : }
16556 : }
16557 : }
16558 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16559 : {
16560 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16561 : {
16562 0 : {
16563 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16564 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16565 0 : if (res) return res;
16566 : }
16567 : }
16568 : }
16569 : break;
16570 : }
16571 1 : case LROTATE_EXPR:
16572 1 : {
16573 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16574 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16575 1 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16576 : {
16577 1 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16578 : {
16579 1 : {
16580 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16581 1 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16582 1 : if (res) return res;
16583 : }
16584 : }
16585 : }
16586 : break;
16587 : }
16588 0 : case RROTATE_EXPR:
16589 0 : {
16590 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16591 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16592 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16593 : {
16594 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16595 : {
16596 0 : {
16597 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16598 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16599 0 : if (res) return res;
16600 : }
16601 : }
16602 : }
16603 : break;
16604 : }
16605 48 : case LSHIFT_EXPR:
16606 48 : {
16607 48 : tree _q60 = TREE_OPERAND (_p2, 0);
16608 48 : tree _q61 = TREE_OPERAND (_p2, 1);
16609 48 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16610 : {
16611 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16612 : {
16613 0 : {
16614 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16615 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16616 0 : if (res) return res;
16617 : }
16618 : }
16619 : }
16620 : break;
16621 : }
16622 46 : case RSHIFT_EXPR:
16623 46 : {
16624 46 : tree _q60 = TREE_OPERAND (_p2, 0);
16625 46 : tree _q61 = TREE_OPERAND (_p2, 1);
16626 46 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16627 : {
16628 20 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16629 : {
16630 20 : {
16631 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16632 20 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16633 20 : if (res) return res;
16634 : }
16635 : }
16636 : }
16637 : break;
16638 : }
16639 198 : case MINUS_EXPR:
16640 198 : {
16641 198 : tree _q60 = TREE_OPERAND (_p2, 0);
16642 198 : tree _q61 = TREE_OPERAND (_p2, 1);
16643 198 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16644 : {
16645 7 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16646 : {
16647 0 : {
16648 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16649 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16650 0 : if (res) return res;
16651 : }
16652 : }
16653 : }
16654 : break;
16655 : }
16656 158092 : case POINTER_PLUS_EXPR:
16657 158092 : {
16658 158092 : tree _q60 = TREE_OPERAND (_p2, 0);
16659 158092 : tree _q61 = TREE_OPERAND (_p2, 1);
16660 158092 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16661 : {
16662 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16663 : {
16664 0 : {
16665 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16666 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures);
16667 0 : if (res) return res;
16668 : }
16669 : }
16670 : }
16671 : break;
16672 : }
16673 : default:;
16674 : }
16675 : }
16676 1797305 : if (integer_onep (_q21))
16677 : {
16678 49340 : switch (TREE_CODE (_p2))
16679 : {
16680 105 : case TRUNC_DIV_EXPR:
16681 105 : {
16682 105 : tree _q60 = TREE_OPERAND (_p2, 0);
16683 105 : tree _q61 = TREE_OPERAND (_p2, 1);
16684 105 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16685 : {
16686 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16687 : {
16688 0 : {
16689 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16690 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
16691 0 : if (res) return res;
16692 : }
16693 : }
16694 : }
16695 : break;
16696 : }
16697 0 : case CEIL_DIV_EXPR:
16698 0 : {
16699 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16700 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16701 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16702 : {
16703 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16704 : {
16705 0 : {
16706 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16707 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
16708 0 : if (res) return res;
16709 : }
16710 : }
16711 : }
16712 : break;
16713 : }
16714 0 : case FLOOR_DIV_EXPR:
16715 0 : {
16716 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16717 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16718 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16719 : {
16720 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16721 : {
16722 0 : {
16723 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16724 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
16725 0 : if (res) return res;
16726 : }
16727 : }
16728 : }
16729 : break;
16730 : }
16731 0 : case ROUND_DIV_EXPR:
16732 0 : {
16733 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16734 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16735 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16736 : {
16737 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16738 : {
16739 0 : {
16740 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16741 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
16742 0 : if (res) return res;
16743 : }
16744 : }
16745 : }
16746 : break;
16747 : }
16748 0 : case EXACT_DIV_EXPR:
16749 0 : {
16750 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16751 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16752 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16753 : {
16754 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16755 : {
16756 0 : {
16757 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16758 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
16759 0 : if (res) return res;
16760 : }
16761 : }
16762 : }
16763 : break;
16764 : }
16765 0 : case MULT_EXPR:
16766 0 : {
16767 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16768 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16769 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16770 : {
16771 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16772 : {
16773 0 : {
16774 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16775 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16776 0 : if (res) return res;
16777 : }
16778 : }
16779 : }
16780 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16781 : {
16782 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16783 : {
16784 0 : {
16785 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16786 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16787 0 : if (res) return res;
16788 : }
16789 : }
16790 : }
16791 : break;
16792 : }
16793 : default:;
16794 : }
16795 : }
16796 1797305 : if (integer_all_onesp (_q21))
16797 : {
16798 50423 : switch (TREE_CODE (_p2))
16799 : {
16800 0 : case BIT_AND_EXPR:
16801 0 : {
16802 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16803 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16804 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16805 : {
16806 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16807 : {
16808 0 : {
16809 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16810 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16811 0 : if (res) return res;
16812 : }
16813 : }
16814 : }
16815 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16816 : {
16817 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16818 : {
16819 0 : {
16820 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16821 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16822 0 : if (res) return res;
16823 : }
16824 : }
16825 : }
16826 : break;
16827 : }
16828 : default:;
16829 : }
16830 : }
16831 1797305 : switch (TREE_CODE (_q20))
16832 : {
16833 113569 : case BIT_AND_EXPR:
16834 113569 : {
16835 113569 : tree _q30 = TREE_OPERAND (_q20, 0);
16836 113569 : tree _q31 = TREE_OPERAND (_q20, 1);
16837 113569 : switch (TREE_CODE (_q31))
16838 : {
16839 113313 : case INTEGER_CST:
16840 113313 : {
16841 113313 : if (integer_zerop (_q21))
16842 : {
16843 1792 : switch (TREE_CODE (_p1))
16844 : {
16845 0 : case BIT_IOR_EXPR:
16846 0 : {
16847 0 : tree _q70 = TREE_OPERAND (_p1, 0);
16848 0 : tree _q71 = TREE_OPERAND (_p1, 1);
16849 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16850 : {
16851 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
16852 : {
16853 0 : switch (TREE_CODE (_q71))
16854 : {
16855 0 : case INTEGER_CST:
16856 0 : {
16857 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
16858 : {
16859 0 : {
16860 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
16861 0 : if (wi::popcount (wi::to_wide (captures[1])) == 1
16862 : )
16863 : {
16864 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1843;
16865 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1843;
16866 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1843;
16867 0 : {
16868 0 : tree _r;
16869 0 : _r = captures[2];
16870 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1047, __FILE__, __LINE__, true);
16871 0 : return _r;
16872 : }
16873 0 : next_after_fail1843:;
16874 : }
16875 : }
16876 : }
16877 : break;
16878 : }
16879 : default:;
16880 : }
16881 : }
16882 : }
16883 : break;
16884 : }
16885 : default:;
16886 : }
16887 : }
16888 : break;
16889 : }
16890 : default:;
16891 : }
16892 : break;
16893 : }
16894 68617 : CASE_CONVERT:
16895 68617 : {
16896 68617 : tree _q30 = TREE_OPERAND (_q20, 0);
16897 68617 : switch (TREE_CODE (_q21))
16898 : {
16899 26535 : case INTEGER_CST:
16900 26535 : {
16901 26535 : switch (TREE_CODE (_p1))
16902 : {
16903 12639 : CASE_CONVERT:
16904 12639 : {
16905 12639 : tree _q60 = TREE_OPERAND (_p1, 0);
16906 12639 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
16907 : {
16908 57 : switch (TREE_CODE (_p2))
16909 : {
16910 56 : case INTEGER_CST:
16911 56 : {
16912 56 : {
16913 56 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16914 56 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16915 56 : if (res) return res;
16916 : }
16917 56 : break;
16918 : }
16919 : default:;
16920 : }
16921 : }
16922 : break;
16923 : }
16924 26535 : default:;
16925 : }
16926 26535 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
16927 : {
16928 118 : switch (TREE_CODE (_p2))
16929 : {
16930 112 : case INTEGER_CST:
16931 112 : {
16932 112 : {
16933 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16934 112 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16935 112 : if (res) return res;
16936 : }
16937 112 : break;
16938 : }
16939 : default:;
16940 : }
16941 : }
16942 : break;
16943 : }
16944 : default:;
16945 : }
16946 : break;
16947 : }
16948 1797305 : default:;
16949 : }
16950 1797305 : switch (TREE_CODE (_q21))
16951 : {
16952 948731 : case INTEGER_CST:
16953 948731 : {
16954 948731 : switch (TREE_CODE (_p1))
16955 : {
16956 215424 : CASE_CONVERT:
16957 215424 : {
16958 215424 : tree _q50 = TREE_OPERAND (_p1, 0);
16959 215424 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16960 : {
16961 324 : switch (TREE_CODE (_p2))
16962 : {
16963 7 : case INTEGER_CST:
16964 7 : {
16965 7 : {
16966 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16967 7 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16968 7 : if (res) return res;
16969 : }
16970 0 : break;
16971 : }
16972 : default:;
16973 : }
16974 : }
16975 : break;
16976 : }
16977 948724 : default:;
16978 : }
16979 948724 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16980 : {
16981 61 : switch (TREE_CODE (_p2))
16982 : {
16983 5 : case INTEGER_CST:
16984 5 : {
16985 5 : {
16986 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16987 5 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16988 5 : if (res) return res;
16989 : }
16990 0 : break;
16991 : }
16992 : default:;
16993 : }
16994 : }
16995 : break;
16996 : }
16997 1797293 : default:;
16998 : }
16999 1797293 : if (tree_expr_nonnegative_p (_q21))
17000 : {
17001 1635543 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17002 : {
17003 83 : switch (TREE_CODE (_p2))
17004 : {
17005 0 : case ABS_EXPR:
17006 0 : {
17007 0 : tree _q60 = TREE_OPERAND (_p2, 0);
17008 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17009 : {
17010 0 : {
17011 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17012 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
17013 0 : if (res) return res;
17014 : }
17015 : }
17016 : break;
17017 : }
17018 : default:;
17019 : }
17020 : }
17021 : }
17022 1797293 : if (tree_expr_nonnegative_p (_q20))
17023 : {
17024 1071988 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17025 : {
17026 24221 : switch (TREE_CODE (_p2))
17027 : {
17028 0 : case ABS_EXPR:
17029 0 : {
17030 0 : tree _q60 = TREE_OPERAND (_p2, 0);
17031 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
17032 : {
17033 0 : {
17034 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
17035 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
17036 0 : if (res) return res;
17037 : }
17038 : }
17039 : break;
17040 : }
17041 : default:;
17042 : }
17043 : }
17044 1071988 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17045 : {
17046 25 : switch (TREE_CODE (_p2))
17047 : {
17048 0 : case ABS_EXPR:
17049 0 : {
17050 0 : tree _q60 = TREE_OPERAND (_p2, 0);
17051 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
17052 : {
17053 0 : {
17054 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
17055 0 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures);
17056 0 : if (res) return res;
17057 : }
17058 : }
17059 : break;
17060 : }
17061 : default:;
17062 : }
17063 : }
17064 : }
17065 1797293 : if (tree_expr_nonnegative_p (_q21))
17066 : {
17067 1635543 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
17068 : {
17069 24593 : switch (TREE_CODE (_p2))
17070 : {
17071 0 : case ABS_EXPR:
17072 0 : {
17073 0 : tree _q60 = TREE_OPERAND (_p2, 0);
17074 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
17075 : {
17076 0 : {
17077 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17078 0 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures);
17079 0 : if (res) return res;
17080 : }
17081 : }
17082 : break;
17083 : }
17084 : default:;
17085 : }
17086 : }
17087 : }
17088 : break;
17089 : }
17090 2955918 : case NE_EXPR:
17091 2955918 : {
17092 2955918 : tree _q20 = TREE_OPERAND (_p0, 0);
17093 2955918 : tree _q21 = TREE_OPERAND (_p0, 1);
17094 2955918 : if (tree_zero_one_valued_p (_q20))
17095 : {
17096 164596 : if (integer_zerop (_q21))
17097 : {
17098 162829 : switch (TREE_CODE (_p1))
17099 : {
17100 5 : case BIT_XOR_EXPR:
17101 5 : {
17102 5 : tree _q50 = TREE_OPERAND (_p1, 0);
17103 5 : tree _q51 = TREE_OPERAND (_p1, 1);
17104 5 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
17105 : {
17106 1 : {
17107 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
17108 1 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
17109 1 : if (res) return res;
17110 : }
17111 : }
17112 4 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
17113 : {
17114 4 : {
17115 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17116 4 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
17117 4 : if (res) return res;
17118 : }
17119 : }
17120 : break;
17121 : }
17122 1 : case BIT_IOR_EXPR:
17123 1 : {
17124 1 : tree _q50 = TREE_OPERAND (_p1, 0);
17125 1 : tree _q51 = TREE_OPERAND (_p1, 1);
17126 1 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
17127 : {
17128 1 : {
17129 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
17130 1 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17131 1 : if (res) return res;
17132 : }
17133 : }
17134 0 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
17135 : {
17136 0 : {
17137 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17138 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17139 0 : if (res) return res;
17140 : }
17141 : }
17142 : break;
17143 : }
17144 110 : case PLUS_EXPR:
17145 110 : {
17146 110 : tree _q50 = TREE_OPERAND (_p1, 0);
17147 110 : tree _q51 = TREE_OPERAND (_p1, 1);
17148 110 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
17149 : {
17150 8 : {
17151 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
17152 8 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17153 8 : if (res) return res;
17154 : }
17155 : }
17156 109 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
17157 : {
17158 1 : {
17159 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17160 1 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17161 1 : if (res) return res;
17162 : }
17163 : }
17164 : break;
17165 : }
17166 : default:;
17167 : }
17168 : }
17169 : }
17170 2955910 : if (integer_zerop (_q21))
17171 : {
17172 1955448 : switch (TREE_CODE (_p1))
17173 : {
17174 89 : case TRUNC_DIV_EXPR:
17175 89 : {
17176 89 : tree _q50 = TREE_OPERAND (_p1, 0);
17177 89 : tree _q51 = TREE_OPERAND (_p1, 1);
17178 89 : if (integer_zerop (_p2))
17179 : {
17180 51 : {
17181 51 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17182 51 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
17183 51 : if (res) return res;
17184 : }
17185 : }
17186 : break;
17187 : }
17188 0 : case CEIL_DIV_EXPR:
17189 0 : {
17190 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17191 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17192 0 : if (integer_zerop (_p2))
17193 : {
17194 0 : {
17195 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17196 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
17197 0 : if (res) return res;
17198 : }
17199 : }
17200 : break;
17201 : }
17202 0 : case FLOOR_DIV_EXPR:
17203 0 : {
17204 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17205 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17206 0 : if (integer_zerop (_p2))
17207 : {
17208 0 : {
17209 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17210 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
17211 0 : if (res) return res;
17212 : }
17213 : }
17214 : break;
17215 : }
17216 0 : case ROUND_DIV_EXPR:
17217 0 : {
17218 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17219 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17220 0 : if (integer_zerop (_p2))
17221 : {
17222 0 : {
17223 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17224 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
17225 0 : if (res) return res;
17226 : }
17227 : }
17228 : break;
17229 : }
17230 31 : case EXACT_DIV_EXPR:
17231 31 : {
17232 31 : tree _q50 = TREE_OPERAND (_p1, 0);
17233 31 : tree _q51 = TREE_OPERAND (_p1, 1);
17234 31 : if (integer_zerop (_p2))
17235 : {
17236 0 : {
17237 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17238 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
17239 0 : if (res) return res;
17240 : }
17241 : }
17242 : break;
17243 : }
17244 606 : case MULT_EXPR:
17245 606 : {
17246 606 : tree _q50 = TREE_OPERAND (_p1, 0);
17247 606 : tree _q51 = TREE_OPERAND (_p1, 1);
17248 606 : if (integer_zerop (_p2))
17249 : {
17250 40 : {
17251 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17252 40 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
17253 40 : if (res) return res;
17254 : }
17255 40 : {
17256 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
17257 40 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
17258 40 : if (res) return res;
17259 : }
17260 : }
17261 : break;
17262 : }
17263 288 : case BIT_AND_EXPR:
17264 288 : {
17265 288 : tree _q50 = TREE_OPERAND (_p1, 0);
17266 288 : tree _q51 = TREE_OPERAND (_p1, 1);
17267 288 : if (integer_zerop (_p2))
17268 : {
17269 62 : {
17270 62 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17271 62 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17272 62 : if (res) return res;
17273 : }
17274 62 : {
17275 62 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
17276 62 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17277 62 : if (res) return res;
17278 : }
17279 : }
17280 : break;
17281 : }
17282 : default:;
17283 : }
17284 : }
17285 2955908 : if (uniform_integer_cst_p (_q21))
17286 : {
17287 2271807 : switch (TREE_CODE (_p1))
17288 : {
17289 131284 : case PLUS_EXPR:
17290 131284 : {
17291 131284 : tree _q50 = TREE_OPERAND (_p1, 0);
17292 131284 : tree _q51 = TREE_OPERAND (_p1, 1);
17293 131284 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17294 : {
17295 2629 : if (uniform_integer_cst_p (_q51))
17296 : {
17297 2629 : if (uniform_integer_cst_p (_p2))
17298 : {
17299 2625 : {
17300 2625 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
17301 2625 : {
17302 2625 : tree cst1 = uniform_integer_cst_p (captures[1]);
17303 2625 : tree cst2 = uniform_integer_cst_p (captures[3]);
17304 2625 : tree cst3 = uniform_integer_cst_p (captures[4]);
17305 2625 : if (wi::to_wide (cst1) + wi::to_wide (cst2) == wi::to_wide (cst3)
17306 : )
17307 : {
17308 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1844;
17309 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1844;
17310 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1844;
17311 10 : {
17312 10 : tree _r;
17313 10 : _r = captures[2];
17314 10 : if (TREE_SIDE_EFFECTS (captures[1]))
17315 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17316 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1048, __FILE__, __LINE__, true);
17317 10 : return _r;
17318 : }
17319 2615 : next_after_fail1844:;
17320 : }
17321 : }
17322 : }
17323 : }
17324 : }
17325 : }
17326 : break;
17327 : }
17328 : default:;
17329 : }
17330 : }
17331 2955898 : switch (TREE_CODE (_q20))
17332 : {
17333 283811 : case BIT_AND_EXPR:
17334 283811 : {
17335 283811 : tree _q30 = TREE_OPERAND (_q20, 0);
17336 283811 : tree _q31 = TREE_OPERAND (_q20, 1);
17337 283811 : switch (TREE_CODE (_q31))
17338 : {
17339 213278 : case INTEGER_CST:
17340 213278 : {
17341 213278 : if (integer_zerop (_q21))
17342 : {
17343 213265 : switch (TREE_CODE (_p1))
17344 : {
17345 54 : case BIT_AND_EXPR:
17346 54 : {
17347 54 : tree _q70 = TREE_OPERAND (_p1, 0);
17348 54 : tree _q71 = TREE_OPERAND (_p1, 1);
17349 54 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17350 : {
17351 18 : switch (TREE_CODE (_q71))
17352 : {
17353 18 : case INTEGER_CST:
17354 18 : {
17355 18 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
17356 : {
17357 0 : {
17358 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _p1, _q71 };
17359 0 : if (wi::to_wide (captures[3]) == ~wi::to_wide (captures[1])
17360 : )
17361 : {
17362 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1845;
17363 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1845;
17364 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1845;
17365 0 : {
17366 0 : tree _r;
17367 0 : _r = captures[2];
17368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1049, __FILE__, __LINE__, true);
17369 0 : return _r;
17370 : }
17371 0 : next_after_fail1845:;
17372 : }
17373 : }
17374 : }
17375 18 : switch (TREE_CODE (_p2))
17376 : {
17377 18 : case BIT_IOR_EXPR:
17378 18 : {
17379 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17380 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17381 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17382 : {
17383 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17384 : {
17385 18 : {
17386 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17387 18 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17388 18 : if (res) return res;
17389 : }
17390 : }
17391 : }
17392 : break;
17393 : }
17394 : default:;
17395 : }
17396 : break;
17397 : }
17398 : default:;
17399 : }
17400 : }
17401 : break;
17402 : }
17403 139 : case PLUS_EXPR:
17404 139 : {
17405 139 : tree _q70 = TREE_OPERAND (_p1, 0);
17406 139 : tree _q71 = TREE_OPERAND (_p1, 1);
17407 139 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17408 : {
17409 18 : switch (TREE_CODE (_q71))
17410 : {
17411 18 : case INTEGER_CST:
17412 18 : {
17413 18 : switch (TREE_CODE (_p2))
17414 : {
17415 18 : case BIT_IOR_EXPR:
17416 18 : {
17417 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17418 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17419 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17420 : {
17421 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17422 : {
17423 18 : {
17424 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17425 18 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17426 18 : if (res) return res;
17427 : }
17428 : }
17429 : }
17430 : break;
17431 : }
17432 : default:;
17433 : }
17434 : break;
17435 : }
17436 : default:;
17437 : }
17438 : }
17439 : break;
17440 : }
17441 : default:;
17442 : }
17443 : }
17444 : break;
17445 : }
17446 : default:;
17447 : }
17448 : break;
17449 : }
17450 365301 : CASE_CONVERT:
17451 365301 : {
17452 365301 : tree _q30 = TREE_OPERAND (_q20, 0);
17453 365301 : switch (TREE_CODE (_q21))
17454 : {
17455 316797 : case INTEGER_CST:
17456 316797 : {
17457 316797 : switch (TREE_CODE (_p1))
17458 : {
17459 103424 : CASE_CONVERT:
17460 103424 : {
17461 103424 : tree _q60 = TREE_OPERAND (_p1, 0);
17462 103424 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
17463 : {
17464 57 : switch (TREE_CODE (_p2))
17465 : {
17466 9 : case INTEGER_CST:
17467 9 : {
17468 9 : {
17469 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17470 9 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17471 9 : if (res) return res;
17472 : }
17473 9 : break;
17474 : }
17475 : default:;
17476 : }
17477 : }
17478 : break;
17479 : }
17480 316797 : default:;
17481 : }
17482 316797 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
17483 : {
17484 48 : switch (TREE_CODE (_p2))
17485 : {
17486 0 : case INTEGER_CST:
17487 0 : {
17488 0 : {
17489 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17490 0 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17491 0 : if (res) return res;
17492 : }
17493 0 : break;
17494 : }
17495 : default:;
17496 : }
17497 : }
17498 : break;
17499 : }
17500 : default:;
17501 : }
17502 : break;
17503 : }
17504 2955874 : default:;
17505 : }
17506 2955874 : switch (TREE_CODE (_q21))
17507 : {
17508 2271773 : case INTEGER_CST:
17509 2271773 : {
17510 2271773 : switch (TREE_CODE (_p1))
17511 : {
17512 385058 : CASE_CONVERT:
17513 385058 : {
17514 385058 : tree _q50 = TREE_OPERAND (_p1, 0);
17515 385058 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17516 : {
17517 77134 : switch (TREE_CODE (_p2))
17518 : {
17519 75897 : case INTEGER_CST:
17520 75897 : {
17521 75897 : {
17522 75897 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17523 75897 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17524 75897 : if (res) return res;
17525 : }
17526 75891 : break;
17527 : }
17528 : default:;
17529 : }
17530 : }
17531 : break;
17532 : }
17533 2271767 : default:;
17534 : }
17535 2271767 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17536 : {
17537 55064 : switch (TREE_CODE (_p2))
17538 : {
17539 52481 : case INTEGER_CST:
17540 52481 : {
17541 52481 : {
17542 52481 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17543 52481 : tree res = generic_simplify_346 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17544 52481 : if (res) return res;
17545 : }
17546 52481 : break;
17547 : }
17548 : default:;
17549 : }
17550 : }
17551 : break;
17552 : }
17553 2955868 : default:;
17554 : }
17555 2955868 : switch (TREE_CODE (_p1))
17556 : {
17557 12655 : case MINUS_EXPR:
17558 12655 : {
17559 12655 : tree _q50 = TREE_OPERAND (_p1, 0);
17560 12655 : tree _q51 = TREE_OPERAND (_p1, 1);
17561 12655 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17562 : {
17563 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17564 : {
17565 0 : if (integer_zerop (_p2))
17566 : {
17567 0 : {
17568 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17569 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures);
17570 0 : if (res) return res;
17571 : }
17572 : }
17573 : }
17574 : }
17575 12655 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17576 : {
17577 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17578 : {
17579 19 : if (integer_zerop (_p2))
17580 : {
17581 0 : {
17582 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17583 0 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures);
17584 0 : if (res) return res;
17585 : }
17586 : }
17587 : }
17588 : }
17589 : break;
17590 : }
17591 14 : case BIT_XOR_EXPR:
17592 14 : {
17593 14 : tree _q50 = TREE_OPERAND (_p1, 0);
17594 14 : tree _q51 = TREE_OPERAND (_p1, 1);
17595 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17596 : {
17597 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17598 : {
17599 7 : if (integer_zerop (_p2))
17600 : {
17601 0 : {
17602 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17603 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures);
17604 0 : if (res) return res;
17605 : }
17606 : }
17607 : }
17608 : }
17609 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17610 : {
17611 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17612 : {
17613 0 : if (integer_zerop (_p2))
17614 : {
17615 0 : {
17616 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17617 0 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures);
17618 0 : if (res) return res;
17619 : }
17620 : }
17621 : }
17622 : }
17623 : break;
17624 : }
17625 275 : case BIT_AND_EXPR:
17626 275 : {
17627 275 : tree _q50 = TREE_OPERAND (_p1, 0);
17628 275 : tree _q51 = TREE_OPERAND (_p1, 1);
17629 275 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17630 : {
17631 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17632 : {
17633 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17634 : {
17635 0 : {
17636 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17637 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17638 0 : if (res) return res;
17639 : }
17640 : }
17641 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17642 : {
17643 0 : {
17644 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17645 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17646 0 : if (res) return res;
17647 : }
17648 : }
17649 : }
17650 : }
17651 275 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17652 : {
17653 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17654 : {
17655 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17656 : {
17657 0 : {
17658 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17659 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17660 0 : if (res) return res;
17661 : }
17662 : }
17663 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17664 : {
17665 0 : {
17666 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17667 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17668 0 : if (res) return res;
17669 : }
17670 : }
17671 : }
17672 : }
17673 : break;
17674 : }
17675 9612 : case BIT_IOR_EXPR:
17676 9612 : {
17677 9612 : tree _q50 = TREE_OPERAND (_p1, 0);
17678 9612 : tree _q51 = TREE_OPERAND (_p1, 1);
17679 9612 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17680 : {
17681 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17682 : {
17683 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17684 : {
17685 0 : {
17686 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17687 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17688 0 : if (res) return res;
17689 : }
17690 : }
17691 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17692 : {
17693 0 : {
17694 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17695 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17696 0 : if (res) return res;
17697 : }
17698 : }
17699 : }
17700 : }
17701 9612 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17702 : {
17703 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17704 : {
17705 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17706 : {
17707 0 : {
17708 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17709 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17710 0 : if (res) return res;
17711 : }
17712 : }
17713 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17714 : {
17715 0 : {
17716 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17717 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17718 0 : if (res) return res;
17719 : }
17720 : }
17721 : }
17722 : }
17723 : break;
17724 : }
17725 0 : case MIN_EXPR:
17726 0 : {
17727 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17728 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17729 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17730 : {
17731 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17732 : {
17733 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17734 : {
17735 0 : {
17736 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17737 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17738 0 : if (res) return res;
17739 : }
17740 : }
17741 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17742 : {
17743 0 : {
17744 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17745 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17746 0 : if (res) return res;
17747 : }
17748 : }
17749 : }
17750 0 : switch (TREE_CODE (_p2))
17751 : {
17752 0 : case MIN_EXPR:
17753 0 : {
17754 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17755 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17756 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17757 : {
17758 0 : {
17759 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17760 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17761 0 : if (res) return res;
17762 : }
17763 : }
17764 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17765 : {
17766 0 : {
17767 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17768 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17769 0 : if (res) return res;
17770 : }
17771 : }
17772 : break;
17773 : }
17774 : default:;
17775 : }
17776 : }
17777 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17778 : {
17779 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17780 : {
17781 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17782 : {
17783 0 : {
17784 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17785 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17786 0 : if (res) return res;
17787 : }
17788 : }
17789 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17790 : {
17791 0 : {
17792 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17793 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17794 0 : if (res) return res;
17795 : }
17796 : }
17797 : }
17798 0 : switch (TREE_CODE (_p2))
17799 : {
17800 0 : case MIN_EXPR:
17801 0 : {
17802 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17803 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17804 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17805 : {
17806 0 : {
17807 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17808 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17809 0 : if (res) return res;
17810 : }
17811 : }
17812 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17813 : {
17814 0 : {
17815 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17816 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17817 0 : if (res) return res;
17818 : }
17819 : }
17820 : break;
17821 : }
17822 : default:;
17823 : }
17824 : }
17825 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17826 : {
17827 0 : switch (TREE_CODE (_p2))
17828 : {
17829 0 : case MIN_EXPR:
17830 0 : {
17831 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17832 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17833 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17834 : {
17835 0 : {
17836 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17837 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17838 0 : if (res) return res;
17839 : }
17840 : }
17841 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17842 : {
17843 0 : {
17844 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17845 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17846 0 : if (res) return res;
17847 : }
17848 : }
17849 : break;
17850 : }
17851 : default:;
17852 : }
17853 : }
17854 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17855 : {
17856 0 : switch (TREE_CODE (_p2))
17857 : {
17858 0 : case MIN_EXPR:
17859 0 : {
17860 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17861 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17862 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17863 : {
17864 0 : {
17865 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17866 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17867 0 : if (res) return res;
17868 : }
17869 : }
17870 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17871 : {
17872 0 : {
17873 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17874 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17875 0 : if (res) return res;
17876 : }
17877 : }
17878 : break;
17879 : }
17880 : default:;
17881 : }
17882 : }
17883 : break;
17884 : }
17885 0 : case MAX_EXPR:
17886 0 : {
17887 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17888 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17889 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17890 : {
17891 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17892 : {
17893 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17894 : {
17895 0 : {
17896 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17897 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17898 0 : if (res) return res;
17899 : }
17900 : }
17901 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17902 : {
17903 0 : {
17904 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17905 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17906 0 : if (res) return res;
17907 : }
17908 : }
17909 : }
17910 0 : switch (TREE_CODE (_p2))
17911 : {
17912 0 : case MAX_EXPR:
17913 0 : {
17914 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17915 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17916 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17917 : {
17918 0 : {
17919 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17920 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17921 0 : if (res) return res;
17922 : }
17923 : }
17924 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17925 : {
17926 0 : {
17927 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17928 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17929 0 : if (res) return res;
17930 : }
17931 : }
17932 : break;
17933 : }
17934 : default:;
17935 : }
17936 : }
17937 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17938 : {
17939 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17940 : {
17941 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17942 : {
17943 0 : {
17944 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17945 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17946 0 : if (res) return res;
17947 : }
17948 : }
17949 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17950 : {
17951 0 : {
17952 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17953 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17954 0 : if (res) return res;
17955 : }
17956 : }
17957 : }
17958 0 : switch (TREE_CODE (_p2))
17959 : {
17960 0 : case MAX_EXPR:
17961 0 : {
17962 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17963 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17964 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17965 : {
17966 0 : {
17967 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17968 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17969 0 : if (res) return res;
17970 : }
17971 : }
17972 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17973 : {
17974 0 : {
17975 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17976 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17977 0 : if (res) return res;
17978 : }
17979 : }
17980 : break;
17981 : }
17982 : default:;
17983 : }
17984 : }
17985 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17986 : {
17987 0 : switch (TREE_CODE (_p2))
17988 : {
17989 0 : case MAX_EXPR:
17990 0 : {
17991 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17992 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17993 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17994 : {
17995 0 : {
17996 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17997 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17998 0 : if (res) return res;
17999 : }
18000 : }
18001 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
18002 : {
18003 0 : {
18004 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
18005 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
18006 0 : if (res) return res;
18007 : }
18008 : }
18009 : break;
18010 : }
18011 : default:;
18012 : }
18013 : }
18014 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18015 : {
18016 0 : switch (TREE_CODE (_p2))
18017 : {
18018 0 : case MAX_EXPR:
18019 0 : {
18020 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18021 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18022 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
18023 : {
18024 0 : {
18025 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
18026 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
18027 0 : if (res) return res;
18028 : }
18029 : }
18030 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
18031 : {
18032 0 : {
18033 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
18034 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
18035 0 : if (res) return res;
18036 : }
18037 : }
18038 : break;
18039 : }
18040 : default:;
18041 : }
18042 : }
18043 : break;
18044 : }
18045 25626 : case MULT_EXPR:
18046 25626 : {
18047 25626 : tree _q50 = TREE_OPERAND (_p1, 0);
18048 25626 : tree _q51 = TREE_OPERAND (_p1, 1);
18049 25626 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18050 : {
18051 20929 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18052 : {
18053 0 : switch (TREE_CODE (_p2))
18054 : {
18055 0 : case MULT_EXPR:
18056 0 : {
18057 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18058 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18059 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18060 : {
18061 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
18062 : {
18063 0 : {
18064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
18065 0 : const enum tree_code op = MULT_EXPR;
18066 0 : if (ANY_INTEGRAL_TYPE_P (type)
18067 : )
18068 : {
18069 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1846;
18070 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1846;
18071 0 : {
18072 0 : tree _r;
18073 0 : _r = captures[2];
18074 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
18075 0 : return _r;
18076 : }
18077 0 : next_after_fail1846:;
18078 : }
18079 : }
18080 : }
18081 : }
18082 : break;
18083 : }
18084 : default:;
18085 : }
18086 : }
18087 : }
18088 25626 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18089 : {
18090 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18091 : {
18092 0 : switch (TREE_CODE (_p2))
18093 : {
18094 0 : case MULT_EXPR:
18095 0 : {
18096 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18097 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18098 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18099 : {
18100 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
18101 : {
18102 0 : {
18103 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
18104 0 : const enum tree_code op = MULT_EXPR;
18105 0 : if (ANY_INTEGRAL_TYPE_P (type)
18106 : )
18107 : {
18108 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1847;
18109 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1847;
18110 0 : {
18111 0 : tree _r;
18112 0 : _r = captures[2];
18113 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
18114 0 : return _r;
18115 : }
18116 0 : next_after_fail1847:;
18117 : }
18118 : }
18119 : }
18120 : }
18121 : break;
18122 : }
18123 : default:;
18124 : }
18125 : }
18126 : }
18127 : break;
18128 : }
18129 131334 : case PLUS_EXPR:
18130 131334 : {
18131 131334 : tree _q50 = TREE_OPERAND (_p1, 0);
18132 131334 : tree _q51 = TREE_OPERAND (_p1, 1);
18133 131334 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18134 : {
18135 2627 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18136 : {
18137 0 : switch (TREE_CODE (_p2))
18138 : {
18139 0 : case PLUS_EXPR:
18140 0 : {
18141 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18142 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18143 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18144 : {
18145 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
18146 : {
18147 0 : {
18148 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
18149 0 : const enum tree_code op = PLUS_EXPR;
18150 0 : if (ANY_INTEGRAL_TYPE_P (type)
18151 : )
18152 : {
18153 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1848;
18154 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1848;
18155 0 : {
18156 0 : tree _r;
18157 0 : _r = captures[2];
18158 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
18159 0 : return _r;
18160 : }
18161 0 : next_after_fail1848:;
18162 : }
18163 : }
18164 : }
18165 : }
18166 : break;
18167 : }
18168 0 : case MULT_EXPR:
18169 0 : {
18170 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18171 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18172 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18173 : {
18174 0 : if (uniform_integer_cst_p (_q81))
18175 : {
18176 0 : {
18177 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
18178 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18179 : )
18180 : {
18181 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1849;
18182 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1849;
18183 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1849;
18184 0 : {
18185 0 : tree _r;
18186 0 : _r = captures[2];
18187 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18188 0 : return _r;
18189 : }
18190 0 : next_after_fail1849:;
18191 : }
18192 : }
18193 : }
18194 : }
18195 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18196 : {
18197 0 : if (uniform_integer_cst_p (_q81))
18198 : {
18199 0 : {
18200 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
18201 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18202 : )
18203 : {
18204 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1850;
18205 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1850;
18206 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1850;
18207 0 : {
18208 0 : tree _r;
18209 0 : _r = captures[2];
18210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18211 0 : return _r;
18212 : }
18213 0 : next_after_fail1850:;
18214 : }
18215 : }
18216 : }
18217 : }
18218 : break;
18219 : }
18220 : default:;
18221 : }
18222 : }
18223 : }
18224 131334 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18225 : {
18226 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18227 : {
18228 0 : switch (TREE_CODE (_p2))
18229 : {
18230 0 : case PLUS_EXPR:
18231 0 : {
18232 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18233 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18234 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18235 : {
18236 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
18237 : {
18238 0 : {
18239 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
18240 0 : const enum tree_code op = PLUS_EXPR;
18241 0 : if (ANY_INTEGRAL_TYPE_P (type)
18242 : )
18243 : {
18244 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1851;
18245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1851;
18246 0 : {
18247 0 : tree _r;
18248 0 : _r = captures[2];
18249 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
18250 0 : return _r;
18251 : }
18252 0 : next_after_fail1851:;
18253 : }
18254 : }
18255 : }
18256 : }
18257 : break;
18258 : }
18259 0 : case MULT_EXPR:
18260 0 : {
18261 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18262 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18263 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18264 : {
18265 0 : if (uniform_integer_cst_p (_q81))
18266 : {
18267 0 : {
18268 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
18269 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18270 : )
18271 : {
18272 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1852;
18273 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1852;
18274 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1852;
18275 0 : {
18276 0 : tree _r;
18277 0 : _r = captures[2];
18278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18279 0 : return _r;
18280 : }
18281 0 : next_after_fail1852:;
18282 : }
18283 : }
18284 : }
18285 : }
18286 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18287 : {
18288 0 : if (uniform_integer_cst_p (_q81))
18289 : {
18290 0 : {
18291 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
18292 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18293 : )
18294 : {
18295 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1853;
18296 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1853;
18297 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1853;
18298 0 : {
18299 0 : tree _r;
18300 0 : _r = captures[2];
18301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
18302 0 : return _r;
18303 : }
18304 0 : next_after_fail1853:;
18305 : }
18306 : }
18307 : }
18308 : }
18309 : break;
18310 : }
18311 : default:;
18312 : }
18313 : }
18314 : }
18315 : break;
18316 : }
18317 2955868 : default:;
18318 : }
18319 2955868 : switch (TREE_CODE (_q21))
18320 : {
18321 2271767 : case INTEGER_CST:
18322 2271767 : {
18323 2271767 : switch (TREE_CODE (_p1))
18324 : {
18325 228 : case NEGATE_EXPR:
18326 228 : {
18327 228 : tree _q50 = TREE_OPERAND (_p1, 0);
18328 228 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18329 : {
18330 42 : switch (TREE_CODE (_p2))
18331 : {
18332 14 : case INTEGER_CST:
18333 14 : {
18334 14 : {
18335 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18336 14 : if (!TYPE_SATURATING (type)
18337 28 : && wi::eq_p (wi::neg (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18338 : )
18339 : {
18340 12 : if (TYPE_OVERFLOW_WRAPS (type)
18341 4 : || !wi::only_sign_bit_p (wi::to_wide (captures[1]))
18342 : )
18343 : {
18344 11 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1854;
18345 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1854;
18346 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1854;
18347 11 : {
18348 11 : tree _r;
18349 11 : _r = captures[2];
18350 11 : if (TREE_SIDE_EFFECTS (captures[1]))
18351 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18352 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
18353 11 : return _r;
18354 : }
18355 2 : next_after_fail1854:;
18356 : }
18357 : else
18358 : {
18359 1 : {
18360 1 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18361 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1855;
18362 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1855;
18363 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1855;
18364 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1855;
18365 1 : {
18366 1 : tree res_op0;
18367 1 : {
18368 1 : tree _o1[1], _r1;
18369 1 : {
18370 1 : tree _o2[1], _r2;
18371 1 : _o2[0] = captures[0];
18372 1 : if (TREE_TYPE (_o2[0]) != utype)
18373 : {
18374 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
18375 : }
18376 : else
18377 : _r2 = _o2[0];
18378 1 : _o1[0] = _r2;
18379 : }
18380 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
18381 1 : res_op0 = _r1;
18382 : }
18383 1 : tree _r;
18384 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18385 1 : if (TREE_SIDE_EFFECTS (captures[1]))
18386 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18387 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
18388 1 : return _r;
18389 : }
18390 2 : next_after_fail1855:;
18391 : }
18392 : }
18393 : }
18394 : }
18395 2 : break;
18396 : }
18397 : default:;
18398 : }
18399 : }
18400 : break;
18401 : }
18402 95 : case BIT_NOT_EXPR:
18403 95 : {
18404 95 : tree _q50 = TREE_OPERAND (_p1, 0);
18405 95 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18406 : {
18407 18 : switch (TREE_CODE (_p2))
18408 : {
18409 18 : case INTEGER_CST:
18410 18 : {
18411 18 : {
18412 18 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18413 18 : if (wi::eq_p (wi::bit_not (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18414 : )
18415 : {
18416 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1856;
18417 18 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1856;
18418 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1856;
18419 18 : {
18420 18 : tree _r;
18421 18 : _r = captures[2];
18422 18 : if (TREE_SIDE_EFFECTS (captures[1]))
18423 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18424 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18425 18 : return _r;
18426 : }
18427 0 : next_after_fail1856:;
18428 : }
18429 : }
18430 0 : break;
18431 : }
18432 : default:;
18433 : }
18434 : }
18435 : break;
18436 : }
18437 5 : case ABS_EXPR:
18438 5 : {
18439 5 : tree _q50 = TREE_OPERAND (_p1, 0);
18440 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18441 : {
18442 1 : switch (TREE_CODE (_p2))
18443 : {
18444 1 : case INTEGER_CST:
18445 1 : {
18446 1 : {
18447 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18448 1 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18449 : )
18450 : {
18451 0 : if (ABS_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18452 : )
18453 : {
18454 0 : {
18455 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18456 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1857;
18457 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1857;
18458 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1857;
18459 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1857;
18460 0 : {
18461 0 : tree res_op0;
18462 0 : {
18463 0 : tree _o1[1], _r1;
18464 0 : _o1[0] = captures[0];
18465 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18466 0 : res_op0 = _r1;
18467 : }
18468 0 : tree _r;
18469 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18470 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18471 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18472 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18473 0 : return _r;
18474 : }
18475 1 : next_after_fail1857:;
18476 : }
18477 : }
18478 : else
18479 : {
18480 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1858;
18481 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1858;
18482 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1858;
18483 0 : {
18484 0 : tree _r;
18485 0 : _r = captures[2];
18486 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18487 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18488 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
18489 0 : return _r;
18490 : }
18491 1 : next_after_fail1858:;
18492 : }
18493 : }
18494 : }
18495 1 : break;
18496 : }
18497 : default:;
18498 : }
18499 : }
18500 : break;
18501 : }
18502 0 : case ABSU_EXPR:
18503 0 : {
18504 0 : tree _q50 = TREE_OPERAND (_p1, 0);
18505 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18506 : {
18507 0 : switch (TREE_CODE (_p2))
18508 : {
18509 0 : case INTEGER_CST:
18510 0 : {
18511 0 : {
18512 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18513 0 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18514 : )
18515 : {
18516 0 : if (ABSU_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18517 : )
18518 : {
18519 : {
18520 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18521 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1859;
18522 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1859;
18523 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1859;
18524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1859;
18525 : {
18526 : tree res_op0;
18527 : {
18528 : tree _o1[1], _r1;
18529 : _o1[0] = captures[0];
18530 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18531 : res_op0 = _r1;
18532 : }
18533 : tree _r;
18534 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18535 : if (TREE_SIDE_EFFECTS (captures[1]))
18536 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18537 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18538 : return _r;
18539 : }
18540 : next_after_fail1859:;
18541 : }
18542 : }
18543 : else
18544 : {
18545 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1860;
18546 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1860;
18547 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1860;
18548 0 : {
18549 0 : tree _r;
18550 0 : _r = captures[2];
18551 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18552 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18553 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
18554 0 : return _r;
18555 : }
18556 0 : next_after_fail1860:;
18557 : }
18558 : }
18559 : }
18560 0 : break;
18561 : }
18562 : default:;
18563 : }
18564 : }
18565 : break;
18566 : }
18567 : default:;
18568 : }
18569 : break;
18570 : }
18571 : default:;
18572 : }
18573 : break;
18574 : }
18575 1291402 : case INTEGER_CST:
18576 1291402 : {
18577 1291402 : {
18578 1291402 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
18579 1291402 : if (integer_zerop (captures[0])
18580 : )
18581 : {
18582 675550 : if (!VOID_TYPE_P (TREE_TYPE (captures[2])) || VOID_TYPE_P (type)
18583 : )
18584 : {
18585 667336 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1861;
18586 488378 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1861;
18587 471916 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1861;
18588 471916 : {
18589 471916 : tree _r;
18590 471916 : _r = captures[2];
18591 471916 : if (TREE_SIDE_EFFECTS (captures[0]))
18592 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18593 471916 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18594 471916 : return _r;
18595 : }
18596 432206 : next_after_fail1861:;
18597 : }
18598 : }
18599 : else
18600 : {
18601 615852 : if (!VOID_TYPE_P (TREE_TYPE (captures[1])) || VOID_TYPE_P (type)
18602 : )
18603 : {
18604 614860 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1862;
18605 487226 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1862;
18606 387280 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1862;
18607 387280 : {
18608 387280 : tree _r;
18609 387280 : _r = captures[1];
18610 387280 : if (TREE_SIDE_EFFECTS (captures[0]))
18611 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18612 387280 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18613 387280 : return _r;
18614 : }
18615 432206 : next_after_fail1862:;
18616 : }
18617 : }
18618 : }
18619 432206 : break;
18620 : }
18621 12174981 : default:;
18622 : }
18623 12174981 : switch (TREE_CODE (_p1))
18624 : {
18625 850661 : case COND_EXPR:
18626 850661 : {
18627 850661 : tree _q30 = TREE_OPERAND (_p1, 0);
18628 850661 : tree _q31 = TREE_OPERAND (_p1, 1);
18629 850661 : tree _q32 = TREE_OPERAND (_p1, 2);
18630 850661 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
18631 : {
18632 609 : {
18633 609 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _p2 };
18634 609 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1863;
18635 609 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1863;
18636 55 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1863;
18637 54 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1863;
18638 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1863;
18639 10 : {
18640 10 : tree res_op0;
18641 10 : res_op0 = captures[0];
18642 10 : tree res_op1;
18643 10 : res_op1 = captures[1];
18644 10 : tree res_op2;
18645 10 : res_op2 = captures[3];
18646 10 : tree _r;
18647 10 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18648 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
18649 10 : return _r;
18650 : }
18651 599 : next_after_fail1863:;
18652 : }
18653 : }
18654 : break;
18655 : }
18656 12174971 : default:;
18657 : }
18658 12174971 : switch (TREE_CODE (_p2))
18659 : {
18660 897930 : case COND_EXPR:
18661 897930 : {
18662 897930 : tree _q40 = TREE_OPERAND (_p2, 0);
18663 897930 : tree _q41 = TREE_OPERAND (_p2, 1);
18664 897930 : tree _q42 = TREE_OPERAND (_p2, 2);
18665 897930 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18666 : {
18667 3762 : {
18668 3762 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q41, _q42 };
18669 3762 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1864;
18670 3762 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1864;
18671 3762 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1864;
18672 184 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1864;
18673 184 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1864;
18674 184 : {
18675 184 : tree res_op0;
18676 184 : res_op0 = captures[0];
18677 184 : tree res_op1;
18678 184 : res_op1 = captures[1];
18679 184 : tree res_op2;
18680 184 : res_op2 = captures[3];
18681 184 : tree _r;
18682 184 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18683 184 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
18684 184 : return _r;
18685 : }
18686 3578 : next_after_fail1864:;
18687 : }
18688 : }
18689 897746 : {
18690 897746 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
18691 897746 : if (inverse_conditions_p (captures[0], captures[2])
18692 : )
18693 : {
18694 1162 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1865;
18695 1162 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1865;
18696 1162 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1865;
18697 1162 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1865;
18698 1162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1865;
18699 1162 : {
18700 1162 : tree res_op0;
18701 1162 : res_op0 = captures[0];
18702 1162 : tree res_op1;
18703 1162 : res_op1 = captures[1];
18704 1162 : tree res_op2;
18705 1162 : res_op2 = captures[3];
18706 1162 : tree _r;
18707 1162 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18708 1162 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
18709 1162 : return _r;
18710 : }
18711 896584 : next_after_fail1865:;
18712 : }
18713 : }
18714 896584 : break;
18715 : }
18716 12173625 : default:;
18717 : }
18718 12173625 : switch (TREE_CODE (_p1))
18719 : {
18720 850651 : case COND_EXPR:
18721 850651 : {
18722 850651 : tree _q30 = TREE_OPERAND (_p1, 0);
18723 850651 : tree _q31 = TREE_OPERAND (_p1, 1);
18724 850651 : tree _q32 = TREE_OPERAND (_p1, 2);
18725 850651 : {
18726 850651 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q32, _p2 };
18727 850651 : if (inverse_conditions_p (captures[0], captures[1])
18728 : )
18729 : {
18730 160 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1866;
18731 160 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1866;
18732 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1866;
18733 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1866;
18734 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1866;
18735 2 : {
18736 2 : tree res_op0;
18737 2 : res_op0 = captures[0];
18738 2 : tree res_op1;
18739 2 : res_op1 = captures[3];
18740 2 : tree res_op2;
18741 2 : res_op2 = captures[4];
18742 2 : tree _r;
18743 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18744 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
18745 2 : return _r;
18746 : }
18747 850649 : next_after_fail1866:;
18748 : }
18749 : }
18750 850649 : break;
18751 : }
18752 12173623 : default:;
18753 : }
18754 12173623 : if ((_p2 == _p1 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _p1, 0) && types_match (_p2, _p1)))
18755 : {
18756 50920 : {
18757 50920 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18758 50920 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1867;
18759 50920 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1867;
18760 50920 : {
18761 50920 : tree _r;
18762 50920 : _r = captures[1];
18763 50920 : if (TREE_SIDE_EFFECTS (captures[0]))
18764 357 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18765 50920 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
18766 50920 : return _r;
18767 : }
18768 0 : next_after_fail1867:;
18769 : }
18770 : }
18771 12122703 : switch (TREE_CODE (_p0))
18772 : {
18773 1767376 : case EQ_EXPR:
18774 1767376 : {
18775 1767376 : tree _q20 = TREE_OPERAND (_p0, 0);
18776 1767376 : tree _q21 = TREE_OPERAND (_p0, 1);
18777 1767376 : if (zerop (_q21))
18778 : {
18779 799200 : switch (TREE_CODE (_p2))
18780 : {
18781 36 : case NEGATE_EXPR:
18782 36 : {
18783 36 : tree _q60 = TREE_OPERAND (_p2, 0);
18784 36 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18785 : {
18786 16 : {
18787 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18788 16 : const enum tree_code cmp = EQ_EXPR;
18789 16 : if (!HONOR_SIGNED_ZEROS (type)
18790 16 : && bitwise_equal_p (captures[0], captures[1])
18791 : )
18792 : {
18793 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1868;
18794 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1868;
18795 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1868;
18796 0 : {
18797 0 : tree _r;
18798 0 : _r = captures[2];
18799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
18800 0 : return _r;
18801 : }
18802 16 : next_after_fail1868:;
18803 : }
18804 : }
18805 : }
18806 : break;
18807 : }
18808 799200 : default:;
18809 : }
18810 799200 : if (zerop (_p1))
18811 : {
18812 52574 : switch (TREE_CODE (_p2))
18813 : {
18814 14 : case NEGATE_EXPR:
18815 14 : {
18816 14 : tree _q60 = TREE_OPERAND (_p2, 0);
18817 14 : {
18818 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18819 14 : const enum tree_code cmp = EQ_EXPR;
18820 14 : if (!HONOR_SIGNED_ZEROS (type)
18821 14 : && bitwise_equal_p (captures[0], captures[2])
18822 : )
18823 : {
18824 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1869;
18825 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1869;
18826 7 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1869;
18827 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1869;
18828 7 : {
18829 7 : tree _r;
18830 7 : _r = captures[1];
18831 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
18832 7 : return _r;
18833 : }
18834 7 : next_after_fail1869:;
18835 : }
18836 : }
18837 7 : break;
18838 : }
18839 : default:;
18840 : }
18841 : }
18842 : }
18843 1767369 : switch (TREE_CODE (_q20))
18844 : {
18845 0 : case MINUS_EXPR:
18846 0 : {
18847 0 : tree _q30 = TREE_OPERAND (_q20, 0);
18848 0 : tree _q31 = TREE_OPERAND (_q20, 1);
18849 0 : if (zerop (_q21))
18850 : {
18851 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18852 : {
18853 0 : switch (TREE_CODE (_p2))
18854 : {
18855 0 : case MINUS_EXPR:
18856 0 : {
18857 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18858 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18859 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18860 : {
18861 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18862 : {
18863 0 : {
18864 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18865 0 : const enum tree_code cmp = EQ_EXPR;
18866 0 : if (!HONOR_SIGNED_ZEROS (type)
18867 : )
18868 : {
18869 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1870;
18870 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1870;
18871 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1870;
18872 0 : {
18873 0 : tree _r;
18874 0 : _r = captures[3];
18875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
18876 0 : return _r;
18877 : }
18878 0 : next_after_fail1870:;
18879 : }
18880 : }
18881 : }
18882 : }
18883 : break;
18884 : }
18885 : default:;
18886 : }
18887 : }
18888 : }
18889 0 : if (integer_zerop (_q21))
18890 : {
18891 0 : if (integer_zerop (_p1))
18892 : {
18893 0 : switch (TREE_CODE (_p2))
18894 : {
18895 0 : case MINUS_EXPR:
18896 0 : {
18897 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18898 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18899 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18900 : {
18901 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18902 : {
18903 0 : {
18904 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18905 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
18906 0 : if (res) return res;
18907 : }
18908 : }
18909 : }
18910 : break;
18911 : }
18912 : default:;
18913 : }
18914 : }
18915 : }
18916 : break;
18917 : }
18918 61510 : case CALL_EXPR:
18919 61510 : switch (get_call_combined_fn (_q20))
18920 : {
18921 0 : case CFN_BUILT_IN_SIGNBITF:
18922 0 : if (call_expr_nargs (_q20) == 1)
18923 : {
18924 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18925 0 : if (integer_zerop (_q21))
18926 : {
18927 0 : switch (TREE_CODE (_p1))
18928 : {
18929 0 : case NEGATE_EXPR:
18930 0 : {
18931 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18932 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18933 : {
18934 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18935 : {
18936 0 : {
18937 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18938 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITF);
18939 0 : if (res) return res;
18940 : }
18941 : }
18942 : }
18943 : break;
18944 : }
18945 : default:;
18946 : }
18947 : }
18948 : }
18949 : break;
18950 0 : case CFN_BUILT_IN_SIGNBITL:
18951 0 : if (call_expr_nargs (_q20) == 1)
18952 : {
18953 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18954 0 : if (integer_zerop (_q21))
18955 : {
18956 0 : switch (TREE_CODE (_p1))
18957 : {
18958 0 : case NEGATE_EXPR:
18959 0 : {
18960 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18961 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18962 : {
18963 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18964 : {
18965 0 : {
18966 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18967 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITL);
18968 0 : if (res) return res;
18969 : }
18970 : }
18971 : }
18972 : break;
18973 : }
18974 : default:;
18975 : }
18976 : }
18977 : }
18978 : break;
18979 0 : case CFN_SIGNBIT:
18980 0 : if (call_expr_nargs (_q20) == 1)
18981 : {
18982 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18983 0 : if (integer_zerop (_q21))
18984 : {
18985 0 : switch (TREE_CODE (_p1))
18986 : {
18987 0 : case NEGATE_EXPR:
18988 0 : {
18989 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18990 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18991 : {
18992 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18993 : {
18994 0 : {
18995 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18996 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_SIGNBIT);
18997 0 : if (res) return res;
18998 : }
18999 : }
19000 : }
19001 : break;
19002 : }
19003 : default:;
19004 : }
19005 : }
19006 : }
19007 : break;
19008 411 : case CFN_BUILT_IN_SIGNBIT:
19009 411 : if (call_expr_nargs (_q20) == 1)
19010 : {
19011 411 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19012 411 : if (integer_zerop (_q21))
19013 : {
19014 411 : switch (TREE_CODE (_p1))
19015 : {
19016 3 : case NEGATE_EXPR:
19017 3 : {
19018 3 : tree _q60 = TREE_OPERAND (_p1, 0);
19019 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19020 : {
19021 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19022 : {
19023 3 : {
19024 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19025 3 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBIT);
19026 3 : if (res) return res;
19027 : }
19028 : }
19029 : }
19030 : break;
19031 : }
19032 : default:;
19033 : }
19034 : }
19035 : }
19036 : break;
19037 : default:;
19038 : }
19039 : break;
19040 : default:;
19041 : }
19042 : break;
19043 : }
19044 164 : case UNEQ_EXPR:
19045 164 : {
19046 164 : tree _q20 = TREE_OPERAND (_p0, 0);
19047 164 : tree _q21 = TREE_OPERAND (_p0, 1);
19048 164 : if (zerop (_q21))
19049 : {
19050 1 : switch (TREE_CODE (_p2))
19051 : {
19052 0 : case NEGATE_EXPR:
19053 0 : {
19054 0 : tree _q60 = TREE_OPERAND (_p2, 0);
19055 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
19056 : {
19057 0 : {
19058 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
19059 0 : const enum tree_code cmp = UNEQ_EXPR;
19060 0 : if (!HONOR_SIGNED_ZEROS (type)
19061 0 : && bitwise_equal_p (captures[0], captures[1])
19062 : )
19063 : {
19064 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1871;
19065 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1871;
19066 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1871;
19067 0 : {
19068 0 : tree _r;
19069 0 : _r = captures[2];
19070 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
19071 0 : return _r;
19072 : }
19073 0 : next_after_fail1871:;
19074 : }
19075 : }
19076 : }
19077 : break;
19078 : }
19079 1 : default:;
19080 : }
19081 1 : if (zerop (_p1))
19082 : {
19083 0 : switch (TREE_CODE (_p2))
19084 : {
19085 0 : case NEGATE_EXPR:
19086 0 : {
19087 0 : tree _q60 = TREE_OPERAND (_p2, 0);
19088 0 : {
19089 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
19090 0 : const enum tree_code cmp = UNEQ_EXPR;
19091 0 : if (!HONOR_SIGNED_ZEROS (type)
19092 0 : && bitwise_equal_p (captures[0], captures[2])
19093 : )
19094 : {
19095 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1872;
19096 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1872;
19097 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1872;
19098 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1872;
19099 0 : {
19100 0 : tree _r;
19101 0 : _r = captures[1];
19102 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
19103 0 : return _r;
19104 : }
19105 0 : next_after_fail1872:;
19106 : }
19107 : }
19108 0 : break;
19109 : }
19110 : default:;
19111 : }
19112 : }
19113 : }
19114 164 : switch (TREE_CODE (_q20))
19115 : {
19116 0 : case MINUS_EXPR:
19117 0 : {
19118 0 : tree _q30 = TREE_OPERAND (_q20, 0);
19119 0 : tree _q31 = TREE_OPERAND (_q20, 1);
19120 0 : if (zerop (_q21))
19121 : {
19122 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19123 : {
19124 0 : switch (TREE_CODE (_p2))
19125 : {
19126 0 : case MINUS_EXPR:
19127 0 : {
19128 0 : tree _q80 = TREE_OPERAND (_p2, 0);
19129 0 : tree _q81 = TREE_OPERAND (_p2, 1);
19130 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
19131 : {
19132 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
19133 : {
19134 0 : {
19135 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
19136 0 : const enum tree_code cmp = UNEQ_EXPR;
19137 0 : if (!HONOR_SIGNED_ZEROS (type)
19138 : )
19139 : {
19140 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1873;
19141 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1873;
19142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1873;
19143 0 : {
19144 0 : tree _r;
19145 0 : _r = captures[3];
19146 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
19147 0 : return _r;
19148 : }
19149 0 : next_after_fail1873:;
19150 : }
19151 : }
19152 : }
19153 : }
19154 : break;
19155 : }
19156 : default:;
19157 : }
19158 : }
19159 : }
19160 0 : if (integer_zerop (_q21))
19161 : {
19162 0 : if (integer_zerop (_p1))
19163 : {
19164 0 : switch (TREE_CODE (_p2))
19165 : {
19166 0 : case MINUS_EXPR:
19167 0 : {
19168 0 : tree _q80 = TREE_OPERAND (_p2, 0);
19169 0 : tree _q81 = TREE_OPERAND (_p2, 1);
19170 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
19171 : {
19172 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
19173 : {
19174 0 : {
19175 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
19176 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures, UNEQ_EXPR);
19177 0 : if (res) return res;
19178 : }
19179 : }
19180 : }
19181 : break;
19182 : }
19183 : default:;
19184 : }
19185 : }
19186 : }
19187 : break;
19188 : }
19189 : default:;
19190 : }
19191 : break;
19192 : }
19193 2953731 : case NE_EXPR:
19194 2953731 : {
19195 2953731 : tree _q20 = TREE_OPERAND (_p0, 0);
19196 2953731 : tree _q21 = TREE_OPERAND (_p0, 1);
19197 2953731 : if (zerop (_q21))
19198 : {
19199 2027773 : switch (TREE_CODE (_p2))
19200 : {
19201 50 : case NEGATE_EXPR:
19202 50 : {
19203 50 : tree _q60 = TREE_OPERAND (_p2, 0);
19204 50 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
19205 : {
19206 10 : {
19207 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19208 10 : const enum tree_code cmp = NE_EXPR;
19209 10 : if (!HONOR_SIGNED_ZEROS (type)
19210 10 : && bitwise_equal_p (captures[0], captures[1])
19211 : )
19212 : {
19213 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1874;
19214 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1874;
19215 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1874;
19216 0 : {
19217 0 : tree _r;
19218 0 : _r = captures[1];
19219 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
19220 0 : return _r;
19221 : }
19222 10 : next_after_fail1874:;
19223 : }
19224 : }
19225 : }
19226 : break;
19227 : }
19228 2027773 : default:;
19229 : }
19230 2027773 : if (integer_zerop (_p2))
19231 : {
19232 342506 : {
19233 342506 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19234 342506 : const enum tree_code cmp = NE_EXPR;
19235 342506 : if (!HONOR_SIGNED_ZEROS (type)
19236 342506 : && bitwise_equal_p (captures[0], captures[1])
19237 : )
19238 : {
19239 2849 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1875;
19240 2815 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1875;
19241 2815 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1875;
19242 2815 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1875;
19243 2815 : {
19244 2815 : tree _r;
19245 2815 : _r = captures[1];
19246 2815 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
19247 2815 : return _r;
19248 : }
19249 339691 : next_after_fail1875:;
19250 : }
19251 : }
19252 : }
19253 : }
19254 2950916 : switch (TREE_CODE (_q20))
19255 : {
19256 567 : case MINUS_EXPR:
19257 567 : {
19258 567 : tree _q30 = TREE_OPERAND (_q20, 0);
19259 567 : tree _q31 = TREE_OPERAND (_q20, 1);
19260 567 : if (zerop (_q21))
19261 : {
19262 80 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19263 : {
19264 0 : switch (TREE_CODE (_p2))
19265 : {
19266 0 : case MINUS_EXPR:
19267 0 : {
19268 0 : tree _q80 = TREE_OPERAND (_p2, 0);
19269 0 : tree _q81 = TREE_OPERAND (_p2, 1);
19270 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
19271 : {
19272 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
19273 : {
19274 0 : {
19275 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19276 0 : const enum tree_code cmp = NE_EXPR;
19277 0 : if (!HONOR_SIGNED_ZEROS (type)
19278 : )
19279 : {
19280 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1876;
19281 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1876;
19282 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1876;
19283 0 : {
19284 0 : tree _r;
19285 0 : _r = captures[0];
19286 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
19287 0 : return _r;
19288 : }
19289 0 : next_after_fail1876:;
19290 : }
19291 : }
19292 : }
19293 : }
19294 : break;
19295 : }
19296 : default:;
19297 : }
19298 : }
19299 : }
19300 567 : if (integer_zerop (_q21))
19301 : {
19302 29 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19303 : {
19304 0 : if (integer_zerop (_p2))
19305 : {
19306 0 : {
19307 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19308 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
19309 0 : if (res) return res;
19310 : }
19311 : }
19312 : }
19313 : }
19314 : break;
19315 : }
19316 283787 : case BIT_AND_EXPR:
19317 283787 : {
19318 283787 : tree _q30 = TREE_OPERAND (_q20, 0);
19319 283787 : tree _q31 = TREE_OPERAND (_q20, 1);
19320 283787 : if (integer_pow2p (_q31))
19321 : {
19322 211465 : if (integer_zerop (_q21))
19323 : {
19324 211465 : switch (TREE_CODE (_p1))
19325 : {
19326 2350 : case INTEGER_CST:
19327 2350 : {
19328 2350 : if (integer_zerop (_p2))
19329 : {
19330 1424 : {
19331 1424 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
19332 1424 : if (!POINTER_TYPE_P (type) && integer_pow2p (captures[2])
19333 : )
19334 : {
19335 662 : {
19336 662 : int shift = (wi::exact_log2 (wi::to_wide (captures[2]))
19337 662 : - wi::exact_log2 (wi::to_wide (captures[1])));
19338 662 : if (shift > 0
19339 : )
19340 : {
19341 387 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1877;
19342 387 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1877;
19343 387 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1877;
19344 387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1877;
19345 387 : {
19346 387 : tree res_op0;
19347 387 : {
19348 387 : tree _o1[2], _r1;
19349 387 : {
19350 387 : tree _o2[1], _r2;
19351 387 : _o2[0] = captures[0];
19352 387 : if (TREE_TYPE (_o2[0]) != type)
19353 : {
19354 384 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
19355 : }
19356 : else
19357 : _r2 = _o2[0];
19358 387 : _o1[0] = _r2;
19359 : }
19360 387 : _o1[1] = build_int_cst (integer_type_node, shift);
19361 387 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19362 387 : res_op0 = _r1;
19363 : }
19364 387 : tree res_op1;
19365 387 : res_op1 = captures[2];
19366 387 : tree _r;
19367 387 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19368 387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
19369 662 : return _r;
19370 : }
19371 : next_after_fail1877:;
19372 : }
19373 : else
19374 : {
19375 275 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1878;
19376 275 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1878;
19377 275 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1878;
19378 275 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1878;
19379 275 : {
19380 275 : tree res_op0;
19381 275 : {
19382 275 : tree _o1[1], _r1;
19383 275 : {
19384 275 : tree _o2[2], _r2;
19385 275 : _o2[0] = captures[0];
19386 275 : _o2[1] = build_int_cst (integer_type_node, -shift);
19387 275 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
19388 275 : _o1[0] = _r2;
19389 : }
19390 275 : if (TREE_TYPE (_o1[0]) != type)
19391 : {
19392 139 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
19393 : }
19394 : else
19395 : _r1 = _o1[0];
19396 275 : res_op0 = _r1;
19397 : }
19398 275 : tree res_op1;
19399 275 : res_op1 = captures[2];
19400 275 : tree _r;
19401 275 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19402 275 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
19403 275 : return _r;
19404 : }
19405 : next_after_fail1878:;
19406 : }
19407 : }
19408 : }
19409 : }
19410 : }
19411 : break;
19412 : }
19413 : default:;
19414 : }
19415 : }
19416 : }
19417 : break;
19418 : }
19419 329637 : case CALL_EXPR:
19420 329637 : switch (get_call_combined_fn (_q20))
19421 : {
19422 30 : case CFN_BUILT_IN_SIGNBITF:
19423 30 : if (call_expr_nargs (_q20) == 1)
19424 : {
19425 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19426 30 : if (integer_zerop (_q21))
19427 : {
19428 30 : switch (TREE_CODE (_p1))
19429 : {
19430 0 : case NEGATE_EXPR:
19431 0 : {
19432 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19433 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19434 : {
19435 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19436 : {
19437 0 : {
19438 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19439 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITF);
19440 0 : if (res) return res;
19441 : }
19442 : }
19443 : }
19444 : break;
19445 : }
19446 : default:;
19447 : }
19448 : }
19449 : }
19450 : break;
19451 30 : case CFN_BUILT_IN_SIGNBITL:
19452 30 : if (call_expr_nargs (_q20) == 1)
19453 : {
19454 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19455 30 : if (integer_zerop (_q21))
19456 : {
19457 30 : switch (TREE_CODE (_p1))
19458 : {
19459 0 : case NEGATE_EXPR:
19460 0 : {
19461 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19462 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19463 : {
19464 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19465 : {
19466 0 : {
19467 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19468 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITL);
19469 0 : if (res) return res;
19470 : }
19471 : }
19472 : }
19473 : break;
19474 : }
19475 : default:;
19476 : }
19477 : }
19478 : }
19479 : break;
19480 0 : case CFN_SIGNBIT:
19481 0 : if (call_expr_nargs (_q20) == 1)
19482 : {
19483 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19484 0 : if (integer_zerop (_q21))
19485 : {
19486 0 : switch (TREE_CODE (_p1))
19487 : {
19488 0 : case NEGATE_EXPR:
19489 0 : {
19490 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19491 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19492 : {
19493 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19494 : {
19495 0 : {
19496 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19497 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_SIGNBIT);
19498 0 : if (res) return res;
19499 : }
19500 : }
19501 : }
19502 : break;
19503 : }
19504 : default:;
19505 : }
19506 : }
19507 : }
19508 : break;
19509 2896 : case CFN_BUILT_IN_SIGNBIT:
19510 2896 : if (call_expr_nargs (_q20) == 1)
19511 : {
19512 2896 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19513 2896 : if (integer_zerop (_q21))
19514 : {
19515 2896 : switch (TREE_CODE (_p1))
19516 : {
19517 4 : case NEGATE_EXPR:
19518 4 : {
19519 4 : tree _q60 = TREE_OPERAND (_p1, 0);
19520 4 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19521 : {
19522 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19523 : {
19524 3 : {
19525 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19526 3 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBIT);
19527 3 : if (res) return res;
19528 : }
19529 : }
19530 : }
19531 : break;
19532 : }
19533 : default:;
19534 : }
19535 : }
19536 : }
19537 : break;
19538 : default:;
19539 : }
19540 : break;
19541 2950251 : default:;
19542 : }
19543 2950251 : if (integer_zerop (_q21))
19544 : {
19545 1949941 : switch (TREE_CODE (_p1))
19546 : {
19547 110302 : case PLUS_EXPR:
19548 110302 : {
19549 110302 : tree _q50 = TREE_OPERAND (_p1, 0);
19550 110302 : tree _q51 = TREE_OPERAND (_p1, 1);
19551 110302 : {
19552 110302 : tree _q50_pops[1];
19553 110302 : if (tree_nop_convert (_q50, _q50_pops))
19554 : {
19555 11848 : tree _q60 = _q50_pops[0];
19556 11848 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19557 : {
19558 1615 : if (integer_all_onesp (_q51))
19559 : {
19560 1615 : if (integer_zerop (_p2))
19561 : {
19562 1607 : {
19563 1607 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19564 1607 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures);
19565 1607 : if (res) return res;
19566 : }
19567 : }
19568 : }
19569 : }
19570 : }
19571 : }
19572 108695 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19573 : {
19574 2056 : if (integer_all_onesp (_q51))
19575 : {
19576 2021 : if (integer_zerop (_p2))
19577 : {
19578 2011 : {
19579 2011 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19580 2011 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures);
19581 2011 : if (res) return res;
19582 : }
19583 : }
19584 : }
19585 : }
19586 : break;
19587 : }
19588 596251 : case CALL_EXPR:
19589 596251 : switch (get_call_combined_fn (_p1))
19590 : {
19591 0 : case CFN_PARITY:
19592 0 : if (call_expr_nargs (_p1) == 1)
19593 : {
19594 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19595 0 : switch (TREE_CODE (_q50))
19596 : {
19597 0 : CASE_CONVERT:
19598 0 : {
19599 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19600 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19601 : {
19602 0 : if (integer_zerop (_p2))
19603 : {
19604 0 : {
19605 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19606 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19607 0 : if (res) return res;
19608 : }
19609 : }
19610 : }
19611 : break;
19612 : }
19613 0 : default:;
19614 : }
19615 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19616 : {
19617 0 : if (integer_zerop (_p2))
19618 : {
19619 0 : {
19620 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19621 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19622 0 : if (res) return res;
19623 : }
19624 : }
19625 : }
19626 : }
19627 : break;
19628 7 : case CFN_BUILT_IN_FFS:
19629 7 : if (call_expr_nargs (_p1) == 1)
19630 : {
19631 7 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19632 7 : switch (TREE_CODE (_q50))
19633 : {
19634 0 : CASE_CONVERT:
19635 0 : {
19636 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19637 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19638 : {
19639 0 : if (integer_zerop (_p2))
19640 : {
19641 0 : {
19642 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19643 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19644 0 : if (res) return res;
19645 : }
19646 : }
19647 : }
19648 : break;
19649 : }
19650 7 : default:;
19651 : }
19652 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19653 : {
19654 0 : if (integer_zerop (_p2))
19655 : {
19656 0 : {
19657 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19658 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19659 0 : if (res) return res;
19660 : }
19661 : }
19662 : }
19663 : }
19664 : break;
19665 0 : case CFN_BUILT_IN_FFSIMAX:
19666 0 : if (call_expr_nargs (_p1) == 1)
19667 : {
19668 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19669 0 : switch (TREE_CODE (_q50))
19670 : {
19671 0 : CASE_CONVERT:
19672 0 : {
19673 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19674 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19675 : {
19676 0 : if (integer_zerop (_p2))
19677 : {
19678 0 : {
19679 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19680 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19681 0 : if (res) return res;
19682 : }
19683 : }
19684 : }
19685 : break;
19686 : }
19687 0 : default:;
19688 : }
19689 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19690 : {
19691 0 : if (integer_zerop (_p2))
19692 : {
19693 0 : {
19694 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19695 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19696 0 : if (res) return res;
19697 : }
19698 : }
19699 : }
19700 : }
19701 : break;
19702 2 : case CFN_BUILT_IN_POPCOUNT:
19703 2 : if (call_expr_nargs (_p1) == 1)
19704 : {
19705 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19706 2 : switch (TREE_CODE (_q50))
19707 : {
19708 1 : CASE_CONVERT:
19709 1 : {
19710 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19711 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19712 : {
19713 1 : if (integer_zerop (_p2))
19714 : {
19715 1 : {
19716 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19717 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19718 1 : if (res) return res;
19719 : }
19720 : }
19721 : }
19722 : break;
19723 : }
19724 1 : default:;
19725 : }
19726 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19727 : {
19728 0 : if (integer_zerop (_p2))
19729 : {
19730 0 : {
19731 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19732 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19733 0 : if (res) return res;
19734 : }
19735 : }
19736 : }
19737 : }
19738 : break;
19739 2 : case CFN_BUILT_IN_PARITYL:
19740 2 : if (call_expr_nargs (_p1) == 1)
19741 : {
19742 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19743 2 : switch (TREE_CODE (_q50))
19744 : {
19745 1 : CASE_CONVERT:
19746 1 : {
19747 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19748 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19749 : {
19750 1 : if (integer_zerop (_p2))
19751 : {
19752 1 : {
19753 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19754 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19755 1 : if (res) return res;
19756 : }
19757 : }
19758 : }
19759 : break;
19760 : }
19761 1 : default:;
19762 : }
19763 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19764 : {
19765 0 : if (integer_zerop (_p2))
19766 : {
19767 0 : {
19768 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19769 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19770 0 : if (res) return res;
19771 : }
19772 : }
19773 : }
19774 : }
19775 : break;
19776 16 : case CFN_BUILT_IN_FFSL:
19777 16 : if (call_expr_nargs (_p1) == 1)
19778 : {
19779 16 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19780 16 : switch (TREE_CODE (_q50))
19781 : {
19782 16 : CASE_CONVERT:
19783 16 : {
19784 16 : tree _q60 = TREE_OPERAND (_q50, 0);
19785 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19786 : {
19787 0 : if (integer_zerop (_p2))
19788 : {
19789 0 : {
19790 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19791 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19792 0 : if (res) return res;
19793 : }
19794 : }
19795 : }
19796 : break;
19797 : }
19798 16 : default:;
19799 : }
19800 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19801 : {
19802 0 : if (integer_zerop (_p2))
19803 : {
19804 0 : {
19805 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19806 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19807 0 : if (res) return res;
19808 : }
19809 : }
19810 : }
19811 : }
19812 : break;
19813 2 : case CFN_BUILT_IN_POPCOUNTLL:
19814 2 : if (call_expr_nargs (_p1) == 1)
19815 : {
19816 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19817 2 : switch (TREE_CODE (_q50))
19818 : {
19819 1 : CASE_CONVERT:
19820 1 : {
19821 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19822 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19823 : {
19824 1 : if (integer_zerop (_p2))
19825 : {
19826 1 : {
19827 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19828 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19829 1 : if (res) return res;
19830 : }
19831 : }
19832 : }
19833 : break;
19834 : }
19835 1 : default:;
19836 : }
19837 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19838 : {
19839 0 : if (integer_zerop (_p2))
19840 : {
19841 0 : {
19842 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19843 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19844 0 : if (res) return res;
19845 : }
19846 : }
19847 : }
19848 : }
19849 : break;
19850 0 : case CFN_POPCOUNT:
19851 0 : if (call_expr_nargs (_p1) == 1)
19852 : {
19853 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19854 0 : switch (TREE_CODE (_q50))
19855 : {
19856 0 : CASE_CONVERT:
19857 0 : {
19858 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19859 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19860 : {
19861 0 : if (integer_zerop (_p2))
19862 : {
19863 0 : {
19864 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19865 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19866 0 : if (res) return res;
19867 : }
19868 : }
19869 : }
19870 : break;
19871 : }
19872 0 : default:;
19873 : }
19874 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19875 : {
19876 0 : if (integer_zerop (_p2))
19877 : {
19878 0 : {
19879 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19880 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19881 0 : if (res) return res;
19882 : }
19883 : }
19884 : }
19885 : }
19886 : break;
19887 0 : case CFN_BUILT_IN_PARITYIMAX:
19888 0 : if (call_expr_nargs (_p1) == 1)
19889 : {
19890 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19891 0 : switch (TREE_CODE (_q50))
19892 : {
19893 0 : CASE_CONVERT:
19894 0 : {
19895 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19896 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19897 : {
19898 0 : if (integer_zerop (_p2))
19899 : {
19900 0 : {
19901 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19902 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19903 0 : if (res) return res;
19904 : }
19905 : }
19906 : }
19907 : break;
19908 : }
19909 0 : default:;
19910 : }
19911 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19912 : {
19913 0 : if (integer_zerop (_p2))
19914 : {
19915 0 : {
19916 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19917 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19918 0 : if (res) return res;
19919 : }
19920 : }
19921 : }
19922 : }
19923 : break;
19924 2 : case CFN_BUILT_IN_CLRSBL:
19925 2 : if (call_expr_nargs (_p1) == 1)
19926 : {
19927 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19928 2 : switch (TREE_CODE (_q50))
19929 : {
19930 0 : CASE_CONVERT:
19931 0 : {
19932 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19933 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19934 : {
19935 0 : switch (TREE_CODE (_p2))
19936 : {
19937 0 : case INTEGER_CST:
19938 0 : {
19939 0 : {
19940 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19941 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19942 0 : if (res) return res;
19943 : }
19944 0 : break;
19945 : }
19946 : default:;
19947 : }
19948 : }
19949 : break;
19950 : }
19951 2 : default:;
19952 : }
19953 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19954 : {
19955 1 : switch (TREE_CODE (_p2))
19956 : {
19957 1 : case INTEGER_CST:
19958 1 : {
19959 1 : {
19960 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19961 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19962 1 : if (res) return res;
19963 : }
19964 0 : break;
19965 : }
19966 : default:;
19967 : }
19968 : }
19969 : }
19970 : break;
19971 0 : case CFN_FFS:
19972 0 : if (call_expr_nargs (_p1) == 1)
19973 : {
19974 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19975 0 : switch (TREE_CODE (_q50))
19976 : {
19977 0 : CASE_CONVERT:
19978 0 : {
19979 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19980 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19981 : {
19982 0 : if (integer_zerop (_p2))
19983 : {
19984 0 : {
19985 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19986 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19987 0 : if (res) return res;
19988 : }
19989 : }
19990 : }
19991 : break;
19992 : }
19993 0 : default:;
19994 : }
19995 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19996 : {
19997 0 : if (integer_zerop (_p2))
19998 : {
19999 0 : {
20000 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20001 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
20002 0 : if (res) return res;
20003 : }
20004 : }
20005 : }
20006 : }
20007 : break;
20008 2 : case CFN_BUILT_IN_PARITY:
20009 2 : if (call_expr_nargs (_p1) == 1)
20010 : {
20011 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20012 2 : switch (TREE_CODE (_q50))
20013 : {
20014 1 : CASE_CONVERT:
20015 1 : {
20016 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20017 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20018 : {
20019 1 : if (integer_zerop (_p2))
20020 : {
20021 1 : {
20022 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20023 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
20024 1 : if (res) return res;
20025 : }
20026 : }
20027 : }
20028 : break;
20029 : }
20030 1 : default:;
20031 : }
20032 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20033 : {
20034 0 : if (integer_zerop (_p2))
20035 : {
20036 0 : {
20037 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20038 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
20039 0 : if (res) return res;
20040 : }
20041 : }
20042 : }
20043 : }
20044 : break;
20045 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
20046 0 : if (call_expr_nargs (_p1) == 1)
20047 : {
20048 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20049 0 : switch (TREE_CODE (_q50))
20050 : {
20051 0 : CASE_CONVERT:
20052 0 : {
20053 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20054 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20055 : {
20056 0 : if (integer_zerop (_p2))
20057 : {
20058 0 : {
20059 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20060 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
20061 0 : if (res) return res;
20062 : }
20063 : }
20064 : }
20065 : break;
20066 : }
20067 0 : default:;
20068 : }
20069 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20070 : {
20071 0 : if (integer_zerop (_p2))
20072 : {
20073 0 : {
20074 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20075 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
20076 0 : if (res) return res;
20077 : }
20078 : }
20079 : }
20080 : }
20081 : break;
20082 0 : case CFN_BUILT_IN_CLRSBIMAX:
20083 0 : if (call_expr_nargs (_p1) == 1)
20084 : {
20085 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20086 0 : switch (TREE_CODE (_q50))
20087 : {
20088 0 : CASE_CONVERT:
20089 0 : {
20090 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20091 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20092 : {
20093 0 : switch (TREE_CODE (_p2))
20094 : {
20095 0 : case INTEGER_CST:
20096 0 : {
20097 0 : {
20098 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20099 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
20100 0 : if (res) return res;
20101 : }
20102 0 : break;
20103 : }
20104 : default:;
20105 : }
20106 : }
20107 : break;
20108 : }
20109 0 : default:;
20110 : }
20111 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20112 : {
20113 0 : switch (TREE_CODE (_p2))
20114 : {
20115 0 : case INTEGER_CST:
20116 0 : {
20117 0 : {
20118 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20119 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
20120 0 : if (res) return res;
20121 : }
20122 0 : break;
20123 : }
20124 : default:;
20125 : }
20126 : }
20127 : }
20128 : break;
20129 2 : case CFN_BUILT_IN_CLRSBLL:
20130 2 : if (call_expr_nargs (_p1) == 1)
20131 : {
20132 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20133 2 : switch (TREE_CODE (_q50))
20134 : {
20135 0 : CASE_CONVERT:
20136 0 : {
20137 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20138 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20139 : {
20140 0 : switch (TREE_CODE (_p2))
20141 : {
20142 0 : case INTEGER_CST:
20143 0 : {
20144 0 : {
20145 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20146 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
20147 0 : if (res) return res;
20148 : }
20149 0 : break;
20150 : }
20151 : default:;
20152 : }
20153 : }
20154 : break;
20155 : }
20156 2 : default:;
20157 : }
20158 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20159 : {
20160 1 : switch (TREE_CODE (_p2))
20161 : {
20162 1 : case INTEGER_CST:
20163 1 : {
20164 1 : {
20165 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20166 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
20167 1 : if (res) return res;
20168 : }
20169 0 : break;
20170 : }
20171 : default:;
20172 : }
20173 : }
20174 : }
20175 : break;
20176 0 : case CFN_BSWAP:
20177 0 : if (call_expr_nargs (_p1) == 1)
20178 : {
20179 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20180 0 : switch (TREE_CODE (_q50))
20181 : {
20182 0 : CASE_CONVERT:
20183 0 : {
20184 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20185 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20186 : {
20187 0 : if (integer_zerop (_p2))
20188 : {
20189 0 : {
20190 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20191 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
20192 0 : if (res) return res;
20193 : }
20194 : }
20195 : }
20196 : break;
20197 : }
20198 0 : default:;
20199 : }
20200 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20201 : {
20202 0 : if (integer_zerop (_p2))
20203 : {
20204 0 : {
20205 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20206 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
20207 0 : if (res) return res;
20208 : }
20209 : }
20210 : }
20211 : }
20212 : break;
20213 0 : case CFN_CLRSB:
20214 0 : if (call_expr_nargs (_p1) == 1)
20215 : {
20216 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20217 0 : switch (TREE_CODE (_q50))
20218 : {
20219 0 : CASE_CONVERT:
20220 0 : {
20221 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20222 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20223 : {
20224 0 : switch (TREE_CODE (_p2))
20225 : {
20226 0 : case INTEGER_CST:
20227 0 : {
20228 0 : {
20229 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20230 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
20231 0 : if (res) return res;
20232 : }
20233 0 : break;
20234 : }
20235 : default:;
20236 : }
20237 : }
20238 : break;
20239 : }
20240 0 : default:;
20241 : }
20242 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20243 : {
20244 0 : switch (TREE_CODE (_p2))
20245 : {
20246 0 : case INTEGER_CST:
20247 0 : {
20248 0 : {
20249 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20250 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
20251 0 : if (res) return res;
20252 : }
20253 0 : break;
20254 : }
20255 : default:;
20256 : }
20257 : }
20258 : }
20259 : break;
20260 0 : case CFN_BUILT_IN_BSWAP128:
20261 0 : if (call_expr_nargs (_p1) == 1)
20262 : {
20263 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20264 0 : switch (TREE_CODE (_q50))
20265 : {
20266 0 : CASE_CONVERT:
20267 0 : {
20268 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20269 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20270 : {
20271 0 : if (integer_zerop (_p2))
20272 : {
20273 0 : {
20274 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20275 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
20276 0 : if (res) return res;
20277 : }
20278 : }
20279 : }
20280 : break;
20281 : }
20282 0 : default:;
20283 : }
20284 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20285 : {
20286 0 : if (integer_zerop (_p2))
20287 : {
20288 0 : {
20289 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20290 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
20291 0 : if (res) return res;
20292 : }
20293 : }
20294 : }
20295 : }
20296 : break;
20297 2 : case CFN_BUILT_IN_POPCOUNTL:
20298 2 : if (call_expr_nargs (_p1) == 1)
20299 : {
20300 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20301 2 : switch (TREE_CODE (_q50))
20302 : {
20303 1 : CASE_CONVERT:
20304 1 : {
20305 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20306 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20307 : {
20308 1 : if (integer_zerop (_p2))
20309 : {
20310 1 : {
20311 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20312 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20313 1 : if (res) return res;
20314 : }
20315 : }
20316 : }
20317 : break;
20318 : }
20319 1 : default:;
20320 : }
20321 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20322 : {
20323 0 : if (integer_zerop (_p2))
20324 : {
20325 0 : {
20326 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20327 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20328 0 : if (res) return res;
20329 : }
20330 : }
20331 : }
20332 : }
20333 : break;
20334 2 : case CFN_BUILT_IN_CLRSB:
20335 2 : if (call_expr_nargs (_p1) == 1)
20336 : {
20337 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20338 2 : switch (TREE_CODE (_q50))
20339 : {
20340 0 : CASE_CONVERT:
20341 0 : {
20342 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20343 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20344 : {
20345 0 : switch (TREE_CODE (_p2))
20346 : {
20347 0 : case INTEGER_CST:
20348 0 : {
20349 0 : {
20350 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20351 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20352 0 : if (res) return res;
20353 : }
20354 0 : break;
20355 : }
20356 : default:;
20357 : }
20358 : }
20359 : break;
20360 : }
20361 2 : default:;
20362 : }
20363 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20364 : {
20365 1 : switch (TREE_CODE (_p2))
20366 : {
20367 1 : case INTEGER_CST:
20368 1 : {
20369 1 : {
20370 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20371 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20372 1 : if (res) return res;
20373 : }
20374 0 : break;
20375 : }
20376 : default:;
20377 : }
20378 : }
20379 : }
20380 : break;
20381 0 : case CFN_BUILT_IN_FFSLL:
20382 0 : if (call_expr_nargs (_p1) == 1)
20383 : {
20384 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20385 0 : switch (TREE_CODE (_q50))
20386 : {
20387 0 : CASE_CONVERT:
20388 0 : {
20389 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20390 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20391 : {
20392 0 : if (integer_zerop (_p2))
20393 : {
20394 0 : {
20395 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20396 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20397 0 : if (res) return res;
20398 : }
20399 : }
20400 : }
20401 : break;
20402 : }
20403 0 : default:;
20404 : }
20405 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20406 : {
20407 0 : if (integer_zerop (_p2))
20408 : {
20409 0 : {
20410 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20411 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20412 0 : if (res) return res;
20413 : }
20414 : }
20415 : }
20416 : }
20417 : break;
20418 2 : case CFN_BUILT_IN_PARITYLL:
20419 2 : if (call_expr_nargs (_p1) == 1)
20420 : {
20421 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20422 2 : switch (TREE_CODE (_q50))
20423 : {
20424 1 : CASE_CONVERT:
20425 1 : {
20426 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20427 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20428 : {
20429 1 : if (integer_zerop (_p2))
20430 : {
20431 1 : {
20432 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20433 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20434 1 : if (res) return res;
20435 : }
20436 : }
20437 : }
20438 : break;
20439 : }
20440 1 : default:;
20441 : }
20442 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20443 : {
20444 0 : if (integer_zerop (_p2))
20445 : {
20446 0 : {
20447 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20448 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20449 0 : if (res) return res;
20450 : }
20451 : }
20452 : }
20453 : }
20454 : break;
20455 3 : case CFN_BUILT_IN_BSWAP16:
20456 3 : if (call_expr_nargs (_p1) == 1)
20457 : {
20458 3 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20459 3 : switch (TREE_CODE (_q50))
20460 : {
20461 0 : CASE_CONVERT:
20462 0 : {
20463 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20464 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20465 : {
20466 0 : if (integer_zerop (_p2))
20467 : {
20468 0 : {
20469 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20470 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20471 0 : if (res) return res;
20472 : }
20473 : }
20474 : }
20475 : break;
20476 : }
20477 3 : default:;
20478 : }
20479 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20480 : {
20481 1 : if (integer_zerop (_p2))
20482 : {
20483 1 : {
20484 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20485 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20486 1 : if (res) return res;
20487 : }
20488 : }
20489 : }
20490 : }
20491 : break;
20492 2 : case CFN_BUILT_IN_BSWAP32:
20493 2 : if (call_expr_nargs (_p1) == 1)
20494 : {
20495 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20496 2 : switch (TREE_CODE (_q50))
20497 : {
20498 0 : CASE_CONVERT:
20499 0 : {
20500 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20501 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20502 : {
20503 0 : if (integer_zerop (_p2))
20504 : {
20505 0 : {
20506 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20507 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20508 0 : if (res) return res;
20509 : }
20510 : }
20511 : }
20512 : break;
20513 : }
20514 2 : default:;
20515 : }
20516 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20517 : {
20518 1 : if (integer_zerop (_p2))
20519 : {
20520 1 : {
20521 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20522 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20523 1 : if (res) return res;
20524 : }
20525 : }
20526 : }
20527 : }
20528 : break;
20529 2 : case CFN_BUILT_IN_BSWAP64:
20530 2 : if (call_expr_nargs (_p1) == 1)
20531 : {
20532 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20533 2 : switch (TREE_CODE (_q50))
20534 : {
20535 1 : CASE_CONVERT:
20536 1 : {
20537 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20538 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20539 : {
20540 1 : if (integer_zerop (_p2))
20541 : {
20542 1 : {
20543 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20544 1 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20545 1 : if (res) return res;
20546 : }
20547 : }
20548 : }
20549 : break;
20550 : }
20551 1 : default:;
20552 : }
20553 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20554 : {
20555 0 : if (integer_zerop (_p2))
20556 : {
20557 0 : {
20558 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20559 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20560 0 : if (res) return res;
20561 : }
20562 : }
20563 : }
20564 : }
20565 : break;
20566 : default:;
20567 : }
20568 : break;
20569 1946311 : default:;
20570 : }
20571 1946311 : {
20572 1946311 : tree _p1_pops[1];
20573 1946311 : if (tree_nop_convert (_p1, _p1_pops))
20574 : {
20575 164238 : tree _q50 = _p1_pops[0];
20576 164238 : switch (TREE_CODE (_q50))
20577 : {
20578 339 : case PLUS_EXPR:
20579 339 : {
20580 339 : tree _q60 = TREE_OPERAND (_q50, 0);
20581 339 : tree _q61 = TREE_OPERAND (_q50, 1);
20582 339 : {
20583 339 : tree _q60_pops[1];
20584 339 : if (tree_nop_convert (_q60, _q60_pops))
20585 : {
20586 52 : tree _q70 = _q60_pops[0];
20587 52 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
20588 : {
20589 2 : if (integer_all_onesp (_q61))
20590 : {
20591 2 : if (integer_zerop (_p2))
20592 : {
20593 2 : {
20594 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20595 2 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures);
20596 2 : if (res) return res;
20597 : }
20598 : }
20599 : }
20600 : }
20601 : }
20602 : }
20603 337 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20604 : {
20605 14 : if (integer_all_onesp (_q61))
20606 : {
20607 0 : if (integer_zerop (_p2))
20608 : {
20609 0 : {
20610 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20611 0 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures);
20612 0 : if (res) return res;
20613 : }
20614 : }
20615 : }
20616 : }
20617 : break;
20618 : }
20619 : default:;
20620 : }
20621 : }
20622 : }
20623 : }
20624 : break;
20625 : }
20626 7 : case LTGT_EXPR:
20627 7 : {
20628 7 : tree _q20 = TREE_OPERAND (_p0, 0);
20629 7 : tree _q21 = TREE_OPERAND (_p0, 1);
20630 7 : if (zerop (_q21))
20631 : {
20632 0 : switch (TREE_CODE (_p2))
20633 : {
20634 0 : case NEGATE_EXPR:
20635 0 : {
20636 0 : tree _q60 = TREE_OPERAND (_p2, 0);
20637 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20638 : {
20639 0 : {
20640 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20641 0 : const enum tree_code cmp = LTGT_EXPR;
20642 0 : if (!HONOR_SIGNED_ZEROS (type)
20643 0 : && bitwise_equal_p (captures[0], captures[1])
20644 : )
20645 : {
20646 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1879;
20647 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1879;
20648 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1879;
20649 0 : {
20650 0 : tree _r;
20651 0 : _r = captures[1];
20652 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
20653 0 : return _r;
20654 : }
20655 0 : next_after_fail1879:;
20656 : }
20657 : }
20658 : }
20659 : break;
20660 : }
20661 0 : default:;
20662 : }
20663 0 : if (integer_zerop (_p2))
20664 : {
20665 0 : {
20666 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20667 0 : const enum tree_code cmp = LTGT_EXPR;
20668 0 : if (!HONOR_SIGNED_ZEROS (type)
20669 0 : && bitwise_equal_p (captures[0], captures[1])
20670 : )
20671 : {
20672 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1880;
20673 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1880;
20674 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1880;
20675 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1880;
20676 0 : {
20677 0 : tree _r;
20678 0 : _r = captures[1];
20679 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
20680 0 : return _r;
20681 : }
20682 0 : next_after_fail1880:;
20683 : }
20684 : }
20685 : }
20686 : }
20687 7 : switch (TREE_CODE (_q20))
20688 : {
20689 0 : case MINUS_EXPR:
20690 0 : {
20691 0 : tree _q30 = TREE_OPERAND (_q20, 0);
20692 0 : tree _q31 = TREE_OPERAND (_q20, 1);
20693 0 : if (zerop (_q21))
20694 : {
20695 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20696 : {
20697 0 : switch (TREE_CODE (_p2))
20698 : {
20699 0 : case MINUS_EXPR:
20700 0 : {
20701 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20702 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20703 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20704 : {
20705 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20706 : {
20707 0 : {
20708 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20709 0 : const enum tree_code cmp = LTGT_EXPR;
20710 0 : if (!HONOR_SIGNED_ZEROS (type)
20711 : )
20712 : {
20713 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1881;
20714 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1881;
20715 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1881;
20716 0 : {
20717 0 : tree _r;
20718 0 : _r = captures[0];
20719 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20720 0 : return _r;
20721 : }
20722 0 : next_after_fail1881:;
20723 : }
20724 : }
20725 : }
20726 : }
20727 : break;
20728 : }
20729 : default:;
20730 : }
20731 : }
20732 : }
20733 0 : if (integer_zerop (_q21))
20734 : {
20735 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20736 : {
20737 0 : if (integer_zerop (_p2))
20738 : {
20739 0 : {
20740 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20741 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, LTGT_EXPR);
20742 0 : if (res) return res;
20743 : }
20744 : }
20745 : }
20746 : }
20747 : break;
20748 : }
20749 : default:;
20750 : }
20751 : break;
20752 : }
20753 553419 : case GE_EXPR:
20754 553419 : {
20755 553419 : tree _q20 = TREE_OPERAND (_p0, 0);
20756 553419 : tree _q21 = TREE_OPERAND (_p0, 1);
20757 553419 : switch (TREE_CODE (_q20))
20758 : {
20759 61704 : CASE_CONVERT:
20760 61704 : {
20761 61704 : tree _q30 = TREE_OPERAND (_q20, 0);
20762 61704 : if (zerop (_q21))
20763 : {
20764 30706 : switch (TREE_CODE (_p2))
20765 : {
20766 13 : case NEGATE_EXPR:
20767 13 : {
20768 13 : tree _q70 = TREE_OPERAND (_p2, 0);
20769 13 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20770 : {
20771 13 : {
20772 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20773 13 : const enum tree_code cmp = GE_EXPR;
20774 13 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20775 13 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20776 0 : && element_precision (captures[1])
20777 0 : <= element_precision (captures[0])
20778 0 : && bitwise_equal_p (captures[1], captures[2])
20779 13 : && (!VECTOR_TYPE_P (type)
20780 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20781 : )
20782 : {
20783 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20784 : )
20785 : {
20786 0 : {
20787 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20788 0 : if (types_match (captures[0], stype)
20789 : )
20790 : {
20791 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1882;
20792 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1882;
20793 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1882;
20794 0 : {
20795 0 : tree res_op0;
20796 0 : res_op0 = captures[0];
20797 0 : tree _r;
20798 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
20800 0 : return _r;
20801 : }
20802 13 : next_after_fail1882:;
20803 : }
20804 : else
20805 : {
20806 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1883;
20807 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1883;
20808 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1883;
20809 0 : {
20810 0 : tree res_op0;
20811 0 : {
20812 0 : tree _o1[1], _r1;
20813 0 : _o1[0] = captures[2];
20814 0 : if (TREE_TYPE (_o1[0]) != stype)
20815 : {
20816 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20817 : }
20818 : else
20819 : _r1 = _o1[0];
20820 0 : res_op0 = _r1;
20821 : }
20822 0 : tree _r;
20823 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20824 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
20825 0 : return _r;
20826 : }
20827 13 : next_after_fail1883:;
20828 : }
20829 : }
20830 : }
20831 : else
20832 : {
20833 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1884;
20834 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1884;
20835 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1884;
20836 0 : {
20837 0 : tree res_op0;
20838 0 : res_op0 = captures[2];
20839 0 : tree _r;
20840 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20841 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
20842 0 : return _r;
20843 : }
20844 13 : next_after_fail1884:;
20845 : }
20846 : }
20847 : }
20848 : }
20849 : break;
20850 : }
20851 : default:;
20852 : }
20853 : }
20854 : break;
20855 : }
20856 553419 : default:;
20857 : }
20858 553419 : if (zerop (_q21))
20859 : {
20860 151836 : switch (TREE_CODE (_p2))
20861 : {
20862 32323 : case NEGATE_EXPR:
20863 32323 : {
20864 32323 : tree _q60 = TREE_OPERAND (_p2, 0);
20865 32323 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20866 : {
20867 32317 : {
20868 32317 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20869 32317 : const enum tree_code cmp = GE_EXPR;
20870 32317 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20871 32309 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20872 64618 : && element_precision (captures[1])
20873 32309 : <= element_precision (captures[0])
20874 32309 : && bitwise_equal_p (captures[1], captures[2])
20875 64528 : && (!VECTOR_TYPE_P (type)
20876 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20877 : )
20878 : {
20879 32211 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20880 : )
20881 : {
20882 46 : {
20883 46 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20884 46 : if (types_match (captures[0], stype)
20885 : )
20886 : {
20887 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1885;
20888 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1885;
20889 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1885;
20890 13 : {
20891 13 : tree res_op0;
20892 13 : res_op0 = captures[0];
20893 13 : tree _r;
20894 13 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20895 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
20896 13 : return _r;
20897 : }
20898 106 : next_after_fail1885:;
20899 : }
20900 : else
20901 : {
20902 33 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1886;
20903 33 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1886;
20904 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1886;
20905 33 : {
20906 33 : tree res_op0;
20907 33 : {
20908 33 : tree _o1[1], _r1;
20909 33 : _o1[0] = captures[2];
20910 33 : if (TREE_TYPE (_o1[0]) != stype)
20911 : {
20912 33 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20913 : }
20914 : else
20915 : _r1 = _o1[0];
20916 33 : res_op0 = _r1;
20917 : }
20918 33 : tree _r;
20919 33 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20920 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
20921 33 : return _r;
20922 : }
20923 106 : next_after_fail1886:;
20924 : }
20925 : }
20926 : }
20927 : else
20928 : {
20929 32165 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1887;
20930 32165 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1887;
20931 32165 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1887;
20932 32165 : {
20933 32165 : tree res_op0;
20934 32165 : res_op0 = captures[2];
20935 32165 : tree _r;
20936 32165 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20937 32165 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
20938 32165 : return _r;
20939 : }
20940 106 : next_after_fail1887:;
20941 : }
20942 : }
20943 : }
20944 : }
20945 : break;
20946 : }
20947 : default:;
20948 : }
20949 : }
20950 521208 : switch (TREE_CODE (_q20))
20951 : {
20952 31947 : case MINUS_EXPR:
20953 31947 : {
20954 31947 : tree _q30 = TREE_OPERAND (_q20, 0);
20955 31947 : tree _q31 = TREE_OPERAND (_q20, 1);
20956 31947 : if (zerop (_q21))
20957 : {
20958 31159 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20959 : {
20960 1 : switch (TREE_CODE (_p2))
20961 : {
20962 1 : case MINUS_EXPR:
20963 1 : {
20964 1 : tree _q80 = TREE_OPERAND (_p2, 0);
20965 1 : tree _q81 = TREE_OPERAND (_p2, 1);
20966 1 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20967 : {
20968 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20969 : {
20970 1 : {
20971 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20972 1 : const enum tree_code cmp = GE_EXPR;
20973 1 : if (!HONOR_SIGNED_ZEROS (type)
20974 1 : && !TYPE_UNSIGNED (type)
20975 2 : && (!VECTOR_TYPE_P (type)
20976 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20977 : )
20978 : {
20979 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1888;
20980 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1888;
20981 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1888;
20982 1 : {
20983 1 : tree res_op0;
20984 1 : res_op0 = captures[0];
20985 1 : tree _r;
20986 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20987 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
20988 1 : return _r;
20989 : }
20990 0 : next_after_fail1888:;
20991 : }
20992 : }
20993 : }
20994 : }
20995 : break;
20996 : }
20997 : default:;
20998 : }
20999 : }
21000 : }
21001 : break;
21002 : }
21003 521207 : default:;
21004 : }
21005 521207 : if (integer_zerop (_q21))
21006 : {
21007 119073 : switch (TREE_CODE (_p1))
21008 : {
21009 65 : case BIT_NOT_EXPR:
21010 65 : {
21011 65 : tree _q50 = TREE_OPERAND (_p1, 0);
21012 65 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
21013 : {
21014 9 : {
21015 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
21016 9 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
21017 9 : if (res) return res;
21018 : }
21019 : }
21020 : break;
21021 : }
21022 119064 : default:;
21023 : }
21024 119064 : switch (TREE_CODE (_p2))
21025 : {
21026 34 : case BIT_NOT_EXPR:
21027 34 : {
21028 34 : tree _q60 = TREE_OPERAND (_p2, 0);
21029 34 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21030 : {
21031 9 : {
21032 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21033 9 : tree res = generic_simplify_377 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
21034 9 : if (res) return res;
21035 : }
21036 : }
21037 : break;
21038 : }
21039 : default:;
21040 : }
21041 : }
21042 : break;
21043 : }
21044 919989 : case GT_EXPR:
21045 919989 : {
21046 919989 : tree _q20 = TREE_OPERAND (_p0, 0);
21047 919989 : tree _q21 = TREE_OPERAND (_p0, 1);
21048 919989 : switch (TREE_CODE (_q20))
21049 : {
21050 89571 : CASE_CONVERT:
21051 89571 : {
21052 89571 : tree _q30 = TREE_OPERAND (_q20, 0);
21053 89571 : if (zerop (_q21))
21054 : {
21055 1484 : switch (TREE_CODE (_p2))
21056 : {
21057 4 : case NEGATE_EXPR:
21058 4 : {
21059 4 : tree _q70 = TREE_OPERAND (_p2, 0);
21060 4 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21061 : {
21062 0 : {
21063 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21064 0 : const enum tree_code cmp = GT_EXPR;
21065 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21066 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21067 0 : && element_precision (captures[1])
21068 0 : <= element_precision (captures[0])
21069 0 : && bitwise_equal_p (captures[1], captures[2])
21070 0 : && (!VECTOR_TYPE_P (type)
21071 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21072 : )
21073 : {
21074 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21075 : )
21076 : {
21077 0 : {
21078 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21079 0 : if (types_match (captures[0], stype)
21080 : )
21081 : {
21082 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1889;
21083 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1889;
21084 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1889;
21085 0 : {
21086 0 : tree res_op0;
21087 0 : res_op0 = captures[0];
21088 0 : tree _r;
21089 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21090 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
21091 0 : return _r;
21092 : }
21093 0 : next_after_fail1889:;
21094 : }
21095 : else
21096 : {
21097 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1890;
21098 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1890;
21099 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1890;
21100 0 : {
21101 0 : tree res_op0;
21102 0 : {
21103 0 : tree _o1[1], _r1;
21104 0 : _o1[0] = captures[2];
21105 0 : if (TREE_TYPE (_o1[0]) != stype)
21106 : {
21107 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
21108 : }
21109 : else
21110 : _r1 = _o1[0];
21111 0 : res_op0 = _r1;
21112 : }
21113 0 : tree _r;
21114 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21115 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21116 0 : return _r;
21117 : }
21118 0 : next_after_fail1890:;
21119 : }
21120 : }
21121 : }
21122 : else
21123 : {
21124 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1891;
21125 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1891;
21126 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1891;
21127 0 : {
21128 0 : tree res_op0;
21129 0 : res_op0 = captures[2];
21130 0 : tree _r;
21131 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21132 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21133 0 : return _r;
21134 : }
21135 0 : next_after_fail1891:;
21136 : }
21137 : }
21138 : }
21139 : }
21140 : break;
21141 : }
21142 : default:;
21143 : }
21144 : }
21145 : break;
21146 : }
21147 919989 : default:;
21148 : }
21149 919989 : if (zerop (_q21))
21150 : {
21151 204657 : switch (TREE_CODE (_p2))
21152 : {
21153 295 : case NEGATE_EXPR:
21154 295 : {
21155 295 : tree _q60 = TREE_OPERAND (_p2, 0);
21156 295 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21157 : {
21158 147 : {
21159 147 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21160 147 : const enum tree_code cmp = GT_EXPR;
21161 147 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21162 115 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21163 230 : && element_precision (captures[1])
21164 115 : <= element_precision (captures[0])
21165 115 : && bitwise_equal_p (captures[1], captures[2])
21166 257 : && (!VECTOR_TYPE_P (type)
21167 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21168 : )
21169 : {
21170 110 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21171 : )
21172 : {
21173 0 : {
21174 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21175 0 : if (types_match (captures[0], stype)
21176 : )
21177 : {
21178 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1892;
21179 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1892;
21180 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1892;
21181 0 : {
21182 0 : tree res_op0;
21183 0 : res_op0 = captures[0];
21184 0 : tree _r;
21185 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21186 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
21187 0 : return _r;
21188 : }
21189 37 : next_after_fail1892:;
21190 : }
21191 : else
21192 : {
21193 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1893;
21194 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1893;
21195 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1893;
21196 0 : {
21197 0 : tree res_op0;
21198 0 : {
21199 0 : tree _o1[1], _r1;
21200 0 : _o1[0] = captures[2];
21201 0 : if (TREE_TYPE (_o1[0]) != stype)
21202 : {
21203 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
21204 : }
21205 : else
21206 : _r1 = _o1[0];
21207 0 : res_op0 = _r1;
21208 : }
21209 0 : tree _r;
21210 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21211 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
21212 0 : return _r;
21213 : }
21214 37 : next_after_fail1893:;
21215 : }
21216 : }
21217 : }
21218 : else
21219 : {
21220 110 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1894;
21221 110 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1894;
21222 110 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1894;
21223 110 : {
21224 110 : tree res_op0;
21225 110 : res_op0 = captures[2];
21226 110 : tree _r;
21227 110 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21228 110 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
21229 110 : return _r;
21230 : }
21231 37 : next_after_fail1894:;
21232 : }
21233 : }
21234 : }
21235 : }
21236 : break;
21237 : }
21238 : default:;
21239 : }
21240 : }
21241 919879 : switch (TREE_CODE (_q20))
21242 : {
21243 1068 : case MINUS_EXPR:
21244 1068 : {
21245 1068 : tree _q30 = TREE_OPERAND (_q20, 0);
21246 1068 : tree _q31 = TREE_OPERAND (_q20, 1);
21247 1068 : if (zerop (_q21))
21248 : {
21249 160 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21250 : {
21251 15 : switch (TREE_CODE (_p2))
21252 : {
21253 9 : case MINUS_EXPR:
21254 9 : {
21255 9 : tree _q80 = TREE_OPERAND (_p2, 0);
21256 9 : tree _q81 = TREE_OPERAND (_p2, 1);
21257 9 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21258 : {
21259 9 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21260 : {
21261 9 : {
21262 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21263 9 : const enum tree_code cmp = GT_EXPR;
21264 9 : if (!HONOR_SIGNED_ZEROS (type)
21265 9 : && !TYPE_UNSIGNED (type)
21266 18 : && (!VECTOR_TYPE_P (type)
21267 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21268 : )
21269 : {
21270 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1895;
21271 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1895;
21272 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1895;
21273 9 : {
21274 9 : tree res_op0;
21275 9 : res_op0 = captures[0];
21276 9 : tree _r;
21277 9 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21278 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
21279 9 : return _r;
21280 : }
21281 0 : next_after_fail1895:;
21282 : }
21283 : }
21284 : }
21285 : }
21286 : break;
21287 : }
21288 : default:;
21289 : }
21290 : }
21291 : }
21292 : break;
21293 : }
21294 : default:;
21295 : }
21296 : break;
21297 : }
21298 1405993 : case LE_EXPR:
21299 1405993 : {
21300 1405993 : tree _q20 = TREE_OPERAND (_p0, 0);
21301 1405993 : tree _q21 = TREE_OPERAND (_p0, 1);
21302 1405993 : switch (TREE_CODE (_q20))
21303 : {
21304 141827 : CASE_CONVERT:
21305 141827 : {
21306 141827 : tree _q30 = TREE_OPERAND (_q20, 0);
21307 141827 : if (zerop (_q21))
21308 : {
21309 1240 : switch (TREE_CODE (_p2))
21310 : {
21311 0 : case NEGATE_EXPR:
21312 0 : {
21313 0 : tree _q70 = TREE_OPERAND (_p2, 0);
21314 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21315 : {
21316 0 : {
21317 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21318 0 : const enum tree_code cmp = LE_EXPR;
21319 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21320 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21321 0 : && element_precision (captures[1])
21322 0 : <= element_precision (captures[0])
21323 0 : && bitwise_equal_p (captures[1], captures[2])
21324 0 : && (!VECTOR_TYPE_P (type)
21325 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21326 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21327 : )
21328 : {
21329 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21330 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21331 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21332 : )
21333 : {
21334 0 : {
21335 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21336 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21337 0 : if (types_match (captures[0], stype)
21338 : )
21339 : {
21340 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1896;
21341 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1896;
21342 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1896;
21343 0 : {
21344 0 : tree res_op0;
21345 0 : {
21346 0 : tree _o1[1], _r1;
21347 0 : {
21348 0 : tree _o2[1], _r2;
21349 0 : _o2[0] = captures[0];
21350 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21351 0 : _o1[0] = _r2;
21352 : }
21353 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21354 0 : res_op0 = _r1;
21355 : }
21356 0 : tree _r;
21357 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21358 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21359 0 : return _r;
21360 : }
21361 0 : next_after_fail1896:;
21362 : }
21363 : else
21364 : {
21365 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1897;
21366 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1897;
21367 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1897;
21368 0 : {
21369 0 : tree res_op0;
21370 0 : {
21371 0 : tree _o1[1], _r1;
21372 0 : {
21373 0 : tree _o2[1], _r2;
21374 0 : {
21375 0 : tree _o3[1], _r3;
21376 0 : _o3[0] = captures[2];
21377 0 : if (TREE_TYPE (_o3[0]) != stype)
21378 : {
21379 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21380 : }
21381 : else
21382 : _r3 = _o3[0];
21383 0 : _o2[0] = _r3;
21384 : }
21385 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21386 0 : _o1[0] = _r2;
21387 : }
21388 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21389 0 : res_op0 = _r1;
21390 : }
21391 0 : tree _r;
21392 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21393 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21394 0 : return _r;
21395 : }
21396 0 : next_after_fail1897:;
21397 : }
21398 : }
21399 : }
21400 : else
21401 : {
21402 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1898;
21403 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1898;
21404 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1898;
21405 0 : {
21406 0 : tree res_op0;
21407 0 : {
21408 0 : tree _o1[1], _r1;
21409 0 : {
21410 0 : tree _o2[1], _r2;
21411 0 : _o2[0] = captures[2];
21412 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21413 0 : _o1[0] = _r2;
21414 : }
21415 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21416 0 : res_op0 = _r1;
21417 : }
21418 0 : tree _r;
21419 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21420 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21421 0 : return _r;
21422 : }
21423 0 : next_after_fail1898:;
21424 : }
21425 : }
21426 : }
21427 : }
21428 : break;
21429 : }
21430 : default:;
21431 : }
21432 : }
21433 : break;
21434 : }
21435 1405993 : default:;
21436 : }
21437 1405993 : if (zerop (_q21))
21438 : {
21439 126230 : switch (TREE_CODE (_p2))
21440 : {
21441 7 : case NEGATE_EXPR:
21442 7 : {
21443 7 : tree _q60 = TREE_OPERAND (_p2, 0);
21444 7 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21445 : {
21446 7 : {
21447 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21448 7 : const enum tree_code cmp = LE_EXPR;
21449 7 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21450 7 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21451 14 : && element_precision (captures[1])
21452 7 : <= element_precision (captures[0])
21453 7 : && bitwise_equal_p (captures[1], captures[2])
21454 14 : && (!VECTOR_TYPE_P (type)
21455 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21456 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21457 : )
21458 : {
21459 14 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21460 7 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21461 7 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21462 : )
21463 : {
21464 7 : {
21465 7 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21466 7 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21467 7 : if (types_match (captures[0], stype)
21468 : )
21469 : {
21470 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1899;
21471 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1899;
21472 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1899;
21473 7 : {
21474 7 : tree res_op0;
21475 7 : {
21476 7 : tree _o1[1], _r1;
21477 7 : {
21478 7 : tree _o2[1], _r2;
21479 7 : _o2[0] = captures[0];
21480 7 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21481 7 : _o1[0] = _r2;
21482 : }
21483 7 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21484 7 : res_op0 = _r1;
21485 : }
21486 7 : tree _r;
21487 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21488 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21489 7 : return _r;
21490 : }
21491 0 : next_after_fail1899:;
21492 : }
21493 : else
21494 : {
21495 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1900;
21496 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1900;
21497 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1900;
21498 0 : {
21499 0 : tree res_op0;
21500 0 : {
21501 0 : tree _o1[1], _r1;
21502 0 : {
21503 0 : tree _o2[1], _r2;
21504 0 : {
21505 0 : tree _o3[1], _r3;
21506 0 : _o3[0] = captures[2];
21507 0 : if (TREE_TYPE (_o3[0]) != stype)
21508 : {
21509 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21510 : }
21511 : else
21512 : _r3 = _o3[0];
21513 0 : _o2[0] = _r3;
21514 : }
21515 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21516 0 : _o1[0] = _r2;
21517 : }
21518 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21519 0 : res_op0 = _r1;
21520 : }
21521 0 : tree _r;
21522 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21523 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21524 0 : return _r;
21525 : }
21526 0 : next_after_fail1900:;
21527 : }
21528 : }
21529 : }
21530 : else
21531 : {
21532 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1901;
21533 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1901;
21534 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1901;
21535 0 : {
21536 0 : tree res_op0;
21537 0 : {
21538 0 : tree _o1[1], _r1;
21539 0 : {
21540 0 : tree _o2[1], _r2;
21541 0 : _o2[0] = captures[2];
21542 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21543 0 : _o1[0] = _r2;
21544 : }
21545 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21546 0 : res_op0 = _r1;
21547 : }
21548 0 : tree _r;
21549 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21550 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21551 0 : return _r;
21552 : }
21553 0 : next_after_fail1901:;
21554 : }
21555 : }
21556 : }
21557 : }
21558 : break;
21559 : }
21560 : default:;
21561 : }
21562 : }
21563 1405986 : switch (TREE_CODE (_q20))
21564 : {
21565 190 : case MINUS_EXPR:
21566 190 : {
21567 190 : tree _q30 = TREE_OPERAND (_q20, 0);
21568 190 : tree _q31 = TREE_OPERAND (_q20, 1);
21569 190 : if (zerop (_q21))
21570 : {
21571 148 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21572 : {
21573 0 : switch (TREE_CODE (_p2))
21574 : {
21575 0 : case MINUS_EXPR:
21576 0 : {
21577 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21578 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21579 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21580 : {
21581 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21582 : {
21583 0 : {
21584 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21585 0 : const enum tree_code cmp = LE_EXPR;
21586 0 : if (!HONOR_SIGNED_ZEROS (type)
21587 0 : && !TYPE_UNSIGNED (type)
21588 : )
21589 : {
21590 0 : if (ANY_INTEGRAL_TYPE_P (type)
21591 0 : && !TYPE_OVERFLOW_WRAPS (type)
21592 0 : && (!VECTOR_TYPE_P (type)
21593 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21594 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21595 : )
21596 : {
21597 0 : {
21598 0 : tree utype = unsigned_type_for (type);
21599 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1902;
21600 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1902;
21601 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1902;
21602 0 : {
21603 0 : tree res_op0;
21604 0 : {
21605 0 : tree _o1[1], _r1;
21606 0 : {
21607 0 : tree _o2[1], _r2;
21608 0 : _o2[0] = captures[0];
21609 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21610 0 : _o1[0] = _r2;
21611 : }
21612 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21613 0 : res_op0 = _r1;
21614 : }
21615 0 : tree _r;
21616 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21617 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
21618 0 : return _r;
21619 : }
21620 0 : next_after_fail1902:;
21621 : }
21622 : }
21623 : else
21624 : {
21625 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1903;
21626 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1903;
21627 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1903;
21628 0 : {
21629 0 : tree res_op0;
21630 0 : {
21631 0 : tree _o1[1], _r1;
21632 0 : _o1[0] = captures[0];
21633 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21634 0 : res_op0 = _r1;
21635 : }
21636 0 : tree _r;
21637 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21638 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
21639 0 : return _r;
21640 : }
21641 0 : next_after_fail1903:;
21642 : }
21643 : }
21644 : }
21645 : }
21646 : }
21647 : break;
21648 : }
21649 : default:;
21650 : }
21651 : }
21652 : }
21653 : break;
21654 : }
21655 : default:;
21656 : }
21657 : break;
21658 : }
21659 1821322 : case LT_EXPR:
21660 1821322 : {
21661 1821322 : tree _q20 = TREE_OPERAND (_p0, 0);
21662 1821322 : tree _q21 = TREE_OPERAND (_p0, 1);
21663 1821322 : switch (TREE_CODE (_q20))
21664 : {
21665 101304 : CASE_CONVERT:
21666 101304 : {
21667 101304 : tree _q30 = TREE_OPERAND (_q20, 0);
21668 101304 : if (zerop (_q21))
21669 : {
21670 19256 : switch (TREE_CODE (_p2))
21671 : {
21672 8 : case NEGATE_EXPR:
21673 8 : {
21674 8 : tree _q70 = TREE_OPERAND (_p2, 0);
21675 8 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21676 : {
21677 0 : {
21678 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21679 0 : const enum tree_code cmp = LT_EXPR;
21680 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21681 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21682 0 : && element_precision (captures[1])
21683 0 : <= element_precision (captures[0])
21684 0 : && bitwise_equal_p (captures[1], captures[2])
21685 0 : && (!VECTOR_TYPE_P (type)
21686 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21687 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21688 : )
21689 : {
21690 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21691 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21692 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21693 : )
21694 : {
21695 0 : {
21696 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21697 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21698 0 : if (types_match (captures[0], stype)
21699 : )
21700 : {
21701 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1904;
21702 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1904;
21703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1904;
21704 0 : {
21705 0 : tree res_op0;
21706 0 : {
21707 0 : tree _o1[1], _r1;
21708 0 : {
21709 0 : tree _o2[1], _r2;
21710 0 : _o2[0] = captures[0];
21711 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21712 0 : _o1[0] = _r2;
21713 : }
21714 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21715 0 : res_op0 = _r1;
21716 : }
21717 0 : tree _r;
21718 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21719 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21720 0 : return _r;
21721 : }
21722 0 : next_after_fail1904:;
21723 : }
21724 : else
21725 : {
21726 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1905;
21727 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1905;
21728 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1905;
21729 0 : {
21730 0 : tree res_op0;
21731 0 : {
21732 0 : tree _o1[1], _r1;
21733 0 : {
21734 0 : tree _o2[1], _r2;
21735 0 : {
21736 0 : tree _o3[1], _r3;
21737 0 : _o3[0] = captures[2];
21738 0 : if (TREE_TYPE (_o3[0]) != stype)
21739 : {
21740 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21741 : }
21742 : else
21743 : _r3 = _o3[0];
21744 0 : _o2[0] = _r3;
21745 : }
21746 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21747 0 : _o1[0] = _r2;
21748 : }
21749 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21750 0 : res_op0 = _r1;
21751 : }
21752 0 : tree _r;
21753 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21754 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21755 0 : return _r;
21756 : }
21757 0 : next_after_fail1905:;
21758 : }
21759 : }
21760 : }
21761 : else
21762 : {
21763 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1906;
21764 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1906;
21765 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1906;
21766 0 : {
21767 0 : tree res_op0;
21768 0 : {
21769 0 : tree _o1[1], _r1;
21770 0 : {
21771 0 : tree _o2[1], _r2;
21772 0 : _o2[0] = captures[2];
21773 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21774 0 : _o1[0] = _r2;
21775 : }
21776 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21777 0 : res_op0 = _r1;
21778 : }
21779 0 : tree _r;
21780 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21781 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21782 0 : return _r;
21783 : }
21784 0 : next_after_fail1906:;
21785 : }
21786 : }
21787 : }
21788 : }
21789 : break;
21790 : }
21791 : default:;
21792 : }
21793 : }
21794 : break;
21795 : }
21796 1821322 : default:;
21797 : }
21798 1821322 : if (zerop (_q21))
21799 : {
21800 384760 : switch (TREE_CODE (_p2))
21801 : {
21802 33 : case NEGATE_EXPR:
21803 33 : {
21804 33 : tree _q60 = TREE_OPERAND (_p2, 0);
21805 33 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21806 : {
21807 25 : {
21808 25 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21809 25 : const enum tree_code cmp = LT_EXPR;
21810 25 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21811 25 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21812 50 : && element_precision (captures[1])
21813 25 : <= element_precision (captures[0])
21814 25 : && bitwise_equal_p (captures[1], captures[2])
21815 50 : && (!VECTOR_TYPE_P (type)
21816 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21817 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21818 : )
21819 : {
21820 50 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21821 25 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21822 26 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21823 : )
21824 : {
21825 24 : {
21826 24 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21827 24 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21828 24 : if (types_match (captures[0], stype)
21829 : )
21830 : {
21831 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1907;
21832 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1907;
21833 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1907;
21834 24 : {
21835 24 : tree res_op0;
21836 24 : {
21837 24 : tree _o1[1], _r1;
21838 24 : {
21839 24 : tree _o2[1], _r2;
21840 24 : _o2[0] = captures[0];
21841 24 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21842 24 : _o1[0] = _r2;
21843 : }
21844 24 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21845 24 : res_op0 = _r1;
21846 : }
21847 24 : tree _r;
21848 24 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21849 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
21850 24 : return _r;
21851 : }
21852 0 : next_after_fail1907:;
21853 : }
21854 : else
21855 : {
21856 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1908;
21857 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1908;
21858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1908;
21859 0 : {
21860 0 : tree res_op0;
21861 0 : {
21862 0 : tree _o1[1], _r1;
21863 0 : {
21864 0 : tree _o2[1], _r2;
21865 0 : {
21866 0 : tree _o3[1], _r3;
21867 0 : _o3[0] = captures[2];
21868 0 : if (TREE_TYPE (_o3[0]) != stype)
21869 : {
21870 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21871 : }
21872 : else
21873 : _r3 = _o3[0];
21874 0 : _o2[0] = _r3;
21875 : }
21876 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21877 0 : _o1[0] = _r2;
21878 : }
21879 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21880 0 : res_op0 = _r1;
21881 : }
21882 0 : tree _r;
21883 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21884 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
21885 0 : return _r;
21886 : }
21887 0 : next_after_fail1908:;
21888 : }
21889 : }
21890 : }
21891 : else
21892 : {
21893 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1909;
21894 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1909;
21895 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1909;
21896 1 : {
21897 1 : tree res_op0;
21898 1 : {
21899 1 : tree _o1[1], _r1;
21900 1 : {
21901 1 : tree _o2[1], _r2;
21902 1 : _o2[0] = captures[2];
21903 1 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21904 1 : _o1[0] = _r2;
21905 : }
21906 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21907 1 : res_op0 = _r1;
21908 : }
21909 1 : tree _r;
21910 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21911 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21912 1 : return _r;
21913 : }
21914 0 : next_after_fail1909:;
21915 : }
21916 : }
21917 : }
21918 : }
21919 : break;
21920 : }
21921 : default:;
21922 : }
21923 : }
21924 1821297 : switch (TREE_CODE (_q20))
21925 : {
21926 11321 : case MINUS_EXPR:
21927 11321 : {
21928 11321 : tree _q30 = TREE_OPERAND (_q20, 0);
21929 11321 : tree _q31 = TREE_OPERAND (_q20, 1);
21930 11321 : if (zerop (_q21))
21931 : {
21932 7395 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21933 : {
21934 0 : switch (TREE_CODE (_p2))
21935 : {
21936 0 : case MINUS_EXPR:
21937 0 : {
21938 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21939 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21940 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21941 : {
21942 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21943 : {
21944 0 : {
21945 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21946 0 : const enum tree_code cmp = LT_EXPR;
21947 0 : if (!HONOR_SIGNED_ZEROS (type)
21948 0 : && !TYPE_UNSIGNED (type)
21949 : )
21950 : {
21951 0 : if (ANY_INTEGRAL_TYPE_P (type)
21952 0 : && !TYPE_OVERFLOW_WRAPS (type)
21953 0 : && (!VECTOR_TYPE_P (type)
21954 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21955 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21956 : )
21957 : {
21958 0 : {
21959 0 : tree utype = unsigned_type_for (type);
21960 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1910;
21961 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1910;
21962 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1910;
21963 0 : {
21964 0 : tree res_op0;
21965 0 : {
21966 0 : tree _o1[1], _r1;
21967 0 : {
21968 0 : tree _o2[1], _r2;
21969 0 : _o2[0] = captures[0];
21970 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21971 0 : _o1[0] = _r2;
21972 : }
21973 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21974 0 : res_op0 = _r1;
21975 : }
21976 0 : tree _r;
21977 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21978 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
21979 0 : return _r;
21980 : }
21981 0 : next_after_fail1910:;
21982 : }
21983 : }
21984 : else
21985 : {
21986 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1911;
21987 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1911;
21988 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1911;
21989 0 : {
21990 0 : tree res_op0;
21991 0 : {
21992 0 : tree _o1[1], _r1;
21993 0 : _o1[0] = captures[0];
21994 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21995 0 : res_op0 = _r1;
21996 : }
21997 0 : tree _r;
21998 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21999 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
22000 0 : return _r;
22001 : }
22002 0 : next_after_fail1911:;
22003 : }
22004 : }
22005 : }
22006 : }
22007 : }
22008 : break;
22009 : }
22010 : default:;
22011 : }
22012 : }
22013 : }
22014 : break;
22015 : }
22016 1821297 : default:;
22017 : }
22018 1821297 : if (integer_zerop (_q21))
22019 : {
22020 327385 : switch (TREE_CODE (_p1))
22021 : {
22022 25 : case BIT_NOT_EXPR:
22023 25 : {
22024 25 : tree _q50 = TREE_OPERAND (_p1, 0);
22025 25 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
22026 : {
22027 13 : {
22028 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
22029 13 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
22030 13 : if (res) return res;
22031 : }
22032 : }
22033 : break;
22034 : }
22035 327372 : default:;
22036 : }
22037 327372 : switch (TREE_CODE (_p2))
22038 : {
22039 8 : case BIT_NOT_EXPR:
22040 8 : {
22041 8 : tree _q60 = TREE_OPERAND (_p2, 0);
22042 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
22043 : {
22044 8 : {
22045 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22046 8 : tree res = generic_simplify_377 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
22047 8 : if (res) return res;
22048 : }
22049 : }
22050 : break;
22051 : }
22052 327364 : default:;
22053 : }
22054 327364 : switch (TREE_CODE (_p1))
22055 : {
22056 290172 : case INTEGER_CST:
22057 290172 : {
22058 290172 : if (integer_zerop (_p2))
22059 : {
22060 8888 : {
22061 8888 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22062 8888 : if (integer_pow2p (captures[1])
22063 8888 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
22064 : )
22065 : {
22066 8623 : {
22067 8623 : int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1;
22068 8623 : if (shift >= 0
22069 : )
22070 : {
22071 8608 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1912;
22072 8608 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1912;
22073 8608 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1912;
22074 8608 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1912;
22075 8608 : {
22076 8608 : tree res_op0;
22077 8608 : {
22078 8608 : tree _o1[1], _r1;
22079 8608 : {
22080 8608 : tree _o2[2], _r2;
22081 8608 : _o2[0] = captures[0];
22082 8608 : _o2[1] = build_int_cst (integer_type_node, shift);
22083 8608 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
22084 8608 : _o1[0] = _r2;
22085 : }
22086 8608 : if (TREE_TYPE (_o1[0]) != type)
22087 : {
22088 8583 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
22089 : }
22090 : else
22091 : _r1 = _o1[0];
22092 8608 : res_op0 = _r1;
22093 : }
22094 8608 : tree res_op1;
22095 8608 : res_op1 = captures[1];
22096 8608 : tree _r;
22097 8608 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
22098 8608 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1081, __FILE__, __LINE__, true);
22099 8623 : return _r;
22100 : }
22101 : next_after_fail1912:;
22102 : }
22103 : else
22104 : {
22105 15 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1913;
22106 15 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1913;
22107 15 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1913;
22108 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1913;
22109 15 : {
22110 15 : tree res_op0;
22111 15 : {
22112 15 : tree _o1[1], _r1;
22113 15 : _o1[0] = captures[0];
22114 15 : if (TREE_TYPE (_o1[0]) != type)
22115 : {
22116 15 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
22117 : }
22118 : else
22119 : _r1 = _o1[0];
22120 15 : res_op0 = _r1;
22121 : }
22122 15 : tree res_op1;
22123 15 : res_op1 = captures[1];
22124 15 : tree _r;
22125 15 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
22126 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
22127 15 : return _r;
22128 : }
22129 : next_after_fail1913:;
22130 : }
22131 : }
22132 : }
22133 : }
22134 : }
22135 : break;
22136 : }
22137 : default:;
22138 : }
22139 : }
22140 : break;
22141 : }
22142 12074556 : default:;
22143 : }
22144 12074556 : {
22145 12074556 : tree _p0_pops[1];
22146 12074556 : if (tree_logical_inverted_value (_p0, _p0_pops))
22147 : {
22148 494864 : tree _q20 = _p0_pops[0];
22149 494864 : if (tree_truth_valued_p (_q20))
22150 : {
22151 4464 : {
22152 4464 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
22153 8928 : if (COND_EXPR == VEC_COND_EXPR
22154 4464 : || TYPE_UNSIGNED (TREE_TYPE (captures[0]))
22155 : )
22156 : {
22157 3150 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1914;
22158 46 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1914;
22159 37 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1914;
22160 37 : {
22161 37 : tree res_op0;
22162 37 : res_op0 = captures[0];
22163 37 : tree res_op1;
22164 37 : res_op1 = captures[2];
22165 37 : tree res_op2;
22166 37 : res_op2 = captures[1];
22167 37 : tree _r;
22168 37 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
22169 37 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
22170 37 : return _r;
22171 : }
22172 4427 : next_after_fail1914:;
22173 : }
22174 : }
22175 : }
22176 : }
22177 : }
22178 12074519 : return NULL_TREE;
22179 : }
22180 : #pragma GCC diagnostic pop
|