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 113004466 : tree_maybe_cmp (tree t, tree *res_ops)
11 : {
12 113004466 : const tree type = TREE_TYPE (t);
13 113004466 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 113004466 : if (TREE_SIDE_EFFECTS (t)) return false;
15 113004466 : switch (TREE_CODE (t))
16 : {
17 451076 : case LT_EXPR:
18 451076 : case LE_EXPR:
19 451076 : case EQ_EXPR:
20 451076 : case NE_EXPR:
21 451076 : case GE_EXPR:
22 451076 : case GT_EXPR:
23 451076 : case UNORDERED_EXPR:
24 451076 : case ORDERED_EXPR:
25 451076 : case UNLT_EXPR:
26 451076 : case UNLE_EXPR:
27 451076 : case UNGT_EXPR:
28 451076 : case UNGE_EXPR:
29 451076 : case UNEQ_EXPR:
30 451076 : case LTGT_EXPR:
31 451076 : {
32 451076 : tree _p0 = TREE_OPERAND (t, 0);
33 451076 : tree _p1 = TREE_OPERAND (t, 1);
34 451076 : {
35 451076 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
36 451076 : {
37 451076 : res_ops[0] = captures[0];
38 451076 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 5, __FILE__, __LINE__, false);
39 451076 : return true;
40 : }
41 : }
42 24272754 : break;
43 : }
44 24272754 : CASE_CONVERT:
45 24272754 : {
46 24272754 : tree _p0 = TREE_OPERAND (t, 0);
47 24272754 : switch (TREE_CODE (_p0))
48 : {
49 1437 : case LT_EXPR:
50 1437 : case LE_EXPR:
51 1437 : case EQ_EXPR:
52 1437 : case NE_EXPR:
53 1437 : case GE_EXPR:
54 1437 : case GT_EXPR:
55 1437 : case UNORDERED_EXPR:
56 1437 : case ORDERED_EXPR:
57 1437 : case UNLT_EXPR:
58 1437 : case UNLE_EXPR:
59 1437 : case UNGT_EXPR:
60 1437 : case UNGE_EXPR:
61 1437 : case UNEQ_EXPR:
62 1437 : case LTGT_EXPR:
63 1437 : {
64 1437 : tree _q20 = TREE_OPERAND (_p0, 0);
65 1437 : tree _q21 = TREE_OPERAND (_p0, 1);
66 1437 : {
67 1437 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
68 1437 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
69 : )
70 : {
71 774 : {
72 774 : res_ops[0] = captures[0];
73 774 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 6, __FILE__, __LINE__, false);
74 774 : return true;
75 : }
76 : }
77 : }
78 : break;
79 : }
80 : default:;
81 : }
82 : break;
83 : }
84 181492 : case BIT_XOR_EXPR:
85 181492 : {
86 181492 : tree _p0 = TREE_OPERAND (t, 0);
87 181492 : tree _p1 = TREE_OPERAND (t, 1);
88 181492 : {
89 181492 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
90 181492 : if (INTEGRAL_TYPE_P (type)
91 181492 : && TYPE_PRECISION (type) == 1
92 : )
93 : {
94 88314 : {
95 88314 : res_ops[0] = captures[0];
96 88314 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 7, __FILE__, __LINE__, false);
97 88314 : return true;
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : bool
109 0 : tree_float_value_p (tree t)
110 : {
111 0 : const tree type = TREE_TYPE (t);
112 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
113 0 : if (TREE_SIDE_EFFECTS (t)) return false;
114 0 : {
115 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
116 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == float_type_node
117 : )
118 : {
119 0 : {
120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 45, __FILE__, __LINE__, false);
121 0 : return true;
122 : }
123 : }
124 : }
125 : return false;
126 : }
127 :
128 : tree
129 0 : generic_simplify_7 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
131 : {
132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
133 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail78;
134 0 : {
135 0 : tree res_op0;
136 0 : res_op0 = captures[1];
137 0 : tree res_op1;
138 0 : res_op1 = captures[2];
139 0 : tree _r;
140 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 55, __FILE__, __LINE__, true);
142 : return _r;
143 : }
144 0 : next_after_fail78:;
145 0 : return NULL_TREE;
146 : }
147 :
148 : tree
149 589 : generic_simplify_13 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
151 : {
152 589 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
153 589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail88;
154 589 : {
155 589 : if (! tree_invariant_p (captures[3])) goto next_after_fail88;
156 1 : tree res_op0;
157 1 : {
158 1 : tree _o1[2], _r1;
159 1 : _o1[0] = captures[2];
160 1 : _o1[1] = unshare_expr (captures[3]);
161 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
162 1 : res_op0 = _r1;
163 : }
164 1 : tree res_op1;
165 1 : {
166 1 : tree _o1[2], _r1;
167 1 : {
168 1 : tree _o2[1], _r2;
169 1 : _o2[0] = captures[4];
170 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
171 1 : if (EXPR_P (_r2))
172 0 : goto next_after_fail88;
173 1 : _o1[0] = _r2;
174 : }
175 1 : _o1[1] = captures[3];
176 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
177 1 : if (EXPR_P (_r1))
178 0 : goto next_after_fail88;
179 1 : res_op1 = _r1;
180 : }
181 1 : tree _r;
182 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
183 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 61, __FILE__, __LINE__, true);
184 : return _r;
185 : }
186 : next_after_fail88:;
187 : return NULL_TREE;
188 : }
189 :
190 : tree
191 10 : generic_simplify_26 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
193 : {
194 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
195 10 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
196 10 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
197 : )
198 : {
199 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail101;
200 10 : {
201 10 : tree res_op0;
202 10 : {
203 10 : tree _o1[1], _r1;
204 10 : _o1[0] = captures[0];
205 10 : if (TREE_TYPE (_o1[0]) != type)
206 : {
207 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
208 : }
209 : else
210 : _r1 = _o1[0];
211 10 : res_op0 = _r1;
212 : }
213 10 : tree res_op1;
214 10 : {
215 10 : tree _o1[1], _r1;
216 10 : _o1[0] = captures[1];
217 10 : if (TREE_TYPE (_o1[0]) != type)
218 : {
219 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
220 : }
221 : else
222 : _r1 = _o1[0];
223 10 : res_op1 = _r1;
224 : }
225 10 : tree _r;
226 10 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
227 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 74, __FILE__, __LINE__, true);
228 10 : return _r;
229 : }
230 0 : next_after_fail101:;
231 : }
232 : return NULL_TREE;
233 : }
234 :
235 : tree
236 0 : generic_simplify_37 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
238 : const enum tree_code ARG_UNUSED (op),
239 : const enum tree_code ARG_UNUSED (cmp),
240 : const enum tree_code ARG_UNUSED (icmp))
241 : {
242 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
243 0 : if (INTEGRAL_TYPE_P (type)
244 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
245 0 : && canonicalize_math_after_vectorization_p ()
246 : )
247 : {
248 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail114;
249 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail114;
250 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail114;
251 : {
252 : tree res_op0;
253 : res_op0 = captures[0];
254 : tree res_op1;
255 : res_op1 = captures[3];
256 : tree res_op2;
257 : res_op2 = captures[5];
258 : tree _r;
259 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
260 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 86, __FILE__, __LINE__, true);
261 : return _r;
262 : }
263 0 : next_after_fail114:;
264 : }
265 0 : return NULL_TREE;
266 : }
267 :
268 : tree
269 19 : generic_simplify_44 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
270 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
271 : const enum tree_code ARG_UNUSED (op))
272 : {
273 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
274 38 : if (INTEGRAL_TYPE_P (type)
275 19 : && operand_equal_p (captures[2], captures[6], 0)
276 38 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
277 : )
278 : {
279 0 : {
280 0 : tree t = type;
281 0 : if (!TYPE_OVERFLOW_WRAPS (t))
282 0 : t = unsigned_type_for (t);
283 0 : wide_int c = wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[7]));
284 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail122;
285 0 : if (TREE_SIDE_EFFECTS (captures[7])) goto next_after_fail122;
286 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail122;
287 0 : {
288 0 : tree res_op0;
289 0 : {
290 0 : tree _o1[2], _r1;
291 0 : {
292 0 : tree _o2[1], _r2;
293 0 : _o2[0] = captures[2];
294 0 : if (TREE_TYPE (_o2[0]) != t)
295 : {
296 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
297 : }
298 : else
299 : _r2 = _o2[0];
300 0 : _o1[0] = _r2;
301 : }
302 0 : _o1[1] = wide_int_to_tree (t, c);
303 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
304 0 : res_op0 = _r1;
305 : }
306 0 : tree _r;
307 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
308 0 : if (TREE_SIDE_EFFECTS (captures[6]))
309 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
310 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
311 0 : return _r;
312 : }
313 0 : next_after_fail122:;
314 0 : }
315 : }
316 : return NULL_TREE;
317 : }
318 :
319 : tree
320 5301 : generic_simplify_54 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
321 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
322 : {
323 5301 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
324 5301 : if (fold_real_zero_addition_p (type, captures[0], captures[1], 0)
325 : )
326 : {
327 95 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail134;
328 95 : {
329 95 : tree res_op0;
330 95 : res_op0 = captures[0];
331 95 : tree _r;
332 95 : _r = non_lvalue_loc (loc, res_op0);
333 95 : if (TREE_SIDE_EFFECTS (captures[1]))
334 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
335 95 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 102, __FILE__, __LINE__, true);
336 95 : return _r;
337 : }
338 0 : next_after_fail134:;
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 0 : generic_simplify_59 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
345 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
346 : {
347 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
348 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail140;
349 0 : {
350 0 : tree res_op0;
351 0 : res_op0 = captures[0];
352 0 : tree res_op1;
353 0 : res_op1 = captures[1];
354 0 : tree _r;
355 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
356 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, true);
357 : return _r;
358 : }
359 0 : next_after_fail140:;
360 0 : return NULL_TREE;
361 : }
362 :
363 : tree
364 10 : generic_simplify_66 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
365 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
366 : {
367 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
368 10 : if (!TYPE_SATURATING (type)
369 : )
370 : {
371 10 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
372 20 : && !FIXED_POINT_TYPE_P (type)
373 : )
374 : {
375 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail155;
376 10 : {
377 10 : tree res_op0;
378 10 : res_op0 = captures[2];
379 10 : tree res_op1;
380 10 : res_op1 = captures[1];
381 10 : tree _r;
382 10 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
383 10 : if (TREE_SIDE_EFFECTS (captures[0]))
384 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
385 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 123, __FILE__, __LINE__, true);
386 10 : return _r;
387 : }
388 0 : next_after_fail155:;
389 : }
390 : }
391 : return NULL_TREE;
392 : }
393 :
394 : tree
395 472416 : generic_simplify_73 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
396 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
397 : const enum tree_code ARG_UNUSED (plusminus))
398 : {
399 472416 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
400 472416 : if (!TYPE_SATURATING (type)
401 472416 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
402 : )
403 : {
404 471876 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
405 : )
406 : {
407 55 : if ((!ANY_INTEGRAL_TYPE_P (type)
408 471835 : || TYPE_OVERFLOW_WRAPS (type)
409 100054 : || (INTEGRAL_TYPE_P (type)
410 100040 : && ((tree_expr_nonzero_p (captures[1])
411 72678 : && (plusminus == MINUS_EXPR
412 72537 : || expr_not_equal_to (captures[1],
413 544413 : wi::minus_one (TYPE_PRECISION (type)),
414 : gimple_match_ctx (captures[0]))))
415 27362 : || expr_not_equal_to (captures[2],
416 : (plusminus == PLUS_EXPR
417 499238 : ? wi::max_value (TYPE_PRECISION (type), SIGNED)
418 1620 : : wi::min_value (TYPE_PRECISION (type), SIGNED)),
419 : gimple_match_ctx (captures[0])))))
420 471876 : && single_use (captures[0])
421 : )
422 : {
423 470269 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail163;
424 470269 : {
425 470269 : tree res_op0;
426 470269 : {
427 470269 : tree _o1[2], _r1;
428 470269 : _o1[0] = captures[2];
429 470269 : _o1[1] = build_one_cst (type);
430 470269 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
431 470269 : res_op0 = _r1;
432 : }
433 470269 : tree res_op1;
434 470269 : res_op1 = captures[1];
435 470269 : tree _r;
436 470269 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
437 470269 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 131, __FILE__, __LINE__, true);
438 470269 : return _r;
439 : }
440 0 : next_after_fail163:;
441 : }
442 : }
443 : }
444 : return NULL_TREE;
445 : }
446 :
447 : tree
448 117 : generic_simplify_81 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
449 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
450 : const combined_fn ARG_UNUSED (POPCOUNT))
451 : {
452 117 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
453 234 : if (INTEGRAL_TYPE_P (type)
454 585 : && (wi::bit_and (widest_int::from (tree_nonzero_bits (captures[1]), UNSIGNED),
455 468 : widest_int::from (tree_nonzero_bits (captures[3]), UNSIGNED))
456 351 : == 0)
457 : )
458 : {
459 1 : {
460 1 : tree utype = TREE_TYPE (captures[1]);
461 1 : if (TYPE_PRECISION (utype) < TYPE_PRECISION (TREE_TYPE (captures[3])))
462 0 : utype = TREE_TYPE (captures[3]);
463 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail172;
464 1 : {
465 1 : tree res_op0;
466 1 : {
467 1 : tree _o1[2], _r1;
468 1 : {
469 1 : tree _o2[1], _r2;
470 1 : _o2[0] = captures[1];
471 1 : if (TREE_TYPE (_o2[0]) != utype)
472 : {
473 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
474 : }
475 : else
476 : _r2 = _o2[0];
477 1 : _o1[0] = _r2;
478 : }
479 1 : {
480 1 : tree _o2[1], _r2;
481 1 : _o2[0] = captures[3];
482 1 : if (TREE_TYPE (_o2[0]) != utype)
483 : {
484 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
485 : }
486 : else
487 : _r2 = _o2[0];
488 1 : _o1[1] = _r2;
489 : }
490 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
491 1 : res_op0 = _r1;
492 : }
493 1 : tree _r;
494 1 : _r = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, res_op0);
495 1 : if (!_r)
496 0 : goto next_after_fail172;
497 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 140, __FILE__, __LINE__, true);
498 1 : return _r;
499 : }
500 : next_after_fail172:;
501 : }
502 : }
503 : return NULL_TREE;
504 : }
505 :
506 : tree
507 304 : generic_simplify_94 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
508 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
509 : {
510 304 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
511 304 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
512 304 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
513 : )
514 : {
515 304 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail185;
516 304 : {
517 304 : tree res_op0;
518 304 : {
519 304 : tree _o1[2], _r1;
520 304 : {
521 304 : tree _o2[1], _r2;
522 304 : _o2[0] = captures[3];
523 304 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
524 304 : _o1[0] = _r2;
525 : }
526 304 : _o1[1] = captures[0];
527 304 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
528 304 : res_op0 = _r1;
529 : }
530 304 : tree _r;
531 304 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
532 304 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 152, __FILE__, __LINE__, true);
533 304 : return _r;
534 : }
535 0 : next_after_fail185:;
536 : }
537 : return NULL_TREE;
538 : }
539 :
540 : tree
541 11638 : generic_simplify_104 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
542 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
543 : {
544 11638 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
545 11638 : if (!TYPE_SATURATING (type)
546 : )
547 : {
548 11638 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
549 23276 : && !FIXED_POINT_TYPE_P (type)
550 : )
551 : {
552 11638 : if (INTEGRAL_TYPE_P (type)
553 11638 : && TYPE_OVERFLOW_UNDEFINED (type)
554 4064 : && TREE_CODE (captures[1]) != INTEGER_CST
555 13626 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
556 : )
557 : {
558 1986 : {
559 1986 : tree utype = unsigned_type_for (type);
560 1986 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail199;
561 1986 : {
562 1986 : tree res_op0;
563 1986 : {
564 1986 : tree _o1[1], _r1;
565 1986 : {
566 1986 : tree _o2[1], _r2;
567 1986 : _o2[0] = captures[1];
568 1986 : if (TREE_TYPE (_o2[0]) != utype)
569 : {
570 1986 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
571 : }
572 : else
573 : _r2 = _o2[0];
574 1986 : _o1[0] = _r2;
575 : }
576 1986 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
577 1986 : res_op0 = _r1;
578 : }
579 1986 : tree _r;
580 1986 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
581 1986 : if (TREE_SIDE_EFFECTS (captures[2]))
582 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
583 1986 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 166, __FILE__, __LINE__, true);
584 1986 : return _r;
585 : }
586 0 : next_after_fail199:;
587 : }
588 : }
589 : else
590 : {
591 9652 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
592 9652 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
593 2654 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
594 : )
595 : {
596 9387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail200;
597 9387 : {
598 9387 : tree res_op0;
599 9387 : {
600 9387 : tree _o1[1], _r1;
601 9387 : _o1[0] = captures[1];
602 9387 : if (TREE_TYPE (_o1[0]) != type)
603 : {
604 9387 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
605 : }
606 : else
607 : _r1 = _o1[0];
608 9387 : res_op0 = _r1;
609 : }
610 9387 : tree _r;
611 9387 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
612 9387 : if (TREE_SIDE_EFFECTS (captures[2]))
613 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
614 9387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 167, __FILE__, __LINE__, true);
615 9387 : return _r;
616 : }
617 0 : next_after_fail200:;
618 : }
619 : }
620 : }
621 : }
622 : return NULL_TREE;
623 : }
624 :
625 : tree
626 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
627 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
628 : {
629 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
630 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail215;
631 0 : {
632 0 : tree res_op0;
633 0 : res_op0 = captures[0];
634 0 : tree res_op1;
635 0 : {
636 0 : tree _o1[1], _r1;
637 0 : _o1[0] = captures[2];
638 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
639 0 : res_op1 = _r1;
640 : }
641 0 : tree _r;
642 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
643 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 181, __FILE__, __LINE__, true);
644 : return _r;
645 : }
646 0 : next_after_fail215:;
647 0 : return NULL_TREE;
648 : }
649 :
650 : tree
651 8 : generic_simplify_124 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
652 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
653 : {
654 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
655 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
656 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
657 : )
658 : {
659 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail221;
660 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail221;
661 0 : {
662 0 : tree _r;
663 0 : _r = captures[2];
664 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
665 0 : return _r;
666 : }
667 : next_after_fail221:;
668 : }
669 : return NULL_TREE;
670 : }
671 :
672 : tree
673 93 : generic_simplify_134 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
674 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
675 : const enum tree_code ARG_UNUSED (op),
676 : const enum tree_code ARG_UNUSED (rop))
677 : {
678 93 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
679 93 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
680 93 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
681 : )
682 : {
683 61 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail231;
684 61 : {
685 61 : tree res_op0;
686 61 : {
687 61 : tree _o1[2], _r1;
688 61 : {
689 61 : tree _o2[1], _r2;
690 61 : _o2[0] = captures[0];
691 61 : if (TREE_TYPE (_o2[0]) != type)
692 : {
693 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
694 : }
695 : else
696 : _r2 = _o2[0];
697 61 : _o1[0] = _r2;
698 : }
699 61 : {
700 61 : tree _o2[1], _r2;
701 61 : _o2[0] = captures[1];
702 61 : if (TREE_TYPE (_o2[0]) != type)
703 : {
704 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
705 : }
706 : else
707 : _r2 = _o2[0];
708 61 : _o1[1] = _r2;
709 : }
710 61 : _r1 = fold_build2_loc (loc, rop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
711 61 : res_op0 = _r1;
712 : }
713 61 : tree _r;
714 61 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
715 61 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 193, __FILE__, __LINE__, true);
716 61 : return _r;
717 : }
718 0 : next_after_fail231:;
719 : }
720 : return NULL_TREE;
721 : }
722 :
723 : tree
724 0 : generic_simplify_150 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
725 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
726 : const enum tree_code ARG_UNUSED (op))
727 : {
728 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
729 0 : if (bitwise_equal_p (captures[4], captures[7])
730 : )
731 : {
732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail252;
733 0 : {
734 0 : tree res_op0;
735 0 : {
736 0 : tree _o1[2], _r1;
737 0 : {
738 0 : tree _o2[2], _r2;
739 0 : _o2[0] = captures[5];
740 0 : {
741 0 : tree _o3[1], _r3;
742 0 : _o3[0] = captures[6];
743 0 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
744 : {
745 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
746 : }
747 : else
748 : _r3 = _o3[0];
749 0 : _o2[1] = _r3;
750 : }
751 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
752 0 : _o1[0] = _r2;
753 : }
754 0 : {
755 0 : tree _o2[1], _r2;
756 0 : _o2[0] = captures[4];
757 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
758 : {
759 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
760 : }
761 : else
762 : _r2 = _o2[0];
763 0 : _o1[1] = _r2;
764 : }
765 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
766 0 : res_op0 = _r1;
767 : }
768 0 : tree _r;
769 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
770 0 : if (TREE_SIDE_EFFECTS (captures[7]))
771 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
772 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 202, __FILE__, __LINE__, true);
773 0 : return _r;
774 : }
775 0 : next_after_fail252:;
776 : }
777 : return NULL_TREE;
778 : }
779 :
780 : tree
781 0 : generic_simplify_162 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
782 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
783 : const enum tree_code ARG_UNUSED (cmp))
784 : {
785 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
786 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail285;
787 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail285;
788 0 : {
789 0 : tree res_op0;
790 0 : {
791 0 : tree _o1[2], _r1;
792 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
793 0 : _o1[1] = captures[2];
794 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
795 0 : res_op0 = _r1;
796 : }
797 0 : tree res_op1;
798 0 : res_op1 = captures[3];
799 0 : tree _r;
800 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
801 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 227, __FILE__, __LINE__, true);
802 : return _r;
803 : }
804 : next_after_fail285:;
805 : return NULL_TREE;
806 : }
807 :
808 : tree
809 8 : generic_simplify_170 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
810 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
811 : const enum tree_code ARG_UNUSED (eqne))
812 : {
813 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
814 8 : if (eqne == EQ_EXPR
815 : )
816 : {
817 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail306;
818 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail306;
819 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail306;
820 4 : {
821 4 : tree _r;
822 4 : _r = captures[0];
823 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
824 4 : return _r;
825 : }
826 : next_after_fail306:;
827 : }
828 : else
829 : {
830 4 : if (eqne == NE_EXPR
831 : )
832 : {
833 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail307;
834 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail307;
835 4 : {
836 4 : tree _r;
837 4 : _r = constant_boolean_node (true, type);
838 4 : if (TREE_SIDE_EFFECTS (captures[2]))
839 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
840 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 230, __FILE__, __LINE__, true);
841 4 : return _r;
842 : }
843 : next_after_fail307:;
844 : }
845 : }
846 : return NULL_TREE;
847 : }
848 :
849 : tree
850 0 : generic_simplify_175 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
851 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
852 : {
853 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
854 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail312;
855 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail312;
856 0 : {
857 0 : tree _r;
858 0 : _r = captures[1];
859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 233, __FILE__, __LINE__, true);
860 : return _r;
861 : }
862 : next_after_fail312:;
863 : return NULL_TREE;
864 : }
865 :
866 : tree
867 0 : generic_simplify_179 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
868 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
869 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
870 : {
871 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
872 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
873 : )
874 : {
875 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail316;
876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail316;
877 0 : {
878 0 : tree res_op0;
879 0 : res_op0 = captures[0];
880 0 : tree _r;
881 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
882 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 237, __FILE__, __LINE__, true);
883 0 : return _r;
884 : }
885 : next_after_fail316:;
886 : }
887 : return NULL_TREE;
888 : }
889 :
890 : tree
891 0 : generic_simplify_182 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
892 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
893 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
894 : {
895 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
896 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
897 : )
898 : {
899 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail319;
900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail319;
901 0 : {
902 0 : tree res_op0;
903 0 : {
904 0 : tree _o1[1], _r1;
905 0 : _o1[0] = captures[0];
906 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
907 0 : res_op0 = _r1;
908 : }
909 0 : tree _r;
910 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
911 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
912 0 : return _r;
913 : }
914 : next_after_fail319:;
915 : }
916 : return NULL_TREE;
917 : }
918 :
919 : tree
920 6 : generic_simplify_188 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
921 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
922 : {
923 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
924 6 : if (INTEGRAL_TYPE_P (type)
925 6 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
926 12 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
927 : )
928 : {
929 6 : if (TYPE_UNSIGNED (type)
930 : )
931 : {
932 5 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail325;
933 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail325;
934 5 : {
935 5 : tree res_op0;
936 5 : res_op0 = captures[0];
937 5 : tree _r;
938 5 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
939 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 243, __FILE__, __LINE__, true);
940 5 : return _r;
941 : }
942 : next_after_fail325:;
943 : }
944 : else
945 : {
946 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail326;
947 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail326;
948 1 : {
949 1 : tree res_op0;
950 1 : res_op0 = captures[0];
951 1 : tree _r;
952 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
953 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 244, __FILE__, __LINE__, true);
954 1 : return _r;
955 : }
956 : next_after_fail326:;
957 : }
958 : }
959 : return NULL_TREE;
960 : }
961 :
962 : tree
963 48478 : generic_simplify_195 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
964 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
965 : {
966 48478 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
967 48478 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail334;
968 48478 : {
969 48478 : tree res_op0;
970 48478 : res_op0 = captures[0];
971 48478 : tree _r;
972 48478 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
973 48478 : if (TREE_SIDE_EFFECTS (captures[2]))
974 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
975 48478 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 249, __FILE__, __LINE__, true);
976 : return _r;
977 : }
978 0 : next_after_fail334:;
979 0 : return NULL_TREE;
980 : }
981 :
982 : tree
983 8 : generic_simplify_200 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
984 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
985 : const combined_fn ARG_UNUSED (POW))
986 : {
987 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
988 8 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
989 : )
990 : {
991 8 : if (!TREE_OVERFLOW (captures[2])
992 : )
993 : {
994 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail340;
995 8 : {
996 8 : tree res_op0;
997 8 : res_op0 = captures[0];
998 8 : tree res_op1;
999 8 : {
1000 8 : tree _o1[2], _r1;
1001 8 : _o1[0] = captures[2];
1002 8 : _o1[1] = build_one_cst (type);
1003 8 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1004 8 : res_op1 = _r1;
1005 : }
1006 8 : tree _r;
1007 8 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1008 8 : if (!_r)
1009 0 : goto next_after_fail340;
1010 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 255, __FILE__, __LINE__, true);
1011 8 : return _r;
1012 : }
1013 : next_after_fail340:;
1014 : }
1015 : }
1016 : return NULL_TREE;
1017 : }
1018 :
1019 : tree
1020 20147 : generic_simplify_207 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1021 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1022 : const enum tree_code ARG_UNUSED (cmp),
1023 : const enum tree_code ARG_UNUSED (mod))
1024 : {
1025 20147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1026 20147 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1027 : )
1028 : {
1029 20147 : {
1030 20147 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1031 20147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail347;
1032 20147 : {
1033 20147 : tree res_op0;
1034 20147 : {
1035 20147 : tree _o1[2], _r1;
1036 20147 : {
1037 20147 : tree _o2[1], _r2;
1038 20147 : _o2[0] = captures[0];
1039 20147 : if (TREE_TYPE (_o2[0]) != utype)
1040 : {
1041 20147 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1042 : }
1043 : else
1044 : _r2 = _o2[0];
1045 20147 : _o1[0] = _r2;
1046 : }
1047 20147 : {
1048 20147 : tree _o2[1], _r2;
1049 20147 : _o2[0] = captures[1];
1050 20147 : if (TREE_TYPE (_o2[0]) != utype)
1051 : {
1052 20147 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1053 : }
1054 : else
1055 : _r2 = _o2[0];
1056 20147 : _o1[1] = _r2;
1057 : }
1058 20147 : _r1 = fold_build2_loc (loc, mod, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1059 20147 : res_op0 = _r1;
1060 : }
1061 20147 : tree res_op1;
1062 20147 : {
1063 20147 : tree _o1[1], _r1;
1064 20147 : _o1[0] = captures[2];
1065 20147 : if (TREE_TYPE (_o1[0]) != utype)
1066 : {
1067 20147 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1068 : }
1069 : else
1070 : _r1 = _o1[0];
1071 20147 : res_op1 = _r1;
1072 : }
1073 20147 : tree _r;
1074 20147 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1075 20147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 262, __FILE__, __LINE__, true);
1076 20147 : return _r;
1077 : }
1078 0 : next_after_fail347:;
1079 : }
1080 : }
1081 : return NULL_TREE;
1082 : }
1083 :
1084 : tree
1085 11758 : generic_simplify_221 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1086 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1087 : const enum tree_code ARG_UNUSED (op))
1088 : {
1089 11758 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1090 11758 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1091 11758 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1092 11758 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1093 : )
1094 : {
1095 11758 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail377;
1096 11758 : {
1097 11758 : tree res_op0;
1098 11758 : res_op0 = captures[3];
1099 11758 : tree res_op1;
1100 11758 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1101 11758 : tree _r;
1102 11758 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1103 11758 : if (TREE_SIDE_EFFECTS (captures[2]))
1104 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1105 11758 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1106 11758 : return _r;
1107 : }
1108 0 : next_after_fail377:;
1109 : }
1110 : return NULL_TREE;
1111 : }
1112 :
1113 : tree
1114 1366 : generic_simplify_228 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1115 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1116 : const enum tree_code ARG_UNUSED (cmp),
1117 : const enum tree_code ARG_UNUSED (ocmp))
1118 : {
1119 1366 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1120 1366 : if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1121 374 : && TREE_CODE (TREE_TYPE (captures[0])) != COMPLEX_TYPE
1122 1718 : && (VECTOR_TYPE_P (type) || !VECTOR_TYPE_P (TREE_TYPE (captures[0])))
1123 : )
1124 : {
1125 352 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail384;
1126 352 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail384;
1127 352 : {
1128 352 : tree res_op0;
1129 352 : res_op0 = captures[0];
1130 352 : tree res_op1;
1131 352 : res_op1 = captures[1];
1132 352 : tree _r;
1133 352 : _r = fold_build2_loc (loc, ocmp, type, res_op0, res_op1);
1134 352 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 297, __FILE__, __LINE__, true);
1135 352 : return _r;
1136 : }
1137 : next_after_fail384:;
1138 : }
1139 : return NULL_TREE;
1140 : }
1141 :
1142 : tree
1143 6 : generic_simplify_236 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1144 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1145 : const enum tree_code ARG_UNUSED (cmp),
1146 : const enum tree_code ARG_UNUSED (icmp))
1147 : {
1148 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1149 6 : {
1150 6 : int c1 = wi::clz (wi::to_wide (captures[0]));
1151 6 : int c2 = wi::clz (wi::to_wide (captures[2]));
1152 6 : if (c1 < c2
1153 : )
1154 : {
1155 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail394;
1156 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail394;
1157 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail394;
1158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail394;
1159 0 : {
1160 0 : tree _r;
1161 0 : _r = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
1162 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1163 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1164 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 307, __FILE__, __LINE__, true);
1165 0 : return _r;
1166 : }
1167 : next_after_fail394:;
1168 : }
1169 : else
1170 : {
1171 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail395;
1172 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail395;
1173 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail395;
1174 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail395;
1175 6 : {
1176 6 : tree res_op0;
1177 6 : res_op0 = captures[1];
1178 6 : tree res_op1;
1179 6 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c1 - c2);
1180 6 : tree _r;
1181 6 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1182 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 308, __FILE__, __LINE__, true);
1183 6 : return _r;
1184 : }
1185 : next_after_fail395:;
1186 : }
1187 : }
1188 : return NULL_TREE;
1189 : }
1190 :
1191 : tree
1192 14 : generic_simplify_246 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1193 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1194 : const enum tree_code ARG_UNUSED (cmp),
1195 : const combined_fn ARG_UNUSED (bswap))
1196 : {
1197 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1198 14 : {
1199 14 : tree ctype = TREE_TYPE (captures[0]);
1200 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail414;
1201 14 : {
1202 14 : tree res_op0;
1203 14 : {
1204 14 : tree _o1[1], _r1;
1205 14 : _o1[0] = captures[1];
1206 14 : if (TREE_TYPE (_o1[0]) != ctype)
1207 : {
1208 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1209 : }
1210 : else
1211 : _r1 = _o1[0];
1212 14 : res_op0 = _r1;
1213 : }
1214 14 : tree res_op1;
1215 14 : {
1216 14 : tree _o1[1], _r1;
1217 14 : _o1[0] = captures[2];
1218 14 : if (TREE_TYPE (_o1[0]) != ctype)
1219 : {
1220 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1221 : }
1222 : else
1223 : _r1 = _o1[0];
1224 14 : res_op1 = _r1;
1225 : }
1226 14 : tree _r;
1227 14 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1228 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 327, __FILE__, __LINE__, true);
1229 : return _r;
1230 : }
1231 0 : next_after_fail414:;
1232 : }
1233 0 : return NULL_TREE;
1234 : }
1235 :
1236 : tree
1237 142968 : generic_simplify_254 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1238 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1239 : const enum tree_code ARG_UNUSED (cmp))
1240 : {
1241 142968 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1242 281110 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1243 143234 : || ! tree_expr_maybe_nan_p (captures[0])
1244 : )
1245 : {
1246 137950 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail427;
1247 137950 : {
1248 137950 : tree _r;
1249 137950 : _r = constant_boolean_node (true, type);
1250 137950 : if (TREE_SIDE_EFFECTS (captures[0]))
1251 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1252 137950 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 339, __FILE__, __LINE__, true);
1253 137950 : return _r;
1254 : }
1255 0 : next_after_fail427:;
1256 : }
1257 : else
1258 : {
1259 5018 : if (cmp != EQ_EXPR
1260 5018 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1261 79 : || ! flag_trapping_math)
1262 : )
1263 : {
1264 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail428;
1265 0 : {
1266 0 : tree res_op0;
1267 0 : res_op0 = unshare_expr (captures[0]);
1268 0 : tree res_op1;
1269 0 : res_op1 = captures[0];
1270 0 : tree _r;
1271 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1272 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 340, __FILE__, __LINE__, true);
1273 0 : return _r;
1274 : }
1275 0 : next_after_fail428:;
1276 : }
1277 : }
1278 : return NULL_TREE;
1279 : }
1280 :
1281 : tree
1282 18984 : generic_simplify_261 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1283 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1284 : const enum tree_code ARG_UNUSED (cmp))
1285 : {
1286 18984 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1287 18984 : if (flag_associative_math
1288 : )
1289 : {
1290 13 : {
1291 13 : tree tem = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), captures[0], captures[2]);
1292 13 : if (tem && !TREE_OVERFLOW (tem)
1293 : )
1294 : {
1295 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail449;
1296 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail449;
1297 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail449;
1298 13 : {
1299 13 : tree res_op0;
1300 13 : res_op0 = tem;
1301 13 : tree res_op1;
1302 13 : res_op1 = captures[1];
1303 13 : tree _r;
1304 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1305 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 360, __FILE__, __LINE__, true);
1306 13 : return _r;
1307 : }
1308 : next_after_fail449:;
1309 : }
1310 : }
1311 : }
1312 : return NULL_TREE;
1313 : }
1314 :
1315 : tree
1316 59 : generic_simplify_267 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1317 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1318 : const enum tree_code ARG_UNUSED (cmp),
1319 : const enum tree_code ARG_UNUSED (scmp))
1320 : {
1321 59 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1322 96 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1323 96 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1324 37 : && (cmp == EQ_EXPR
1325 37 : || cmp == NE_EXPR
1326 36 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
1327 : )
1328 : {
1329 23 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1330 23 : {
1331 23 : tree res_op0;
1332 23 : res_op0 = captures[0];
1333 23 : tree res_op1;
1334 23 : res_op1 = captures[1];
1335 23 : tree _r;
1336 23 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1337 23 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1338 23 : return _r;
1339 : }
1340 0 : next_after_fail482:;
1341 : }
1342 : return NULL_TREE;
1343 : }
1344 :
1345 : tree
1346 19126016 : generic_simplify_270 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1347 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1348 : const enum tree_code ARG_UNUSED (cmp))
1349 : {
1350 19126016 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1351 37987847 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1352 11596124 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1353 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1354 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1355 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1356 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1357 19126016 : && single_use (captures[0])
1358 : )
1359 : {
1360 11596124 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1361 5050146 : && (TREE_CODE (captures[3]) == INTEGER_CST
1362 1888590 : || captures[2] != captures[3])
1363 3161556 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1364 : || cmp == NE_EXPR
1365 1445277 : || cmp == EQ_EXPR)
1366 2166602 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1367 13730888 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1368 1672 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1369 : )
1370 : {
1371 2134736 : if (TREE_CODE (captures[2]) == INTEGER_CST
1372 : )
1373 : {
1374 2134736 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail492;
1375 2134736 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail492;
1376 2134736 : {
1377 2134736 : tree res_op0;
1378 2134736 : res_op0 = captures[1];
1379 2134736 : tree res_op1;
1380 2134736 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1381 2134736 : wide_int::from (wi::to_wide (captures[2]),
1382 2134736 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1383 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1384 2134736 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1385 2134736 : 0, TREE_OVERFLOW (captures[2]));
1386 2134736 : tree _r;
1387 2134736 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1388 2134736 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1389 2134736 : return _r;
1390 : }
1391 : next_after_fail492:;
1392 : }
1393 : else
1394 : {
1395 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail493;
1396 0 : {
1397 0 : tree res_op0;
1398 0 : res_op0 = captures[1];
1399 0 : tree res_op1;
1400 0 : {
1401 0 : tree _o1[1], _r1;
1402 0 : _o1[0] = captures[2];
1403 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1404 : {
1405 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1406 : }
1407 : else
1408 : _r1 = _o1[0];
1409 0 : res_op1 = _r1;
1410 : }
1411 0 : tree _r;
1412 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1413 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1414 0 : return _r;
1415 : }
1416 0 : next_after_fail493:;
1417 : }
1418 : }
1419 : else
1420 : {
1421 9461388 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1422 : )
1423 : {
1424 5595096 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1425 2898331 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1426 390173 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1427 306297 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1428 8409551 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1429 5511202 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1430 5511202 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1431 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1432 0 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1433 5511202 : || (TREE_CODE (captures[2]) == INTEGER_CST
1434 4420221 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1435 4420221 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1436 : )
1437 : {
1438 4387707 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail494;
1439 4387707 : {
1440 4387707 : tree res_op0;
1441 4387707 : res_op0 = captures[1];
1442 4387707 : tree res_op1;
1443 4387707 : {
1444 4387707 : tree _o1[1], _r1;
1445 4387707 : _o1[0] = captures[3];
1446 4387707 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1447 : {
1448 4387689 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1449 : }
1450 : else
1451 : _r1 = _o1[0];
1452 4387707 : res_op1 = _r1;
1453 : }
1454 4387707 : tree _r;
1455 4387707 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1456 4387707 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1457 4387707 : return _r;
1458 : }
1459 0 : next_after_fail494:;
1460 : }
1461 : else
1462 : {
1463 1207389 : if (TREE_CODE (captures[2]) == INTEGER_CST
1464 80862 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1465 1288251 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1466 : )
1467 : {
1468 35660 : {
1469 35660 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1470 35660 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1471 35660 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1472 35660 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1473 35660 : if (above || below
1474 : )
1475 : {
1476 30027 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1477 : )
1478 : {
1479 25865 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail495;
1480 25865 : {
1481 25865 : tree _r;
1482 25865 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1483 25865 : if (TREE_SIDE_EFFECTS (captures[1]))
1484 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1485 25865 : if (TREE_SIDE_EFFECTS (captures[2]))
1486 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1487 25865 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 398, __FILE__, __LINE__, true);
1488 25865 : return _r;
1489 : }
1490 0 : next_after_fail495:;
1491 : }
1492 : else
1493 : {
1494 4162 : if (cmp == LT_EXPR || cmp == LE_EXPR
1495 : )
1496 : {
1497 3633 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail496;
1498 3633 : {
1499 3633 : tree _r;
1500 3633 : _r = constant_boolean_node (above ? true : false, type);
1501 3633 : if (TREE_SIDE_EFFECTS (captures[1]))
1502 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1503 3633 : if (TREE_SIDE_EFFECTS (captures[2]))
1504 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1505 3633 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 399, __FILE__, __LINE__, true);
1506 3633 : return _r;
1507 : }
1508 0 : next_after_fail496:;
1509 : }
1510 : else
1511 : {
1512 529 : if (cmp == GT_EXPR || cmp == GE_EXPR
1513 : )
1514 : {
1515 529 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail497;
1516 529 : {
1517 529 : tree _r;
1518 747 : _r = constant_boolean_node (above ? false : true, type);
1519 529 : if (TREE_SIDE_EFFECTS (captures[1]))
1520 4 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1521 529 : if (TREE_SIDE_EFFECTS (captures[2]))
1522 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1523 529 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 400, __FILE__, __LINE__, true);
1524 529 : return _r;
1525 : }
1526 0 : next_after_fail497:;
1527 : }
1528 : }
1529 : }
1530 : }
1531 : }
1532 : }
1533 : }
1534 : }
1535 : else
1536 : {
1537 7729803 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1538 3644836 : && (TYPE_PRECISION (TREE_TYPE (captures[0]))
1539 3644836 : < TYPE_PRECISION (TREE_TYPE (captures[1])))
1540 950796 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1541 4497097 : && types_match (TREE_TYPE (captures[1]),
1542 630805 : TREE_TYPE (captures[3]))
1543 : )
1544 : {
1545 0 : {
1546 0 : tree itype = TREE_TYPE (captures[0]);
1547 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail498;
1548 0 : {
1549 0 : tree res_op0;
1550 0 : {
1551 0 : tree _o1[1], _r1;
1552 0 : {
1553 0 : tree _o2[2], _r2;
1554 0 : _o2[0] = captures[1];
1555 0 : _o2[1] = captures[3];
1556 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1557 0 : _o1[0] = _r2;
1558 : }
1559 0 : if (TREE_TYPE (_o1[0]) != itype)
1560 : {
1561 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1562 : }
1563 : else
1564 : _r1 = _o1[0];
1565 0 : res_op0 = _r1;
1566 : }
1567 0 : tree res_op1;
1568 0 : res_op1 = build_zero_cst (itype);
1569 0 : tree _r;
1570 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1571 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 401, __FILE__, __LINE__, true);
1572 0 : return _r;
1573 : }
1574 0 : next_after_fail498:;
1575 : }
1576 : }
1577 : }
1578 : }
1579 : }
1580 : else
1581 : {
1582 14527908 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1583 1090748 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1584 545374 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1585 8620402 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1586 545255 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1587 : )
1588 : {
1589 545255 : {
1590 545255 : tree type1 = TREE_TYPE (captures[3]);
1591 545255 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1592 : {
1593 342551 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1594 342551 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1595 342551 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1596 176645 : type1 = float_type_node;
1597 342551 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1598 342551 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1599 292 : type1 = double_type_node;
1600 : }
1601 545255 : tree newtype
1602 545255 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1603 545255 : ? TREE_TYPE (captures[1]) : type1);
1604 545255 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1605 545255 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1606 : )
1607 : {
1608 44604 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail499;
1609 44604 : {
1610 44604 : tree res_op0;
1611 44604 : {
1612 44604 : tree _o1[1], _r1;
1613 44604 : _o1[0] = captures[1];
1614 44604 : if (TREE_TYPE (_o1[0]) != newtype)
1615 : {
1616 11436 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1617 : }
1618 : else
1619 : _r1 = _o1[0];
1620 44604 : res_op0 = _r1;
1621 : }
1622 44604 : tree res_op1;
1623 44604 : {
1624 44604 : tree _o1[1], _r1;
1625 44604 : _o1[0] = captures[3];
1626 44604 : if (TREE_TYPE (_o1[0]) != newtype)
1627 : {
1628 44604 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1629 : }
1630 : else
1631 : _r1 = _o1[0];
1632 44604 : res_op1 = _r1;
1633 : }
1634 44604 : tree _r;
1635 44604 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1636 44604 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 402, __FILE__, __LINE__, true);
1637 44604 : return _r;
1638 : }
1639 0 : next_after_fail499:;
1640 : }
1641 : }
1642 : }
1643 : }
1644 : return NULL_TREE;
1645 : }
1646 :
1647 : tree
1648 0 : generic_simplify_302 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1649 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1650 : const enum tree_code ARG_UNUSED (cmp))
1651 : {
1652 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1653 0 : if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[0])))
1654 0 : && can_compare_p (cmp == EQ_EXPR ? EQ : NE, TYPE_MODE (TREE_TYPE (captures[0])),
1655 : ccp_jump)
1656 : )
1657 : {
1658 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail567;
1659 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail567;
1660 0 : {
1661 0 : tree res_op0;
1662 0 : res_op0 = captures[0];
1663 0 : tree res_op1;
1664 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1665 0 : tree _r;
1666 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1667 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 460, __FILE__, __LINE__, true);
1668 0 : return _r;
1669 : }
1670 : next_after_fail567:;
1671 : }
1672 : return NULL_TREE;
1673 : }
1674 :
1675 : tree
1676 0 : generic_simplify_307 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1677 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1678 : const combined_fn ARG_UNUSED (copysigns))
1679 : {
1680 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1681 0 : if (!REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
1682 : )
1683 : {
1684 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail573;
1685 0 : {
1686 0 : tree res_op0;
1687 0 : res_op0 = captures[0];
1688 0 : tree _r;
1689 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1690 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1691 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1692 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
1693 0 : return _r;
1694 : }
1695 0 : next_after_fail573:;
1696 : }
1697 : return NULL_TREE;
1698 : }
1699 :
1700 : tree
1701 23 : generic_simplify_313 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1702 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1703 : const enum tree_code ARG_UNUSED (div))
1704 : {
1705 23 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1706 30 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1707 16 : && (!VECTOR_TYPE_P (type)
1708 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1709 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1710 39 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1711 7 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1712 7 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1713 14 : || (element_precision (type)
1714 7 : == element_precision (TREE_TYPE (captures[2])))
1715 7 : || (INTEGRAL_TYPE_P (type)
1716 14 : && (tree_nonzero_bits (captures[0])
1717 44 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1718 : true,
1719 37 : element_precision (type))) == 0))))
1720 : )
1721 : {
1722 9 : if (!VECTOR_TYPE_P (type)
1723 9 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1724 18 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1725 : )
1726 : {
1727 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail580;
1728 0 : {
1729 0 : tree res_op0;
1730 0 : {
1731 0 : tree _o1[2], _r1;
1732 0 : _o1[0] = captures[1];
1733 0 : _o1[1] = captures[3];
1734 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1735 0 : res_op0 = _r1;
1736 : }
1737 0 : tree _r;
1738 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1739 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1740 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1741 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1742 0 : return _r;
1743 : }
1744 0 : next_after_fail580:;
1745 : }
1746 : else
1747 : {
1748 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail581;
1749 9 : {
1750 9 : tree res_op0;
1751 9 : res_op0 = captures[0];
1752 9 : tree res_op1;
1753 9 : res_op1 = captures[3];
1754 9 : tree _r;
1755 9 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1756 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1757 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1758 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 472, __FILE__, __LINE__, true);
1759 9 : return _r;
1760 : }
1761 0 : next_after_fail581:;
1762 : }
1763 : }
1764 : return NULL_TREE;
1765 : }
1766 :
1767 : tree
1768 52 : generic_simplify_330 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1769 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1770 : const enum tree_code ARG_UNUSED (mod))
1771 : {
1772 52 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1773 52 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail599;
1774 52 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail599;
1775 52 : {
1776 52 : tree _r;
1777 52 : _r = captures[0];
1778 52 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
1779 : return _r;
1780 : }
1781 : next_after_fail599:;
1782 : return NULL_TREE;
1783 : }
1784 :
1785 : tree
1786 5 : generic_simplify_338 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1787 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1788 : const combined_fn ARG_UNUSED (SINH),
1789 : const combined_fn ARG_UNUSED (COSH),
1790 : const combined_fn ARG_UNUSED (TANH))
1791 : {
1792 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1793 5 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1794 : )
1795 : {
1796 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail609;
1797 3 : {
1798 3 : tree res_op0;
1799 3 : res_op0 = captures[1];
1800 3 : tree _r;
1801 3 : _r = maybe_build_call_expr_loc (loc, TANH, type, 1, res_op0);
1802 3 : if (!_r)
1803 0 : goto next_after_fail609;
1804 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 500, __FILE__, __LINE__, true);
1805 3 : return _r;
1806 : }
1807 : next_after_fail609:;
1808 : }
1809 : return NULL_TREE;
1810 : }
1811 :
1812 : tree
1813 7491 : generic_simplify_346 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1814 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1815 : const enum tree_code ARG_UNUSED (cmp),
1816 : const enum tree_code ARG_UNUSED (op))
1817 : {
1818 7491 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1819 7491 : {
1820 7491 : tree from_type = TREE_TYPE (captures[0]), to_type = TREE_TYPE (captures[1]);
1821 7491 : if (types_match (from_type, to_type)
1822 7491 : || (TYPE_UNSIGNED (from_type)
1823 37 : && !TYPE_UNSIGNED (to_type)
1824 37 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (to_type)
1825 37 : && integer_zerop (captures[1])
1826 31 : && (cmp == LT_EXPR || cmp == GE_EXPR))
1827 : )
1828 : {
1829 7461 : {
1830 7461 : wi::overflow_type overflow = wi::OVF_NONE;
1831 7461 : enum tree_code code, cmp_code = cmp;
1832 7461 : wide_int real_c1;
1833 7461 : wide_int c1 = wi::to_wide (captures[1]);
1834 7461 : wide_int c2 = wi::to_wide (captures[2]);
1835 7461 : wide_int c3 = wi::to_wide (captures[3]);
1836 7461 : signop sgn = TYPE_SIGN (from_type);
1837 7461 : if (!types_match (from_type, to_type))
1838 : {
1839 7 : if (cmp_code == LT_EXPR)
1840 : cmp_code = GT_EXPR;
1841 0 : if (cmp_code == GE_EXPR)
1842 0 : cmp_code = LE_EXPR;
1843 7 : c1 = wi::max_value (to_type);
1844 : }
1845 7461 : if (op == PLUS_EXPR)
1846 7461 : real_c1 = wi::sub (c3, c2, sgn, &overflow);
1847 : else
1848 0 : real_c1 = wi::add (c3, c2, sgn, &overflow);
1849 7461 : code = cmp_code;
1850 7461 : if (!overflow || !TYPE_OVERFLOW_UNDEFINED (from_type))
1851 : {
1852 14922 : if (!wi::cmp (wi::sub (real_c1, 1, sgn, &overflow), c1, sgn)
1853 7461 : && !overflow)
1854 : {
1855 633 : if (cmp_code == LE_EXPR)
1856 : code = LT_EXPR;
1857 633 : if (cmp_code == GT_EXPR)
1858 7461 : code = GE_EXPR;
1859 : }
1860 14922 : if (!wi::cmp (wi::add (real_c1, 1, sgn, &overflow), c1, sgn)
1861 7461 : && !overflow)
1862 : {
1863 6407 : if (cmp_code == LT_EXPR)
1864 : code = LE_EXPR;
1865 6407 : if (cmp_code == GE_EXPR)
1866 : code = GT_EXPR;
1867 : }
1868 1083 : if (code != cmp_code || !wi::cmp (real_c1, c1, sgn))
1869 : {
1870 7238 : if (cmp_code == LT_EXPR || cmp_code == LE_EXPR)
1871 : code = MIN_EXPR;
1872 7238 : if (cmp_code == GT_EXPR || cmp_code == GE_EXPR)
1873 : code = MAX_EXPR;
1874 : }
1875 : }
1876 223 : if (code == MAX_EXPR
1877 : )
1878 : {
1879 7238 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail619;
1880 7238 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail619;
1881 7238 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail619;
1882 7238 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail619;
1883 7238 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail619;
1884 7238 : {
1885 7238 : tree res_op0;
1886 7238 : {
1887 7238 : tree _o1[2], _r1;
1888 7238 : _o1[0] = captures[0];
1889 7238 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1890 7238 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1891 7238 : res_op0 = _r1;
1892 : }
1893 7238 : tree res_op1;
1894 7238 : res_op1 = wide_int_to_tree (from_type, c2);
1895 7238 : tree _r;
1896 7238 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1897 7238 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 510, __FILE__, __LINE__, true);
1898 7238 : return _r;
1899 : }
1900 223 : next_after_fail619:;
1901 : }
1902 : else
1903 : {
1904 223 : if (code == MIN_EXPR
1905 : )
1906 : {
1907 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail620;
1908 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail620;
1909 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail620;
1910 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail620;
1911 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail620;
1912 0 : {
1913 0 : tree res_op0;
1914 0 : {
1915 0 : tree _o1[2], _r1;
1916 0 : _o1[0] = captures[0];
1917 0 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1918 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1919 0 : res_op0 = _r1;
1920 : }
1921 0 : tree res_op1;
1922 0 : res_op1 = wide_int_to_tree (from_type, c2);
1923 0 : tree _r;
1924 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1925 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 511, __FILE__, __LINE__, true);
1926 0 : return _r;
1927 : }
1928 223 : next_after_fail620:;
1929 : }
1930 : }
1931 7461 : }
1932 : }
1933 : }
1934 : return NULL_TREE;
1935 : }
1936 :
1937 : tree
1938 17 : generic_simplify_376 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1939 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1940 : const enum tree_code ARG_UNUSED (cmp))
1941 : {
1942 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1943 17 : if (INTEGRAL_TYPE_P (type)
1944 17 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1945 17 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1946 34 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
1947 : )
1948 : {
1949 17 : {
1950 17 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
1951 17 : if (cmp == GE_EXPR
1952 : )
1953 : {
1954 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail655;
1955 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail655;
1956 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail655;
1957 9 : {
1958 9 : tree res_op0;
1959 9 : {
1960 9 : tree _o1[1], _r1;
1961 9 : {
1962 9 : tree _o2[2], _r2;
1963 9 : _o2[0] = captures[0];
1964 9 : _o2[1] = shifter;
1965 9 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1966 9 : _o1[0] = _r2;
1967 : }
1968 9 : if (TREE_TYPE (_o1[0]) != type)
1969 : {
1970 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1971 : }
1972 : else
1973 : _r1 = _o1[0];
1974 9 : res_op0 = _r1;
1975 : }
1976 9 : tree res_op1;
1977 9 : res_op1 = captures[1];
1978 9 : tree _r;
1979 9 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1980 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 544, __FILE__, __LINE__, true);
1981 9 : return _r;
1982 : }
1983 : next_after_fail655:;
1984 : }
1985 : else
1986 : {
1987 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail656;
1988 8 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail656;
1989 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail656;
1990 8 : {
1991 8 : tree res_op0;
1992 8 : {
1993 8 : tree _o1[2], _r1;
1994 8 : {
1995 8 : tree _o2[1], _r2;
1996 8 : {
1997 8 : tree _o3[2], _r3;
1998 8 : _o3[0] = captures[0];
1999 8 : _o3[1] = shifter;
2000 8 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2001 8 : _o2[0] = _r3;
2002 : }
2003 8 : if (TREE_TYPE (_o2[0]) != type)
2004 : {
2005 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2006 : }
2007 : else
2008 : _r2 = _o2[0];
2009 8 : _o1[0] = _r2;
2010 : }
2011 8 : _o1[1] = captures[1];
2012 8 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2013 8 : res_op0 = _r1;
2014 : }
2015 8 : tree _r;
2016 8 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2017 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 545, __FILE__, __LINE__, true);
2018 8 : return _r;
2019 : }
2020 : next_after_fail656:;
2021 : }
2022 : }
2023 : }
2024 : return NULL_TREE;
2025 : }
2026 :
2027 : tree
2028 1195429 : generic_simplify_395 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2029 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2030 : const enum tree_code ARG_UNUSED (cmp))
2031 : {
2032 1195429 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2033 2390858 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2034 469 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
2035 94 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
2036 2390858 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2037 : )
2038 : {
2039 1017951 : {
2040 1017951 : tree cst = uniform_integer_cst_p (captures[2]);
2041 1017951 : tree arg1_type = TREE_TYPE (cst);
2042 1017951 : unsigned int prec = TYPE_PRECISION (arg1_type);
2043 1017951 : wide_int max = wi::max_value (arg1_type);
2044 1017951 : wide_int signed_max = wi::max_value (prec, SIGNED);
2045 1017951 : wide_int min = wi::min_value (arg1_type);
2046 1017951 : if (wi::to_wide (cst) == max
2047 : )
2048 : {
2049 713 : if (cmp == GT_EXPR
2050 : )
2051 : {
2052 478 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail680;
2053 478 : {
2054 478 : tree _r;
2055 478 : _r = constant_boolean_node (false, type);
2056 478 : if (TREE_SIDE_EFFECTS (captures[1]))
2057 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2058 478 : if (TREE_SIDE_EFFECTS (captures[2]))
2059 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2060 478 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 569, __FILE__, __LINE__, true);
2061 478 : return _r;
2062 : }
2063 0 : next_after_fail680:;
2064 : }
2065 : else
2066 : {
2067 235 : if (cmp == GE_EXPR
2068 : )
2069 : {
2070 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail681;
2071 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail681;
2072 0 : {
2073 0 : tree res_op0;
2074 0 : res_op0 = captures[0];
2075 0 : tree res_op1;
2076 0 : res_op1 = captures[2];
2077 0 : tree _r;
2078 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2079 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 570, __FILE__, __LINE__, true);
2080 0 : return _r;
2081 : }
2082 957513 : next_after_fail681:;
2083 : }
2084 : else
2085 : {
2086 235 : if (cmp == LE_EXPR
2087 : )
2088 : {
2089 235 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail682;
2090 235 : {
2091 235 : tree _r;
2092 235 : _r = constant_boolean_node (true, type);
2093 235 : if (TREE_SIDE_EFFECTS (captures[1]))
2094 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2095 235 : if (TREE_SIDE_EFFECTS (captures[2]))
2096 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2097 235 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 571, __FILE__, __LINE__, true);
2098 235 : return _r;
2099 : }
2100 0 : next_after_fail682:;
2101 : }
2102 : else
2103 : {
2104 0 : if (cmp == LT_EXPR
2105 : )
2106 : {
2107 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail683;
2108 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail683;
2109 0 : {
2110 0 : tree res_op0;
2111 0 : res_op0 = captures[0];
2112 0 : tree res_op1;
2113 0 : res_op1 = captures[2];
2114 0 : tree _r;
2115 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2116 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 572, __FILE__, __LINE__, true);
2117 0 : return _r;
2118 : }
2119 957513 : next_after_fail683:;
2120 : }
2121 : }
2122 : }
2123 : }
2124 : }
2125 : else
2126 : {
2127 1017238 : if (wi::to_wide (cst) == min
2128 : )
2129 : {
2130 55006 : if (cmp == LT_EXPR
2131 : )
2132 : {
2133 2552 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail684;
2134 2552 : {
2135 2552 : tree _r;
2136 2552 : _r = constant_boolean_node (false, type);
2137 2552 : if (TREE_SIDE_EFFECTS (captures[1]))
2138 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2139 2552 : if (TREE_SIDE_EFFECTS (captures[2]))
2140 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2141 2552 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 573, __FILE__, __LINE__, true);
2142 2552 : return _r;
2143 : }
2144 0 : next_after_fail684:;
2145 : }
2146 : else
2147 : {
2148 52454 : if (cmp == LE_EXPR
2149 : )
2150 : {
2151 13621 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail685;
2152 12503 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail685;
2153 12503 : {
2154 12503 : tree res_op0;
2155 12503 : res_op0 = captures[0];
2156 12503 : tree res_op1;
2157 12503 : res_op1 = captures[2];
2158 12503 : tree _r;
2159 12503 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2160 12503 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 574, __FILE__, __LINE__, true);
2161 12503 : return _r;
2162 : }
2163 957513 : next_after_fail685:;
2164 : }
2165 : else
2166 : {
2167 38833 : if (cmp == GE_EXPR
2168 : )
2169 : {
2170 8563 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail686;
2171 8563 : {
2172 8563 : tree _r;
2173 8563 : _r = constant_boolean_node (true, type);
2174 8563 : if (TREE_SIDE_EFFECTS (captures[1]))
2175 51 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2176 8563 : if (TREE_SIDE_EFFECTS (captures[2]))
2177 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2178 8563 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 575, __FILE__, __LINE__, true);
2179 8563 : return _r;
2180 : }
2181 0 : next_after_fail686:;
2182 : }
2183 : else
2184 : {
2185 30270 : if (cmp == GT_EXPR
2186 : )
2187 : {
2188 30270 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail687;
2189 24680 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail687;
2190 24680 : {
2191 24680 : tree res_op0;
2192 24680 : res_op0 = captures[0];
2193 24680 : tree res_op1;
2194 24680 : res_op1 = captures[2];
2195 24680 : tree _r;
2196 24680 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2197 24680 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
2198 24680 : return _r;
2199 : }
2200 957513 : next_after_fail687:;
2201 : }
2202 : }
2203 : }
2204 : }
2205 : }
2206 : else
2207 : {
2208 962232 : if (wi::to_wide (cst) == max - 1
2209 : )
2210 : {
2211 6495 : if (cmp == GT_EXPR
2212 : )
2213 : {
2214 1397 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail688;
2215 1397 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail688;
2216 1397 : {
2217 1397 : tree res_op0;
2218 1397 : res_op0 = captures[0];
2219 1397 : tree res_op1;
2220 1397 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2221 1397 : wide_int_to_tree (TREE_TYPE (cst),
2222 1397 : wi::to_wide (cst)
2223 2794 : + 1));
2224 1397 : tree _r;
2225 1397 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2226 1397 : if (TREE_SIDE_EFFECTS (captures[2]))
2227 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2228 1397 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 577, __FILE__, __LINE__, true);
2229 1397 : return _r;
2230 : }
2231 957513 : next_after_fail688:;
2232 : }
2233 : else
2234 : {
2235 5098 : if (cmp == LE_EXPR
2236 : )
2237 : {
2238 5098 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail689;
2239 5098 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail689;
2240 5098 : {
2241 5098 : tree res_op0;
2242 5098 : res_op0 = captures[0];
2243 5098 : tree res_op1;
2244 5098 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2245 5098 : wide_int_to_tree (TREE_TYPE (cst),
2246 5098 : wi::to_wide (cst)
2247 10196 : + 1));
2248 5098 : tree _r;
2249 5098 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2250 5098 : if (TREE_SIDE_EFFECTS (captures[2]))
2251 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2252 5098 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 578, __FILE__, __LINE__, true);
2253 5098 : return _r;
2254 : }
2255 957513 : next_after_fail689:;
2256 : }
2257 : }
2258 : }
2259 : else
2260 : {
2261 955737 : if (wi::to_wide (cst) == min + 1
2262 : )
2263 : {
2264 54045 : if (cmp == GE_EXPR
2265 : )
2266 : {
2267 1716 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail690;
2268 1716 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail690;
2269 1716 : {
2270 1716 : tree res_op0;
2271 1716 : res_op0 = captures[0];
2272 1716 : tree res_op1;
2273 1716 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2274 1716 : wide_int_to_tree (TREE_TYPE (cst),
2275 1716 : wi::to_wide (cst)
2276 3432 : - 1));
2277 1716 : tree _r;
2278 1716 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2279 1716 : if (TREE_SIDE_EFFECTS (captures[2]))
2280 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2281 1716 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 579, __FILE__, __LINE__, true);
2282 1716 : return _r;
2283 : }
2284 957513 : next_after_fail690:;
2285 : }
2286 : else
2287 : {
2288 52329 : if (cmp == LT_EXPR
2289 : )
2290 : {
2291 334 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail691;
2292 334 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail691;
2293 334 : {
2294 334 : tree res_op0;
2295 334 : res_op0 = captures[0];
2296 334 : tree res_op1;
2297 334 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2298 334 : wide_int_to_tree (TREE_TYPE (cst),
2299 334 : wi::to_wide (cst)
2300 668 : - 1));
2301 334 : tree _r;
2302 334 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2303 334 : if (TREE_SIDE_EFFECTS (captures[2]))
2304 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2305 334 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 580, __FILE__, __LINE__, true);
2306 334 : return _r;
2307 : }
2308 957513 : next_after_fail691:;
2309 : }
2310 : }
2311 : }
2312 : else
2313 : {
2314 901692 : if (wi::to_wide (cst) == signed_max
2315 2882 : && TYPE_UNSIGNED (arg1_type)
2316 2882 : && TYPE_MODE (arg1_type) != BLKmode
2317 901692 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
2318 904574 : && INTEGRAL_TYPE_P (arg1_type)
2319 : )
2320 : {
2321 2882 : if (cmp == LE_EXPR || cmp == GT_EXPR
2322 : )
2323 : {
2324 2882 : {
2325 2882 : tree st = signed_type_for (TREE_TYPE (captures[2]));
2326 2882 : if (cst == captures[2] && cmp == LE_EXPR
2327 : )
2328 : {
2329 2846 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail692;
2330 2846 : {
2331 2846 : tree res_op0;
2332 2846 : {
2333 2846 : tree _o1[1], _r1;
2334 2846 : _o1[0] = captures[1];
2335 2846 : if (TREE_TYPE (_o1[0]) != st)
2336 : {
2337 2842 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2338 : }
2339 : else
2340 : _r1 = _o1[0];
2341 2846 : res_op0 = _r1;
2342 : }
2343 2846 : tree res_op1;
2344 2846 : res_op1 = build_zero_cst (st);
2345 2846 : tree _r;
2346 2846 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2347 2846 : if (TREE_SIDE_EFFECTS (captures[2]))
2348 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2349 2846 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 581, __FILE__, __LINE__, true);
2350 2846 : return _r;
2351 : }
2352 0 : next_after_fail692:;
2353 0 : }
2354 : else
2355 : {
2356 36 : if (cst == captures[2] && cmp == GT_EXPR
2357 : )
2358 : {
2359 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail693;
2360 36 : {
2361 36 : tree res_op0;
2362 36 : {
2363 36 : tree _o1[1], _r1;
2364 36 : _o1[0] = captures[1];
2365 36 : if (TREE_TYPE (_o1[0]) != st)
2366 : {
2367 36 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2368 : }
2369 : else
2370 : _r1 = _o1[0];
2371 36 : res_op0 = _r1;
2372 : }
2373 36 : tree res_op1;
2374 36 : res_op1 = build_zero_cst (st);
2375 36 : tree _r;
2376 36 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2377 36 : if (TREE_SIDE_EFFECTS (captures[2]))
2378 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2379 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
2380 36 : return _r;
2381 : }
2382 0 : next_after_fail693:;
2383 0 : }
2384 : else
2385 : {
2386 0 : if (cmp == LE_EXPR
2387 : )
2388 : {
2389 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail694;
2390 0 : {
2391 0 : tree res_op0;
2392 0 : {
2393 0 : tree _o1[1], _r1;
2394 0 : _o1[0] = captures[1];
2395 0 : if (TREE_TYPE (_o1[0]) != st)
2396 : {
2397 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2398 : }
2399 : else
2400 : _r1 = _o1[0];
2401 0 : res_op0 = _r1;
2402 : }
2403 0 : tree res_op1;
2404 0 : res_op1 = build_zero_cst (st);
2405 0 : tree _r;
2406 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2407 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2408 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2409 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 583, __FILE__, __LINE__, true);
2410 0 : return _r;
2411 : }
2412 0 : next_after_fail694:;
2413 : }
2414 : else
2415 : {
2416 0 : if (cmp == GT_EXPR
2417 : )
2418 : {
2419 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail695;
2420 0 : {
2421 0 : tree res_op0;
2422 0 : {
2423 0 : tree _o1[1], _r1;
2424 0 : _o1[0] = captures[1];
2425 0 : if (TREE_TYPE (_o1[0]) != st)
2426 : {
2427 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2428 : }
2429 : else
2430 : _r1 = _o1[0];
2431 0 : res_op0 = _r1;
2432 : }
2433 0 : tree res_op1;
2434 0 : res_op1 = build_zero_cst (st);
2435 0 : tree _r;
2436 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2437 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2438 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2439 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 584, __FILE__, __LINE__, true);
2440 0 : return _r;
2441 : }
2442 0 : next_after_fail695:;
2443 : }
2444 : }
2445 : }
2446 : }
2447 : }
2448 : }
2449 : }
2450 : }
2451 : }
2452 : }
2453 : }
2454 1017951 : }
2455 : }
2456 : return NULL_TREE;
2457 : }
2458 :
2459 : tree
2460 122799 : generic_simplify_457 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2461 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2462 : {
2463 122799 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2464 122799 : {
2465 122799 : bool wascmp;
2466 122799 : if (bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
2467 122799 : && (!wascmp || element_precision (type) == 1)
2468 : )
2469 : {
2470 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail804;
2471 1 : {
2472 1 : tree res_op0;
2473 1 : res_op0 = captures[0];
2474 1 : tree res_op1;
2475 1 : res_op1 = captures[2];
2476 1 : tree _r;
2477 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2478 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2479 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2480 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 658, __FILE__, __LINE__, true);
2481 1 : return _r;
2482 : }
2483 0 : next_after_fail804:;
2484 : }
2485 : }
2486 122798 : return NULL_TREE;
2487 : }
2488 :
2489 : tree
2490 65 : generic_simplify_464 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2491 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2492 : {
2493 65 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2494 65 : if (INTEGRAL_TYPE_P (type)
2495 65 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2496 65 : && TREE_CODE (TREE_TYPE (captures[0])) != BOOLEAN_TYPE
2497 130 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2498 19 : || TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])))
2499 : )
2500 : {
2501 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail811;
2502 65 : {
2503 65 : tree res_op0;
2504 65 : {
2505 65 : tree _o1[1], _r1;
2506 65 : _o1[0] = captures[0];
2507 65 : if (TREE_TYPE (_o1[0]) != type)
2508 : {
2509 20 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2510 : }
2511 : else
2512 : _r1 = _o1[0];
2513 65 : res_op0 = _r1;
2514 : }
2515 65 : tree res_op1;
2516 65 : res_op1 = captures[1];
2517 65 : tree _r;
2518 65 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2519 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 664, __FILE__, __LINE__, true);
2520 65 : return _r;
2521 : }
2522 0 : next_after_fail811:;
2523 : }
2524 : return NULL_TREE;
2525 : }
2526 :
2527 : tree
2528 0 : generic_simplify_471 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2529 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2530 : const enum tree_code ARG_UNUSED (cmp))
2531 : {
2532 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2533 0 : if (fold_before_rtl_expansion_p ()
2534 : )
2535 : {
2536 0 : if (INTEGRAL_TYPE_P (type)
2537 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2538 : )
2539 : {
2540 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail818;
2541 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail818;
2542 0 : {
2543 0 : tree res_op0;
2544 0 : res_op0 = captures[0];
2545 0 : tree res_op1;
2546 0 : res_op1 = captures[3];
2547 0 : tree res_op2;
2548 0 : res_op2 = build_zero_cst (type);
2549 0 : tree _r;
2550 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2551 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 670, __FILE__, __LINE__, true);
2552 0 : return _r;
2553 : }
2554 : next_after_fail818:;
2555 : }
2556 : }
2557 : return NULL_TREE;
2558 : }
2559 :
2560 : tree
2561 0 : generic_simplify_481 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2562 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2563 : {
2564 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2565 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail850;
2566 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail850;
2567 0 : {
2568 0 : tree _r;
2569 0 : _r = captures[2];
2570 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2571 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2572 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2573 : return _r;
2574 : }
2575 : next_after_fail850:;
2576 : return NULL_TREE;
2577 : }
2578 :
2579 : tree
2580 4 : generic_simplify_486 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2581 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2582 : {
2583 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2584 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail867;
2585 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail867;
2586 4 : {
2587 4 : tree _r;
2588 4 : _r = captures[2];
2589 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2590 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2591 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2592 : return _r;
2593 : }
2594 : next_after_fail867:;
2595 : return NULL_TREE;
2596 : }
2597 :
2598 : tree
2599 62429 : generic_simplify_490 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2600 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2601 : const enum tree_code ARG_UNUSED (shift))
2602 : {
2603 62429 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2604 62429 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2605 62429 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2606 62318 : && tree_fits_uhwi_p (captures[4])
2607 62269 : && tree_to_uhwi (captures[4]) > 0
2608 124697 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2609 : )
2610 : {
2611 62268 : {
2612 62268 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2613 62268 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2614 62268 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2615 62268 : tree shift_type = TREE_TYPE (captures[2]);
2616 62268 : unsigned int prec;
2617 62268 : if (shift == LSHIFT_EXPR)
2618 27795 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2619 34473 : else if (shift == RSHIFT_EXPR
2620 34473 : && type_has_mode_precision_p (shift_type))
2621 : {
2622 34473 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2623 34473 : tree arg00 = captures[3];
2624 34473 : if (captures[2] != captures[3]
2625 34473 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2626 : {
2627 0 : tree inner_type = TREE_TYPE (captures[3]);
2628 0 : if (type_has_mode_precision_p (inner_type)
2629 0 : && TYPE_PRECISION (inner_type) < prec)
2630 : {
2631 0 : prec = TYPE_PRECISION (inner_type);
2632 0 : if (shiftc < prec)
2633 0 : shift_type = inner_type;
2634 : }
2635 : }
2636 34473 : zerobits = HOST_WIDE_INT_M1U;
2637 34473 : if (shiftc < prec)
2638 : {
2639 34473 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2640 34473 : zerobits <<= prec - shiftc;
2641 : }
2642 34473 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2643 34473 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2644 : {
2645 2894 : if ((mask & zerobits) == 0)
2646 2883 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2647 : else
2648 : zerobits = 0;
2649 : }
2650 : }
2651 62257 : if ((mask & zerobits) == mask
2652 : )
2653 : {
2654 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail873;
2655 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail873;
2656 3 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail873;
2657 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail873;
2658 3 : {
2659 3 : tree _r;
2660 3 : _r = build_int_cst (type, 0);
2661 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
2662 3 : return _r;
2663 : }
2664 : next_after_fail873:;
2665 : }
2666 : else
2667 : {
2668 62265 : {
2669 62265 : newmask = mask | zerobits;
2670 62265 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2671 : )
2672 : {
2673 : {
2674 18268 : for (prec = BITS_PER_UNIT;
2675 33613 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2676 31549 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2677 : break;
2678 15345 : if (prec < HOST_BITS_PER_WIDE_INT
2679 2064 : || newmask == HOST_WIDE_INT_M1U
2680 : )
2681 : {
2682 13448 : {
2683 13448 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2684 13448 : if (!tree_int_cst_equal (newmaskt, captures[5])
2685 : )
2686 : {
2687 13448 : if (shift_type != TREE_TYPE (captures[2])
2688 : )
2689 : {
2690 85 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail874;
2691 85 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail874;
2692 85 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail874;
2693 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail874;
2694 85 : {
2695 85 : tree res_op0;
2696 85 : {
2697 85 : tree _o1[1], _r1;
2698 85 : {
2699 85 : tree _o2[2], _r2;
2700 85 : {
2701 85 : tree _o3[1], _r3;
2702 85 : _o3[0] = captures[2];
2703 85 : if (TREE_TYPE (_o3[0]) != shift_type)
2704 : {
2705 85 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2706 : }
2707 : else
2708 : _r3 = _o3[0];
2709 85 : _o2[0] = _r3;
2710 : }
2711 85 : _o2[1] = captures[4];
2712 85 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2713 85 : _o1[0] = _r2;
2714 : }
2715 85 : if (TREE_TYPE (_o1[0]) != type)
2716 : {
2717 85 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2718 : }
2719 : else
2720 : _r1 = _o1[0];
2721 85 : res_op0 = _r1;
2722 : }
2723 85 : tree res_op1;
2724 85 : res_op1 = newmaskt;
2725 85 : tree _r;
2726 85 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2727 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 695, __FILE__, __LINE__, true);
2728 85 : return _r;
2729 : }
2730 : next_after_fail874:;
2731 : }
2732 : else
2733 : {
2734 13363 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail875;
2735 12427 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail875;
2736 12427 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail875;
2737 12427 : {
2738 12427 : tree res_op0;
2739 12427 : res_op0 = captures[0];
2740 12427 : tree res_op1;
2741 12427 : res_op1 = newmaskt;
2742 12427 : tree _r;
2743 12427 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2744 12427 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
2745 12427 : return _r;
2746 : }
2747 : next_after_fail875:;
2748 : }
2749 : }
2750 : }
2751 : }
2752 : }
2753 : }
2754 : }
2755 : }
2756 : }
2757 : }
2758 : return NULL_TREE;
2759 : }
2760 :
2761 : tree
2762 42 : generic_simplify_500 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2763 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2764 : {
2765 42 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2766 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail891;
2767 42 : {
2768 42 : tree res_op0;
2769 42 : res_op0 = captures[1];
2770 42 : tree res_op1;
2771 42 : {
2772 42 : tree _o1[1], _r1;
2773 42 : _o1[0] = captures[2];
2774 42 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2775 42 : res_op1 = _r1;
2776 : }
2777 42 : tree _r;
2778 42 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
2779 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 705, __FILE__, __LINE__, true);
2780 : return _r;
2781 : }
2782 0 : next_after_fail891:;
2783 0 : return NULL_TREE;
2784 : }
2785 :
2786 : tree
2787 145 : generic_simplify_506 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2788 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2789 : {
2790 145 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2791 145 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
2792 145 : || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2793 : )
2794 : {
2795 145 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail897;
2796 145 : {
2797 145 : tree res_op0;
2798 145 : {
2799 145 : tree _o1[2], _r1;
2800 145 : _o1[0] = captures[0];
2801 145 : _o1[1] = build_each_one_cst (TREE_TYPE (captures[0]));
2802 145 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2803 145 : res_op0 = _r1;
2804 : }
2805 145 : tree _r;
2806 145 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2807 145 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 711, __FILE__, __LINE__, true);
2808 145 : return _r;
2809 : }
2810 0 : next_after_fail897:;
2811 : }
2812 : return NULL_TREE;
2813 : }
2814 :
2815 : tree
2816 249 : generic_simplify_513 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2817 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2818 : const enum tree_code ARG_UNUSED (cmp),
2819 : const enum tree_code ARG_UNUSED (icmp),
2820 : const enum tree_code ARG_UNUSED (ncmp))
2821 : {
2822 249 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2823 249 : if (VECTOR_TYPE_P (type)
2824 249 : || (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1)
2825 : )
2826 : {
2827 51 : {
2828 51 : enum tree_code ic = invert_tree_comparison
2829 51 : (cmp, HONOR_NANS (captures[0]));
2830 51 : if (ic == icmp
2831 : )
2832 : {
2833 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail904;
2834 12 : {
2835 12 : tree res_op0;
2836 12 : res_op0 = captures[0];
2837 12 : tree res_op1;
2838 12 : res_op1 = captures[1];
2839 12 : tree _r;
2840 12 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2841 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 716, __FILE__, __LINE__, true);
2842 12 : return _r;
2843 : }
2844 0 : next_after_fail904:;
2845 : }
2846 : else
2847 : {
2848 39 : if (ic == ncmp
2849 : )
2850 : {
2851 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail905;
2852 0 : {
2853 0 : tree res_op0;
2854 0 : res_op0 = captures[0];
2855 0 : tree res_op1;
2856 0 : res_op1 = captures[1];
2857 0 : tree _r;
2858 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
2859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 717, __FILE__, __LINE__, true);
2860 0 : return _r;
2861 : }
2862 0 : next_after_fail905:;
2863 : }
2864 : }
2865 : }
2866 : }
2867 : return NULL_TREE;
2868 : }
2869 :
2870 : tree
2871 1 : generic_simplify_526 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2872 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2873 : const enum tree_code ARG_UNUSED (minmax))
2874 : {
2875 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2876 1 : if (INTEGRAL_TYPE_P (type)
2877 1 : && TYPE_OVERFLOW_UNDEFINED (type)
2878 2 : && !TYPE_OVERFLOW_SANITIZED (type)
2879 : )
2880 : {
2881 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail919;
2882 1 : {
2883 1 : tree res_op0;
2884 1 : {
2885 1 : tree _o1[2], _r1;
2886 1 : _o1[0] = captures[1];
2887 1 : _o1[1] = captures[4];
2888 1 : _r1 = fold_build2_loc (loc, minmax, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2889 1 : res_op0 = _r1;
2890 : }
2891 1 : tree res_op1;
2892 1 : res_op1 = captures[2];
2893 1 : tree _r;
2894 1 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
2895 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 730, __FILE__, __LINE__, true);
2896 1 : return _r;
2897 : }
2898 0 : next_after_fail919:;
2899 : }
2900 : return NULL_TREE;
2901 : }
2902 :
2903 : tree
2904 2 : generic_simplify_535 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2905 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2906 : const enum tree_code ARG_UNUSED (op),
2907 : const enum tree_code ARG_UNUSED (logic))
2908 : {
2909 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2910 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail942;
2911 2 : {
2912 2 : tree res_op0;
2913 2 : res_op0 = captures[0];
2914 2 : tree res_op1;
2915 2 : res_op1 = captures[1];
2916 2 : tree _r;
2917 2 : _r = fold_build2_loc (loc, logic, type, res_op0, res_op1);
2918 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
2919 : return _r;
2920 : }
2921 0 : next_after_fail942:;
2922 0 : return NULL_TREE;
2923 : }
2924 :
2925 : tree
2926 6 : generic_simplify_542 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2927 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
2928 : {
2929 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2930 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail949;
2931 6 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail949;
2932 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail949;
2933 6 : {
2934 6 : tree _r;
2935 6 : _r = captures[2];
2936 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 532, __FILE__, __LINE__, true);
2937 : return _r;
2938 : }
2939 : next_after_fail949:;
2940 : return NULL_TREE;
2941 : }
2942 :
2943 : tree
2944 0 : generic_simplify_545 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2945 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2946 : const enum tree_code ARG_UNUSED (cmp))
2947 : {
2948 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2949 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail952;
2950 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail952;
2951 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail952;
2952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail952;
2953 0 : {
2954 0 : tree _r;
2955 0 : _r = captures[3];
2956 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
2957 : return _r;
2958 : }
2959 : next_after_fail952:;
2960 : return NULL_TREE;
2961 : }
2962 :
2963 : tree
2964 0 : generic_simplify_555 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2965 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2966 : const combined_fn ARG_UNUSED (cond_op))
2967 : {
2968 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2969 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail962;
2970 0 : {
2971 0 : tree res_op0;
2972 0 : {
2973 0 : tree _o1[2], _r1;
2974 0 : _o1[0] = captures[2];
2975 0 : _o1[1] = captures[0];
2976 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2977 0 : res_op0 = _r1;
2978 : }
2979 0 : tree res_op1;
2980 0 : res_op1 = captures[3];
2981 0 : tree res_op2;
2982 0 : res_op2 = captures[4];
2983 0 : tree res_op3;
2984 0 : res_op3 = captures[5];
2985 0 : tree _r;
2986 0 : _r = maybe_build_call_expr_loc (loc, cond_op, type, 4, res_op0, res_op1, res_op2, res_op3);
2987 0 : if (!_r)
2988 0 : goto next_after_fail962;
2989 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 756, __FILE__, __LINE__, true);
2990 : return _r;
2991 : }
2992 : next_after_fail962:;
2993 : return NULL_TREE;
2994 : }
2995 :
2996 : tree
2997 1 : generic_simplify_560 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2998 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2999 : {
3000 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3001 1 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), type)
3002 : )
3003 : {
3004 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail970;
3005 1 : {
3006 1 : tree res_op0;
3007 1 : {
3008 1 : tree _o1[1], _r1;
3009 1 : _o1[0] = captures[0];
3010 1 : if (TREE_TYPE (_o1[0]) != type)
3011 : {
3012 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3013 : }
3014 : else
3015 : _r1 = _o1[0];
3016 1 : res_op0 = _r1;
3017 : }
3018 1 : tree _r;
3019 1 : _r = non_lvalue_loc (loc, res_op0);
3020 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
3021 1 : return _r;
3022 : }
3023 0 : next_after_fail970:;
3024 : }
3025 : return NULL_TREE;
3026 : }
3027 :
3028 : tree
3029 0 : generic_simplify_570 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3030 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3031 : const combined_fn ARG_UNUSED (logs))
3032 : {
3033 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3034 0 : if (flag_unsafe_math_optimizations
3035 : )
3036 : {
3037 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3038 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
3039 0 : && ! flag_trapping_math
3040 0 : && ! flag_errno_math
3041 : )
3042 : {
3043 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail980;
3044 0 : {
3045 0 : tree res_op0;
3046 0 : {
3047 0 : tree _o1[1], _r1;
3048 0 : _o1[0] = captures[1];
3049 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3050 0 : if (!_r1)
3051 0 : goto next_after_fail980;
3052 0 : if (EXPR_P (_r1))
3053 0 : goto next_after_fail980;
3054 0 : res_op0 = _r1;
3055 : }
3056 0 : tree res_op1;
3057 0 : {
3058 0 : tree _o1[1], _r1;
3059 0 : _o1[0] = captures[2];
3060 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3061 0 : if (!_r1)
3062 0 : goto next_after_fail980;
3063 0 : res_op1 = _r1;
3064 : }
3065 0 : tree _r;
3066 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3067 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 774, __FILE__, __LINE__, true);
3068 0 : return _r;
3069 : }
3070 : next_after_fail980:;
3071 : }
3072 : }
3073 : return NULL_TREE;
3074 : }
3075 :
3076 : tree
3077 0 : generic_simplify_583 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3078 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3079 : const combined_fn ARG_UNUSED (froms),
3080 : const combined_fn ARG_UNUSED (tos))
3081 : {
3082 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3083 0 : if (optimize && canonicalize_math_p ()
3084 : )
3085 : {
3086 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail993;
3087 0 : {
3088 0 : tree res_op0;
3089 0 : res_op0 = captures[0];
3090 0 : tree _r;
3091 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3092 0 : if (!_r)
3093 0 : goto next_after_fail993;
3094 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 787, __FILE__, __LINE__, true);
3095 0 : return _r;
3096 : }
3097 : next_after_fail993:;
3098 : }
3099 : return NULL_TREE;
3100 : }
3101 :
3102 : tree
3103 0 : generic_simplify_591 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3104 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3105 : const combined_fn ARG_UNUSED (fmas))
3106 : {
3107 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3108 0 : if (canonicalize_math_after_vectorization_p ()
3109 : )
3110 : {
3111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1001;
3112 : {
3113 : tree res_op0;
3114 : res_op0 = captures[0];
3115 : tree res_op1;
3116 : res_op1 = captures[1];
3117 : tree res_op2;
3118 : res_op2 = captures[2];
3119 : tree _r;
3120 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3121 : if (!_r)
3122 : goto next_after_fail1001;
3123 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 795, __FILE__, __LINE__, true);
3124 : return _r;
3125 : }
3126 0 : next_after_fail1001:;
3127 : }
3128 0 : return NULL_TREE;
3129 : }
3130 :
3131 : tree
3132 0 : generic_simplify_601 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3133 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3134 : const combined_fn ARG_UNUSED (fmas))
3135 : {
3136 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3137 0 : if (canonicalize_math_after_vectorization_p ()
3138 : )
3139 : {
3140 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1011;
3141 : {
3142 : tree res_op0;
3143 : res_op0 = captures[0];
3144 : tree res_op1;
3145 : res_op1 = captures[1];
3146 : tree res_op2;
3147 : res_op2 = captures[2];
3148 : tree res_op3;
3149 : res_op3 = captures[3];
3150 : tree res_op4;
3151 : res_op4 = captures[4];
3152 : tree _r;
3153 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3154 : if (!_r)
3155 : goto next_after_fail1011;
3156 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 805, __FILE__, __LINE__, true);
3157 : return _r;
3158 : }
3159 0 : next_after_fail1011:;
3160 : }
3161 0 : return NULL_TREE;
3162 : }
3163 :
3164 : tree
3165 0 : generic_simplify_610 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3166 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3167 : const combined_fn ARG_UNUSED (ctz))
3168 : {
3169 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3170 0 : {
3171 0 : tree t = TREE_TYPE (captures[0]);
3172 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1020;
3173 0 : {
3174 0 : tree res_op0;
3175 0 : {
3176 0 : tree _o1[1], _r1;
3177 0 : _o1[0] = captures[1];
3178 0 : if (TREE_TYPE (_o1[0]) != t)
3179 : {
3180 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3181 : }
3182 : else
3183 : _r1 = _o1[0];
3184 0 : res_op0 = _r1;
3185 : }
3186 0 : tree _r;
3187 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3188 0 : if (!_r)
3189 0 : goto next_after_fail1020;
3190 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
3191 : return _r;
3192 : }
3193 : next_after_fail1020:;
3194 : }
3195 : return NULL_TREE;
3196 : }
3197 :
3198 : tree
3199 0 : generic_simplify_620 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3200 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3201 : const combined_fn ARG_UNUSED (bswap),
3202 : const combined_fn ARG_UNUSED (parity))
3203 : {
3204 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3205 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3206 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3207 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3208 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3209 : )
3210 : {
3211 0 : {
3212 0 : tree type0 = TREE_TYPE (captures[0]);
3213 0 : tree type1 = TREE_TYPE (captures[1]);
3214 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1031;
3215 0 : {
3216 0 : tree res_op0;
3217 0 : {
3218 0 : tree _o1[1], _r1;
3219 0 : {
3220 0 : tree _o2[1], _r2;
3221 0 : _o2[0] = captures[2];
3222 0 : if (TREE_TYPE (_o2[0]) != type1)
3223 : {
3224 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3225 : }
3226 : else
3227 : _r2 = _o2[0];
3228 0 : _o1[0] = _r2;
3229 : }
3230 0 : if (TREE_TYPE (_o1[0]) != type0)
3231 : {
3232 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3233 : }
3234 : else
3235 : _r1 = _o1[0];
3236 0 : res_op0 = _r1;
3237 : }
3238 0 : tree _r;
3239 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3240 0 : if (!_r)
3241 0 : goto next_after_fail1031;
3242 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
3243 0 : return _r;
3244 : }
3245 : next_after_fail1031:;
3246 : }
3247 : }
3248 : return NULL_TREE;
3249 : }
3250 :
3251 : tree
3252 800429573 : generic_simplify_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3253 : {
3254 800429573 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3255 800429573 : switch (TREE_CODE (_p0))
3256 : {
3257 734037 : case NEGATE_EXPR:
3258 734037 : {
3259 734037 : tree _q20 = TREE_OPERAND (_p0, 0);
3260 734037 : switch (TREE_CODE (_q20))
3261 : {
3262 405242 : CASE_CONVERT:
3263 405242 : {
3264 405242 : tree _q30 = TREE_OPERAND (_q20, 0);
3265 405242 : {
3266 405242 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3267 405242 : if (INTEGRAL_TYPE_P (type)
3268 404938 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
3269 401091 : && (TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3270 399994 : || TYPE_UNSIGNED (type))
3271 436705 : && TREE_CODE (type) != BOOLEAN_TYPE
3272 : )
3273 : {
3274 31463 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
3275 31463 : {
3276 31463 : tree res_op0;
3277 31463 : {
3278 31463 : tree _o1[1], _r1;
3279 31463 : _o1[0] = captures[2];
3280 31463 : if (TREE_TYPE (_o1[0]) != type)
3281 : {
3282 31421 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3283 : }
3284 : else
3285 : _r1 = _o1[0];
3286 31463 : res_op0 = _r1;
3287 : }
3288 31463 : tree _r;
3289 31463 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3290 31463 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
3291 31463 : return _r;
3292 : }
3293 0 : next_after_fail1045:;
3294 : }
3295 : }
3296 373779 : break;
3297 : }
3298 : default:;
3299 : }
3300 : break;
3301 : }
3302 1188830 : case BIT_AND_EXPR:
3303 1188830 : {
3304 1188830 : tree _q20 = TREE_OPERAND (_p0, 0);
3305 1188830 : tree _q21 = TREE_OPERAND (_p0, 1);
3306 1188830 : {
3307 1188830 : tree _q20_pops[1];
3308 1188830 : if (tree_nop_convert (_q20, _q20_pops))
3309 : {
3310 599366 : tree _q30 = _q20_pops[0];
3311 599366 : {
3312 599366 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3313 599366 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_AND_EXPR);
3314 599366 : if (res) return res;
3315 : }
3316 : }
3317 : }
3318 1188830 : {
3319 1188830 : tree _q21_pops[1];
3320 1188830 : if (tree_nop_convert (_q21, _q21_pops))
3321 : {
3322 512101 : tree _q40 = _q21_pops[0];
3323 512101 : {
3324 512101 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3325 512101 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_AND_EXPR);
3326 512101 : if (res) return res;
3327 : }
3328 : }
3329 : }
3330 1188830 : switch (TREE_CODE (_q20))
3331 : {
3332 670101 : CASE_CONVERT:
3333 670101 : {
3334 670101 : tree _q30 = TREE_OPERAND (_q20, 0);
3335 670101 : {
3336 670101 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3337 670101 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_AND_EXPR);
3338 670101 : if (res) return res;
3339 : }
3340 670101 : break;
3341 : }
3342 1188830 : default:;
3343 : }
3344 1188830 : switch (TREE_CODE (_q21))
3345 : {
3346 512882 : CASE_CONVERT:
3347 512882 : {
3348 512882 : tree _q40 = TREE_OPERAND (_q21, 0);
3349 512882 : {
3350 512882 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3351 512882 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_AND_EXPR);
3352 512882 : if (res) return res;
3353 : }
3354 512882 : break;
3355 : }
3356 : default:;
3357 : }
3358 : break;
3359 : }
3360 1137573 : case BIT_IOR_EXPR:
3361 1137573 : {
3362 1137573 : tree _q20 = TREE_OPERAND (_p0, 0);
3363 1137573 : tree _q21 = TREE_OPERAND (_p0, 1);
3364 1137573 : {
3365 1137573 : tree _q20_pops[1];
3366 1137573 : if (tree_nop_convert (_q20, _q20_pops))
3367 : {
3368 417206 : tree _q30 = _q20_pops[0];
3369 417206 : {
3370 417206 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3371 417206 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_IOR_EXPR);
3372 417206 : if (res) return res;
3373 : }
3374 : }
3375 : }
3376 1137573 : {
3377 1137573 : tree _q21_pops[1];
3378 1137573 : if (tree_nop_convert (_q21, _q21_pops))
3379 : {
3380 1065535 : tree _q40 = _q21_pops[0];
3381 1065535 : {
3382 1065535 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3383 1065535 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_IOR_EXPR);
3384 1065535 : if (res) return res;
3385 : }
3386 : }
3387 : }
3388 1137573 : switch (TREE_CODE (_q20))
3389 : {
3390 433876 : CASE_CONVERT:
3391 433876 : {
3392 433876 : tree _q30 = TREE_OPERAND (_q20, 0);
3393 433876 : {
3394 433876 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3395 433876 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_IOR_EXPR);
3396 433876 : if (res) return res;
3397 : }
3398 433876 : break;
3399 : }
3400 1137573 : default:;
3401 : }
3402 1137573 : switch (TREE_CODE (_q21))
3403 : {
3404 1073385 : CASE_CONVERT:
3405 1073385 : {
3406 1073385 : tree _q40 = TREE_OPERAND (_q21, 0);
3407 1073385 : {
3408 1073385 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3409 1073385 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_IOR_EXPR);
3410 1073385 : if (res) return res;
3411 : }
3412 1073385 : break;
3413 : }
3414 : default:;
3415 : }
3416 : break;
3417 : }
3418 585183 : case BIT_XOR_EXPR:
3419 585183 : {
3420 585183 : tree _q20 = TREE_OPERAND (_p0, 0);
3421 585183 : tree _q21 = TREE_OPERAND (_p0, 1);
3422 585183 : {
3423 585183 : tree _q20_pops[1];
3424 585183 : if (tree_nop_convert (_q20, _q20_pops))
3425 : {
3426 331397 : tree _q30 = _q20_pops[0];
3427 331397 : {
3428 331397 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3429 331397 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_XOR_EXPR);
3430 331397 : if (res) return res;
3431 : }
3432 : }
3433 : }
3434 585183 : {
3435 585183 : tree _q21_pops[1];
3436 585183 : if (tree_nop_convert (_q21, _q21_pops))
3437 : {
3438 468882 : tree _q40 = _q21_pops[0];
3439 468882 : {
3440 468882 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3441 468882 : tree res = generic_simplify_430 (loc, type, _p0, captures, BIT_XOR_EXPR);
3442 468882 : if (res) return res;
3443 : }
3444 : }
3445 : }
3446 585183 : switch (TREE_CODE (_q20))
3447 : {
3448 372697 : CASE_CONVERT:
3449 372697 : {
3450 372697 : tree _q30 = TREE_OPERAND (_q20, 0);
3451 372697 : {
3452 372697 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3453 372697 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_XOR_EXPR);
3454 372697 : if (res) return res;
3455 : }
3456 372697 : break;
3457 : }
3458 585183 : default:;
3459 : }
3460 585183 : switch (TREE_CODE (_q21))
3461 : {
3462 509171 : CASE_CONVERT:
3463 509171 : {
3464 509171 : tree _q40 = TREE_OPERAND (_q21, 0);
3465 509171 : {
3466 509171 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3467 509171 : tree res = generic_simplify_431 (loc, type, _p0, captures, BIT_XOR_EXPR);
3468 509171 : if (res) return res;
3469 : }
3470 509171 : break;
3471 : }
3472 : default:;
3473 : }
3474 : break;
3475 : }
3476 9144206 : case MULT_EXPR:
3477 9144206 : {
3478 9144206 : tree _q20 = TREE_OPERAND (_p0, 0);
3479 9144206 : tree _q21 = TREE_OPERAND (_p0, 1);
3480 9144206 : if (tree_zero_one_valued_p (_q20))
3481 : {
3482 54482 : switch (TREE_CODE (_q21))
3483 : {
3484 49005 : case INTEGER_CST:
3485 49005 : {
3486 49005 : {
3487 49005 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3488 49005 : if (INTEGRAL_TYPE_P (type)
3489 49005 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3490 49005 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
3491 49652 : && (TYPE_UNSIGNED (type) || TYPE_PRECISION (type) > 1)
3492 : )
3493 : {
3494 647 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
3495 647 : {
3496 647 : tree res_op0;
3497 647 : {
3498 647 : tree _o1[1], _r1;
3499 647 : _o1[0] = captures[1];
3500 647 : if (TREE_TYPE (_o1[0]) != type)
3501 : {
3502 647 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3503 : }
3504 : else
3505 : _r1 = _o1[0];
3506 647 : res_op0 = _r1;
3507 : }
3508 647 : tree res_op1;
3509 647 : {
3510 647 : tree _o1[1], _r1;
3511 647 : _o1[0] = captures[2];
3512 647 : if (TREE_TYPE (_o1[0]) != type)
3513 : {
3514 647 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3515 : }
3516 : else
3517 : _r1 = _o1[0];
3518 647 : res_op1 = _r1;
3519 : }
3520 647 : tree _r;
3521 647 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3522 647 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 833, __FILE__, __LINE__, true);
3523 647 : return _r;
3524 : }
3525 0 : next_after_fail1046:;
3526 : }
3527 : }
3528 48358 : break;
3529 : }
3530 : default:;
3531 : }
3532 : }
3533 : break;
3534 : }
3535 1142245 : case POINTER_DIFF_EXPR:
3536 1142245 : {
3537 1142245 : tree _q20 = TREE_OPERAND (_p0, 0);
3538 1142245 : tree _q21 = TREE_OPERAND (_p0, 1);
3539 1142245 : switch (TREE_CODE (_q21))
3540 : {
3541 200 : case INTEGER_CST:
3542 200 : {
3543 200 : {
3544 200 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3545 200 : if (POINTER_TYPE_P (type)
3546 : )
3547 : {
3548 18 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1047;
3549 18 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1047;
3550 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1047;
3551 18 : {
3552 18 : tree _r;
3553 18 : _r = build_fold_addr_expr_with_type
3554 : (build2 (MEM_REF, char_type_node, captures[0],
3555 : wide_int_to_tree (ptr_type_node, wi::neg (wi::to_wide (captures[1])))),
3556 : type);
3557 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 834, __FILE__, __LINE__, true);
3558 18 : return _r;
3559 : }
3560 182 : next_after_fail1047:;
3561 : }
3562 : }
3563 182 : break;
3564 : }
3565 : default:;
3566 : }
3567 : break;
3568 : }
3569 206316 : case EQ_EXPR:
3570 206316 : {
3571 206316 : tree _q20 = TREE_OPERAND (_p0, 0);
3572 206316 : tree _q21 = TREE_OPERAND (_p0, 1);
3573 206316 : if (tree_zero_one_valued_p (_q20))
3574 : {
3575 1500 : switch (TREE_CODE (_q21))
3576 : {
3577 617 : case INTEGER_CST:
3578 617 : {
3579 617 : {
3580 617 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3581 617 : tree res = generic_simplify_432 (loc, type, _p0, captures, EQ_EXPR);
3582 617 : if (res) return res;
3583 : }
3584 570 : break;
3585 : }
3586 : default:;
3587 : }
3588 : }
3589 : break;
3590 : }
3591 261241 : case NE_EXPR:
3592 261241 : {
3593 261241 : tree _q20 = TREE_OPERAND (_p0, 0);
3594 261241 : tree _q21 = TREE_OPERAND (_p0, 1);
3595 261241 : if (tree_zero_one_valued_p (_q20))
3596 : {
3597 1866 : switch (TREE_CODE (_q21))
3598 : {
3599 1540 : case INTEGER_CST:
3600 1540 : {
3601 1540 : {
3602 1540 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3603 1540 : tree res = generic_simplify_432 (loc, type, _p0, captures, NE_EXPR);
3604 1540 : if (res) return res;
3605 : }
3606 1 : break;
3607 : }
3608 : default:;
3609 : }
3610 : }
3611 : break;
3612 : }
3613 1999 : case MIN_EXPR:
3614 1999 : {
3615 1999 : tree _q20 = TREE_OPERAND (_p0, 0);
3616 1999 : tree _q21 = TREE_OPERAND (_p0, 1);
3617 1999 : switch (TREE_CODE (_q20))
3618 : {
3619 733 : CASE_CONVERT:
3620 733 : {
3621 733 : tree _q30 = TREE_OPERAND (_q20, 0);
3622 733 : switch (TREE_CODE (_q21))
3623 : {
3624 47 : CASE_CONVERT:
3625 47 : {
3626 47 : tree _q50 = TREE_OPERAND (_q21, 0);
3627 47 : {
3628 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3629 47 : tree res = generic_simplify_433 (loc, type, _p0, captures, MIN_EXPR);
3630 47 : if (res) return res;
3631 : }
3632 47 : {
3633 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3634 47 : tree res = generic_simplify_433 (loc, type, _p0, captures, MIN_EXPR);
3635 47 : if (res) return res;
3636 : }
3637 47 : break;
3638 : }
3639 659 : case INTEGER_CST:
3640 659 : {
3641 659 : {
3642 659 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3643 659 : tree res = generic_simplify_434 (loc, type, _p0, captures, MIN_EXPR);
3644 659 : if (res) return res;
3645 : }
3646 659 : break;
3647 : }
3648 : default:;
3649 : }
3650 : break;
3651 : }
3652 : default:;
3653 : }
3654 : break;
3655 : }
3656 305352 : case MAX_EXPR:
3657 305352 : {
3658 305352 : tree _q20 = TREE_OPERAND (_p0, 0);
3659 305352 : tree _q21 = TREE_OPERAND (_p0, 1);
3660 305352 : switch (TREE_CODE (_q20))
3661 : {
3662 6724 : CASE_CONVERT:
3663 6724 : {
3664 6724 : tree _q30 = TREE_OPERAND (_q20, 0);
3665 6724 : switch (TREE_CODE (_q21))
3666 : {
3667 0 : CASE_CONVERT:
3668 0 : {
3669 0 : tree _q50 = TREE_OPERAND (_q21, 0);
3670 0 : {
3671 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3672 0 : tree res = generic_simplify_433 (loc, type, _p0, captures, MAX_EXPR);
3673 0 : if (res) return res;
3674 : }
3675 0 : {
3676 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3677 0 : tree res = generic_simplify_433 (loc, type, _p0, captures, MAX_EXPR);
3678 0 : if (res) return res;
3679 : }
3680 0 : break;
3681 : }
3682 6688 : case INTEGER_CST:
3683 6688 : {
3684 6688 : {
3685 6688 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3686 6688 : tree res = generic_simplify_434 (loc, type, _p0, captures, MAX_EXPR);
3687 6688 : if (res) return res;
3688 : }
3689 6688 : break;
3690 : }
3691 : default:;
3692 : }
3693 : break;
3694 : }
3695 : default:;
3696 : }
3697 : break;
3698 : }
3699 464433 : case LSHIFT_EXPR:
3700 464433 : {
3701 464433 : tree _q20 = TREE_OPERAND (_p0, 0);
3702 464433 : tree _q21 = TREE_OPERAND (_p0, 1);
3703 464433 : switch (TREE_CODE (_q21))
3704 : {
3705 141062 : case INTEGER_CST:
3706 141062 : {
3707 141062 : {
3708 141062 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3709 141062 : if (INTEGRAL_TYPE_P (type)
3710 141035 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3711 141035 : && !integer_zerop (captures[2])
3712 281324 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3713 : )
3714 : {
3715 138979 : if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3716 138979 : || wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (type))
3717 : )
3718 : {
3719 138671 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1048;
3720 138671 : {
3721 138671 : tree res_op0;
3722 138671 : {
3723 138671 : tree _o1[1], _r1;
3724 138671 : _o1[0] = captures[1];
3725 138671 : if (TREE_TYPE (_o1[0]) != type)
3726 : {
3727 129597 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3728 : }
3729 : else
3730 : _r1 = _o1[0];
3731 138671 : res_op0 = _r1;
3732 : }
3733 138671 : tree res_op1;
3734 138671 : res_op1 = captures[2];
3735 138671 : tree _r;
3736 138671 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
3737 138671 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 835, __FILE__, __LINE__, true);
3738 138671 : return _r;
3739 : }
3740 0 : next_after_fail1048:;
3741 : }
3742 : else
3743 : {
3744 308 : if (wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])))
3745 : )
3746 : {
3747 259 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1049;
3748 259 : {
3749 259 : tree _r;
3750 259 : _r = build_zero_cst (type);
3751 259 : if (TREE_SIDE_EFFECTS (captures[1]))
3752 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3753 259 : if (TREE_SIDE_EFFECTS (captures[2]))
3754 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3755 259 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 836, __FILE__, __LINE__, true);
3756 259 : return _r;
3757 : }
3758 0 : next_after_fail1049:;
3759 : }
3760 : }
3761 : }
3762 : }
3763 2132 : break;
3764 : }
3765 : default:;
3766 : }
3767 : break;
3768 : }
3769 800256929 : default:;
3770 : }
3771 800256929 : {
3772 800256929 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3773 1600513858 : if ((
3774 :
3775 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3776 : || (
3777 : 1
3778 800256929 : && type == TREE_TYPE (captures[0]))
3779 : )
3780 : {
3781 45761011 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1050;
3782 45761011 : {
3783 45761011 : tree _r;
3784 45761011 : _r = captures[0];
3785 45761011 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 837, __FILE__, __LINE__, true);
3786 45761011 : return _r;
3787 : }
3788 0 : next_after_fail1050:;
3789 : }
3790 : }
3791 754495918 : switch (TREE_CODE (_p0))
3792 : {
3793 120867718 : CASE_CONVERT:
3794 120867718 : {
3795 120867718 : tree _q20 = TREE_OPERAND (_p0, 0);
3796 120867718 : {
3797 120867718 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3798 120867718 : {
3799 120867718 : tree inside_type = TREE_TYPE (captures[1]);
3800 120867718 : tree inter_type = TREE_TYPE (captures[0]);
3801 120867718 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3802 120867718 : int inside_ptr = POINTER_TYPE_P (inside_type);
3803 120867718 : int inside_float = FLOAT_TYPE_P (inside_type);
3804 120867718 : int inside_vec = VECTOR_TYPE_P (inside_type);
3805 120867718 : unsigned int inside_prec = element_precision (inside_type);
3806 120867718 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3807 120867718 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3808 120867718 : int inter_ptr = POINTER_TYPE_P (inter_type);
3809 120867718 : int inter_float = FLOAT_TYPE_P (inter_type);
3810 120867718 : int inter_vec = VECTOR_TYPE_P (inter_type);
3811 120867718 : unsigned int inter_prec = element_precision (inter_type);
3812 120867718 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3813 120867718 : int final_int = INTEGRAL_TYPE_P (type);
3814 120867718 : int final_ptr = POINTER_TYPE_P (type);
3815 120867718 : int final_float = FLOAT_TYPE_P (type);
3816 120867718 : int final_vec = VECTOR_TYPE_P (type);
3817 120867718 : unsigned int final_prec = element_precision (type);
3818 120867718 : int final_unsignedp = TYPE_UNSIGNED (type);
3819 120867718 : if (((
3820 :
3821 : && useless_type_conversion_p (type, inside_type))
3822 : || (
3823 : 1
3824 120867718 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3825 19993005 : && (((inter_int || inter_ptr) && final_int)
3826 15752224 : || (inter_float && final_float))
3827 125189293 : && inter_prec >= final_prec
3828 : )
3829 : {
3830 3797013 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1051;
3831 3797013 : {
3832 3797013 : tree res_op0;
3833 3797013 : res_op0 = captures[1];
3834 3797013 : tree _r;
3835 3797013 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3836 3797013 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
3837 3797013 : return _r;
3838 : }
3839 0 : next_after_fail1051:;
3840 : }
3841 : else
3842 : {
3843 117070705 : if (((inter_int && inside_int) || (inter_float && inside_float))
3844 12730142 : && (final_int || final_float)
3845 12585360 : && inter_prec >= inside_prec
3846 11283185 : && (inter_float || inter_unsignedp == inside_unsignedp)
3847 : )
3848 : {
3849 7739155 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1052;
3850 7739155 : {
3851 7739155 : tree res_op0;
3852 7739155 : res_op0 = captures[1];
3853 7739155 : tree _r;
3854 7739155 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3855 7739155 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 839, __FILE__, __LINE__, true);
3856 7739155 : return _r;
3857 : }
3858 0 : next_after_fail1052:;
3859 0 : }
3860 : else
3861 : {
3862 109331550 : if (inside_int && inter_int && final_int
3863 4839910 : && ((inside_prec < inter_prec && inter_prec < final_prec
3864 193659 : && inside_unsignedp && !inter_unsignedp)
3865 4673026 : || final_prec == inter_prec
3866 2325599 : || (inside_prec < inter_prec && inter_prec > final_prec
3867 175869 : && !inside_unsignedp && inter_unsignedp))
3868 : )
3869 : {
3870 2602959 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1053;
3871 2602959 : {
3872 2602959 : tree res_op0;
3873 2602959 : res_op0 = captures[1];
3874 2602959 : tree _r;
3875 2602959 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3876 2602959 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
3877 2602959 : return _r;
3878 : }
3879 0 : next_after_fail1053:;
3880 0 : }
3881 : else
3882 : {
3883 106728591 : if (! inside_float && ! inter_float && ! final_float
3884 : && ! inside_vec && ! inter_vec && ! final_vec
3885 106722292 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3886 105988364 : && ! (inside_int && inter_int
3887 1647801 : && inter_unsignedp != inside_unsignedp
3888 1647801 : && inter_prec < final_prec)
3889 104656397 : && ((inter_unsignedp && inter_prec > inside_prec)
3890 104656397 : == (final_unsignedp && final_prec > inter_prec))
3891 104633455 : && ! (inside_ptr && inter_prec != final_prec)
3892 104195479 : && ! (final_ptr && inside_prec != inter_prec)
3893 : )
3894 : {
3895 104174621 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1054;
3896 104174621 : {
3897 104174621 : tree res_op0;
3898 104174621 : res_op0 = captures[1];
3899 104174621 : tree _r;
3900 104174621 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3901 104174621 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
3902 104174621 : return _r;
3903 : }
3904 0 : next_after_fail1054:;
3905 0 : }
3906 : else
3907 : {
3908 2553970 : if (inside_int && inter_int && final_int
3909 2095613 : && final_prec <= inside_prec
3910 674375 : && inter_prec >= inside_prec
3911 : )
3912 : {
3913 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1055;
3914 0 : {
3915 0 : tree res_op0;
3916 0 : res_op0 = captures[1];
3917 0 : tree _r;
3918 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3919 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3920 0 : return _r;
3921 : }
3922 0 : next_after_fail1055:;
3923 0 : }
3924 : else
3925 : {
3926 : if (0
3927 : && final_int && inter_int && inside_int
3928 : && final_prec >= inside_prec
3929 : && inside_prec > inter_prec
3930 : && inter_unsignedp
3931 : )
3932 : {
3933 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1056;
3934 : {
3935 : tree res_op0;
3936 : {
3937 : tree _o1[2], _r1;
3938 : _o1[0] = captures[1];
3939 : _o1[1] = wide_int_to_tree
3940 : (inside_type,
3941 : wi::mask (inter_prec, false,
3942 : TYPE_PRECISION (inside_type)));
3943 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3944 : res_op0 = _r1;
3945 : }
3946 : tree _r;
3947 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3948 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3949 : return _r;
3950 : }
3951 : next_after_fail1056:;
3952 : }
3953 : else
3954 : {
3955 : if (0
3956 : && inside_int && inter_float && final_int &&
3957 : (unsigned) significand_size (TYPE_MODE (inter_type))
3958 : >= inside_prec - !inside_unsignedp
3959 : )
3960 : {
3961 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1057;
3962 : {
3963 : tree res_op0;
3964 : res_op0 = captures[1];
3965 : tree _r;
3966 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3967 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3968 : return _r;
3969 : }
3970 : next_after_fail1057:;
3971 : }
3972 : }
3973 : }
3974 : }
3975 : }
3976 : }
3977 : }
3978 : }
3979 : }
3980 2553970 : break;
3981 : }
3982 3065 : case FLOAT_EXPR:
3983 3065 : {
3984 3065 : tree _q20 = TREE_OPERAND (_p0, 0);
3985 3065 : {
3986 3065 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3987 3065 : {
3988 3065 : tree inside_type = TREE_TYPE (captures[1]);
3989 3065 : tree inter_type = TREE_TYPE (captures[0]);
3990 3065 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3991 3065 : int inside_ptr = POINTER_TYPE_P (inside_type);
3992 3065 : int inside_float = FLOAT_TYPE_P (inside_type);
3993 3065 : int inside_vec = VECTOR_TYPE_P (inside_type);
3994 3065 : unsigned int inside_prec = element_precision (inside_type);
3995 3065 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3996 3065 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3997 3065 : int inter_ptr = POINTER_TYPE_P (inter_type);
3998 3065 : int inter_float = FLOAT_TYPE_P (inter_type);
3999 3065 : int inter_vec = VECTOR_TYPE_P (inter_type);
4000 3065 : unsigned int inter_prec = element_precision (inter_type);
4001 3065 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
4002 3065 : int final_int = INTEGRAL_TYPE_P (type);
4003 3065 : int final_ptr = POINTER_TYPE_P (type);
4004 3065 : int final_float = FLOAT_TYPE_P (type);
4005 3065 : int final_vec = VECTOR_TYPE_P (type);
4006 3065 : unsigned int final_prec = element_precision (type);
4007 3065 : int final_unsignedp = TYPE_UNSIGNED (type);
4008 3065 : if (((
4009 :
4010 : && useless_type_conversion_p (type, inside_type))
4011 : || (
4012 : 1
4013 3065 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
4014 0 : && (((inter_int || inter_ptr) && final_int)
4015 0 : || (inter_float && final_float))
4016 3065 : && inter_prec >= final_prec
4017 : )
4018 : {
4019 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1058;
4020 0 : {
4021 0 : tree res_op0;
4022 0 : res_op0 = captures[1];
4023 0 : tree _r;
4024 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4025 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
4026 0 : return _r;
4027 : }
4028 0 : next_after_fail1058:;
4029 : }
4030 : else
4031 : {
4032 3065 : if (((inter_int && inside_int) || (inter_float && inside_float))
4033 0 : && (final_int || final_float)
4034 0 : && inter_prec >= inside_prec
4035 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
4036 : )
4037 : {
4038 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1059;
4039 0 : {
4040 0 : tree res_op0;
4041 0 : res_op0 = captures[1];
4042 0 : tree _r;
4043 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 839, __FILE__, __LINE__, true);
4045 0 : return _r;
4046 : }
4047 0 : next_after_fail1059:;
4048 0 : }
4049 : else
4050 : {
4051 3065 : if (inside_int && inter_int && final_int
4052 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
4053 0 : && inside_unsignedp && !inter_unsignedp)
4054 0 : || final_prec == inter_prec
4055 0 : || (inside_prec < inter_prec && inter_prec > final_prec
4056 0 : && !inside_unsignedp && inter_unsignedp))
4057 : )
4058 : {
4059 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1060;
4060 0 : {
4061 0 : tree res_op0;
4062 0 : res_op0 = captures[1];
4063 0 : tree _r;
4064 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4065 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
4066 0 : return _r;
4067 : }
4068 0 : next_after_fail1060:;
4069 0 : }
4070 : else
4071 : {
4072 3065 : if (! inside_float && ! inter_float && ! final_float
4073 : && ! inside_vec && ! inter_vec && ! final_vec
4074 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
4075 0 : && ! (inside_int && inter_int
4076 0 : && inter_unsignedp != inside_unsignedp
4077 0 : && inter_prec < final_prec)
4078 0 : && ((inter_unsignedp && inter_prec > inside_prec)
4079 0 : == (final_unsignedp && final_prec > inter_prec))
4080 0 : && ! (inside_ptr && inter_prec != final_prec)
4081 0 : && ! (final_ptr && inside_prec != inter_prec)
4082 : )
4083 : {
4084 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1061;
4085 0 : {
4086 0 : tree res_op0;
4087 0 : res_op0 = captures[1];
4088 0 : tree _r;
4089 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4090 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
4091 0 : return _r;
4092 : }
4093 0 : next_after_fail1061:;
4094 0 : }
4095 : else
4096 : {
4097 3065 : if (inside_int && inter_int && final_int
4098 0 : && final_prec <= inside_prec
4099 0 : && inter_prec >= inside_prec
4100 : )
4101 : {
4102 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1062;
4103 0 : {
4104 0 : tree res_op0;
4105 0 : res_op0 = captures[1];
4106 0 : tree _r;
4107 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4108 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
4109 0 : return _r;
4110 : }
4111 0 : next_after_fail1062:;
4112 0 : }
4113 : else
4114 : {
4115 : if (0
4116 : && final_int && inter_int && inside_int
4117 : && final_prec >= inside_prec
4118 : && inside_prec > inter_prec
4119 : && inter_unsignedp
4120 : )
4121 : {
4122 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1063;
4123 : {
4124 : tree res_op0;
4125 : {
4126 : tree _o1[2], _r1;
4127 : _o1[0] = captures[1];
4128 : _o1[1] = wide_int_to_tree
4129 : (inside_type,
4130 : wi::mask (inter_prec, false,
4131 : TYPE_PRECISION (inside_type)));
4132 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4133 : res_op0 = _r1;
4134 : }
4135 : tree _r;
4136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4137 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
4138 : return _r;
4139 : }
4140 : next_after_fail1063:;
4141 : }
4142 : else
4143 : {
4144 : if (0
4145 : && inside_int && inter_float && final_int &&
4146 : (unsigned) significand_size (TYPE_MODE (inter_type))
4147 : >= inside_prec - !inside_unsignedp
4148 : )
4149 : {
4150 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1064;
4151 : {
4152 : tree res_op0;
4153 : res_op0 = captures[1];
4154 : tree _r;
4155 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4156 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
4157 : return _r;
4158 : }
4159 : next_after_fail1064:;
4160 : }
4161 : }
4162 : }
4163 : }
4164 : }
4165 : }
4166 : }
4167 : }
4168 : }
4169 3065 : break;
4170 : }
4171 832750 : case BIT_AND_EXPR:
4172 832750 : {
4173 832750 : tree _q20 = TREE_OPERAND (_p0, 0);
4174 832750 : tree _q21 = TREE_OPERAND (_p0, 1);
4175 832750 : switch (TREE_CODE (_q21))
4176 : {
4177 211088 : case INTEGER_CST:
4178 211088 : {
4179 211088 : {
4180 211088 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4181 211088 : if (INTEGRAL_TYPE_P (type)
4182 210580 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4183 210580 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
4184 355601 : && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]),
4185 144513 : TYPE_PRECISION (type)), 0)
4186 : )
4187 : {
4188 12617 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1065;
4189 12617 : {
4190 12617 : tree res_op0;
4191 12617 : res_op0 = captures[0];
4192 12617 : tree _r;
4193 12617 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4194 12617 : if (TREE_SIDE_EFFECTS (captures[1]))
4195 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4196 12617 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
4197 12617 : return _r;
4198 : }
4199 0 : next_after_fail1065:;
4200 : }
4201 : }
4202 198471 : break;
4203 : }
4204 : default:;
4205 : }
4206 : break;
4207 : }
4208 5 : case VEC_COND_EXPR:
4209 5 : {
4210 5 : tree _q20 = TREE_OPERAND (_p0, 0);
4211 5 : tree _q21 = TREE_OPERAND (_p0, 1);
4212 5 : tree _q22 = TREE_OPERAND (_p0, 2);
4213 5 : {
4214 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4215 5 : if (VECTOR_TYPE_P (type)
4216 0 : && types_match (TREE_TYPE (captures[1]), truth_type_for (type))
4217 5 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4218 0 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
4219 : )
4220 : {
4221 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1066;
4222 0 : {
4223 0 : tree res_op0;
4224 0 : res_op0 = captures[1];
4225 0 : tree res_op1;
4226 0 : {
4227 0 : tree _o1[1], _r1;
4228 0 : _o1[0] = captures[2];
4229 0 : if (TREE_TYPE (_o1[0]) != type)
4230 : {
4231 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4232 0 : if (EXPR_P (_r1))
4233 0 : goto next_after_fail1066;
4234 : }
4235 : else
4236 : _r1 = _o1[0];
4237 0 : res_op1 = _r1;
4238 : }
4239 0 : tree res_op2;
4240 0 : {
4241 0 : tree _o1[1], _r1;
4242 0 : _o1[0] = captures[3];
4243 0 : if (TREE_TYPE (_o1[0]) != type)
4244 : {
4245 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4246 0 : if (EXPR_P (_r1))
4247 0 : goto next_after_fail1066;
4248 : }
4249 : else
4250 : _r1 = _o1[0];
4251 0 : res_op2 = _r1;
4252 : }
4253 0 : tree _r;
4254 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4255 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
4256 0 : return _r;
4257 : }
4258 5 : next_after_fail1066:;
4259 : }
4260 : }
4261 5 : break;
4262 : }
4263 610928 : case COND_EXPR:
4264 610928 : {
4265 610928 : tree _q20 = TREE_OPERAND (_p0, 0);
4266 610928 : tree _q21 = TREE_OPERAND (_p0, 1);
4267 610928 : tree _q22 = TREE_OPERAND (_p0, 2);
4268 610928 : switch (TREE_CODE (_q21))
4269 : {
4270 175793 : case INTEGER_CST:
4271 175793 : {
4272 175793 : switch (TREE_CODE (_q22))
4273 : {
4274 110778 : case INTEGER_CST:
4275 110778 : {
4276 110778 : {
4277 110778 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4278 110778 : if (INTEGRAL_TYPE_P (type)
4279 110778 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4280 : )
4281 : {
4282 110778 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1067;
4283 110778 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1067;
4284 110778 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1067;
4285 110778 : {
4286 110778 : tree res_op0;
4287 110778 : res_op0 = captures[1];
4288 110778 : tree res_op1;
4289 110778 : {
4290 110778 : tree _o1[1], _r1;
4291 110778 : _o1[0] = captures[2];
4292 110778 : if (TREE_TYPE (_o1[0]) != type)
4293 : {
4294 110778 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4295 : }
4296 : else
4297 : _r1 = _o1[0];
4298 110778 : res_op1 = _r1;
4299 : }
4300 110778 : tree res_op2;
4301 110778 : {
4302 110778 : tree _o1[1], _r1;
4303 110778 : _o1[0] = captures[3];
4304 110778 : if (TREE_TYPE (_o1[0]) != type)
4305 : {
4306 110778 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4307 : }
4308 : else
4309 : _r1 = _o1[0];
4310 110778 : res_op2 = _r1;
4311 : }
4312 110778 : tree _r;
4313 110778 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4314 110778 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
4315 110778 : return _r;
4316 : }
4317 0 : next_after_fail1067:;
4318 : }
4319 : }
4320 0 : break;
4321 : }
4322 : default:;
4323 : }
4324 : break;
4325 : }
4326 : default:;
4327 : }
4328 : break;
4329 : }
4330 10468184 : case PLUS_EXPR:
4331 10468184 : {
4332 10468184 : tree _q20 = TREE_OPERAND (_p0, 0);
4333 10468184 : tree _q21 = TREE_OPERAND (_p0, 1);
4334 10468184 : switch (TREE_CODE (_q20))
4335 : {
4336 3798275 : CASE_CONVERT:
4337 3798275 : {
4338 3798275 : tree _q30 = TREE_OPERAND (_q20, 0);
4339 3798275 : switch (TREE_CODE (_q21))
4340 : {
4341 296044 : CASE_CONVERT:
4342 296044 : {
4343 296044 : tree _q50 = TREE_OPERAND (_q21, 0);
4344 296044 : {
4345 296044 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4346 296044 : tree res = generic_simplify_435 (loc, type, _p0, captures, PLUS_EXPR);
4347 296044 : if (res) return res;
4348 : }
4349 295988 : break;
4350 : }
4351 3798219 : default:;
4352 : }
4353 3798219 : {
4354 3798219 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4355 3798219 : tree res = generic_simplify_436 (loc, type, _p0, captures, PLUS_EXPR);
4356 3798219 : if (res) return res;
4357 : }
4358 3783288 : break;
4359 : }
4360 10453197 : default:;
4361 : }
4362 10453197 : switch (TREE_CODE (_q21))
4363 : {
4364 1089531 : CASE_CONVERT:
4365 1089531 : {
4366 1089531 : tree _q40 = TREE_OPERAND (_q21, 0);
4367 1089531 : {
4368 1089531 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4369 1089531 : tree res = generic_simplify_437 (loc, type, _p0, captures, PLUS_EXPR);
4370 1089531 : if (res) return res;
4371 : }
4372 1089531 : break;
4373 : }
4374 10453197 : default:;
4375 : }
4376 10453197 : {
4377 10453197 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4378 10453197 : tree res = generic_simplify_438 (loc, type, _p0, captures, PLUS_EXPR);
4379 10453197 : if (res) return res;
4380 : }
4381 10453163 : break;
4382 : }
4383 884562 : case MINUS_EXPR:
4384 884562 : {
4385 884562 : tree _q20 = TREE_OPERAND (_p0, 0);
4386 884562 : tree _q21 = TREE_OPERAND (_p0, 1);
4387 884562 : switch (TREE_CODE (_q20))
4388 : {
4389 315571 : CASE_CONVERT:
4390 315571 : {
4391 315571 : tree _q30 = TREE_OPERAND (_q20, 0);
4392 315571 : switch (TREE_CODE (_q21))
4393 : {
4394 169104 : CASE_CONVERT:
4395 169104 : {
4396 169104 : tree _q50 = TREE_OPERAND (_q21, 0);
4397 169104 : {
4398 169104 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4399 169104 : tree res = generic_simplify_435 (loc, type, _p0, captures, MINUS_EXPR);
4400 169104 : if (res) return res;
4401 : }
4402 169075 : break;
4403 : }
4404 315542 : default:;
4405 : }
4406 315542 : {
4407 315542 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4408 315542 : tree res = generic_simplify_436 (loc, type, _p0, captures, MINUS_EXPR);
4409 315542 : if (res) return res;
4410 : }
4411 314422 : break;
4412 : }
4413 883413 : default:;
4414 : }
4415 883413 : switch (TREE_CODE (_q21))
4416 : {
4417 225308 : CASE_CONVERT:
4418 225308 : {
4419 225308 : tree _q40 = TREE_OPERAND (_q21, 0);
4420 225308 : {
4421 225308 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4422 225308 : tree res = generic_simplify_437 (loc, type, _p0, captures, MINUS_EXPR);
4423 225308 : if (res) return res;
4424 : }
4425 225298 : break;
4426 : }
4427 883403 : default:;
4428 : }
4429 883403 : {
4430 883403 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4431 883403 : tree res = generic_simplify_438 (loc, type, _p0, captures, MINUS_EXPR);
4432 883403 : if (res) return res;
4433 : }
4434 883371 : break;
4435 : }
4436 8947833 : case MULT_EXPR:
4437 8947833 : {
4438 8947833 : tree _q20 = TREE_OPERAND (_p0, 0);
4439 8947833 : tree _q21 = TREE_OPERAND (_p0, 1);
4440 8947833 : switch (TREE_CODE (_q20))
4441 : {
4442 4073831 : CASE_CONVERT:
4443 4073831 : {
4444 4073831 : tree _q30 = TREE_OPERAND (_q20, 0);
4445 4073831 : switch (TREE_CODE (_q21))
4446 : {
4447 339091 : CASE_CONVERT:
4448 339091 : {
4449 339091 : tree _q50 = TREE_OPERAND (_q21, 0);
4450 339091 : {
4451 339091 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4452 339091 : tree res = generic_simplify_435 (loc, type, _p0, captures, MULT_EXPR);
4453 339091 : if (res) return res;
4454 : }
4455 339091 : break;
4456 : }
4457 4073831 : default:;
4458 : }
4459 4073831 : {
4460 4073831 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4461 4073831 : tree res = generic_simplify_436 (loc, type, _p0, captures, MULT_EXPR);
4462 4073831 : if (res) return res;
4463 : }
4464 4073710 : break;
4465 : }
4466 8947712 : default:;
4467 : }
4468 8947712 : switch (TREE_CODE (_q21))
4469 : {
4470 741467 : CASE_CONVERT:
4471 741467 : {
4472 741467 : tree _q40 = TREE_OPERAND (_q21, 0);
4473 741467 : {
4474 741467 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4475 741467 : tree res = generic_simplify_437 (loc, type, _p0, captures, MULT_EXPR);
4476 741467 : if (res) return res;
4477 : }
4478 741467 : break;
4479 : }
4480 8947712 : default:;
4481 : }
4482 8947712 : {
4483 8947712 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4484 8947712 : tree res = generic_simplify_438 (loc, type, _p0, captures, MULT_EXPR);
4485 8947712 : if (res) return res;
4486 : }
4487 8947679 : break;
4488 : }
4489 3073 : case RDIV_EXPR:
4490 3073 : {
4491 3073 : tree _q20 = TREE_OPERAND (_p0, 0);
4492 3073 : tree _q21 = TREE_OPERAND (_p0, 1);
4493 3073 : switch (TREE_CODE (_q20))
4494 : {
4495 975 : CASE_CONVERT:
4496 975 : {
4497 975 : tree _q30 = TREE_OPERAND (_q20, 0);
4498 975 : switch (TREE_CODE (_q21))
4499 : {
4500 668 : CASE_CONVERT:
4501 668 : {
4502 668 : tree _q50 = TREE_OPERAND (_q21, 0);
4503 668 : {
4504 668 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4505 668 : tree res = generic_simplify_435 (loc, type, _p0, captures, RDIV_EXPR);
4506 668 : if (res) return res;
4507 : }
4508 667 : break;
4509 : }
4510 974 : default:;
4511 : }
4512 974 : {
4513 974 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4514 974 : tree res = generic_simplify_436 (loc, type, _p0, captures, RDIV_EXPR);
4515 974 : if (res) return res;
4516 : }
4517 972 : break;
4518 : }
4519 3070 : default:;
4520 : }
4521 3070 : switch (TREE_CODE (_q21))
4522 : {
4523 1657 : CASE_CONVERT:
4524 1657 : {
4525 1657 : tree _q40 = TREE_OPERAND (_q21, 0);
4526 1657 : {
4527 1657 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4528 1657 : tree res = generic_simplify_437 (loc, type, _p0, captures, RDIV_EXPR);
4529 1657 : if (res) return res;
4530 : }
4531 1012 : break;
4532 : }
4533 2425 : default:;
4534 : }
4535 2425 : {
4536 2425 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4537 2425 : tree res = generic_simplify_438 (loc, type, _p0, captures, RDIV_EXPR);
4538 2425 : if (res) return res;
4539 : }
4540 2383 : break;
4541 : }
4542 686957 : case NEGATE_EXPR:
4543 686957 : {
4544 686957 : tree _q20 = TREE_OPERAND (_p0, 0);
4545 686957 : {
4546 686957 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4547 686957 : tree res = generic_simplify_439 (loc, type, _p0, captures);
4548 686957 : if (res) return res;
4549 : }
4550 686935 : break;
4551 : }
4552 : default:;
4553 : }
4554 : return NULL_TREE;
4555 : }
4556 :
4557 : tree
4558 7100 : 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)
4559 : {
4560 7100 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4561 7100 : if (integer_onep (_p1))
4562 : {
4563 1755 : {
4564 1755 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4565 1755 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4566 1755 : if (res) return res;
4567 : }
4568 : }
4569 5345 : if (integer_zerop (_p0))
4570 : {
4571 0 : {
4572 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4573 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4574 0 : if (res) return res;
4575 : }
4576 : }
4577 5345 : switch (TREE_CODE (_p1))
4578 : {
4579 34 : case SSA_NAME:
4580 34 : {
4581 34 : {
4582 34 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4583 34 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4584 34 : if (res) return res;
4585 : }
4586 34 : break;
4587 : }
4588 5345 : default:;
4589 : }
4590 5345 : if (integer_minus_onep (_p1))
4591 : {
4592 0 : {
4593 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4594 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4595 0 : if (res) return res;
4596 : }
4597 : }
4598 5345 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4599 : {
4600 0 : {
4601 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4602 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4603 0 : if (res) return res;
4604 : }
4605 : }
4606 5345 : switch (TREE_CODE (_p1))
4607 : {
4608 0 : case ABS_EXPR:
4609 0 : {
4610 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4611 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4612 : {
4613 0 : {
4614 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4615 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4616 0 : if (res) return res;
4617 : }
4618 : }
4619 : break;
4620 : }
4621 5345 : default:;
4622 : }
4623 5345 : switch (TREE_CODE (_p0))
4624 : {
4625 0 : case ABS_EXPR:
4626 0 : {
4627 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4628 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4629 : {
4630 0 : {
4631 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4632 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4633 0 : if (res) return res;
4634 : }
4635 : }
4636 : break;
4637 : }
4638 5345 : default:;
4639 : }
4640 5345 : switch (TREE_CODE (_p1))
4641 : {
4642 0 : case NEGATE_EXPR:
4643 0 : {
4644 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4645 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4646 : {
4647 0 : {
4648 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4649 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4650 0 : if (res) return res;
4651 : }
4652 : }
4653 : break;
4654 : }
4655 5345 : default:;
4656 : }
4657 5345 : switch (TREE_CODE (_p0))
4658 : {
4659 0 : case NEGATE_EXPR:
4660 0 : {
4661 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4662 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4663 : {
4664 0 : {
4665 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4666 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4667 0 : if (res) return res;
4668 : }
4669 : }
4670 : break;
4671 : }
4672 536 : CASE_CONVERT:
4673 536 : {
4674 536 : tree _q20 = TREE_OPERAND (_p0, 0);
4675 536 : switch (TREE_CODE (_q20))
4676 : {
4677 0 : case BIT_AND_EXPR:
4678 0 : {
4679 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4680 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4681 0 : switch (TREE_CODE (_q31))
4682 : {
4683 0 : case INTEGER_CST:
4684 0 : {
4685 0 : switch (TREE_CODE (_p1))
4686 : {
4687 0 : case INTEGER_CST:
4688 0 : {
4689 0 : {
4690 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4691 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4692 0 : if (res) return res;
4693 : }
4694 0 : break;
4695 : }
4696 : default:;
4697 : }
4698 : break;
4699 : }
4700 : default:;
4701 : }
4702 : break;
4703 : }
4704 : default:;
4705 : }
4706 : break;
4707 : }
4708 0 : case BIT_AND_EXPR:
4709 0 : {
4710 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4711 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4712 0 : switch (TREE_CODE (_q21))
4713 : {
4714 0 : case INTEGER_CST:
4715 0 : {
4716 0 : switch (TREE_CODE (_p1))
4717 : {
4718 0 : case INTEGER_CST:
4719 0 : {
4720 0 : {
4721 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4722 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4723 0 : if (res) return res;
4724 : }
4725 0 : break;
4726 : }
4727 : default:;
4728 : }
4729 : break;
4730 : }
4731 : default:;
4732 : }
4733 : break;
4734 : }
4735 0 : case MULT_EXPR:
4736 0 : {
4737 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4738 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4739 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4740 : {
4741 0 : {
4742 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4743 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4744 0 : if (res) return res;
4745 : }
4746 : }
4747 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4748 : {
4749 0 : {
4750 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4751 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4752 0 : if (res) return res;
4753 : }
4754 : }
4755 0 : switch (TREE_CODE (_q21))
4756 : {
4757 0 : case INTEGER_CST:
4758 0 : {
4759 0 : switch (TREE_CODE (_p1))
4760 : {
4761 0 : case MULT_EXPR:
4762 0 : {
4763 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4764 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4765 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4766 : {
4767 0 : switch (TREE_CODE (_q51))
4768 : {
4769 0 : case INTEGER_CST:
4770 0 : {
4771 0 : {
4772 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4773 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4774 0 : if (res) return res;
4775 : }
4776 0 : break;
4777 : }
4778 : default:;
4779 : }
4780 : }
4781 : break;
4782 : }
4783 : default:;
4784 : }
4785 : break;
4786 : }
4787 : default:;
4788 : }
4789 : break;
4790 : }
4791 0 : case VEC_COND_EXPR:
4792 0 : {
4793 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4794 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4795 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4796 0 : switch (TREE_CODE (_p1))
4797 : {
4798 0 : case VEC_COND_EXPR:
4799 0 : {
4800 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4801 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4802 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4803 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4804 : {
4805 0 : {
4806 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4807 0 : if (VECTOR_TYPE_P (type)
4808 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4809 : || types_match (type, TREE_TYPE (captures[2]))
4810 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4811 : || (optimize_vectors_before_lowering_p ()
4812 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4813 : )
4814 : {
4815 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1582;
4816 0 : {
4817 0 : tree res_op0;
4818 0 : res_op0 = captures[1];
4819 0 : tree res_op1;
4820 0 : {
4821 0 : tree _o1[2], _r1;
4822 0 : _o1[0] = captures[2];
4823 0 : _o1[1] = captures[5];
4824 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4825 0 : if (EXPR_P (_r1))
4826 0 : goto next_after_fail1582;
4827 0 : res_op1 = _r1;
4828 : }
4829 0 : tree res_op2;
4830 0 : {
4831 0 : tree _o1[2], _r1;
4832 0 : _o1[0] = captures[3];
4833 0 : _o1[1] = captures[6];
4834 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4835 0 : if (EXPR_P (_r1))
4836 0 : goto next_after_fail1582;
4837 0 : res_op2 = _r1;
4838 : }
4839 0 : tree _r;
4840 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4841 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
4842 0 : return _r;
4843 : }
4844 0 : next_after_fail1582:;
4845 : }
4846 : }
4847 : }
4848 : break;
4849 : }
4850 0 : default:;
4851 : }
4852 0 : {
4853 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4854 0 : if (VECTOR_TYPE_P (type)
4855 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4856 : || types_match (type, TREE_TYPE (captures[2]))
4857 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4858 : || (optimize_vectors_before_lowering_p ()
4859 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4860 : )
4861 : {
4862 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1583;
4863 0 : {
4864 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1583;
4865 0 : tree res_op0;
4866 0 : res_op0 = captures[1];
4867 0 : tree res_op1;
4868 0 : {
4869 0 : tree _o1[2], _r1;
4870 0 : _o1[0] = captures[2];
4871 0 : _o1[1] = unshare_expr (captures[4]);
4872 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4873 0 : if (EXPR_P (_r1))
4874 0 : goto next_after_fail1583;
4875 0 : res_op1 = _r1;
4876 : }
4877 0 : tree res_op2;
4878 0 : {
4879 0 : tree _o1[2], _r1;
4880 0 : _o1[0] = captures[3];
4881 0 : _o1[1] = captures[4];
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_fail1583;
4885 0 : res_op2 = _r1;
4886 : }
4887 0 : tree _r;
4888 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4889 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
4890 0 : return _r;
4891 : }
4892 0 : next_after_fail1583:;
4893 : }
4894 : }
4895 0 : break;
4896 : }
4897 5345 : default:;
4898 : }
4899 5345 : switch (TREE_CODE (_p1))
4900 : {
4901 0 : case VEC_COND_EXPR:
4902 0 : {
4903 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4904 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4905 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4906 0 : {
4907 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4908 0 : if (VECTOR_TYPE_P (type)
4909 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4910 : || types_match (type, TREE_TYPE (captures[3]))
4911 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4912 : || (optimize_vectors_before_lowering_p ()
4913 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4914 : )
4915 : {
4916 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1584;
4917 0 : {
4918 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1584;
4919 0 : tree res_op0;
4920 0 : res_op0 = captures[2];
4921 0 : tree res_op1;
4922 0 : {
4923 0 : tree _o1[2], _r1;
4924 0 : _o1[0] = unshare_expr (captures[0]);
4925 0 : _o1[1] = captures[3];
4926 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4927 0 : if (EXPR_P (_r1))
4928 0 : goto next_after_fail1584;
4929 0 : res_op1 = _r1;
4930 : }
4931 0 : tree res_op2;
4932 0 : {
4933 0 : tree _o1[2], _r1;
4934 0 : _o1[0] = captures[0];
4935 0 : _o1[1] = captures[4];
4936 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4937 0 : if (EXPR_P (_r1))
4938 0 : goto next_after_fail1584;
4939 0 : res_op2 = _r1;
4940 : }
4941 0 : tree _r;
4942 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4943 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
4944 0 : return _r;
4945 : }
4946 0 : next_after_fail1584:;
4947 : }
4948 : }
4949 0 : break;
4950 : }
4951 : default:;
4952 : }
4953 : return NULL_TREE;
4954 : }
4955 :
4956 : tree
4957 3404722 : 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)
4958 : {
4959 3404722 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4960 3404722 : if (integer_onep (_p1))
4961 : {
4962 2053482 : {
4963 2053482 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4964 2053482 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4965 2053482 : if (res) return res;
4966 : }
4967 : }
4968 1351240 : switch (TREE_CODE (_p0))
4969 : {
4970 9043 : CASE_CONVERT:
4971 9043 : {
4972 9043 : tree _q20 = TREE_OPERAND (_p0, 0);
4973 9043 : switch (TREE_CODE (_p1))
4974 : {
4975 0 : CASE_CONVERT:
4976 0 : {
4977 0 : tree _q40 = TREE_OPERAND (_p1, 0);
4978 0 : switch (TREE_CODE (_q40))
4979 : {
4980 0 : case LSHIFT_EXPR:
4981 0 : {
4982 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4983 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4984 0 : if (integer_onep (_q50))
4985 : {
4986 0 : {
4987 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
4988 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4989 0 : if (res) return res;
4990 : }
4991 : }
4992 : break;
4993 : }
4994 : default:;
4995 : }
4996 : break;
4997 : }
4998 0 : case LSHIFT_EXPR:
4999 0 : {
5000 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5001 0 : tree _q41 = TREE_OPERAND (_p1, 1);
5002 0 : if (integer_onep (_q40))
5003 : {
5004 0 : {
5005 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
5006 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5007 0 : if (res) return res;
5008 : }
5009 : }
5010 : break;
5011 : }
5012 : default:;
5013 : }
5014 : break;
5015 : }
5016 1351240 : default:;
5017 : }
5018 1351240 : switch (TREE_CODE (_p1))
5019 : {
5020 2 : CASE_CONVERT:
5021 2 : {
5022 2 : tree _q30 = TREE_OPERAND (_p1, 0);
5023 2 : switch (TREE_CODE (_q30))
5024 : {
5025 0 : case LSHIFT_EXPR:
5026 0 : {
5027 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5028 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5029 0 : if (integer_onep (_q40))
5030 : {
5031 0 : {
5032 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
5033 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5034 0 : if (res) return res;
5035 : }
5036 : }
5037 : break;
5038 : }
5039 : default:;
5040 : }
5041 : break;
5042 : }
5043 0 : case LSHIFT_EXPR:
5044 0 : {
5045 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5046 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5047 0 : if (integer_onep (_q30))
5048 : {
5049 0 : {
5050 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
5051 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5052 0 : if (res) return res;
5053 : }
5054 : }
5055 : break;
5056 : }
5057 1351240 : default:;
5058 : }
5059 1351240 : if (integer_zerop (_p0))
5060 : {
5061 0 : {
5062 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5063 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5064 0 : if (res) return res;
5065 : }
5066 : }
5067 1351240 : switch (TREE_CODE (_p1))
5068 : {
5069 0 : case SSA_NAME:
5070 0 : {
5071 0 : {
5072 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5073 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5074 0 : if (res) return res;
5075 : }
5076 0 : break;
5077 : }
5078 1351240 : default:;
5079 : }
5080 1351240 : if (integer_minus_onep (_p1))
5081 : {
5082 0 : {
5083 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5084 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5085 0 : if (res) return res;
5086 : }
5087 : }
5088 1351240 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5089 : {
5090 0 : {
5091 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5092 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5093 0 : if (res) return res;
5094 : }
5095 : }
5096 1351240 : switch (TREE_CODE (_p1))
5097 : {
5098 0 : case ABS_EXPR:
5099 0 : {
5100 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5101 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5102 : {
5103 0 : {
5104 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5105 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5106 0 : if (res) return res;
5107 : }
5108 : }
5109 : break;
5110 : }
5111 1351240 : default:;
5112 : }
5113 1351240 : switch (TREE_CODE (_p0))
5114 : {
5115 0 : case ABS_EXPR:
5116 0 : {
5117 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5118 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5119 : {
5120 0 : {
5121 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5122 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5123 0 : if (res) return res;
5124 : }
5125 : }
5126 : break;
5127 : }
5128 1351240 : default:;
5129 : }
5130 1351240 : switch (TREE_CODE (_p1))
5131 : {
5132 0 : case NEGATE_EXPR:
5133 0 : {
5134 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5135 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5136 : {
5137 0 : {
5138 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5139 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5140 0 : if (res) return res;
5141 : }
5142 : }
5143 : break;
5144 : }
5145 1351240 : default:;
5146 : }
5147 1351240 : switch (TREE_CODE (_p0))
5148 : {
5149 1220 : case NEGATE_EXPR:
5150 1220 : {
5151 1220 : tree _q20 = TREE_OPERAND (_p0, 0);
5152 1220 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5153 : {
5154 0 : {
5155 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5156 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5157 0 : if (res) return res;
5158 : }
5159 : }
5160 : break;
5161 : }
5162 0 : case EXACT_DIV_EXPR:
5163 0 : {
5164 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5165 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5166 0 : switch (TREE_CODE (_q21))
5167 : {
5168 0 : case INTEGER_CST:
5169 0 : {
5170 0 : switch (TREE_CODE (_p1))
5171 : {
5172 0 : case INTEGER_CST:
5173 0 : {
5174 0 : {
5175 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5176 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5177 0 : if (res) return res;
5178 : }
5179 0 : break;
5180 : }
5181 : default:;
5182 : }
5183 : break;
5184 : }
5185 : default:;
5186 : }
5187 : break;
5188 : }
5189 9043 : CASE_CONVERT:
5190 9043 : {
5191 9043 : tree _q20 = TREE_OPERAND (_p0, 0);
5192 9043 : switch (TREE_CODE (_q20))
5193 : {
5194 0 : case BIT_AND_EXPR:
5195 0 : {
5196 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5197 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5198 0 : switch (TREE_CODE (_q31))
5199 : {
5200 0 : case INTEGER_CST:
5201 0 : {
5202 0 : switch (TREE_CODE (_p1))
5203 : {
5204 0 : case INTEGER_CST:
5205 0 : {
5206 0 : {
5207 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5208 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5209 0 : if (res) return res;
5210 : }
5211 0 : break;
5212 : }
5213 : default:;
5214 : }
5215 : break;
5216 : }
5217 : default:;
5218 : }
5219 : break;
5220 : }
5221 : default:;
5222 : }
5223 : break;
5224 : }
5225 0 : case BIT_AND_EXPR:
5226 0 : {
5227 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5228 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5229 0 : switch (TREE_CODE (_q21))
5230 : {
5231 0 : case INTEGER_CST:
5232 0 : {
5233 0 : switch (TREE_CODE (_p1))
5234 : {
5235 0 : case INTEGER_CST:
5236 0 : {
5237 0 : {
5238 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5239 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5240 0 : if (res) return res;
5241 : }
5242 0 : break;
5243 : }
5244 : default:;
5245 : }
5246 : break;
5247 : }
5248 : default:;
5249 : }
5250 : break;
5251 : }
5252 19306 : case MULT_EXPR:
5253 19306 : {
5254 19306 : tree _q20 = TREE_OPERAND (_p0, 0);
5255 19306 : tree _q21 = TREE_OPERAND (_p0, 1);
5256 19306 : if (integer_pow2p (_q21))
5257 : {
5258 18090 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5259 : {
5260 18060 : {
5261 18060 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5262 18060 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5263 18060 : if (res) return res;
5264 : }
5265 : }
5266 : }
5267 1253 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5268 : {
5269 7 : {
5270 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5271 7 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5272 7 : if (res) return res;
5273 : }
5274 : }
5275 1246 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5276 : {
5277 0 : {
5278 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5279 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5280 0 : if (res) return res;
5281 : }
5282 : }
5283 1246 : switch (TREE_CODE (_q21))
5284 : {
5285 1246 : case INTEGER_CST:
5286 1246 : {
5287 1246 : switch (TREE_CODE (_p1))
5288 : {
5289 0 : case MULT_EXPR:
5290 0 : {
5291 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5292 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5293 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5294 : {
5295 0 : switch (TREE_CODE (_q51))
5296 : {
5297 0 : case INTEGER_CST:
5298 0 : {
5299 0 : {
5300 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5301 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5302 0 : if (res) return res;
5303 : }
5304 0 : break;
5305 : }
5306 : default:;
5307 : }
5308 : }
5309 : break;
5310 : }
5311 : default:;
5312 : }
5313 : break;
5314 : }
5315 : default:;
5316 : }
5317 : break;
5318 : }
5319 0 : case VEC_COND_EXPR:
5320 0 : {
5321 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5322 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5323 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5324 0 : switch (TREE_CODE (_p1))
5325 : {
5326 0 : case VEC_COND_EXPR:
5327 0 : {
5328 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5329 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5330 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5331 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5332 : {
5333 0 : {
5334 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5335 0 : if (VECTOR_TYPE_P (type)
5336 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5337 : || types_match (type, TREE_TYPE (captures[2]))
5338 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5339 : || (optimize_vectors_before_lowering_p ()
5340 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5341 : )
5342 : {
5343 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1591;
5344 0 : {
5345 0 : tree res_op0;
5346 0 : res_op0 = captures[1];
5347 0 : tree res_op1;
5348 0 : {
5349 0 : tree _o1[2], _r1;
5350 0 : _o1[0] = captures[2];
5351 0 : _o1[1] = captures[5];
5352 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5353 0 : if (EXPR_P (_r1))
5354 0 : goto next_after_fail1591;
5355 0 : res_op1 = _r1;
5356 : }
5357 0 : tree res_op2;
5358 0 : {
5359 0 : tree _o1[2], _r1;
5360 0 : _o1[0] = captures[3];
5361 0 : _o1[1] = captures[6];
5362 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5363 0 : if (EXPR_P (_r1))
5364 0 : goto next_after_fail1591;
5365 0 : res_op2 = _r1;
5366 : }
5367 0 : tree _r;
5368 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5369 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
5370 0 : return _r;
5371 : }
5372 0 : next_after_fail1591:;
5373 : }
5374 : }
5375 : }
5376 : break;
5377 : }
5378 0 : default:;
5379 : }
5380 0 : {
5381 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5382 0 : if (VECTOR_TYPE_P (type)
5383 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5384 : || types_match (type, TREE_TYPE (captures[2]))
5385 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5386 : || (optimize_vectors_before_lowering_p ()
5387 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5388 : )
5389 : {
5390 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1592;
5391 0 : {
5392 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1592;
5393 0 : tree res_op0;
5394 0 : res_op0 = captures[1];
5395 0 : tree res_op1;
5396 0 : {
5397 0 : tree _o1[2], _r1;
5398 0 : _o1[0] = captures[2];
5399 0 : _o1[1] = unshare_expr (captures[4]);
5400 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5401 0 : if (EXPR_P (_r1))
5402 0 : goto next_after_fail1592;
5403 0 : res_op1 = _r1;
5404 : }
5405 0 : tree res_op2;
5406 0 : {
5407 0 : tree _o1[2], _r1;
5408 0 : _o1[0] = captures[3];
5409 0 : _o1[1] = captures[4];
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_fail1592;
5413 0 : res_op2 = _r1;
5414 : }
5415 0 : tree _r;
5416 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5417 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
5418 0 : return _r;
5419 : }
5420 0 : next_after_fail1592:;
5421 : }
5422 : }
5423 0 : break;
5424 : }
5425 1333180 : default:;
5426 : }
5427 1333180 : switch (TREE_CODE (_p1))
5428 : {
5429 0 : case VEC_COND_EXPR:
5430 0 : {
5431 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5432 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5433 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5434 0 : {
5435 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5436 0 : if (VECTOR_TYPE_P (type)
5437 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5438 : || types_match (type, TREE_TYPE (captures[3]))
5439 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5440 : || (optimize_vectors_before_lowering_p ()
5441 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5442 : )
5443 : {
5444 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1593;
5445 0 : {
5446 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1593;
5447 0 : tree res_op0;
5448 0 : res_op0 = captures[2];
5449 0 : tree res_op1;
5450 0 : {
5451 0 : tree _o1[2], _r1;
5452 0 : _o1[0] = unshare_expr (captures[0]);
5453 0 : _o1[1] = captures[3];
5454 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5455 0 : if (EXPR_P (_r1))
5456 0 : goto next_after_fail1593;
5457 0 : res_op1 = _r1;
5458 : }
5459 0 : tree res_op2;
5460 0 : {
5461 0 : tree _o1[2], _r1;
5462 0 : _o1[0] = captures[0];
5463 0 : _o1[1] = captures[4];
5464 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5465 0 : if (EXPR_P (_r1))
5466 0 : goto next_after_fail1593;
5467 0 : res_op2 = _r1;
5468 : }
5469 0 : tree _r;
5470 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5471 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
5472 0 : return _r;
5473 : }
5474 0 : next_after_fail1593:;
5475 : }
5476 : }
5477 0 : break;
5478 : }
5479 : default:;
5480 : }
5481 : return NULL_TREE;
5482 : }
5483 :
5484 : tree
5485 9254140 : generic_simplify_LE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5486 : {
5487 9254140 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5488 9254140 : switch (TREE_CODE (_p0))
5489 : {
5490 2318 : case RDIV_EXPR:
5491 2318 : {
5492 2318 : tree _q20 = TREE_OPERAND (_p0, 0);
5493 2318 : tree _q21 = TREE_OPERAND (_p0, 1);
5494 2318 : switch (TREE_CODE (_q20))
5495 : {
5496 548 : case REAL_CST:
5497 548 : {
5498 548 : if (real_zerop (_p1))
5499 : {
5500 2 : {
5501 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5502 2 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
5503 2 : if (res) return res;
5504 : }
5505 : }
5506 : break;
5507 : }
5508 : default:;
5509 : }
5510 : break;
5511 : }
5512 9254138 : default:;
5513 : }
5514 9254138 : switch (TREE_CODE (_p1))
5515 : {
5516 7 : case TRUNC_MOD_EXPR:
5517 7 : {
5518 7 : tree _q30 = TREE_OPERAND (_p1, 0);
5519 7 : tree _q31 = TREE_OPERAND (_p1, 1);
5520 7 : if (tree_expr_nonnegative_p (_q30))
5521 : {
5522 7 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5523 : {
5524 0 : if (tree_expr_nonnegative_p (_q31))
5525 : {
5526 0 : {
5527 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5528 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, GE_EXPR);
5529 0 : if (res) return res;
5530 : }
5531 : }
5532 : }
5533 : }
5534 : break;
5535 : }
5536 9254138 : default:;
5537 : }
5538 9254138 : switch (TREE_CODE (_p0))
5539 : {
5540 62437 : case MULT_EXPR:
5541 62437 : {
5542 62437 : tree _q20 = TREE_OPERAND (_p0, 0);
5543 62437 : tree _q21 = TREE_OPERAND (_p0, 1);
5544 62437 : switch (TREE_CODE (_p1))
5545 : {
5546 2842 : case MULT_EXPR:
5547 2842 : {
5548 2842 : tree _q50 = TREE_OPERAND (_p1, 0);
5549 2842 : tree _q51 = TREE_OPERAND (_p1, 1);
5550 2842 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5551 : {
5552 2028 : {
5553 2028 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5554 2028 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
5555 2028 : if (res) return res;
5556 : }
5557 : }
5558 1835 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5559 : {
5560 1 : {
5561 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5562 1 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
5563 1 : if (res) return res;
5564 : }
5565 : }
5566 1835 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5567 : {
5568 4 : {
5569 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5570 4 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
5571 4 : if (res) return res;
5572 : }
5573 : }
5574 1835 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5575 : {
5576 307 : {
5577 307 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5578 307 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, LE_EXPR);
5579 307 : if (res) return res;
5580 : }
5581 : }
5582 : break;
5583 : }
5584 : default:;
5585 : }
5586 : break;
5587 : }
5588 1597024 : case PLUS_EXPR:
5589 1597024 : {
5590 1597024 : tree _q20 = TREE_OPERAND (_p0, 0);
5591 1597024 : tree _q21 = TREE_OPERAND (_p0, 1);
5592 1597024 : if (integer_minus_onep (_q21))
5593 : {
5594 525542 : switch (TREE_CODE (_p1))
5595 : {
5596 326294 : case INTEGER_CST:
5597 326294 : {
5598 326294 : {
5599 326294 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5600 326294 : tree res = generic_simplify_407 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
5601 326294 : if (res) return res;
5602 : }
5603 326292 : break;
5604 : }
5605 : default:;
5606 : }
5607 : }
5608 1597022 : switch (TREE_CODE (_p1))
5609 : {
5610 90774 : case PLUS_EXPR:
5611 90774 : {
5612 90774 : tree _q50 = TREE_OPERAND (_p1, 0);
5613 90774 : tree _q51 = TREE_OPERAND (_p1, 1);
5614 90774 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5615 : {
5616 7375 : {
5617 7375 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5618 7375 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5619 7375 : if (res) return res;
5620 : }
5621 : }
5622 86588 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5623 : {
5624 13 : {
5625 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5626 13 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5627 13 : if (res) return res;
5628 : }
5629 : }
5630 86588 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5631 : {
5632 205 : {
5633 205 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5634 205 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5635 205 : if (res) return res;
5636 : }
5637 : }
5638 86588 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5639 : {
5640 7161 : {
5641 7161 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5642 7161 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR);
5643 7161 : if (res) return res;
5644 : }
5645 : }
5646 : break;
5647 : }
5648 1592237 : default:;
5649 : }
5650 1592237 : switch (TREE_CODE (_q21))
5651 : {
5652 1473253 : case INTEGER_CST:
5653 1473253 : {
5654 1473253 : switch (TREE_CODE (_p1))
5655 : {
5656 83936 : case PLUS_EXPR:
5657 83936 : {
5658 83936 : tree _q50 = TREE_OPERAND (_p1, 0);
5659 83936 : tree _q51 = TREE_OPERAND (_p1, 1);
5660 83936 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5661 : {
5662 3131 : {
5663 3131 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5664 3131 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, LE_EXPR);
5665 3131 : if (res) return res;
5666 : }
5667 : }
5668 : break;
5669 : }
5670 : default:;
5671 : }
5672 : break;
5673 : }
5674 1592237 : default:;
5675 : }
5676 1592237 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5677 : {
5678 69222 : {
5679 69222 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5680 69222 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5681 69222 : if (res) return res;
5682 : }
5683 : }
5684 1553802 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5685 : {
5686 3084 : {
5687 3084 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5688 3084 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5689 3084 : if (res) return res;
5690 : }
5691 : }
5692 : break;
5693 : }
5694 1646250 : CASE_CONVERT:
5695 1646250 : {
5696 1646250 : tree _q20 = TREE_OPERAND (_p0, 0);
5697 1646250 : switch (TREE_CODE (_q20))
5698 : {
5699 0 : case EXACT_DIV_EXPR:
5700 0 : {
5701 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5702 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5703 0 : switch (TREE_CODE (_q31))
5704 : {
5705 0 : case INTEGER_CST:
5706 0 : {
5707 0 : switch (TREE_CODE (_p1))
5708 : {
5709 0 : CASE_CONVERT:
5710 0 : {
5711 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5712 0 : switch (TREE_CODE (_q60))
5713 : {
5714 0 : case EXACT_DIV_EXPR:
5715 0 : {
5716 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5717 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5718 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5719 : {
5720 0 : {
5721 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5722 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, LE_EXPR);
5723 0 : if (res) return res;
5724 : }
5725 : }
5726 : break;
5727 : }
5728 : default:;
5729 : }
5730 : break;
5731 : }
5732 : default:;
5733 : }
5734 : break;
5735 : }
5736 : default:;
5737 : }
5738 : break;
5739 : }
5740 : default:;
5741 : }
5742 : break;
5743 : }
5744 428 : case EXACT_DIV_EXPR:
5745 428 : {
5746 428 : tree _q20 = TREE_OPERAND (_p0, 0);
5747 428 : tree _q21 = TREE_OPERAND (_p0, 1);
5748 428 : switch (TREE_CODE (_q21))
5749 : {
5750 428 : case INTEGER_CST:
5751 428 : {
5752 428 : switch (TREE_CODE (_p1))
5753 : {
5754 0 : case EXACT_DIV_EXPR:
5755 0 : {
5756 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5757 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5758 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5759 : {
5760 0 : {
5761 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5762 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, LE_EXPR);
5763 0 : if (res) return res;
5764 : }
5765 : }
5766 : break;
5767 : }
5768 : default:;
5769 : }
5770 : break;
5771 : }
5772 : default:;
5773 : }
5774 : break;
5775 : }
5776 10910 : case TRUNC_DIV_EXPR:
5777 10910 : {
5778 10910 : tree _q20 = TREE_OPERAND (_p0, 0);
5779 10910 : tree _q21 = TREE_OPERAND (_p0, 1);
5780 10910 : switch (TREE_CODE (_q21))
5781 : {
5782 2770 : case INTEGER_CST:
5783 2770 : {
5784 2770 : switch (TREE_CODE (_p1))
5785 : {
5786 1343 : case INTEGER_CST:
5787 1343 : {
5788 1343 : {
5789 1343 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5790 1343 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, LE_EXPR);
5791 1343 : if (res) return res;
5792 : }
5793 679 : break;
5794 : }
5795 : default:;
5796 : }
5797 : break;
5798 : }
5799 : default:;
5800 : }
5801 : break;
5802 : }
5803 64861 : case MINUS_EXPR:
5804 64861 : {
5805 64861 : tree _q20 = TREE_OPERAND (_p0, 0);
5806 64861 : tree _q21 = TREE_OPERAND (_p0, 1);
5807 64861 : switch (TREE_CODE (_p1))
5808 : {
5809 489 : case MINUS_EXPR:
5810 489 : {
5811 489 : tree _q50 = TREE_OPERAND (_p1, 0);
5812 489 : tree _q51 = TREE_OPERAND (_p1, 1);
5813 489 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5814 : {
5815 54 : {
5816 54 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5817 54 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5818 54 : if (res) return res;
5819 : }
5820 : }
5821 489 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5822 : {
5823 26 : {
5824 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5825 26 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, LE_EXPR);
5826 26 : if (res) return res;
5827 : }
5828 : }
5829 : break;
5830 : }
5831 : default:;
5832 : }
5833 : break;
5834 : }
5835 5344 : case POINTER_DIFF_EXPR:
5836 5344 : {
5837 5344 : tree _q20 = TREE_OPERAND (_p0, 0);
5838 5344 : tree _q21 = TREE_OPERAND (_p0, 1);
5839 5344 : switch (TREE_CODE (_p1))
5840 : {
5841 223 : case POINTER_DIFF_EXPR:
5842 223 : {
5843 223 : tree _q50 = TREE_OPERAND (_p1, 0);
5844 223 : tree _q51 = TREE_OPERAND (_p1, 1);
5845 223 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5846 : {
5847 0 : {
5848 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5849 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, LE_EXPR);
5850 0 : if (res) return res;
5851 : }
5852 : }
5853 223 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5854 : {
5855 0 : {
5856 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5857 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, LE_EXPR);
5858 0 : if (res) return res;
5859 : }
5860 : }
5861 : break;
5862 : }
5863 : default:;
5864 : }
5865 : break;
5866 : }
5867 9208932 : default:;
5868 : }
5869 9208932 : switch (TREE_CODE (_p1))
5870 : {
5871 121839 : case PLUS_EXPR:
5872 121839 : {
5873 121839 : tree _q30 = TREE_OPERAND (_p1, 0);
5874 121839 : tree _q31 = TREE_OPERAND (_p1, 1);
5875 121839 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5876 : {
5877 0 : {
5878 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5879 0 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR);
5880 0 : if (res) return res;
5881 : }
5882 : }
5883 121839 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5884 : {
5885 57 : {
5886 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
5887 57 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR);
5888 57 : if (res) return res;
5889 : }
5890 : }
5891 : break;
5892 : }
5893 1208 : case MINUS_EXPR:
5894 1208 : {
5895 1208 : tree _q30 = TREE_OPERAND (_p1, 0);
5896 1208 : tree _q31 = TREE_OPERAND (_p1, 1);
5897 1208 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5898 : {
5899 0 : {
5900 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5901 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, LE_EXPR);
5902 0 : if (res) return res;
5903 : }
5904 : }
5905 : break;
5906 : }
5907 9208905 : default:;
5908 : }
5909 9208905 : switch (TREE_CODE (_p0))
5910 : {
5911 64861 : case MINUS_EXPR:
5912 64861 : {
5913 64861 : tree _q20 = TREE_OPERAND (_p0, 0);
5914 64861 : tree _q21 = TREE_OPERAND (_p0, 1);
5915 64861 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5916 : {
5917 2509 : {
5918 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5919 2509 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, GE_EXPR);
5920 2509 : if (res) return res;
5921 : }
5922 : }
5923 : break;
5924 : }
5925 5327 : case BIT_AND_EXPR:
5926 5327 : {
5927 5327 : tree _q20 = TREE_OPERAND (_p0, 0);
5928 5327 : tree _q21 = TREE_OPERAND (_p0, 1);
5929 5327 : if (tree_expr_nonnegative_p (_q20))
5930 : {
5931 4447 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5932 : {
5933 0 : {
5934 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5935 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5936 0 : if (res) return res;
5937 : }
5938 : }
5939 : }
5940 5327 : if (tree_expr_nonnegative_p (_q21))
5941 : {
5942 4933 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5943 : {
5944 0 : {
5945 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5946 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5947 0 : if (res) return res;
5948 : }
5949 : }
5950 : }
5951 : break;
5952 : }
5953 9208905 : default:;
5954 : }
5955 9208905 : switch (TREE_CODE (_p1))
5956 : {
5957 46 : case BIT_IOR_EXPR:
5958 46 : {
5959 46 : tree _q30 = TREE_OPERAND (_p1, 0);
5960 46 : tree _q31 = TREE_OPERAND (_p1, 1);
5961 46 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5962 : {
5963 0 : if (tree_expr_nonnegative_p (_q30))
5964 : {
5965 0 : {
5966 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
5967 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
5968 0 : if (res) return res;
5969 : }
5970 : }
5971 : }
5972 46 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5973 : {
5974 0 : if (tree_expr_nonnegative_p (_q31))
5975 : {
5976 0 : {
5977 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5978 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
5979 0 : if (res) return res;
5980 : }
5981 : }
5982 : }
5983 : break;
5984 : }
5985 9208905 : default:;
5986 : }
5987 9208905 : switch (TREE_CODE (_p0))
5988 : {
5989 10208 : case MIN_EXPR:
5990 10208 : {
5991 10208 : tree _q20 = TREE_OPERAND (_p0, 0);
5992 10208 : tree _q21 = TREE_OPERAND (_p0, 1);
5993 10208 : switch (TREE_CODE (_p1))
5994 : {
5995 4 : case MAX_EXPR:
5996 4 : {
5997 4 : tree _q50 = TREE_OPERAND (_p1, 0);
5998 4 : tree _q51 = TREE_OPERAND (_p1, 1);
5999 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6000 : {
6001 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6002 : {
6003 0 : {
6004 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6005 0 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR);
6006 0 : if (res) return res;
6007 : }
6008 : }
6009 : }
6010 : break;
6011 : }
6012 : default:;
6013 : }
6014 : break;
6015 : }
6016 4360 : case MAX_EXPR:
6017 4360 : {
6018 4360 : tree _q20 = TREE_OPERAND (_p0, 0);
6019 4360 : tree _q21 = TREE_OPERAND (_p0, 1);
6020 4360 : switch (TREE_CODE (_p1))
6021 : {
6022 4 : case MIN_EXPR:
6023 4 : {
6024 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6025 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6026 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6027 : {
6028 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6029 : {
6030 0 : {
6031 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6032 0 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
6033 0 : if (res) return res;
6034 : }
6035 : }
6036 : }
6037 : break;
6038 : }
6039 4360 : default:;
6040 : }
6041 4360 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6042 : {
6043 0 : {
6044 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6045 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6046 0 : if (res) return res;
6047 : }
6048 : }
6049 4360 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6050 : {
6051 1 : {
6052 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6053 1 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6054 1 : if (res) return res;
6055 : }
6056 : }
6057 : break;
6058 : }
6059 9208904 : default:;
6060 : }
6061 9208904 : switch (TREE_CODE (_p1))
6062 : {
6063 298 : case MIN_EXPR:
6064 298 : {
6065 298 : tree _q30 = TREE_OPERAND (_p1, 0);
6066 298 : tree _q31 = TREE_OPERAND (_p1, 1);
6067 298 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6068 : {
6069 0 : {
6070 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6071 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6072 0 : if (res) return res;
6073 : }
6074 : }
6075 298 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6076 : {
6077 0 : {
6078 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6079 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6080 0 : if (res) return res;
6081 : }
6082 : }
6083 : break;
6084 : }
6085 14 : case MAX_EXPR:
6086 14 : {
6087 14 : tree _q30 = TREE_OPERAND (_p1, 0);
6088 14 : tree _q31 = TREE_OPERAND (_p1, 1);
6089 14 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6090 : {
6091 0 : {
6092 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6093 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6094 0 : if (res) return res;
6095 : }
6096 : }
6097 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6098 : {
6099 0 : {
6100 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6101 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6102 0 : if (res) return res;
6103 : }
6104 : }
6105 : break;
6106 : }
6107 9208904 : default:;
6108 : }
6109 9208904 : switch (TREE_CODE (_p0))
6110 : {
6111 10208 : case MIN_EXPR:
6112 10208 : {
6113 10208 : tree _q20 = TREE_OPERAND (_p0, 0);
6114 10208 : tree _q21 = TREE_OPERAND (_p0, 1);
6115 10208 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6116 : {
6117 0 : {
6118 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6119 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6120 0 : if (res) return res;
6121 : }
6122 : }
6123 10208 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6124 : {
6125 0 : {
6126 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6127 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6128 0 : if (res) return res;
6129 : }
6130 : }
6131 10208 : switch (TREE_CODE (_q21))
6132 : {
6133 936 : case INTEGER_CST:
6134 936 : {
6135 936 : switch (TREE_CODE (_p1))
6136 : {
6137 0 : case INTEGER_CST:
6138 0 : {
6139 0 : {
6140 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6141 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MIN_EXPR, LE_EXPR, BIT_IOR_EXPR);
6142 0 : if (res) return res;
6143 : }
6144 0 : break;
6145 : }
6146 : default:;
6147 : }
6148 : break;
6149 : }
6150 : default:;
6151 : }
6152 : break;
6153 : }
6154 4359 : case MAX_EXPR:
6155 4359 : {
6156 4359 : tree _q20 = TREE_OPERAND (_p0, 0);
6157 4359 : tree _q21 = TREE_OPERAND (_p0, 1);
6158 4359 : switch (TREE_CODE (_q21))
6159 : {
6160 4125 : case INTEGER_CST:
6161 4125 : {
6162 4125 : switch (TREE_CODE (_p1))
6163 : {
6164 0 : case INTEGER_CST:
6165 0 : {
6166 0 : {
6167 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6168 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, BIT_AND_EXPR);
6169 0 : if (res) return res;
6170 : }
6171 0 : break;
6172 : }
6173 : default:;
6174 : }
6175 : break;
6176 : }
6177 : default:;
6178 : }
6179 : break;
6180 : }
6181 9 : case VEC_COND_EXPR:
6182 9 : {
6183 9 : tree _q20 = TREE_OPERAND (_p0, 0);
6184 9 : tree _q21 = TREE_OPERAND (_p0, 1);
6185 9 : tree _q22 = TREE_OPERAND (_p0, 2);
6186 9 : switch (TREE_CODE (_p1))
6187 : {
6188 2 : case VEC_COND_EXPR:
6189 2 : {
6190 2 : tree _q60 = TREE_OPERAND (_p1, 0);
6191 2 : tree _q61 = TREE_OPERAND (_p1, 1);
6192 2 : tree _q62 = TREE_OPERAND (_p1, 2);
6193 2 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6194 : {
6195 0 : {
6196 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
6197 0 : if (VECTOR_TYPE_P (type)
6198 0 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6199 0 : || types_match (type, TREE_TYPE (captures[2]))
6200 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6201 : || (optimize_vectors_before_lowering_p ()
6202 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6203 : )
6204 : {
6205 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1639;
6206 0 : {
6207 0 : tree res_op0;
6208 0 : res_op0 = captures[1];
6209 0 : tree res_op1;
6210 0 : {
6211 0 : tree _o1[2], _r1;
6212 0 : _o1[0] = captures[2];
6213 0 : _o1[1] = captures[5];
6214 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6215 0 : if (EXPR_P (_r1))
6216 0 : goto next_after_fail1639;
6217 0 : res_op1 = _r1;
6218 : }
6219 0 : tree res_op2;
6220 0 : {
6221 0 : tree _o1[2], _r1;
6222 0 : _o1[0] = captures[3];
6223 0 : _o1[1] = captures[6];
6224 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6225 0 : if (EXPR_P (_r1))
6226 0 : goto next_after_fail1639;
6227 0 : res_op2 = _r1;
6228 : }
6229 0 : tree _r;
6230 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6231 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6232 0 : return _r;
6233 : }
6234 0 : next_after_fail1639:;
6235 : }
6236 : }
6237 : }
6238 : break;
6239 : }
6240 9 : default:;
6241 : }
6242 9 : {
6243 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
6244 9 : if (VECTOR_TYPE_P (type)
6245 9 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6246 9 : || types_match (type, TREE_TYPE (captures[2]))
6247 9 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6248 : || (optimize_vectors_before_lowering_p ()
6249 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6250 : )
6251 : {
6252 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1640;
6253 9 : {
6254 9 : if (! tree_invariant_p (captures[4])) goto next_after_fail1640;
6255 7 : tree res_op0;
6256 7 : res_op0 = captures[1];
6257 7 : tree res_op1;
6258 7 : {
6259 7 : tree _o1[2], _r1;
6260 7 : _o1[0] = captures[2];
6261 7 : _o1[1] = unshare_expr (captures[4]);
6262 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6263 7 : if (EXPR_P (_r1))
6264 0 : goto next_after_fail1640;
6265 7 : res_op1 = _r1;
6266 : }
6267 7 : tree res_op2;
6268 7 : {
6269 7 : tree _o1[2], _r1;
6270 7 : _o1[0] = captures[3];
6271 7 : _o1[1] = captures[4];
6272 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6273 7 : if (EXPR_P (_r1))
6274 0 : goto next_after_fail1640;
6275 7 : res_op2 = _r1;
6276 : }
6277 7 : tree _r;
6278 7 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6279 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
6280 7 : return _r;
6281 : }
6282 2 : next_after_fail1640:;
6283 : }
6284 : }
6285 2 : break;
6286 : }
6287 9208897 : default:;
6288 : }
6289 9208897 : switch (TREE_CODE (_p1))
6290 : {
6291 2 : case VEC_COND_EXPR:
6292 2 : {
6293 2 : tree _q30 = TREE_OPERAND (_p1, 0);
6294 2 : tree _q31 = TREE_OPERAND (_p1, 1);
6295 2 : tree _q32 = TREE_OPERAND (_p1, 2);
6296 2 : {
6297 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
6298 2 : if (VECTOR_TYPE_P (type)
6299 2 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6300 2 : || types_match (type, TREE_TYPE (captures[3]))
6301 2 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
6302 : || (optimize_vectors_before_lowering_p ()
6303 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
6304 : )
6305 : {
6306 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1641;
6307 2 : {
6308 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail1641;
6309 0 : tree res_op0;
6310 0 : res_op0 = captures[2];
6311 0 : tree res_op1;
6312 0 : {
6313 0 : tree _o1[2], _r1;
6314 0 : _o1[0] = unshare_expr (captures[0]);
6315 0 : _o1[1] = captures[3];
6316 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6317 0 : if (EXPR_P (_r1))
6318 0 : goto next_after_fail1641;
6319 0 : res_op1 = _r1;
6320 : }
6321 0 : tree res_op2;
6322 0 : {
6323 0 : tree _o1[2], _r1;
6324 0 : _o1[0] = captures[0];
6325 0 : _o1[1] = captures[4];
6326 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6327 0 : if (EXPR_P (_r1))
6328 0 : goto next_after_fail1641;
6329 0 : res_op2 = _r1;
6330 : }
6331 0 : tree _r;
6332 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6333 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
6334 0 : return _r;
6335 : }
6336 2 : next_after_fail1641:;
6337 : }
6338 : }
6339 2 : break;
6340 : }
6341 9208897 : default:;
6342 : }
6343 9208897 : if (uniform_integer_cst_p (_p1))
6344 : {
6345 6731804 : {
6346 6731804 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6347 6731804 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, LE_EXPR, LT_EXPR);
6348 6731804 : if (res) return res;
6349 : }
6350 : }
6351 9111463 : switch (TREE_CODE (_p0))
6352 : {
6353 61009 : case MULT_EXPR:
6354 61009 : {
6355 61009 : tree _q20 = TREE_OPERAND (_p0, 0);
6356 61009 : tree _q21 = TREE_OPERAND (_p0, 1);
6357 61009 : switch (TREE_CODE (_q21))
6358 : {
6359 53525 : case INTEGER_CST:
6360 53525 : {
6361 53525 : if (integer_zerop (_p1))
6362 : {
6363 804 : {
6364 804 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6365 804 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6366 804 : if (res) return res;
6367 : }
6368 : }
6369 : break;
6370 : }
6371 : default:;
6372 : }
6373 : break;
6374 : }
6375 9110822 : default:;
6376 : }
6377 9110822 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6378 : {
6379 5050 : {
6380 5050 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6381 5050 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, LE_EXPR);
6382 5050 : if (res) return res;
6383 : }
6384 : }
6385 9105814 : switch (TREE_CODE (_p0))
6386 : {
6387 2646 : case BIT_NOT_EXPR:
6388 2646 : {
6389 2646 : tree _q20 = TREE_OPERAND (_p0, 0);
6390 2646 : switch (TREE_CODE (_p1))
6391 : {
6392 0 : case BIT_NOT_EXPR:
6393 0 : {
6394 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6395 0 : {
6396 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
6397 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, LE_EXPR);
6398 0 : if (res) return res;
6399 : }
6400 0 : break;
6401 : }
6402 2646 : default:;
6403 : }
6404 2646 : {
6405 2646 : tree _p1_pops[1];
6406 2646 : if (tree_nop_convert (_p1, _p1_pops))
6407 : {
6408 0 : tree _q40 = _p1_pops[0];
6409 0 : switch (TREE_CODE (_q40))
6410 : {
6411 0 : case BIT_NOT_EXPR:
6412 0 : {
6413 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6414 0 : {
6415 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
6416 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, LE_EXPR);
6417 0 : if (res) return res;
6418 : }
6419 0 : break;
6420 : }
6421 : default:;
6422 : }
6423 : }
6424 : }
6425 2646 : if (CONSTANT_CLASS_P (_p1))
6426 : {
6427 2354 : {
6428 2354 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6429 2354 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6430 2354 : if (res) return res;
6431 : }
6432 : }
6433 : break;
6434 : }
6435 9103460 : default:;
6436 : }
6437 9103460 : {
6438 9103460 : tree _p0_pops[1];
6439 9103460 : if (tree_nop_convert (_p0, _p0_pops))
6440 : {
6441 834131 : tree _q20 = _p0_pops[0];
6442 834131 : switch (TREE_CODE (_q20))
6443 : {
6444 0 : case BIT_NOT_EXPR:
6445 0 : {
6446 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6447 0 : switch (TREE_CODE (_p1))
6448 : {
6449 0 : case BIT_NOT_EXPR:
6450 0 : {
6451 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6452 0 : {
6453 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
6454 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, LE_EXPR);
6455 0 : if (res) return res;
6456 : }
6457 0 : break;
6458 : }
6459 0 : default:;
6460 : }
6461 0 : {
6462 0 : tree _p1_pops[1];
6463 0 : if (tree_nop_convert (_p1, _p1_pops))
6464 : {
6465 0 : tree _q50 = _p1_pops[0];
6466 0 : switch (TREE_CODE (_q50))
6467 : {
6468 0 : case BIT_NOT_EXPR:
6469 0 : {
6470 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6471 0 : {
6472 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
6473 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, LE_EXPR);
6474 0 : if (res) return res;
6475 : }
6476 0 : break;
6477 : }
6478 : default:;
6479 : }
6480 : }
6481 : }
6482 0 : if (CONSTANT_CLASS_P (_p1))
6483 : {
6484 0 : {
6485 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
6486 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6487 0 : if (res) return res;
6488 : }
6489 : }
6490 : break;
6491 : }
6492 : default:;
6493 : }
6494 : }
6495 : }
6496 9103460 : switch (TREE_CODE (_p1))
6497 : {
6498 187669 : case REAL_CST:
6499 187669 : {
6500 187669 : {
6501 187669 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6502 187669 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR);
6503 187669 : if (res) return res;
6504 : }
6505 187606 : break;
6506 : }
6507 9103397 : default:;
6508 : }
6509 9103397 : switch (TREE_CODE (_p0))
6510 : {
6511 1552167 : case PLUS_EXPR:
6512 1552167 : {
6513 1552167 : tree _q20 = TREE_OPERAND (_p0, 0);
6514 1552167 : tree _q21 = TREE_OPERAND (_p0, 1);
6515 1552167 : switch (TREE_CODE (_q21))
6516 : {
6517 86 : case REAL_CST:
6518 86 : {
6519 86 : switch (TREE_CODE (_p1))
6520 : {
6521 81 : case REAL_CST:
6522 81 : {
6523 81 : {
6524 81 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6525 81 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR);
6526 81 : if (res) return res;
6527 : }
6528 81 : break;
6529 : }
6530 : default:;
6531 : }
6532 : break;
6533 : }
6534 1453940 : case INTEGER_CST:
6535 1453940 : {
6536 1453940 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6537 : {
6538 1928 : {
6539 1928 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
6540 1928 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
6541 1928 : if (res) return res;
6542 : }
6543 : }
6544 : break;
6545 : }
6546 : default:;
6547 : }
6548 : break;
6549 : }
6550 59221 : case MINUS_EXPR:
6551 59221 : {
6552 59221 : tree _q20 = TREE_OPERAND (_p0, 0);
6553 59221 : tree _q21 = TREE_OPERAND (_p0, 1);
6554 59221 : switch (TREE_CODE (_q21))
6555 : {
6556 1225 : case REAL_CST:
6557 1225 : {
6558 1225 : switch (TREE_CODE (_p1))
6559 : {
6560 1202 : case REAL_CST:
6561 1202 : {
6562 1202 : {
6563 1202 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6564 1202 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, MINUS_EXPR, LE_EXPR);
6565 1202 : if (res) return res;
6566 : }
6567 1202 : break;
6568 : }
6569 : default:;
6570 : }
6571 : break;
6572 : }
6573 59221 : default:;
6574 : }
6575 59221 : switch (TREE_CODE (_q20))
6576 : {
6577 2 : case REAL_CST:
6578 2 : {
6579 2 : switch (TREE_CODE (_p1))
6580 : {
6581 0 : case REAL_CST:
6582 0 : {
6583 0 : {
6584 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6585 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, LE_EXPR);
6586 0 : if (res) return res;
6587 : }
6588 0 : break;
6589 : }
6590 : default:;
6591 : }
6592 : break;
6593 : }
6594 : default:;
6595 : }
6596 : break;
6597 : }
6598 11731 : case FLOAT_EXPR:
6599 11731 : {
6600 11731 : tree _q20 = TREE_OPERAND (_p0, 0);
6601 11731 : switch (TREE_CODE (_p1))
6602 : {
6603 0 : case FLOAT_EXPR:
6604 0 : {
6605 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6606 0 : {
6607 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6608 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6609 0 : if (res) return res;
6610 : }
6611 0 : break;
6612 : }
6613 235 : case REAL_CST:
6614 235 : {
6615 235 : {
6616 235 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6617 235 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6618 235 : if (res) return res;
6619 : }
6620 156 : break;
6621 : }
6622 : default:;
6623 : }
6624 : break;
6625 : }
6626 428 : case EXACT_DIV_EXPR:
6627 428 : {
6628 428 : tree _q20 = TREE_OPERAND (_p0, 0);
6629 428 : tree _q21 = TREE_OPERAND (_p0, 1);
6630 428 : switch (TREE_CODE (_q21))
6631 : {
6632 428 : case INTEGER_CST:
6633 428 : {
6634 428 : switch (TREE_CODE (_p1))
6635 : {
6636 351 : case INTEGER_CST:
6637 351 : {
6638 351 : {
6639 351 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6640 351 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, LE_EXPR);
6641 351 : if (res) return res;
6642 : }
6643 0 : break;
6644 : }
6645 : default:;
6646 : }
6647 : break;
6648 : }
6649 : default:;
6650 : }
6651 : break;
6652 : }
6653 1643038 : CASE_CONVERT:
6654 1643038 : {
6655 1643038 : tree _q20 = TREE_OPERAND (_p0, 0);
6656 1643038 : switch (TREE_CODE (_q20))
6657 : {
6658 0 : case EXACT_DIV_EXPR:
6659 0 : {
6660 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6661 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6662 0 : switch (TREE_CODE (_q31))
6663 : {
6664 0 : case INTEGER_CST:
6665 0 : {
6666 0 : switch (TREE_CODE (_p1))
6667 : {
6668 0 : case INTEGER_CST:
6669 0 : {
6670 0 : {
6671 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6672 0 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6673 0 : if (res) return res;
6674 : }
6675 0 : break;
6676 : }
6677 : default:;
6678 : }
6679 : break;
6680 : }
6681 : default:;
6682 : }
6683 : break;
6684 : }
6685 1643038 : default:;
6686 : }
6687 1643038 : switch (TREE_CODE (_p1))
6688 : {
6689 77660 : CASE_CONVERT:
6690 77660 : {
6691 77660 : tree _q40 = TREE_OPERAND (_p1, 0);
6692 77660 : {
6693 77660 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6694 77660 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, LE_EXPR);
6695 77660 : if (res) return res;
6696 : }
6697 29226 : break;
6698 : }
6699 1594604 : default:;
6700 : }
6701 1594604 : {
6702 1594604 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
6703 1594604 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, LE_EXPR);
6704 1594604 : if (res) return res;
6705 : }
6706 931713 : switch (TREE_CODE (_q20))
6707 : {
6708 6085 : case ADDR_EXPR:
6709 6085 : {
6710 6085 : switch (TREE_CODE (_p1))
6711 : {
6712 5763 : CASE_CONVERT:
6713 5763 : {
6714 5763 : tree _q40 = TREE_OPERAND (_p1, 0);
6715 5763 : switch (TREE_CODE (_q40))
6716 : {
6717 5763 : case ADDR_EXPR:
6718 5763 : {
6719 5763 : {
6720 5763 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6721 5763 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, LE_EXPR);
6722 5763 : if (res) return res;
6723 : }
6724 160 : break;
6725 : }
6726 : default:;
6727 : }
6728 : break;
6729 : }
6730 7 : case ADDR_EXPR:
6731 7 : {
6732 7 : {
6733 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6734 7 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, LE_EXPR);
6735 7 : if (res) return res;
6736 : }
6737 0 : break;
6738 : }
6739 : default:;
6740 : }
6741 : break;
6742 : }
6743 926103 : default:;
6744 : }
6745 926103 : if (uniform_integer_cst_p (_p1))
6746 : {
6747 481342 : {
6748 481342 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6749 481342 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR);
6750 481342 : if (res) return res;
6751 : }
6752 : }
6753 : break;
6754 : }
6755 5327 : case BIT_AND_EXPR:
6756 5327 : {
6757 5327 : tree _q20 = TREE_OPERAND (_p0, 0);
6758 5327 : tree _q21 = TREE_OPERAND (_p0, 1);
6759 5327 : switch (TREE_CODE (_q21))
6760 : {
6761 4845 : case INTEGER_CST:
6762 4845 : {
6763 4845 : switch (TREE_CODE (_p1))
6764 : {
6765 2710 : case INTEGER_CST:
6766 2710 : {
6767 2710 : {
6768 2710 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6769 2710 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
6770 2710 : if (res) return res;
6771 : }
6772 2663 : break;
6773 : }
6774 : default:;
6775 : }
6776 : break;
6777 : }
6778 : default:;
6779 : }
6780 : break;
6781 : }
6782 5488 : case NEGATE_EXPR:
6783 5488 : {
6784 5488 : tree _q20 = TREE_OPERAND (_p0, 0);
6785 5488 : switch (TREE_CODE (_p1))
6786 : {
6787 32 : case NEGATE_EXPR:
6788 32 : {
6789 32 : tree _q40 = TREE_OPERAND (_p1, 0);
6790 32 : {
6791 32 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6792 32 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6793 32 : if (res) return res;
6794 : }
6795 32 : break;
6796 : }
6797 5488 : default:;
6798 : }
6799 5488 : if (CONSTANT_CLASS_P (_p1))
6800 : {
6801 455 : {
6802 455 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6803 455 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6804 455 : if (res) return res;
6805 : }
6806 : }
6807 : break;
6808 : }
6809 1564 : case ADDR_EXPR:
6810 1564 : {
6811 1564 : switch (TREE_CODE (_p1))
6812 : {
6813 19 : CASE_CONVERT:
6814 19 : {
6815 19 : tree _q30 = TREE_OPERAND (_p1, 0);
6816 19 : switch (TREE_CODE (_q30))
6817 : {
6818 19 : case ADDR_EXPR:
6819 19 : {
6820 19 : {
6821 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
6822 19 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, LE_EXPR);
6823 19 : if (res) return res;
6824 : }
6825 0 : break;
6826 : }
6827 : default:;
6828 : }
6829 : break;
6830 : }
6831 662 : case ADDR_EXPR:
6832 662 : {
6833 662 : {
6834 662 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
6835 662 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, LE_EXPR);
6836 662 : if (res) return res;
6837 : }
6838 302 : break;
6839 : }
6840 : default:;
6841 : }
6842 : break;
6843 : }
6844 125762 : case CALL_EXPR:
6845 125762 : switch (get_call_combined_fn (_p0))
6846 : {
6847 2 : case CFN_BUILT_IN_SQRTF:
6848 2 : if (call_expr_nargs (_p0) == 1)
6849 : {
6850 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6851 2 : switch (TREE_CODE (_p1))
6852 : {
6853 2 : case REAL_CST:
6854 2 : {
6855 2 : {
6856 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6857 2 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6858 2 : if (res) return res;
6859 : }
6860 0 : break;
6861 : }
6862 0 : case CALL_EXPR:
6863 0 : switch (get_call_combined_fn (_p1))
6864 : {
6865 0 : case CFN_BUILT_IN_SQRTF:
6866 0 : if (call_expr_nargs (_p1) == 1)
6867 : {
6868 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6869 0 : {
6870 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6871 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6872 0 : if (res) return res;
6873 : }
6874 : }
6875 : break;
6876 : default:;
6877 : }
6878 : break;
6879 : default:;
6880 : }
6881 : }
6882 : break;
6883 0 : case CFN_BUILT_IN_SQRTL:
6884 0 : if (call_expr_nargs (_p0) == 1)
6885 : {
6886 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6887 0 : switch (TREE_CODE (_p1))
6888 : {
6889 0 : case REAL_CST:
6890 0 : {
6891 0 : {
6892 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6893 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6894 0 : if (res) return res;
6895 : }
6896 0 : break;
6897 : }
6898 0 : case CALL_EXPR:
6899 0 : switch (get_call_combined_fn (_p1))
6900 : {
6901 0 : case CFN_BUILT_IN_SQRTL:
6902 0 : if (call_expr_nargs (_p1) == 1)
6903 : {
6904 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6905 0 : {
6906 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6907 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6908 0 : if (res) return res;
6909 : }
6910 : }
6911 : break;
6912 : default:;
6913 : }
6914 : break;
6915 : default:;
6916 : }
6917 : }
6918 : break;
6919 2 : case CFN_BUILT_IN_SQRT:
6920 2 : if (call_expr_nargs (_p0) == 1)
6921 : {
6922 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6923 2 : switch (TREE_CODE (_p1))
6924 : {
6925 2 : case REAL_CST:
6926 2 : {
6927 2 : {
6928 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6929 2 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6930 2 : if (res) return res;
6931 : }
6932 2 : break;
6933 : }
6934 0 : case CALL_EXPR:
6935 0 : switch (get_call_combined_fn (_p1))
6936 : {
6937 0 : case CFN_BUILT_IN_SQRT:
6938 0 : if (call_expr_nargs (_p1) == 1)
6939 : {
6940 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6941 0 : {
6942 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6943 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6944 0 : if (res) return res;
6945 : }
6946 : }
6947 : break;
6948 : default:;
6949 : }
6950 : break;
6951 : default:;
6952 : }
6953 : }
6954 : break;
6955 0 : case CFN_SQRT:
6956 0 : if (call_expr_nargs (_p0) == 1)
6957 : {
6958 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6959 0 : switch (TREE_CODE (_p1))
6960 : {
6961 0 : case REAL_CST:
6962 0 : {
6963 0 : {
6964 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6965 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
6966 0 : if (res) return res;
6967 : }
6968 0 : break;
6969 : }
6970 0 : case CALL_EXPR:
6971 0 : switch (get_call_combined_fn (_p1))
6972 : {
6973 0 : case CFN_SQRT:
6974 0 : if (call_expr_nargs (_p1) == 1)
6975 : {
6976 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6977 0 : {
6978 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6979 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
6980 0 : if (res) return res;
6981 : }
6982 : }
6983 : break;
6984 : default:;
6985 : }
6986 : break;
6987 : default:;
6988 : }
6989 : }
6990 : break;
6991 : default:;
6992 : }
6993 : break;
6994 8362967 : default:;
6995 : }
6996 8362967 : if (uniform_integer_cst_p (_p1))
6997 : {
6998 5947483 : {
6999 5947483 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
7000 5947483 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, LE_EXPR);
7001 5947483 : if (res) return res;
7002 : }
7003 : }
7004 7955750 : switch (TREE_CODE (_p0))
7005 : {
7006 890321 : CASE_CONVERT:
7007 890321 : {
7008 890321 : tree _q20 = TREE_OPERAND (_p0, 0);
7009 890321 : switch (TREE_CODE (_q20))
7010 : {
7011 94417 : case PLUS_EXPR:
7012 94417 : {
7013 94417 : tree _q30 = TREE_OPERAND (_q20, 0);
7014 94417 : tree _q31 = TREE_OPERAND (_q20, 1);
7015 94417 : switch (TREE_CODE (_q30))
7016 : {
7017 79712 : CASE_CONVERT:
7018 79712 : {
7019 79712 : tree _q40 = TREE_OPERAND (_q30, 0);
7020 79712 : switch (TREE_CODE (_q31))
7021 : {
7022 79139 : case INTEGER_CST:
7023 79139 : {
7024 79139 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7025 : {
7026 4 : {
7027 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
7028 4 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
7029 4 : if (res) return res;
7030 : }
7031 : }
7032 : break;
7033 : }
7034 : default:;
7035 : }
7036 : break;
7037 : }
7038 : default:;
7039 : }
7040 : break;
7041 : }
7042 : default:;
7043 : }
7044 : break;
7045 : }
7046 7955746 : default:;
7047 : }
7048 7955746 : switch (TREE_CODE (_p1))
7049 : {
7050 191583 : CASE_CONVERT:
7051 191583 : {
7052 191583 : tree _q30 = TREE_OPERAND (_p1, 0);
7053 191583 : switch (TREE_CODE (_q30))
7054 : {
7055 1889 : case PLUS_EXPR:
7056 1889 : {
7057 1889 : tree _q40 = TREE_OPERAND (_q30, 0);
7058 1889 : tree _q41 = TREE_OPERAND (_q30, 1);
7059 1889 : switch (TREE_CODE (_q40))
7060 : {
7061 441 : CASE_CONVERT:
7062 441 : {
7063 441 : tree _q50 = TREE_OPERAND (_q40, 0);
7064 441 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7065 : {
7066 0 : switch (TREE_CODE (_q41))
7067 : {
7068 0 : case INTEGER_CST:
7069 0 : {
7070 0 : {
7071 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
7072 0 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7073 0 : if (res) return res;
7074 : }
7075 0 : break;
7076 : }
7077 : default:;
7078 : }
7079 : }
7080 : break;
7081 : }
7082 : default:;
7083 : }
7084 : break;
7085 : }
7086 : default:;
7087 : }
7088 : break;
7089 : }
7090 121496 : case PLUS_EXPR:
7091 121496 : {
7092 121496 : tree _q30 = TREE_OPERAND (_p1, 0);
7093 121496 : tree _q31 = TREE_OPERAND (_p1, 1);
7094 121496 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7095 : {
7096 30 : switch (TREE_CODE (_q31))
7097 : {
7098 30 : case INTEGER_CST:
7099 30 : {
7100 30 : {
7101 30 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
7102 30 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7103 30 : if (res) return res;
7104 : }
7105 0 : break;
7106 : }
7107 : default:;
7108 : }
7109 : }
7110 : break;
7111 : }
7112 7955716 : default:;
7113 : }
7114 7955716 : switch (TREE_CODE (_p0))
7115 : {
7116 57088 : case MINUS_EXPR:
7117 57088 : {
7118 57088 : tree _q20 = TREE_OPERAND (_p0, 0);
7119 57088 : tree _q21 = TREE_OPERAND (_p0, 1);
7120 57088 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7121 : {
7122 2509 : {
7123 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7124 2509 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, LE_EXPR);
7125 2509 : if (res) return res;
7126 : }
7127 : }
7128 : break;
7129 : }
7130 7955589 : default:;
7131 : }
7132 7955589 : switch (TREE_CODE (_p1))
7133 : {
7134 121466 : case PLUS_EXPR:
7135 121466 : {
7136 121466 : tree _q30 = TREE_OPERAND (_p1, 0);
7137 121466 : tree _q31 = TREE_OPERAND (_p1, 1);
7138 121466 : switch (TREE_CODE (_q30))
7139 : {
7140 4 : case MINUS_EXPR:
7141 4 : {
7142 4 : tree _q40 = TREE_OPERAND (_q30, 0);
7143 4 : tree _q41 = TREE_OPERAND (_q30, 1);
7144 4 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7145 : {
7146 0 : if (integer_minus_onep (_q31))
7147 : {
7148 0 : {
7149 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
7150 0 : tree res = generic_simplify_410 (loc, type, _p0, _p1, captures, GE_EXPR);
7151 0 : if (res) return res;
7152 : }
7153 : }
7154 : }
7155 : break;
7156 : }
7157 : default:;
7158 : }
7159 : break;
7160 : }
7161 7955589 : default:;
7162 : }
7163 7955589 : switch (TREE_CODE (_p0))
7164 : {
7165 12 : case REALPART_EXPR:
7166 12 : {
7167 12 : tree _q20 = TREE_OPERAND (_p0, 0);
7168 12 : switch (TREE_CODE (_q20))
7169 : {
7170 0 : case CALL_EXPR:
7171 0 : switch (get_call_combined_fn (_q20))
7172 : {
7173 0 : case CFN_SUB_OVERFLOW:
7174 0 : if (call_expr_nargs (_q20) == 2)
7175 : {
7176 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7177 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
7178 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7179 : {
7180 0 : {
7181 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7182 0 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7183 0 : if (res) return res;
7184 : }
7185 : }
7186 : }
7187 : break;
7188 : default:;
7189 : }
7190 : break;
7191 : default:;
7192 : }
7193 : break;
7194 : }
7195 7955589 : default:;
7196 : }
7197 7955589 : switch (TREE_CODE (_p1))
7198 : {
7199 0 : case REALPART_EXPR:
7200 0 : {
7201 0 : tree _q30 = TREE_OPERAND (_p1, 0);
7202 0 : switch (TREE_CODE (_q30))
7203 : {
7204 0 : case CALL_EXPR:
7205 0 : switch (get_call_combined_fn (_q30))
7206 : {
7207 0 : case CFN_ADD_OVERFLOW:
7208 0 : if (call_expr_nargs (_q30) == 2)
7209 : {
7210 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
7211 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
7212 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7213 : {
7214 0 : {
7215 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7216 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7217 0 : if (res) return res;
7218 : }
7219 : }
7220 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7221 : {
7222 0 : {
7223 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q40 };
7224 0 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7225 0 : if (res) return res;
7226 : }
7227 : }
7228 : }
7229 : break;
7230 : default:;
7231 : }
7232 : break;
7233 : default:;
7234 : }
7235 : break;
7236 : }
7237 339 : case TRUNC_DIV_EXPR:
7238 339 : {
7239 339 : tree _q30 = TREE_OPERAND (_p1, 0);
7240 339 : tree _q31 = TREE_OPERAND (_p1, 1);
7241 339 : if (integer_all_onesp (_q30))
7242 : {
7243 0 : {
7244 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
7245 0 : tree res = generic_simplify_413 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7246 0 : if (res) return res;
7247 : }
7248 : }
7249 : break;
7250 : }
7251 7955589 : default:;
7252 : }
7253 7955589 : switch (TREE_CODE (_p0))
7254 : {
7255 58059 : case MULT_EXPR:
7256 58059 : {
7257 58059 : tree _q20 = TREE_OPERAND (_p0, 0);
7258 58059 : tree _q21 = TREE_OPERAND (_p0, 1);
7259 58059 : switch (TREE_CODE (_q21))
7260 : {
7261 821 : case REAL_CST:
7262 821 : {
7263 821 : switch (TREE_CODE (_p1))
7264 : {
7265 553 : case REAL_CST:
7266 553 : {
7267 553 : {
7268 553 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7269 553 : tree res = generic_simplify_403 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7270 553 : if (res) return res;
7271 : }
7272 551 : break;
7273 : }
7274 : default:;
7275 : }
7276 : break;
7277 : }
7278 : default:;
7279 : }
7280 : break;
7281 : }
7282 22 : case REAL_CST:
7283 22 : {
7284 22 : switch (TREE_CODE (_p1))
7285 : {
7286 0 : case CALL_EXPR:
7287 0 : switch (get_call_combined_fn (_p1))
7288 : {
7289 0 : case CFN_BUILT_IN_EXP:
7290 0 : if (call_expr_nargs (_p1) == 1)
7291 : {
7292 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7293 0 : {
7294 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7295 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7296 0 : if (res) return res;
7297 : }
7298 : }
7299 : break;
7300 0 : case CFN_BUILT_IN_LOG:
7301 0 : if (call_expr_nargs (_p1) == 1)
7302 : {
7303 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7304 0 : {
7305 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7306 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7307 0 : if (res) return res;
7308 : }
7309 : }
7310 : break;
7311 0 : case CFN_BUILT_IN_EXP10F:
7312 0 : if (call_expr_nargs (_p1) == 1)
7313 : {
7314 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7315 0 : {
7316 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7317 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7318 0 : if (res) return res;
7319 : }
7320 : }
7321 : break;
7322 0 : case CFN_BUILT_IN_EXP10L:
7323 0 : if (call_expr_nargs (_p1) == 1)
7324 : {
7325 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7326 0 : {
7327 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7328 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7329 0 : if (res) return res;
7330 : }
7331 : }
7332 : break;
7333 0 : case CFN_BUILT_IN_EXP2:
7334 0 : if (call_expr_nargs (_p1) == 1)
7335 : {
7336 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7337 0 : {
7338 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7339 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7340 0 : if (res) return res;
7341 : }
7342 : }
7343 : break;
7344 0 : case CFN_BUILT_IN_EXPF:
7345 0 : if (call_expr_nargs (_p1) == 1)
7346 : {
7347 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7348 0 : {
7349 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7350 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7351 0 : if (res) return res;
7352 : }
7353 : }
7354 : break;
7355 0 : case CFN_BUILT_IN_EXPL:
7356 0 : if (call_expr_nargs (_p1) == 1)
7357 : {
7358 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7359 0 : {
7360 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7361 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7362 0 : if (res) return res;
7363 : }
7364 : }
7365 : break;
7366 0 : case CFN_BUILT_IN_LOG2:
7367 0 : if (call_expr_nargs (_p1) == 1)
7368 : {
7369 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7370 0 : {
7371 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7372 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7373 0 : if (res) return res;
7374 : }
7375 : }
7376 : break;
7377 0 : case CFN_BUILT_IN_LOGF:
7378 0 : if (call_expr_nargs (_p1) == 1)
7379 : {
7380 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7381 0 : {
7382 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7383 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7384 0 : if (res) return res;
7385 : }
7386 : }
7387 : break;
7388 0 : case CFN_BUILT_IN_LOGL:
7389 0 : if (call_expr_nargs (_p1) == 1)
7390 : {
7391 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7392 0 : {
7393 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7394 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7395 0 : if (res) return res;
7396 : }
7397 : }
7398 : break;
7399 0 : case CFN_BUILT_IN_LOG10F:
7400 0 : if (call_expr_nargs (_p1) == 1)
7401 : {
7402 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7403 0 : {
7404 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7405 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7406 0 : if (res) return res;
7407 : }
7408 : }
7409 : break;
7410 0 : case CFN_BUILT_IN_LOG10L:
7411 0 : if (call_expr_nargs (_p1) == 1)
7412 : {
7413 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7414 0 : {
7415 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7416 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7417 0 : if (res) return res;
7418 : }
7419 : }
7420 : break;
7421 0 : case CFN_EXP:
7422 0 : if (call_expr_nargs (_p1) == 1)
7423 : {
7424 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7425 0 : {
7426 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7427 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7428 0 : if (res) return res;
7429 : }
7430 : }
7431 : break;
7432 0 : case CFN_LOG:
7433 0 : if (call_expr_nargs (_p1) == 1)
7434 : {
7435 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7436 0 : {
7437 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7438 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7439 0 : if (res) return res;
7440 : }
7441 : }
7442 : break;
7443 0 : case CFN_EXP2:
7444 0 : if (call_expr_nargs (_p1) == 1)
7445 : {
7446 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7447 0 : {
7448 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7449 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7450 0 : if (res) return res;
7451 : }
7452 : }
7453 : break;
7454 0 : case CFN_LOG2:
7455 0 : if (call_expr_nargs (_p1) == 1)
7456 : {
7457 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7458 0 : {
7459 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7460 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7461 0 : if (res) return res;
7462 : }
7463 : }
7464 : break;
7465 0 : case CFN_EXP10:
7466 0 : if (call_expr_nargs (_p1) == 1)
7467 : {
7468 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7469 0 : {
7470 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7471 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7472 0 : if (res) return res;
7473 : }
7474 : }
7475 : break;
7476 0 : case CFN_LOG10:
7477 0 : if (call_expr_nargs (_p1) == 1)
7478 : {
7479 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7480 0 : {
7481 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7482 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7483 0 : if (res) return res;
7484 : }
7485 : }
7486 : break;
7487 0 : case CFN_BUILT_IN_EXP10:
7488 0 : if (call_expr_nargs (_p1) == 1)
7489 : {
7490 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7491 0 : {
7492 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7493 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7494 0 : if (res) return res;
7495 : }
7496 : }
7497 : break;
7498 0 : case CFN_BUILT_IN_EXP2F:
7499 0 : if (call_expr_nargs (_p1) == 1)
7500 : {
7501 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7502 0 : {
7503 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7504 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7505 0 : if (res) return res;
7506 : }
7507 : }
7508 : break;
7509 0 : case CFN_BUILT_IN_EXP2L:
7510 0 : if (call_expr_nargs (_p1) == 1)
7511 : {
7512 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7513 0 : {
7514 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7515 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7516 0 : if (res) return res;
7517 : }
7518 : }
7519 : break;
7520 0 : case CFN_BUILT_IN_LOG10:
7521 0 : if (call_expr_nargs (_p1) == 1)
7522 : {
7523 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7524 0 : {
7525 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7526 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7527 0 : if (res) return res;
7528 : }
7529 : }
7530 : break;
7531 0 : case CFN_BUILT_IN_LOG2F:
7532 0 : if (call_expr_nargs (_p1) == 1)
7533 : {
7534 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7535 0 : {
7536 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7537 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7538 0 : if (res) return res;
7539 : }
7540 : }
7541 : break;
7542 0 : case CFN_BUILT_IN_LOG2L:
7543 0 : if (call_expr_nargs (_p1) == 1)
7544 : {
7545 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7546 0 : {
7547 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7548 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7549 0 : if (res) return res;
7550 : }
7551 : }
7552 : break;
7553 : default:;
7554 : }
7555 : break;
7556 : default:;
7557 : }
7558 : break;
7559 : }
7560 1466370 : case PLUS_EXPR:
7561 1466370 : {
7562 1466370 : tree _q20 = TREE_OPERAND (_p0, 0);
7563 1466370 : tree _q21 = TREE_OPERAND (_p0, 1);
7564 1466370 : switch (TREE_CODE (_q21))
7565 : {
7566 1370643 : case INTEGER_CST:
7567 1370643 : {
7568 1370643 : switch (TREE_CODE (_p1))
7569 : {
7570 848701 : case INTEGER_CST:
7571 848701 : {
7572 848701 : {
7573 848701 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7574 848701 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, LE_EXPR, GE_EXPR);
7575 848701 : if (res) return res;
7576 : }
7577 666955 : break;
7578 : }
7579 : default:;
7580 : }
7581 : break;
7582 : }
7583 : default:;
7584 : }
7585 : break;
7586 : }
7587 56961 : case MINUS_EXPR:
7588 56961 : {
7589 56961 : tree _q20 = TREE_OPERAND (_p0, 0);
7590 56961 : tree _q21 = TREE_OPERAND (_p0, 1);
7591 56961 : switch (TREE_CODE (_q21))
7592 : {
7593 2173 : case INTEGER_CST:
7594 2173 : {
7595 2173 : switch (TREE_CODE (_p1))
7596 : {
7597 2173 : case INTEGER_CST:
7598 2173 : {
7599 2173 : {
7600 2173 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7601 2173 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, LE_EXPR, GE_EXPR);
7602 2173 : if (res) return res;
7603 : }
7604 2173 : break;
7605 : }
7606 : default:;
7607 : }
7608 : break;
7609 : }
7610 56961 : default:;
7611 : }
7612 56961 : switch (TREE_CODE (_q20))
7613 : {
7614 2039 : case INTEGER_CST:
7615 2039 : {
7616 2039 : switch (TREE_CODE (_p1))
7617 : {
7618 1081 : case INTEGER_CST:
7619 1081 : {
7620 1081 : {
7621 1081 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7622 1081 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7623 1081 : if (res) return res;
7624 : }
7625 0 : break;
7626 : }
7627 : default:;
7628 : }
7629 : break;
7630 : }
7631 : default:;
7632 : }
7633 : break;
7634 : }
7635 125341 : case CALL_EXPR:
7636 125341 : switch (get_call_combined_fn (_p0))
7637 : {
7638 18 : case CFN_BUILT_IN_CTZ:
7639 18 : if (call_expr_nargs (_p0) == 1)
7640 : {
7641 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7642 18 : switch (TREE_CODE (_p1))
7643 : {
7644 18 : case INTEGER_CST:
7645 18 : {
7646 18 : {
7647 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7648 18 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZ);
7649 18 : if (res) return res;
7650 : }
7651 16 : break;
7652 : }
7653 : default:;
7654 : }
7655 : }
7656 : break;
7657 0 : case CFN_BUILT_IN_EXP:
7658 0 : if (call_expr_nargs (_p0) == 1)
7659 : {
7660 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7661 0 : switch (TREE_CODE (_p1))
7662 : {
7663 0 : case REAL_CST:
7664 0 : {
7665 0 : {
7666 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7667 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7668 0 : if (res) return res;
7669 : }
7670 0 : break;
7671 : }
7672 : default:;
7673 : }
7674 : }
7675 : break;
7676 8 : case CFN_BUILT_IN_FFS:
7677 8 : if (call_expr_nargs (_p0) == 1)
7678 : {
7679 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7680 8 : switch (TREE_CODE (_p1))
7681 : {
7682 8 : case INTEGER_CST:
7683 8 : {
7684 8 : {
7685 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7686 8 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFS);
7687 8 : if (res) return res;
7688 : }
7689 2 : break;
7690 : }
7691 : default:;
7692 : }
7693 : }
7694 : break;
7695 0 : case CFN_BUILT_IN_LOG:
7696 0 : if (call_expr_nargs (_p0) == 1)
7697 : {
7698 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7699 0 : switch (TREE_CODE (_p1))
7700 : {
7701 0 : case REAL_CST:
7702 0 : {
7703 0 : {
7704 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7705 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7706 0 : if (res) return res;
7707 : }
7708 0 : break;
7709 : }
7710 : default:;
7711 : }
7712 : }
7713 : break;
7714 0 : case CFN_BUILT_IN_FFSIMAX:
7715 0 : if (call_expr_nargs (_p0) == 1)
7716 : {
7717 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7718 0 : switch (TREE_CODE (_p1))
7719 : {
7720 0 : case INTEGER_CST:
7721 0 : {
7722 0 : {
7723 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7724 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSIMAX);
7725 0 : if (res) return res;
7726 : }
7727 0 : break;
7728 : }
7729 : default:;
7730 : }
7731 : }
7732 : break;
7733 0 : case CFN_BUILT_IN_EXP10F:
7734 0 : if (call_expr_nargs (_p0) == 1)
7735 : {
7736 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7737 0 : switch (TREE_CODE (_p1))
7738 : {
7739 0 : case REAL_CST:
7740 0 : {
7741 0 : {
7742 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7743 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7744 0 : if (res) return res;
7745 : }
7746 0 : break;
7747 : }
7748 : default:;
7749 : }
7750 : }
7751 : break;
7752 0 : case CFN_BUILT_IN_EXP10L:
7753 0 : if (call_expr_nargs (_p0) == 1)
7754 : {
7755 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7756 0 : switch (TREE_CODE (_p1))
7757 : {
7758 0 : case REAL_CST:
7759 0 : {
7760 0 : {
7761 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7762 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7763 0 : if (res) return res;
7764 : }
7765 0 : break;
7766 : }
7767 : default:;
7768 : }
7769 : }
7770 : break;
7771 37 : case CFN_BUILT_IN_POPCOUNT:
7772 37 : if (call_expr_nargs (_p0) == 1)
7773 : {
7774 37 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7775 37 : if (integer_zerop (_p1))
7776 : {
7777 1 : {
7778 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7779 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
7780 1 : if (res) return res;
7781 : }
7782 : }
7783 : }
7784 : break;
7785 0 : case CFN_BUILT_IN_CTZL:
7786 0 : if (call_expr_nargs (_p0) == 1)
7787 : {
7788 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7789 0 : switch (TREE_CODE (_p1))
7790 : {
7791 0 : case INTEGER_CST:
7792 0 : {
7793 0 : {
7794 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7795 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZL);
7796 0 : if (res) return res;
7797 : }
7798 0 : break;
7799 : }
7800 : default:;
7801 : }
7802 : }
7803 : break;
7804 0 : case CFN_BUILT_IN_EXP2:
7805 0 : if (call_expr_nargs (_p0) == 1)
7806 : {
7807 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7808 0 : switch (TREE_CODE (_p1))
7809 : {
7810 0 : case REAL_CST:
7811 0 : {
7812 0 : {
7813 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7814 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7815 0 : if (res) return res;
7816 : }
7817 0 : break;
7818 : }
7819 : default:;
7820 : }
7821 : }
7822 : break;
7823 0 : case CFN_BUILT_IN_EXPF:
7824 0 : if (call_expr_nargs (_p0) == 1)
7825 : {
7826 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7827 0 : switch (TREE_CODE (_p1))
7828 : {
7829 0 : case REAL_CST:
7830 0 : {
7831 0 : {
7832 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7833 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7834 0 : if (res) return res;
7835 : }
7836 0 : break;
7837 : }
7838 : default:;
7839 : }
7840 : }
7841 : break;
7842 0 : case CFN_BUILT_IN_EXPL:
7843 0 : if (call_expr_nargs (_p0) == 1)
7844 : {
7845 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7846 0 : switch (TREE_CODE (_p1))
7847 : {
7848 0 : case REAL_CST:
7849 0 : {
7850 0 : {
7851 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7852 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7853 0 : if (res) return res;
7854 : }
7855 0 : break;
7856 : }
7857 : default:;
7858 : }
7859 : }
7860 : break;
7861 3 : case CFN_BUILT_IN_FFSL:
7862 3 : if (call_expr_nargs (_p0) == 1)
7863 : {
7864 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7865 3 : switch (TREE_CODE (_p1))
7866 : {
7867 3 : case INTEGER_CST:
7868 3 : {
7869 3 : {
7870 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7871 3 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSL);
7872 3 : if (res) return res;
7873 : }
7874 0 : break;
7875 : }
7876 : default:;
7877 : }
7878 : }
7879 : break;
7880 0 : case CFN_BUILT_IN_LOG2:
7881 0 : if (call_expr_nargs (_p0) == 1)
7882 : {
7883 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7884 0 : switch (TREE_CODE (_p1))
7885 : {
7886 0 : case REAL_CST:
7887 0 : {
7888 0 : {
7889 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7890 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7891 0 : if (res) return res;
7892 : }
7893 0 : break;
7894 : }
7895 : default:;
7896 : }
7897 : }
7898 : break;
7899 0 : case CFN_BUILT_IN_LOGF:
7900 0 : if (call_expr_nargs (_p0) == 1)
7901 : {
7902 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7903 0 : switch (TREE_CODE (_p1))
7904 : {
7905 0 : case REAL_CST:
7906 0 : {
7907 0 : {
7908 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7909 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7910 0 : if (res) return res;
7911 : }
7912 0 : break;
7913 : }
7914 : default:;
7915 : }
7916 : }
7917 : break;
7918 0 : case CFN_BUILT_IN_LOGL:
7919 0 : if (call_expr_nargs (_p0) == 1)
7920 : {
7921 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7922 0 : switch (TREE_CODE (_p1))
7923 : {
7924 0 : case REAL_CST:
7925 0 : {
7926 0 : {
7927 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7928 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7929 0 : if (res) return res;
7930 : }
7931 0 : break;
7932 : }
7933 : default:;
7934 : }
7935 : }
7936 : break;
7937 1 : case CFN_BUILT_IN_POPCOUNTLL:
7938 1 : if (call_expr_nargs (_p0) == 1)
7939 : {
7940 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7941 1 : if (integer_zerop (_p1))
7942 : {
7943 1 : {
7944 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7945 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7946 1 : if (res) return res;
7947 : }
7948 : }
7949 : }
7950 : break;
7951 0 : case CFN_BUILT_IN_LOG10F:
7952 0 : if (call_expr_nargs (_p0) == 1)
7953 : {
7954 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7955 0 : switch (TREE_CODE (_p1))
7956 : {
7957 0 : case REAL_CST:
7958 0 : {
7959 0 : {
7960 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7961 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7962 0 : if (res) return res;
7963 : }
7964 0 : break;
7965 : }
7966 : default:;
7967 : }
7968 : }
7969 : break;
7970 0 : case CFN_BUILT_IN_LOG10L:
7971 0 : if (call_expr_nargs (_p0) == 1)
7972 : {
7973 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7974 0 : switch (TREE_CODE (_p1))
7975 : {
7976 0 : case REAL_CST:
7977 0 : {
7978 0 : {
7979 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7980 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7981 0 : if (res) return res;
7982 : }
7983 0 : break;
7984 : }
7985 : default:;
7986 : }
7987 : }
7988 : break;
7989 0 : case CFN_BUILT_IN_CTZIMAX:
7990 0 : if (call_expr_nargs (_p0) == 1)
7991 : {
7992 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7993 0 : switch (TREE_CODE (_p1))
7994 : {
7995 0 : case INTEGER_CST:
7996 0 : {
7997 0 : {
7998 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7999 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
8000 0 : if (res) return res;
8001 : }
8002 0 : break;
8003 : }
8004 : default:;
8005 : }
8006 : }
8007 : break;
8008 0 : case CFN_POPCOUNT:
8009 0 : if (call_expr_nargs (_p0) == 1)
8010 : {
8011 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8012 0 : if (integer_zerop (_p1))
8013 : {
8014 0 : {
8015 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8016 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_POPCOUNT);
8017 0 : if (res) return res;
8018 : }
8019 : }
8020 : }
8021 : break;
8022 0 : case CFN_CTZ:
8023 0 : if (call_expr_nargs (_p0) == 2)
8024 : {
8025 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8026 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
8027 0 : switch (TREE_CODE (_p1))
8028 : {
8029 0 : case INTEGER_CST:
8030 0 : {
8031 0 : {
8032 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8033 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR);
8034 0 : if (res) return res;
8035 : }
8036 0 : break;
8037 : }
8038 : default:;
8039 : }
8040 : }
8041 0 : if (call_expr_nargs (_p0) == 1)
8042 : {
8043 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8044 0 : switch (TREE_CODE (_p1))
8045 : {
8046 0 : case INTEGER_CST:
8047 0 : {
8048 0 : {
8049 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8050 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_CTZ);
8051 0 : if (res) return res;
8052 : }
8053 0 : break;
8054 : }
8055 : default:;
8056 : }
8057 : }
8058 : break;
8059 0 : case CFN_EXP:
8060 0 : if (call_expr_nargs (_p0) == 1)
8061 : {
8062 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8063 0 : switch (TREE_CODE (_p1))
8064 : {
8065 0 : case REAL_CST:
8066 0 : {
8067 0 : {
8068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8069 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8070 0 : if (res) return res;
8071 : }
8072 0 : break;
8073 : }
8074 : default:;
8075 : }
8076 : }
8077 : break;
8078 0 : case CFN_FFS:
8079 0 : if (call_expr_nargs (_p0) == 1)
8080 : {
8081 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8082 0 : switch (TREE_CODE (_p1))
8083 : {
8084 0 : case INTEGER_CST:
8085 0 : {
8086 0 : {
8087 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8088 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_FFS);
8089 0 : if (res) return res;
8090 : }
8091 0 : break;
8092 : }
8093 : default:;
8094 : }
8095 : }
8096 : break;
8097 0 : case CFN_LOG:
8098 0 : if (call_expr_nargs (_p0) == 1)
8099 : {
8100 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8101 0 : switch (TREE_CODE (_p1))
8102 : {
8103 0 : case REAL_CST:
8104 0 : {
8105 0 : {
8106 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8107 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8108 0 : if (res) return res;
8109 : }
8110 0 : break;
8111 : }
8112 : default:;
8113 : }
8114 : }
8115 : break;
8116 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8117 0 : if (call_expr_nargs (_p0) == 1)
8118 : {
8119 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8120 0 : if (integer_zerop (_p1))
8121 : {
8122 0 : {
8123 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8124 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8125 0 : if (res) return res;
8126 : }
8127 : }
8128 : }
8129 : break;
8130 0 : case CFN_EXP2:
8131 0 : if (call_expr_nargs (_p0) == 1)
8132 : {
8133 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8134 0 : switch (TREE_CODE (_p1))
8135 : {
8136 0 : case REAL_CST:
8137 0 : {
8138 0 : {
8139 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8140 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8141 0 : if (res) return res;
8142 : }
8143 0 : break;
8144 : }
8145 : default:;
8146 : }
8147 : }
8148 : break;
8149 0 : case CFN_LOG2:
8150 0 : if (call_expr_nargs (_p0) == 1)
8151 : {
8152 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8153 0 : switch (TREE_CODE (_p1))
8154 : {
8155 0 : case REAL_CST:
8156 0 : {
8157 0 : {
8158 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8159 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8160 0 : if (res) return res;
8161 : }
8162 0 : break;
8163 : }
8164 : default:;
8165 : }
8166 : }
8167 : break;
8168 0 : case CFN_EXP10:
8169 0 : if (call_expr_nargs (_p0) == 1)
8170 : {
8171 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8172 0 : switch (TREE_CODE (_p1))
8173 : {
8174 0 : case REAL_CST:
8175 0 : {
8176 0 : {
8177 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8178 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8179 0 : if (res) return res;
8180 : }
8181 0 : break;
8182 : }
8183 : default:;
8184 : }
8185 : }
8186 : break;
8187 1 : case CFN_BUILT_IN_POPCOUNTL:
8188 1 : if (call_expr_nargs (_p0) == 1)
8189 : {
8190 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8191 1 : if (integer_zerop (_p1))
8192 : {
8193 1 : {
8194 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8195 1 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
8196 1 : if (res) return res;
8197 : }
8198 : }
8199 : }
8200 : break;
8201 0 : case CFN_BUILT_IN_CTZLL:
8202 0 : if (call_expr_nargs (_p0) == 1)
8203 : {
8204 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8205 0 : switch (TREE_CODE (_p1))
8206 : {
8207 0 : case INTEGER_CST:
8208 0 : {
8209 0 : {
8210 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8211 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZLL);
8212 0 : if (res) return res;
8213 : }
8214 0 : break;
8215 : }
8216 : default:;
8217 : }
8218 : }
8219 : break;
8220 0 : case CFN_LOG10:
8221 0 : if (call_expr_nargs (_p0) == 1)
8222 : {
8223 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8224 0 : switch (TREE_CODE (_p1))
8225 : {
8226 0 : case REAL_CST:
8227 0 : {
8228 0 : {
8229 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8230 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8231 0 : if (res) return res;
8232 : }
8233 0 : break;
8234 : }
8235 : default:;
8236 : }
8237 : }
8238 : break;
8239 0 : case CFN_BUILT_IN_EXP10:
8240 0 : if (call_expr_nargs (_p0) == 1)
8241 : {
8242 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8243 0 : switch (TREE_CODE (_p1))
8244 : {
8245 0 : case REAL_CST:
8246 0 : {
8247 0 : {
8248 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8249 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8250 0 : if (res) return res;
8251 : }
8252 0 : break;
8253 : }
8254 : default:;
8255 : }
8256 : }
8257 : break;
8258 0 : case CFN_BUILT_IN_EXP2F:
8259 0 : if (call_expr_nargs (_p0) == 1)
8260 : {
8261 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8262 0 : switch (TREE_CODE (_p1))
8263 : {
8264 0 : case REAL_CST:
8265 0 : {
8266 0 : {
8267 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8268 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8269 0 : if (res) return res;
8270 : }
8271 0 : break;
8272 : }
8273 : default:;
8274 : }
8275 : }
8276 : break;
8277 0 : case CFN_BUILT_IN_EXP2L:
8278 0 : if (call_expr_nargs (_p0) == 1)
8279 : {
8280 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8281 0 : switch (TREE_CODE (_p1))
8282 : {
8283 0 : case REAL_CST:
8284 0 : {
8285 0 : {
8286 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8287 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8288 0 : if (res) return res;
8289 : }
8290 0 : break;
8291 : }
8292 : default:;
8293 : }
8294 : }
8295 : break;
8296 3 : case CFN_BUILT_IN_FFSLL:
8297 3 : if (call_expr_nargs (_p0) == 1)
8298 : {
8299 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8300 3 : switch (TREE_CODE (_p1))
8301 : {
8302 3 : case INTEGER_CST:
8303 3 : {
8304 3 : {
8305 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8306 3 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSLL);
8307 3 : if (res) return res;
8308 : }
8309 0 : break;
8310 : }
8311 : default:;
8312 : }
8313 : }
8314 : break;
8315 0 : case CFN_BUILT_IN_LOG10:
8316 0 : if (call_expr_nargs (_p0) == 1)
8317 : {
8318 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8319 0 : switch (TREE_CODE (_p1))
8320 : {
8321 0 : case REAL_CST:
8322 0 : {
8323 0 : {
8324 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8325 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8326 0 : if (res) return res;
8327 : }
8328 0 : break;
8329 : }
8330 : default:;
8331 : }
8332 : }
8333 : break;
8334 0 : case CFN_BUILT_IN_LOG2F:
8335 0 : if (call_expr_nargs (_p0) == 1)
8336 : {
8337 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8338 0 : switch (TREE_CODE (_p1))
8339 : {
8340 0 : case REAL_CST:
8341 0 : {
8342 0 : {
8343 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8344 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8345 0 : if (res) return res;
8346 : }
8347 0 : break;
8348 : }
8349 : default:;
8350 : }
8351 : }
8352 : break;
8353 0 : case CFN_BUILT_IN_LOG2L:
8354 0 : if (call_expr_nargs (_p0) == 1)
8355 : {
8356 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8357 0 : switch (TREE_CODE (_p1))
8358 : {
8359 0 : case REAL_CST:
8360 0 : {
8361 0 : {
8362 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8363 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8364 0 : if (res) return res;
8365 : }
8366 0 : break;
8367 : }
8368 : default:;
8369 : }
8370 : }
8371 : break;
8372 : default:;
8373 : }
8374 : break;
8375 : default:;
8376 : }
8377 : return NULL_TREE;
8378 : }
8379 :
8380 : tree
8381 4212 : 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)
8382 : {
8383 4212 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8384 4212 : if (integer_zerop (_p0))
8385 : {
8386 0 : {
8387 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8388 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8389 0 : if (res) return res;
8390 : }
8391 : }
8392 4212 : if (integer_onep (_p1))
8393 : {
8394 0 : {
8395 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8396 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8397 0 : if (res) return res;
8398 : }
8399 : }
8400 4212 : if (integer_minus_onep (_p1))
8401 : {
8402 0 : {
8403 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8404 0 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8405 0 : if (res) return res;
8406 : }
8407 : }
8408 4212 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8409 : {
8410 0 : {
8411 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8412 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8413 0 : if (res) return res;
8414 : }
8415 : }
8416 4212 : switch (TREE_CODE (_p0))
8417 : {
8418 0 : case CEIL_MOD_EXPR:
8419 0 : {
8420 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8421 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8422 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8423 : {
8424 0 : {
8425 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8426 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8427 0 : if (res) return res;
8428 : }
8429 : }
8430 : break;
8431 : }
8432 0 : case MULT_EXPR:
8433 0 : {
8434 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8435 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8436 0 : switch (TREE_CODE (_q21))
8437 : {
8438 0 : case INTEGER_CST:
8439 0 : {
8440 0 : switch (TREE_CODE (_p1))
8441 : {
8442 0 : case INTEGER_CST:
8443 0 : {
8444 0 : {
8445 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8446 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8447 0 : if (res) return res;
8448 : }
8449 0 : break;
8450 : }
8451 : default:;
8452 : }
8453 : break;
8454 : }
8455 : default:;
8456 : }
8457 : break;
8458 : }
8459 0 : case VEC_COND_EXPR:
8460 0 : {
8461 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8462 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8463 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8464 0 : switch (TREE_CODE (_p1))
8465 : {
8466 0 : case VEC_COND_EXPR:
8467 0 : {
8468 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8469 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8470 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8471 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8472 : {
8473 0 : {
8474 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8475 0 : if (VECTOR_TYPE_P (type)
8476 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8477 : || types_match (type, TREE_TYPE (captures[2]))
8478 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8479 : || (optimize_vectors_before_lowering_p ()
8480 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8481 : )
8482 : {
8483 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
8484 0 : {
8485 0 : tree res_op0;
8486 0 : res_op0 = captures[1];
8487 0 : tree res_op1;
8488 0 : {
8489 0 : tree _o1[2], _r1;
8490 0 : _o1[0] = captures[2];
8491 0 : _o1[1] = captures[5];
8492 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8493 0 : if (EXPR_P (_r1))
8494 0 : goto next_after_fail1649;
8495 0 : res_op1 = _r1;
8496 : }
8497 0 : tree res_op2;
8498 0 : {
8499 0 : tree _o1[2], _r1;
8500 0 : _o1[0] = captures[3];
8501 0 : _o1[1] = captures[6];
8502 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8503 0 : if (EXPR_P (_r1))
8504 0 : goto next_after_fail1649;
8505 0 : res_op2 = _r1;
8506 : }
8507 0 : tree _r;
8508 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8509 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8510 0 : return _r;
8511 : }
8512 0 : next_after_fail1649:;
8513 : }
8514 : }
8515 : }
8516 : break;
8517 : }
8518 0 : default:;
8519 : }
8520 0 : {
8521 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8522 0 : if (VECTOR_TYPE_P (type)
8523 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8524 : || types_match (type, TREE_TYPE (captures[2]))
8525 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8526 : || (optimize_vectors_before_lowering_p ()
8527 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8528 : )
8529 : {
8530 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1650;
8531 0 : {
8532 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1650;
8533 0 : tree res_op0;
8534 0 : res_op0 = captures[1];
8535 0 : tree res_op1;
8536 0 : {
8537 0 : tree _o1[2], _r1;
8538 0 : _o1[0] = captures[2];
8539 0 : _o1[1] = unshare_expr (captures[4]);
8540 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8541 0 : if (EXPR_P (_r1))
8542 0 : goto next_after_fail1650;
8543 0 : res_op1 = _r1;
8544 : }
8545 0 : tree res_op2;
8546 0 : {
8547 0 : tree _o1[2], _r1;
8548 0 : _o1[0] = captures[3];
8549 0 : _o1[1] = captures[4];
8550 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8551 0 : if (EXPR_P (_r1))
8552 0 : goto next_after_fail1650;
8553 0 : res_op2 = _r1;
8554 : }
8555 0 : tree _r;
8556 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8557 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8558 0 : return _r;
8559 : }
8560 0 : next_after_fail1650:;
8561 : }
8562 : }
8563 0 : break;
8564 : }
8565 4212 : default:;
8566 : }
8567 4212 : switch (TREE_CODE (_p1))
8568 : {
8569 0 : case VEC_COND_EXPR:
8570 0 : {
8571 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8572 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8573 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8574 0 : {
8575 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8576 0 : if (VECTOR_TYPE_P (type)
8577 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8578 : || types_match (type, TREE_TYPE (captures[3]))
8579 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8580 : || (optimize_vectors_before_lowering_p ()
8581 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8582 : )
8583 : {
8584 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
8585 0 : {
8586 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1651;
8587 0 : tree res_op0;
8588 0 : res_op0 = captures[2];
8589 0 : tree res_op1;
8590 0 : {
8591 0 : tree _o1[2], _r1;
8592 0 : _o1[0] = unshare_expr (captures[0]);
8593 0 : _o1[1] = captures[3];
8594 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8595 0 : if (EXPR_P (_r1))
8596 0 : goto next_after_fail1651;
8597 0 : res_op1 = _r1;
8598 : }
8599 0 : tree res_op2;
8600 0 : {
8601 0 : tree _o1[2], _r1;
8602 0 : _o1[0] = captures[0];
8603 0 : _o1[1] = captures[4];
8604 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8605 0 : if (EXPR_P (_r1))
8606 0 : goto next_after_fail1651;
8607 0 : res_op2 = _r1;
8608 : }
8609 0 : tree _r;
8610 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8611 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
8612 0 : return _r;
8613 : }
8614 0 : next_after_fail1651:;
8615 : }
8616 : }
8617 0 : break;
8618 : }
8619 : default:;
8620 : }
8621 : return NULL_TREE;
8622 : }
8623 :
8624 : tree
8625 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)
8626 : {
8627 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8628 0 : if (integer_zerop (_p0))
8629 : {
8630 0 : {
8631 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8632 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8633 0 : if (res) return res;
8634 : }
8635 : }
8636 0 : if (integer_onep (_p1))
8637 : {
8638 0 : {
8639 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8640 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8641 0 : if (res) return res;
8642 : }
8643 : }
8644 0 : if (integer_minus_onep (_p1))
8645 : {
8646 0 : {
8647 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8648 0 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8649 0 : if (res) return res;
8650 : }
8651 : }
8652 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8653 : {
8654 0 : {
8655 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8656 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8657 0 : if (res) return res;
8658 : }
8659 : }
8660 0 : switch (TREE_CODE (_p0))
8661 : {
8662 0 : case ROUND_MOD_EXPR:
8663 0 : {
8664 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8665 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8666 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8667 : {
8668 0 : {
8669 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8670 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8671 0 : if (res) return res;
8672 : }
8673 : }
8674 : break;
8675 : }
8676 0 : case MULT_EXPR:
8677 0 : {
8678 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8679 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8680 0 : switch (TREE_CODE (_q21))
8681 : {
8682 0 : case INTEGER_CST:
8683 0 : {
8684 0 : switch (TREE_CODE (_p1))
8685 : {
8686 0 : case INTEGER_CST:
8687 0 : {
8688 0 : {
8689 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8690 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8691 0 : if (res) return res;
8692 : }
8693 0 : break;
8694 : }
8695 : default:;
8696 : }
8697 : break;
8698 : }
8699 : default:;
8700 : }
8701 : break;
8702 : }
8703 0 : case VEC_COND_EXPR:
8704 0 : {
8705 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8706 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8707 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8708 0 : switch (TREE_CODE (_p1))
8709 : {
8710 0 : case VEC_COND_EXPR:
8711 0 : {
8712 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8713 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8714 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8715 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8716 : {
8717 0 : {
8718 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8719 0 : if (VECTOR_TYPE_P (type)
8720 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8721 : || types_match (type, TREE_TYPE (captures[2]))
8722 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8723 : || (optimize_vectors_before_lowering_p ()
8724 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8725 : )
8726 : {
8727 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
8728 0 : {
8729 0 : tree res_op0;
8730 0 : res_op0 = captures[1];
8731 0 : tree res_op1;
8732 0 : {
8733 0 : tree _o1[2], _r1;
8734 0 : _o1[0] = captures[2];
8735 0 : _o1[1] = captures[5];
8736 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8737 0 : if (EXPR_P (_r1))
8738 0 : goto next_after_fail1652;
8739 0 : res_op1 = _r1;
8740 : }
8741 0 : tree res_op2;
8742 0 : {
8743 0 : tree _o1[2], _r1;
8744 0 : _o1[0] = captures[3];
8745 0 : _o1[1] = captures[6];
8746 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8747 0 : if (EXPR_P (_r1))
8748 0 : goto next_after_fail1652;
8749 0 : res_op2 = _r1;
8750 : }
8751 0 : tree _r;
8752 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8753 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8754 0 : return _r;
8755 : }
8756 0 : next_after_fail1652:;
8757 : }
8758 : }
8759 : }
8760 : break;
8761 : }
8762 0 : default:;
8763 : }
8764 0 : {
8765 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8766 0 : if (VECTOR_TYPE_P (type)
8767 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8768 : || types_match (type, TREE_TYPE (captures[2]))
8769 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8770 : || (optimize_vectors_before_lowering_p ()
8771 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8772 : )
8773 : {
8774 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
8775 0 : {
8776 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1653;
8777 0 : tree res_op0;
8778 0 : res_op0 = captures[1];
8779 0 : tree res_op1;
8780 0 : {
8781 0 : tree _o1[2], _r1;
8782 0 : _o1[0] = captures[2];
8783 0 : _o1[1] = unshare_expr (captures[4]);
8784 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8785 0 : if (EXPR_P (_r1))
8786 0 : goto next_after_fail1653;
8787 0 : res_op1 = _r1;
8788 : }
8789 0 : tree res_op2;
8790 0 : {
8791 0 : tree _o1[2], _r1;
8792 0 : _o1[0] = captures[3];
8793 0 : _o1[1] = captures[4];
8794 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8795 0 : if (EXPR_P (_r1))
8796 0 : goto next_after_fail1653;
8797 0 : res_op2 = _r1;
8798 : }
8799 0 : tree _r;
8800 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8801 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8802 0 : return _r;
8803 : }
8804 0 : next_after_fail1653:;
8805 : }
8806 : }
8807 0 : break;
8808 : }
8809 0 : default:;
8810 : }
8811 0 : switch (TREE_CODE (_p1))
8812 : {
8813 0 : case VEC_COND_EXPR:
8814 0 : {
8815 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8816 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8817 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8818 0 : {
8819 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8820 0 : if (VECTOR_TYPE_P (type)
8821 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8822 : || types_match (type, TREE_TYPE (captures[3]))
8823 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8824 : || (optimize_vectors_before_lowering_p ()
8825 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8826 : )
8827 : {
8828 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1654;
8829 0 : {
8830 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1654;
8831 0 : tree res_op0;
8832 0 : res_op0 = captures[2];
8833 0 : tree res_op1;
8834 0 : {
8835 0 : tree _o1[2], _r1;
8836 0 : _o1[0] = unshare_expr (captures[0]);
8837 0 : _o1[1] = captures[3];
8838 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8839 0 : if (EXPR_P (_r1))
8840 0 : goto next_after_fail1654;
8841 0 : res_op1 = _r1;
8842 : }
8843 0 : tree res_op2;
8844 0 : {
8845 0 : tree _o1[2], _r1;
8846 0 : _o1[0] = captures[0];
8847 0 : _o1[1] = captures[4];
8848 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8849 0 : if (EXPR_P (_r1))
8850 0 : goto next_after_fail1654;
8851 0 : res_op2 = _r1;
8852 : }
8853 0 : tree _r;
8854 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8855 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
8856 0 : return _r;
8857 : }
8858 0 : next_after_fail1654:;
8859 : }
8860 : }
8861 0 : break;
8862 : }
8863 : default:;
8864 : }
8865 : return NULL_TREE;
8866 : }
8867 :
8868 : tree
8869 2056136 : 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)
8870 : {
8871 2056136 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8872 2056136 : if (integer_zerop (_p0))
8873 : {
8874 924 : {
8875 924 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8876 924 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8877 924 : if (res) return res;
8878 : }
8879 : }
8880 2055351 : if (integer_onep (_p1))
8881 : {
8882 212870 : {
8883 212870 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8884 212870 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8885 212870 : if (res) return res;
8886 : }
8887 : }
8888 1842481 : if (integer_minus_onep (_p1))
8889 : {
8890 529 : {
8891 529 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8892 529 : tree res = generic_simplify_328 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8893 529 : if (res) return res;
8894 : }
8895 : }
8896 1842461 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8897 : {
8898 232 : {
8899 232 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8900 232 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8901 232 : if (res) return res;
8902 : }
8903 : }
8904 1842368 : switch (TREE_CODE (_p0))
8905 : {
8906 107 : case TRUNC_MOD_EXPR:
8907 107 : {
8908 107 : tree _q20 = TREE_OPERAND (_p0, 0);
8909 107 : tree _q21 = TREE_OPERAND (_p0, 1);
8910 107 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8911 : {
8912 52 : {
8913 52 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8914 52 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8915 52 : if (res) return res;
8916 : }
8917 : }
8918 : break;
8919 : }
8920 7647 : case MULT_EXPR:
8921 7647 : {
8922 7647 : tree _q20 = TREE_OPERAND (_p0, 0);
8923 7647 : tree _q21 = TREE_OPERAND (_p0, 1);
8924 7647 : switch (TREE_CODE (_q21))
8925 : {
8926 7554 : case INTEGER_CST:
8927 7554 : {
8928 7554 : switch (TREE_CODE (_p1))
8929 : {
8930 7532 : case INTEGER_CST:
8931 7532 : {
8932 7532 : {
8933 7532 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8934 7532 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8935 7532 : if (res) return res;
8936 : }
8937 7532 : break;
8938 : }
8939 : default:;
8940 : }
8941 : break;
8942 : }
8943 : default:;
8944 : }
8945 : break;
8946 : }
8947 1842316 : default:;
8948 : }
8949 1842316 : switch (TREE_CODE (_p1))
8950 : {
8951 1571318 : case INTEGER_CST:
8952 1571318 : {
8953 1571318 : {
8954 1571318 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8955 1571318 : if (TYPE_SIGN (type) == SIGNED
8956 278857 : && !TREE_OVERFLOW (captures[1])
8957 1571322 : && wi::neg_p (wi::to_wide (captures[1]))
8958 313 : && !TYPE_OVERFLOW_TRAPS (type)
8959 1571631 : && !sign_bit_p (captures[1], captures[1])
8960 : )
8961 : {
8962 309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1655;
8963 309 : {
8964 309 : tree res_op0;
8965 309 : res_op0 = captures[0];
8966 309 : tree res_op1;
8967 309 : {
8968 309 : tree _o1[1], _r1;
8969 309 : _o1[0] = captures[1];
8970 309 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
8971 309 : res_op1 = _r1;
8972 : }
8973 309 : tree _r;
8974 309 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
8975 309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1007, __FILE__, __LINE__, true);
8976 309 : return _r;
8977 : }
8978 0 : next_after_fail1655:;
8979 : }
8980 : }
8981 1571009 : break;
8982 : }
8983 56426 : CASE_CONVERT:
8984 56426 : {
8985 56426 : tree _q30 = TREE_OPERAND (_p1, 0);
8986 56426 : switch (TREE_CODE (_q30))
8987 : {
8988 0 : case NEGATE_EXPR:
8989 0 : {
8990 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8991 0 : {
8992 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
8993 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures);
8994 0 : if (res) return res;
8995 : }
8996 0 : break;
8997 : }
8998 56426 : default:;
8999 : }
9000 56426 : {
9001 56426 : tree _q30_pops[1];
9002 56426 : if (tree_power_of_two_cand (_q30, _q30_pops))
9003 : {
9004 7 : tree _q40 = _q30_pops[0];
9005 7 : {
9006 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
9007 7 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9008 7 : if (res) return res;
9009 : }
9010 : }
9011 : }
9012 56419 : break;
9013 : }
9014 94 : case NEGATE_EXPR:
9015 94 : {
9016 94 : tree _q30 = TREE_OPERAND (_p1, 0);
9017 94 : {
9018 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9019 94 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures);
9020 94 : if (res) return res;
9021 : }
9022 94 : break;
9023 : }
9024 1842000 : default:;
9025 : }
9026 1842000 : {
9027 1842000 : tree _p1_pops[1];
9028 1842000 : if (tree_power_of_two_cand (_p1, _p1_pops))
9029 : {
9030 1571018 : tree _q30 = _p1_pops[0];
9031 1571018 : {
9032 1571018 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9033 1571018 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9034 1571018 : if (res) return res;
9035 : }
9036 : }
9037 : }
9038 892691 : switch (TREE_CODE (_p0))
9039 : {
9040 0 : case VEC_COND_EXPR:
9041 0 : {
9042 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9043 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9044 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9045 0 : switch (TREE_CODE (_p1))
9046 : {
9047 0 : case VEC_COND_EXPR:
9048 0 : {
9049 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9050 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9051 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9052 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9053 : {
9054 0 : {
9055 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9056 0 : if (VECTOR_TYPE_P (type)
9057 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9058 : || types_match (type, TREE_TYPE (captures[2]))
9059 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9060 : || (optimize_vectors_before_lowering_p ()
9061 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9062 : )
9063 : {
9064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1656;
9065 0 : {
9066 0 : tree res_op0;
9067 0 : res_op0 = captures[1];
9068 0 : tree res_op1;
9069 0 : {
9070 0 : tree _o1[2], _r1;
9071 0 : _o1[0] = captures[2];
9072 0 : _o1[1] = captures[5];
9073 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9074 0 : if (EXPR_P (_r1))
9075 0 : goto next_after_fail1656;
9076 0 : res_op1 = _r1;
9077 : }
9078 0 : tree res_op2;
9079 0 : {
9080 0 : tree _o1[2], _r1;
9081 0 : _o1[0] = captures[3];
9082 0 : _o1[1] = captures[6];
9083 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9084 0 : if (EXPR_P (_r1))
9085 0 : goto next_after_fail1656;
9086 0 : res_op2 = _r1;
9087 : }
9088 0 : tree _r;
9089 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9090 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
9091 0 : return _r;
9092 : }
9093 0 : next_after_fail1656:;
9094 : }
9095 : }
9096 : }
9097 : break;
9098 : }
9099 0 : default:;
9100 : }
9101 0 : {
9102 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9103 0 : if (VECTOR_TYPE_P (type)
9104 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9105 : || types_match (type, TREE_TYPE (captures[2]))
9106 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9107 : || (optimize_vectors_before_lowering_p ()
9108 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9109 : )
9110 : {
9111 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1657;
9112 0 : {
9113 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1657;
9114 0 : tree res_op0;
9115 0 : res_op0 = captures[1];
9116 0 : tree res_op1;
9117 0 : {
9118 0 : tree _o1[2], _r1;
9119 0 : _o1[0] = captures[2];
9120 0 : _o1[1] = unshare_expr (captures[4]);
9121 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9122 0 : if (EXPR_P (_r1))
9123 0 : goto next_after_fail1657;
9124 0 : res_op1 = _r1;
9125 : }
9126 0 : tree res_op2;
9127 0 : {
9128 0 : tree _o1[2], _r1;
9129 0 : _o1[0] = captures[3];
9130 0 : _o1[1] = captures[4];
9131 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9132 0 : if (EXPR_P (_r1))
9133 0 : goto next_after_fail1657;
9134 0 : res_op2 = _r1;
9135 : }
9136 0 : tree _r;
9137 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9138 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
9139 0 : return _r;
9140 : }
9141 0 : next_after_fail1657:;
9142 : }
9143 : }
9144 0 : break;
9145 : }
9146 892691 : default:;
9147 : }
9148 892691 : switch (TREE_CODE (_p1))
9149 : {
9150 7 : case VEC_COND_EXPR:
9151 7 : {
9152 7 : tree _q30 = TREE_OPERAND (_p1, 0);
9153 7 : tree _q31 = TREE_OPERAND (_p1, 1);
9154 7 : tree _q32 = TREE_OPERAND (_p1, 2);
9155 7 : {
9156 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9157 7 : if (VECTOR_TYPE_P (type)
9158 7 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9159 : || types_match (type, TREE_TYPE (captures[3]))
9160 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9161 : || (optimize_vectors_before_lowering_p ()
9162 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9163 : )
9164 : {
9165 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1658;
9166 7 : {
9167 7 : if (! tree_invariant_p (captures[0])) goto next_after_fail1658;
9168 0 : tree res_op0;
9169 0 : res_op0 = captures[2];
9170 0 : tree res_op1;
9171 0 : {
9172 0 : tree _o1[2], _r1;
9173 0 : _o1[0] = unshare_expr (captures[0]);
9174 0 : _o1[1] = captures[3];
9175 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9176 0 : if (EXPR_P (_r1))
9177 0 : goto next_after_fail1658;
9178 0 : res_op1 = _r1;
9179 : }
9180 0 : tree res_op2;
9181 0 : {
9182 0 : tree _o1[2], _r1;
9183 0 : _o1[0] = captures[0];
9184 0 : _o1[1] = captures[4];
9185 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9186 0 : if (EXPR_P (_r1))
9187 0 : goto next_after_fail1658;
9188 0 : res_op2 = _r1;
9189 : }
9190 0 : tree _r;
9191 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9193 0 : return _r;
9194 : }
9195 7 : next_after_fail1658:;
9196 : }
9197 : }
9198 7 : break;
9199 : }
9200 : default:;
9201 : }
9202 : return NULL_TREE;
9203 : }
9204 :
9205 : tree
9206 983595 : generic_simplify_RSHIFT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
9207 : {
9208 983595 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9209 983595 : switch (TREE_CODE (_p1))
9210 : {
9211 119 : case TRUNC_MOD_EXPR:
9212 119 : {
9213 119 : tree _q30 = TREE_OPERAND (_p1, 0);
9214 119 : tree _q31 = TREE_OPERAND (_p1, 1);
9215 119 : {
9216 119 : tree _q31_pops[1];
9217 119 : if (tree_power_of_two_cand (_q31, _q31_pops))
9218 : {
9219 111 : tree _q50 = _q31_pops[0];
9220 111 : {
9221 111 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9222 111 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, TRUNC_MOD_EXPR);
9223 111 : if (res) return res;
9224 : }
9225 : }
9226 : }
9227 14 : break;
9228 : }
9229 0 : case FLOOR_MOD_EXPR:
9230 0 : {
9231 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9232 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9233 0 : {
9234 0 : tree _q31_pops[1];
9235 0 : if (tree_power_of_two_cand (_q31, _q31_pops))
9236 : {
9237 0 : tree _q50 = _q31_pops[0];
9238 0 : {
9239 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9240 0 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, FLOOR_MOD_EXPR);
9241 0 : if (res) return res;
9242 : }
9243 : }
9244 : }
9245 0 : break;
9246 : }
9247 983490 : default:;
9248 : }
9249 983490 : if (uniform_integer_cst_p (_p1))
9250 : {
9251 786840 : {
9252 786840 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9253 786840 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9254 786840 : if (res) return res;
9255 : }
9256 : }
9257 982733 : switch (TREE_CODE (_p0))
9258 : {
9259 58 : case NEGATE_EXPR:
9260 58 : {
9261 58 : tree _q20 = TREE_OPERAND (_p0, 0);
9262 58 : switch (TREE_CODE (_p1))
9263 : {
9264 57 : case INTEGER_CST:
9265 57 : {
9266 57 : {
9267 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9268 57 : if (!TYPE_UNSIGNED (type)
9269 57 : && TYPE_OVERFLOW_UNDEFINED (type)
9270 : )
9271 : {
9272 32 : {
9273 32 : tree stype = TREE_TYPE (captures[2]);
9274 32 : tree bt = truth_type_for (type);
9275 32 : tree zeros = build_zero_cst (type);
9276 32 : tree INTEGER_CST = NULL_TREE;
9277 32 : if (INTEGRAL_TYPE_P (type)
9278 : && canonicalize_math_after_vectorization_p ()
9279 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9280 : )
9281 : {
9282 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1667;
9283 : {
9284 : tree res_op0;
9285 : {
9286 : tree _o1[1], _r1;
9287 : {
9288 : tree _o2[2], _r2;
9289 : _o2[0] = captures[1];
9290 : _o2[1] = zeros;
9291 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9292 : _o1[0] = _r2;
9293 : }
9294 : if (TREE_TYPE (_o1[0]) != type)
9295 : {
9296 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9297 : }
9298 : else
9299 : _r1 = _o1[0];
9300 : res_op0 = _r1;
9301 : }
9302 : tree _r;
9303 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9304 : if (TREE_SIDE_EFFECTS (captures[2]))
9305 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9306 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
9307 : return _r;
9308 : }
9309 : next_after_fail1667:;
9310 : }
9311 : else
9312 : {
9313 0 : if (VECTOR_INTEGER_TYPE_P (type)
9314 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9315 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9316 0 : && (INTEGER_CST = uniform_integer_cst_p (captures[2])) != NULL
9317 32 : && wi::eq_p (wi::to_wide (INTEGER_CST), element_precision (type) - 1)
9318 : )
9319 : {
9320 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1668;
9321 0 : {
9322 0 : tree res_op0;
9323 0 : {
9324 0 : tree _o1[2], _r1;
9325 0 : _o1[0] = captures[1];
9326 0 : _o1[1] = zeros;
9327 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9328 0 : res_op0 = _r1;
9329 : }
9330 0 : tree _r;
9331 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9332 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9333 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9334 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
9335 0 : return _r;
9336 : }
9337 0 : next_after_fail1668:;
9338 : }
9339 : }
9340 : }
9341 : }
9342 : }
9343 57 : break;
9344 : }
9345 0 : case VECTOR_CST:
9346 0 : {
9347 0 : {
9348 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9349 0 : if (!TYPE_UNSIGNED (type)
9350 0 : && TYPE_OVERFLOW_UNDEFINED (type)
9351 : )
9352 : {
9353 0 : {
9354 0 : tree stype = TREE_TYPE (captures[2]);
9355 0 : tree bt = truth_type_for (type);
9356 0 : tree zeros = build_zero_cst (type);
9357 0 : tree VECTOR_CST = NULL_TREE;
9358 0 : if (INTEGRAL_TYPE_P (type)
9359 : && canonicalize_math_after_vectorization_p ()
9360 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9361 : )
9362 : {
9363 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1669;
9364 : {
9365 : tree res_op0;
9366 : {
9367 : tree _o1[1], _r1;
9368 : {
9369 : tree _o2[2], _r2;
9370 : _o2[0] = captures[1];
9371 : _o2[1] = zeros;
9372 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9373 : _o1[0] = _r2;
9374 : }
9375 : if (TREE_TYPE (_o1[0]) != type)
9376 : {
9377 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9378 : }
9379 : else
9380 : _r1 = _o1[0];
9381 : res_op0 = _r1;
9382 : }
9383 : tree _r;
9384 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9385 : if (TREE_SIDE_EFFECTS (captures[2]))
9386 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
9388 : return _r;
9389 : }
9390 : next_after_fail1669:;
9391 : }
9392 : else
9393 : {
9394 0 : if (VECTOR_INTEGER_TYPE_P (type)
9395 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9396 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9397 0 : && (VECTOR_CST = uniform_integer_cst_p (captures[2])) != NULL
9398 0 : && wi::eq_p (wi::to_wide (VECTOR_CST), element_precision (type) - 1)
9399 : )
9400 : {
9401 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1670;
9402 0 : {
9403 0 : tree res_op0;
9404 0 : {
9405 0 : tree _o1[2], _r1;
9406 0 : _o1[0] = captures[1];
9407 0 : _o1[1] = zeros;
9408 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9409 0 : res_op0 = _r1;
9410 : }
9411 0 : tree _r;
9412 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9413 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9414 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
9416 0 : return _r;
9417 : }
9418 0 : next_after_fail1670:;
9419 : }
9420 : }
9421 : }
9422 : }
9423 : }
9424 0 : break;
9425 : }
9426 : default:;
9427 : }
9428 : break;
9429 : }
9430 441 : case LSHIFT_EXPR:
9431 441 : {
9432 441 : tree _q20 = TREE_OPERAND (_p0, 0);
9433 441 : tree _q21 = TREE_OPERAND (_p0, 1);
9434 441 : switch (TREE_CODE (_q21))
9435 : {
9436 362 : case INTEGER_CST:
9437 362 : {
9438 362 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
9439 : {
9440 67 : {
9441 67 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
9442 67 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures);
9443 67 : if (res) return res;
9444 : }
9445 : }
9446 : break;
9447 : }
9448 : default:;
9449 : }
9450 : break;
9451 : }
9452 982706 : default:;
9453 : }
9454 982706 : {
9455 982706 : tree _p0_pops[1];
9456 982706 : if (tree_nop_convert (_p0, _p0_pops))
9457 : {
9458 159194 : tree _q20 = _p0_pops[0];
9459 159194 : switch (TREE_CODE (_q20))
9460 : {
9461 20 : case LSHIFT_EXPR:
9462 20 : {
9463 20 : tree _q30 = TREE_OPERAND (_q20, 0);
9464 20 : tree _q31 = TREE_OPERAND (_q20, 1);
9465 20 : switch (TREE_CODE (_q31))
9466 : {
9467 0 : case INTEGER_CST:
9468 0 : {
9469 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
9470 : {
9471 0 : {
9472 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p1, _q31 };
9473 0 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures);
9474 0 : if (res) return res;
9475 : }
9476 : }
9477 : break;
9478 : }
9479 : default:;
9480 : }
9481 : break;
9482 : }
9483 : default:;
9484 : }
9485 : }
9486 : }
9487 982706 : if (integer_all_onesp (_p0))
9488 : {
9489 11275 : {
9490 11275 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9491 11275 : if (!TYPE_UNSIGNED (type)
9492 : )
9493 : {
9494 119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1671;
9495 119 : {
9496 119 : tree _r;
9497 119 : _r = captures[0];
9498 119 : if (TREE_SIDE_EFFECTS (captures[1]))
9499 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9500 119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9501 119 : return _r;
9502 : }
9503 0 : next_after_fail1671:;
9504 : }
9505 : }
9506 : }
9507 982587 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9508 : {
9509 25 : {
9510 25 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9511 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1672;
9512 25 : {
9513 25 : tree _r;
9514 25 : _r = build_zero_cst (type);
9515 25 : if (TREE_SIDE_EFFECTS (captures[0]))
9516 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
9517 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1015, __FILE__, __LINE__, true);
9518 25 : return _r;
9519 : }
9520 0 : next_after_fail1672:;
9521 : }
9522 : }
9523 982562 : if (integer_zerop (_p1))
9524 : {
9525 1299 : {
9526 1299 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9527 1299 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9528 1299 : if (res) return res;
9529 : }
9530 : }
9531 981263 : if (integer_zerop (_p0))
9532 : {
9533 152 : {
9534 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9535 152 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9536 152 : if (res) return res;
9537 : }
9538 : }
9539 981111 : switch (TREE_CODE (_p1))
9540 : {
9541 0 : case VECTOR_CST:
9542 0 : {
9543 0 : {
9544 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9545 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9546 0 : if (res) return res;
9547 : }
9548 0 : break;
9549 : }
9550 0 : case CONSTRUCTOR:
9551 0 : {
9552 0 : {
9553 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9554 0 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9555 0 : if (res) return res;
9556 : }
9557 0 : break;
9558 : }
9559 981111 : default:;
9560 : }
9561 981111 : switch (TREE_CODE (_p0))
9562 : {
9563 118 : case RSHIFT_EXPR:
9564 118 : {
9565 118 : tree _q20 = TREE_OPERAND (_p0, 0);
9566 118 : tree _q21 = TREE_OPERAND (_p0, 1);
9567 118 : switch (TREE_CODE (_q21))
9568 : {
9569 73 : case INTEGER_CST:
9570 73 : {
9571 73 : switch (TREE_CODE (_p1))
9572 : {
9573 47 : case INTEGER_CST:
9574 47 : {
9575 47 : {
9576 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9577 47 : tree res = generic_simplify_425 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9578 47 : if (res) return res;
9579 : }
9580 0 : break;
9581 : }
9582 : default:;
9583 : }
9584 : break;
9585 : }
9586 : default:;
9587 : }
9588 : break;
9589 : }
9590 182429 : CASE_CONVERT:
9591 182429 : {
9592 182429 : tree _q20 = TREE_OPERAND (_p0, 0);
9593 182429 : switch (TREE_CODE (_q20))
9594 : {
9595 6 : case BIT_AND_EXPR:
9596 6 : {
9597 6 : tree _q30 = TREE_OPERAND (_q20, 0);
9598 6 : tree _q31 = TREE_OPERAND (_q20, 1);
9599 6 : switch (TREE_CODE (_q31))
9600 : {
9601 0 : case INTEGER_CST:
9602 0 : {
9603 0 : switch (TREE_CODE (_p1))
9604 : {
9605 0 : case INTEGER_CST:
9606 0 : {
9607 0 : {
9608 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9609 0 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9610 0 : if (res) return res;
9611 : }
9612 0 : break;
9613 : }
9614 : default:;
9615 : }
9616 : break;
9617 : }
9618 : default:;
9619 : }
9620 : break;
9621 : }
9622 14 : case BIT_XOR_EXPR:
9623 14 : {
9624 14 : tree _q30 = TREE_OPERAND (_q20, 0);
9625 14 : tree _q31 = TREE_OPERAND (_q20, 1);
9626 14 : switch (TREE_CODE (_q31))
9627 : {
9628 0 : case INTEGER_CST:
9629 0 : {
9630 0 : switch (TREE_CODE (_p1))
9631 : {
9632 0 : case INTEGER_CST:
9633 0 : {
9634 0 : {
9635 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9636 0 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9637 0 : if (res) return res;
9638 : }
9639 0 : break;
9640 : }
9641 : default:;
9642 : }
9643 : break;
9644 : }
9645 : default:;
9646 : }
9647 : break;
9648 : }
9649 43 : case BIT_IOR_EXPR:
9650 43 : {
9651 43 : tree _q30 = TREE_OPERAND (_q20, 0);
9652 43 : tree _q31 = TREE_OPERAND (_q20, 1);
9653 43 : switch (TREE_CODE (_q31))
9654 : {
9655 24 : case INTEGER_CST:
9656 24 : {
9657 24 : switch (TREE_CODE (_p1))
9658 : {
9659 7 : case INTEGER_CST:
9660 7 : {
9661 7 : {
9662 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9663 7 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9664 7 : if (res) return res;
9665 : }
9666 0 : break;
9667 : }
9668 : default:;
9669 : }
9670 : break;
9671 : }
9672 : default:;
9673 : }
9674 : break;
9675 : }
9676 131 : case CALL_EXPR:
9677 131 : switch (get_call_combined_fn (_q20))
9678 : {
9679 0 : case CFN_BSWAP:
9680 0 : if (call_expr_nargs (_q20) == 1)
9681 : {
9682 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9683 0 : switch (TREE_CODE (_p1))
9684 : {
9685 0 : case INTEGER_CST:
9686 0 : {
9687 0 : {
9688 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9689 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BSWAP);
9690 0 : if (res) return res;
9691 : }
9692 0 : break;
9693 : }
9694 : default:;
9695 : }
9696 : }
9697 : break;
9698 0 : case CFN_BUILT_IN_BSWAP128:
9699 0 : if (call_expr_nargs (_q20) == 1)
9700 : {
9701 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9702 0 : switch (TREE_CODE (_p1))
9703 : {
9704 0 : case INTEGER_CST:
9705 0 : {
9706 0 : {
9707 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9708 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
9709 0 : if (res) return res;
9710 : }
9711 0 : break;
9712 : }
9713 : default:;
9714 : }
9715 : }
9716 : break;
9717 8 : case CFN_BUILT_IN_BSWAP16:
9718 8 : if (call_expr_nargs (_q20) == 1)
9719 : {
9720 8 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9721 8 : switch (TREE_CODE (_p1))
9722 : {
9723 7 : case INTEGER_CST:
9724 7 : {
9725 7 : {
9726 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9727 7 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
9728 7 : if (res) return res;
9729 : }
9730 2 : break;
9731 : }
9732 : default:;
9733 : }
9734 : }
9735 : break;
9736 13 : case CFN_BUILT_IN_BSWAP32:
9737 13 : if (call_expr_nargs (_q20) == 1)
9738 : {
9739 13 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9740 13 : switch (TREE_CODE (_p1))
9741 : {
9742 13 : case INTEGER_CST:
9743 13 : {
9744 13 : {
9745 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9746 13 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
9747 13 : if (res) return res;
9748 : }
9749 9 : break;
9750 : }
9751 : default:;
9752 : }
9753 : }
9754 : break;
9755 18 : case CFN_BUILT_IN_BSWAP64:
9756 18 : if (call_expr_nargs (_q20) == 1)
9757 : {
9758 18 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9759 18 : switch (TREE_CODE (_p1))
9760 : {
9761 18 : case INTEGER_CST:
9762 18 : {
9763 18 : {
9764 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9765 18 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
9766 18 : if (res) return res;
9767 : }
9768 12 : break;
9769 : }
9770 : default:;
9771 : }
9772 : }
9773 : break;
9774 : default:;
9775 : }
9776 : break;
9777 : default:;
9778 : }
9779 : break;
9780 : }
9781 13893 : case BIT_AND_EXPR:
9782 13893 : {
9783 13893 : tree _q20 = TREE_OPERAND (_p0, 0);
9784 13893 : tree _q21 = TREE_OPERAND (_p0, 1);
9785 13893 : switch (TREE_CODE (_q21))
9786 : {
9787 13843 : case INTEGER_CST:
9788 13843 : {
9789 13843 : switch (TREE_CODE (_p1))
9790 : {
9791 13820 : case INTEGER_CST:
9792 13820 : {
9793 13820 : {
9794 13820 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9795 13820 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9796 13820 : if (res) return res;
9797 : }
9798 0 : break;
9799 : }
9800 : default:;
9801 : }
9802 : break;
9803 : }
9804 : default:;
9805 : }
9806 : break;
9807 : }
9808 240 : case BIT_XOR_EXPR:
9809 240 : {
9810 240 : tree _q20 = TREE_OPERAND (_p0, 0);
9811 240 : tree _q21 = TREE_OPERAND (_p0, 1);
9812 240 : switch (TREE_CODE (_q21))
9813 : {
9814 97 : case INTEGER_CST:
9815 97 : {
9816 97 : switch (TREE_CODE (_p1))
9817 : {
9818 97 : case INTEGER_CST:
9819 97 : {
9820 97 : {
9821 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9822 97 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9823 97 : if (res) return res;
9824 : }
9825 0 : break;
9826 : }
9827 : default:;
9828 : }
9829 : break;
9830 : }
9831 : default:;
9832 : }
9833 : break;
9834 : }
9835 55 : case BIT_IOR_EXPR:
9836 55 : {
9837 55 : tree _q20 = TREE_OPERAND (_p0, 0);
9838 55 : tree _q21 = TREE_OPERAND (_p0, 1);
9839 55 : switch (TREE_CODE (_q21))
9840 : {
9841 10 : case INTEGER_CST:
9842 10 : {
9843 10 : switch (TREE_CODE (_p1))
9844 : {
9845 8 : case INTEGER_CST:
9846 8 : {
9847 8 : {
9848 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9849 8 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9850 8 : if (res) return res;
9851 : }
9852 0 : break;
9853 : }
9854 : default:;
9855 : }
9856 : break;
9857 : }
9858 : default:;
9859 : }
9860 : break;
9861 : }
9862 0 : case VEC_COND_EXPR:
9863 0 : {
9864 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9865 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9866 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9867 0 : switch (TREE_CODE (_p1))
9868 : {
9869 0 : case VEC_COND_EXPR:
9870 0 : {
9871 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9872 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9873 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9874 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9875 : {
9876 0 : {
9877 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9878 0 : if (VECTOR_TYPE_P (type)
9879 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9880 : || types_match (type, TREE_TYPE (captures[2]))
9881 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9882 : || (optimize_vectors_before_lowering_p ()
9883 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9884 : )
9885 : {
9886 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1673;
9887 0 : {
9888 0 : tree res_op0;
9889 0 : res_op0 = captures[1];
9890 0 : tree res_op1;
9891 0 : {
9892 0 : tree _o1[2], _r1;
9893 0 : _o1[0] = captures[2];
9894 0 : _o1[1] = captures[5];
9895 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9896 0 : if (EXPR_P (_r1))
9897 0 : goto next_after_fail1673;
9898 0 : res_op1 = _r1;
9899 : }
9900 0 : tree res_op2;
9901 0 : {
9902 0 : tree _o1[2], _r1;
9903 0 : _o1[0] = captures[3];
9904 0 : _o1[1] = captures[6];
9905 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9906 0 : if (EXPR_P (_r1))
9907 0 : goto next_after_fail1673;
9908 0 : res_op2 = _r1;
9909 : }
9910 0 : tree _r;
9911 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9912 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
9913 0 : return _r;
9914 : }
9915 0 : next_after_fail1673:;
9916 : }
9917 : }
9918 : }
9919 : break;
9920 : }
9921 0 : default:;
9922 : }
9923 0 : {
9924 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9925 0 : if (VECTOR_TYPE_P (type)
9926 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9927 : || types_match (type, TREE_TYPE (captures[2]))
9928 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9929 : || (optimize_vectors_before_lowering_p ()
9930 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9931 : )
9932 : {
9933 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1674;
9934 0 : {
9935 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1674;
9936 0 : tree res_op0;
9937 0 : res_op0 = captures[1];
9938 0 : tree res_op1;
9939 0 : {
9940 0 : tree _o1[2], _r1;
9941 0 : _o1[0] = captures[2];
9942 0 : _o1[1] = unshare_expr (captures[4]);
9943 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9944 0 : if (EXPR_P (_r1))
9945 0 : goto next_after_fail1674;
9946 0 : res_op1 = _r1;
9947 : }
9948 0 : tree res_op2;
9949 0 : {
9950 0 : tree _o1[2], _r1;
9951 0 : _o1[0] = captures[3];
9952 0 : _o1[1] = captures[4];
9953 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9954 0 : if (EXPR_P (_r1))
9955 0 : goto next_after_fail1674;
9956 0 : res_op2 = _r1;
9957 : }
9958 0 : tree _r;
9959 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9960 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
9961 0 : return _r;
9962 : }
9963 0 : next_after_fail1674:;
9964 : }
9965 : }
9966 0 : break;
9967 : }
9968 574 : case CALL_EXPR:
9969 574 : switch (get_call_combined_fn (_p0))
9970 : {
9971 0 : case CFN_BSWAP:
9972 0 : if (call_expr_nargs (_p0) == 1)
9973 : {
9974 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9975 0 : switch (TREE_CODE (_p1))
9976 : {
9977 0 : case INTEGER_CST:
9978 0 : {
9979 0 : {
9980 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9981 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BSWAP);
9982 0 : if (res) return res;
9983 : }
9984 0 : break;
9985 : }
9986 : default:;
9987 : }
9988 : }
9989 : break;
9990 0 : case CFN_BUILT_IN_BSWAP128:
9991 0 : if (call_expr_nargs (_p0) == 1)
9992 : {
9993 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9994 0 : switch (TREE_CODE (_p1))
9995 : {
9996 0 : case INTEGER_CST:
9997 0 : {
9998 0 : {
9999 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10000 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
10001 0 : if (res) return res;
10002 : }
10003 0 : break;
10004 : }
10005 : default:;
10006 : }
10007 : }
10008 : break;
10009 32 : case CFN_BUILT_IN_BSWAP16:
10010 32 : if (call_expr_nargs (_p0) == 1)
10011 : {
10012 32 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10013 32 : switch (TREE_CODE (_p1))
10014 : {
10015 32 : case INTEGER_CST:
10016 32 : {
10017 32 : {
10018 32 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10019 32 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
10020 32 : if (res) return res;
10021 : }
10022 9 : break;
10023 : }
10024 : default:;
10025 : }
10026 : }
10027 : break;
10028 101 : case CFN_BUILT_IN_BSWAP32:
10029 101 : if (call_expr_nargs (_p0) == 1)
10030 : {
10031 101 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10032 101 : switch (TREE_CODE (_p1))
10033 : {
10034 100 : case INTEGER_CST:
10035 100 : {
10036 100 : {
10037 100 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10038 100 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
10039 100 : if (res) return res;
10040 : }
10041 61 : break;
10042 : }
10043 : default:;
10044 : }
10045 : }
10046 : break;
10047 102 : case CFN_BUILT_IN_BSWAP64:
10048 102 : if (call_expr_nargs (_p0) == 1)
10049 : {
10050 102 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10051 102 : switch (TREE_CODE (_p1))
10052 : {
10053 101 : case INTEGER_CST:
10054 101 : {
10055 101 : {
10056 101 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10057 101 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
10058 101 : if (res) return res;
10059 : }
10060 75 : break;
10061 : }
10062 : default:;
10063 : }
10064 : }
10065 : break;
10066 : default:;
10067 : }
10068 : break;
10069 967029 : default:;
10070 : }
10071 967029 : if (integer_onep (_p0))
10072 : {
10073 524 : {
10074 524 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
10075 524 : if (INTEGRAL_TYPE_P (type)
10076 : )
10077 : {
10078 524 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1675;
10079 524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1675;
10080 524 : {
10081 524 : tree res_op0;
10082 524 : {
10083 524 : tree _o1[2], _r1;
10084 524 : _o1[0] = captures[0];
10085 524 : _o1[1] = build_zero_cst (TREE_TYPE (captures[0]));
10086 524 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
10087 524 : res_op0 = _r1;
10088 : }
10089 524 : tree _r;
10090 524 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
10091 524 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1016, __FILE__, __LINE__, true);
10092 524 : return _r;
10093 : }
10094 : next_after_fail1675:;
10095 : }
10096 : }
10097 : }
10098 966505 : switch (TREE_CODE (_p1))
10099 : {
10100 11 : case VEC_COND_EXPR:
10101 11 : {
10102 11 : tree _q30 = TREE_OPERAND (_p1, 0);
10103 11 : tree _q31 = TREE_OPERAND (_p1, 1);
10104 11 : tree _q32 = TREE_OPERAND (_p1, 2);
10105 11 : {
10106 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10107 11 : if (VECTOR_TYPE_P (type)
10108 11 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
10109 : || types_match (type, TREE_TYPE (captures[3]))
10110 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10111 : || (optimize_vectors_before_lowering_p ()
10112 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10113 : )
10114 : {
10115 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1676;
10116 11 : {
10117 11 : if (! tree_invariant_p (captures[0])) goto next_after_fail1676;
10118 0 : tree res_op0;
10119 0 : res_op0 = captures[2];
10120 0 : tree res_op1;
10121 0 : {
10122 0 : tree _o1[2], _r1;
10123 0 : _o1[0] = unshare_expr (captures[0]);
10124 0 : _o1[1] = captures[3];
10125 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10126 0 : if (EXPR_P (_r1))
10127 0 : goto next_after_fail1676;
10128 0 : res_op1 = _r1;
10129 : }
10130 0 : tree res_op2;
10131 0 : {
10132 0 : tree _o1[2], _r1;
10133 0 : _o1[0] = captures[0];
10134 0 : _o1[1] = captures[4];
10135 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10136 0 : if (EXPR_P (_r1))
10137 0 : goto next_after_fail1676;
10138 0 : res_op2 = _r1;
10139 : }
10140 0 : tree _r;
10141 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10142 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10143 0 : return _r;
10144 : }
10145 11 : next_after_fail1676:;
10146 : }
10147 : }
10148 11 : break;
10149 : }
10150 966505 : default:;
10151 : }
10152 966505 : switch (TREE_CODE (_p0))
10153 : {
10154 0 : case VEC_PERM_EXPR:
10155 0 : {
10156 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10157 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10158 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10159 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
10160 : {
10161 0 : switch (TREE_CODE (_p1))
10162 : {
10163 0 : case VEC_PERM_EXPR:
10164 0 : {
10165 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10166 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10167 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10168 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
10169 : {
10170 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
10171 : {
10172 0 : {
10173 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
10174 0 : if (VECTOR_INTEGER_TYPE_P (type)
10175 : )
10176 : {
10177 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1677;
10178 0 : {
10179 0 : tree res_op0;
10180 0 : {
10181 0 : tree _o1[2], _r1;
10182 0 : _o1[0] = captures[0];
10183 0 : _o1[1] = captures[2];
10184 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10185 0 : captures[3] = _r1;
10186 : }
10187 0 : res_op0 = unshare_expr (captures[3]);
10188 0 : tree res_op1;
10189 0 : res_op1 = captures[3];
10190 0 : tree res_op2;
10191 0 : res_op2 = captures[1];
10192 0 : tree _r;
10193 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
10194 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
10195 0 : return _r;
10196 : }
10197 0 : next_after_fail1677:;
10198 : }
10199 : }
10200 : }
10201 : }
10202 : break;
10203 : }
10204 : default:;
10205 : }
10206 : }
10207 : break;
10208 : }
10209 : default:;
10210 : }
10211 : return NULL_TREE;
10212 : }
10213 :
10214 : tree
10215 388817 : generic_simplify_MAX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10216 : {
10217 388817 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10218 388817 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10219 : {
10220 0 : {
10221 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10222 0 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures, MAX_EXPR);
10223 0 : if (res) return res;
10224 : }
10225 : }
10226 388817 : switch (TREE_CODE (_p0))
10227 : {
10228 111 : case MAX_EXPR:
10229 111 : {
10230 111 : tree _q20 = TREE_OPERAND (_p0, 0);
10231 111 : tree _q21 = TREE_OPERAND (_p0, 1);
10232 111 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10233 : {
10234 0 : {
10235 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10236 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MAX_EXPR);
10237 0 : if (res) return res;
10238 : }
10239 : }
10240 111 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10241 : {
10242 0 : {
10243 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10244 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures, MAX_EXPR);
10245 0 : if (res) return res;
10246 : }
10247 : }
10248 : break;
10249 : }
10250 388817 : default:;
10251 : }
10252 388817 : switch (TREE_CODE (_p1))
10253 : {
10254 0 : case MAX_EXPR:
10255 0 : {
10256 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10257 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10258 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10259 : {
10260 0 : {
10261 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
10262 0 : tree res = generic_simplify_523 (loc, type, _p0, _p1, captures, MAX_EXPR);
10263 0 : if (res) return res;
10264 : }
10265 : }
10266 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10267 : {
10268 0 : {
10269 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
10270 0 : tree res = generic_simplify_523 (loc, type, _p0, _p1, captures, MAX_EXPR);
10271 0 : if (res) return res;
10272 : }
10273 : }
10274 : break;
10275 : }
10276 388817 : default:;
10277 : }
10278 388817 : switch (TREE_CODE (_p0))
10279 : {
10280 3386 : case MIN_EXPR:
10281 3386 : {
10282 3386 : tree _q20 = TREE_OPERAND (_p0, 0);
10283 3386 : tree _q21 = TREE_OPERAND (_p0, 1);
10284 3386 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10285 : {
10286 1 : {
10287 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10288 1 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures);
10289 1 : if (res) return res;
10290 : }
10291 : }
10292 3385 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10293 : {
10294 1 : {
10295 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10296 1 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures);
10297 1 : if (res) return res;
10298 : }
10299 : }
10300 : break;
10301 : }
10302 388815 : default:;
10303 : }
10304 388815 : switch (TREE_CODE (_p1))
10305 : {
10306 0 : case MIN_EXPR:
10307 0 : {
10308 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10309 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10310 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10311 : {
10312 0 : {
10313 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10314 0 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures);
10315 0 : if (res) return res;
10316 : }
10317 : }
10318 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10319 : {
10320 0 : {
10321 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10322 0 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures);
10323 0 : if (res) return res;
10324 : }
10325 : }
10326 : break;
10327 : }
10328 0 : case NEGATE_EXPR:
10329 0 : {
10330 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10331 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10332 : {
10333 0 : {
10334 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10335 0 : tree res = generic_simplify_537 (loc, type, _p0, _p1, captures);
10336 0 : if (res) return res;
10337 : }
10338 : }
10339 : break;
10340 : }
10341 388815 : default:;
10342 : }
10343 388815 : switch (TREE_CODE (_p0))
10344 : {
10345 76 : case NEGATE_EXPR:
10346 76 : {
10347 76 : tree _q20 = TREE_OPERAND (_p0, 0);
10348 76 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10349 : {
10350 2 : {
10351 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10352 2 : tree res = generic_simplify_537 (loc, type, _p0, _p1, captures);
10353 2 : if (res) return res;
10354 : }
10355 : }
10356 : break;
10357 : }
10358 388813 : default:;
10359 : }
10360 388813 : {
10361 388813 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10362 388813 : if (INTEGRAL_TYPE_P (type)
10363 386877 : && TYPE_MAX_VALUE (type)
10364 775690 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
10365 : )
10366 : {
10367 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1744;
10368 0 : {
10369 0 : tree _r;
10370 0 : _r = captures[1];
10371 0 : if (TREE_SIDE_EFFECTS (captures[0]))
10372 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10373 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1031, __FILE__, __LINE__, true);
10374 0 : return _r;
10375 : }
10376 0 : next_after_fail1744:;
10377 : }
10378 : else
10379 : {
10380 388813 : if (INTEGRAL_TYPE_P (type)
10381 386877 : && TYPE_MIN_VALUE (type)
10382 775690 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
10383 : )
10384 : {
10385 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1745;
10386 11 : {
10387 11 : tree _r;
10388 11 : _r = captures[0];
10389 11 : if (TREE_SIDE_EFFECTS (captures[1]))
10390 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10391 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1032, __FILE__, __LINE__, true);
10392 11 : return _r;
10393 : }
10394 0 : next_after_fail1745:;
10395 : }
10396 : }
10397 : }
10398 388802 : switch (TREE_CODE (_p0))
10399 : {
10400 23333 : case PLUS_EXPR:
10401 23333 : {
10402 23333 : tree _q20 = TREE_OPERAND (_p0, 0);
10403 23333 : tree _q21 = TREE_OPERAND (_p0, 1);
10404 23333 : switch (TREE_CODE (_p1))
10405 : {
10406 14 : case PLUS_EXPR:
10407 14 : {
10408 14 : tree _q50 = TREE_OPERAND (_p1, 0);
10409 14 : tree _q51 = TREE_OPERAND (_p1, 1);
10410 14 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10411 : {
10412 0 : {
10413 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10414 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MAX_EXPR);
10415 0 : if (res) return res;
10416 : }
10417 0 : {
10418 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10419 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MAX_EXPR);
10420 0 : if (res) return res;
10421 : }
10422 : }
10423 14 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10424 : {
10425 0 : {
10426 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10427 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MAX_EXPR);
10428 0 : if (res) return res;
10429 : }
10430 : }
10431 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10432 : {
10433 0 : {
10434 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q51, _q21, _p0, _q20 };
10435 0 : tree res = generic_simplify_526 (loc, type, _p0, _p1, captures, MAX_EXPR);
10436 0 : if (res) return res;
10437 : }
10438 : }
10439 : break;
10440 : }
10441 23333 : default:;
10442 : }
10443 23333 : switch (TREE_CODE (_q21))
10444 : {
10445 23295 : case INTEGER_CST:
10446 23295 : {
10447 23295 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10448 : {
10449 11 : {
10450 11 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10451 11 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10452 : )
10453 : {
10454 0 : if (tree_int_cst_sgn (captures[2]) > 0
10455 : )
10456 : {
10457 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1746;
10458 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1746;
10459 0 : {
10460 0 : tree _r;
10461 0 : _r = captures[1];
10462 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
10463 0 : return _r;
10464 : }
10465 11 : next_after_fail1746:;
10466 : }
10467 : else
10468 : {
10469 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1747;
10470 0 : {
10471 0 : tree _r;
10472 0 : _r = captures[0];
10473 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10475 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
10476 0 : return _r;
10477 : }
10478 0 : next_after_fail1747:;
10479 : }
10480 : }
10481 : }
10482 : }
10483 : break;
10484 : }
10485 : default:;
10486 : }
10487 : break;
10488 : }
10489 8193 : case MINUS_EXPR:
10490 8193 : {
10491 8193 : tree _q20 = TREE_OPERAND (_p0, 0);
10492 8193 : tree _q21 = TREE_OPERAND (_p0, 1);
10493 8193 : switch (TREE_CODE (_p1))
10494 : {
10495 0 : case MINUS_EXPR:
10496 0 : {
10497 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10498 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10499 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10500 : {
10501 0 : {
10502 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10503 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures, MAX_EXPR);
10504 0 : if (res) return res;
10505 : }
10506 0 : {
10507 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10508 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures, MAX_EXPR);
10509 0 : if (res) return res;
10510 : }
10511 : }
10512 : break;
10513 : }
10514 : default:;
10515 : }
10516 : break;
10517 : }
10518 388802 : default:;
10519 : }
10520 388802 : switch (TREE_CODE (_p1))
10521 : {
10522 110 : case PLUS_EXPR:
10523 110 : {
10524 110 : tree _q30 = TREE_OPERAND (_p1, 0);
10525 110 : tree _q31 = TREE_OPERAND (_p1, 1);
10526 110 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10527 : {
10528 0 : switch (TREE_CODE (_q31))
10529 : {
10530 0 : case INTEGER_CST:
10531 0 : {
10532 0 : {
10533 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
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 (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1748;
10541 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1748;
10542 0 : {
10543 0 : tree _r;
10544 0 : _r = captures[1];
10545 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
10546 0 : return _r;
10547 : }
10548 0 : next_after_fail1748:;
10549 : }
10550 : else
10551 : {
10552 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1749;
10553 0 : {
10554 0 : tree _r;
10555 0 : _r = captures[0];
10556 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10557 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10558 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
10559 0 : return _r;
10560 : }
10561 0 : next_after_fail1749:;
10562 : }
10563 : }
10564 : }
10565 0 : break;
10566 : }
10567 : default:;
10568 : }
10569 : }
10570 : break;
10571 : }
10572 388802 : default:;
10573 : }
10574 388802 : switch (TREE_CODE (_p0))
10575 : {
10576 3384 : case MIN_EXPR:
10577 3384 : {
10578 3384 : tree _q20 = TREE_OPERAND (_p0, 0);
10579 3384 : tree _q21 = TREE_OPERAND (_p0, 1);
10580 3384 : switch (TREE_CODE (_p1))
10581 : {
10582 0 : case MAX_EXPR:
10583 0 : {
10584 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10585 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10586 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10587 : {
10588 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10589 : {
10590 0 : {
10591 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10592 0 : if (!HONOR_NANS (captures[0])
10593 : )
10594 : {
10595 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1750;
10596 0 : {
10597 0 : tree res_op0;
10598 0 : res_op0 = captures[0];
10599 0 : tree res_op1;
10600 0 : res_op1 = captures[1];
10601 0 : tree _r;
10602 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10603 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
10604 0 : return _r;
10605 : }
10606 0 : next_after_fail1750:;
10607 : }
10608 : }
10609 : }
10610 : }
10611 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10612 : {
10613 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10614 : {
10615 0 : {
10616 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10617 0 : if (!HONOR_NANS (captures[0])
10618 : )
10619 : {
10620 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1751;
10621 0 : {
10622 0 : tree res_op0;
10623 0 : res_op0 = captures[0];
10624 0 : tree res_op1;
10625 0 : res_op1 = captures[1];
10626 0 : tree _r;
10627 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10628 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
10629 0 : return _r;
10630 : }
10631 0 : next_after_fail1751:;
10632 : }
10633 : }
10634 : }
10635 : }
10636 : break;
10637 : }
10638 : default:;
10639 : }
10640 : break;
10641 : }
10642 111 : case MAX_EXPR:
10643 111 : {
10644 111 : tree _q20 = TREE_OPERAND (_p0, 0);
10645 111 : tree _q21 = TREE_OPERAND (_p0, 1);
10646 111 : switch (TREE_CODE (_p1))
10647 : {
10648 0 : case MIN_EXPR:
10649 0 : {
10650 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10651 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10652 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10653 : {
10654 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10655 : {
10656 0 : {
10657 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10658 0 : if (!HONOR_NANS (captures[0])
10659 : )
10660 : {
10661 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1752;
10662 0 : {
10663 0 : tree res_op0;
10664 0 : res_op0 = captures[0];
10665 0 : tree res_op1;
10666 0 : res_op1 = captures[1];
10667 0 : tree _r;
10668 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10669 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
10670 0 : return _r;
10671 : }
10672 0 : next_after_fail1752:;
10673 : }
10674 : }
10675 : }
10676 : }
10677 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10678 : {
10679 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10680 : {
10681 0 : {
10682 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10683 0 : if (!HONOR_NANS (captures[0])
10684 : )
10685 : {
10686 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1753;
10687 0 : {
10688 0 : tree res_op0;
10689 0 : res_op0 = captures[0];
10690 0 : tree res_op1;
10691 0 : res_op1 = captures[1];
10692 0 : tree _r;
10693 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
10695 0 : return _r;
10696 : }
10697 0 : next_after_fail1753:;
10698 : }
10699 : }
10700 : }
10701 : }
10702 : break;
10703 : }
10704 : default:;
10705 : }
10706 : break;
10707 : }
10708 0 : case BIT_AND_EXPR:
10709 0 : {
10710 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10711 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10712 0 : switch (TREE_CODE (_q21))
10713 : {
10714 0 : case INTEGER_CST:
10715 0 : {
10716 0 : switch (TREE_CODE (_p1))
10717 : {
10718 0 : case BIT_AND_EXPR:
10719 0 : {
10720 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10721 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10722 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10723 : {
10724 0 : switch (TREE_CODE (_q51))
10725 : {
10726 0 : case INTEGER_CST:
10727 0 : {
10728 0 : {
10729 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10730 0 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures, MAX_EXPR);
10731 0 : if (res) return res;
10732 : }
10733 0 : break;
10734 : }
10735 : default:;
10736 : }
10737 : }
10738 : break;
10739 : }
10740 : default:;
10741 : }
10742 : break;
10743 : }
10744 : default:;
10745 : }
10746 : break;
10747 : }
10748 388802 : default:;
10749 : }
10750 388802 : switch (TREE_CODE (_p1))
10751 : {
10752 0 : case BIT_AND_EXPR:
10753 0 : {
10754 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10755 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10756 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10757 : {
10758 0 : switch (TREE_CODE (_q31))
10759 : {
10760 0 : case INTEGER_CST:
10761 0 : {
10762 0 : {
10763 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10764 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MAX_EXPR);
10765 0 : if (res) return res;
10766 : }
10767 0 : break;
10768 : }
10769 : default:;
10770 : }
10771 : }
10772 : break;
10773 : }
10774 388802 : default:;
10775 : }
10776 388802 : switch (TREE_CODE (_p0))
10777 : {
10778 33115 : CASE_CONVERT:
10779 33115 : {
10780 33115 : tree _q20 = TREE_OPERAND (_p0, 0);
10781 33115 : switch (TREE_CODE (_q20))
10782 : {
10783 30 : case ADDR_EXPR:
10784 30 : {
10785 30 : switch (TREE_CODE (_p1))
10786 : {
10787 0 : CASE_CONVERT:
10788 0 : {
10789 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10790 0 : switch (TREE_CODE (_q40))
10791 : {
10792 0 : case ADDR_EXPR:
10793 0 : {
10794 0 : {
10795 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10796 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10797 0 : if (res) return res;
10798 : }
10799 0 : break;
10800 : }
10801 : default:;
10802 : }
10803 : break;
10804 : }
10805 0 : case ADDR_EXPR:
10806 0 : {
10807 0 : {
10808 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10809 0 : tree res = generic_simplify_531 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10810 0 : if (res) return res;
10811 : }
10812 0 : break;
10813 : }
10814 : default:;
10815 : }
10816 : break;
10817 : }
10818 : default:;
10819 : }
10820 : break;
10821 : }
10822 10 : case ADDR_EXPR:
10823 10 : {
10824 10 : switch (TREE_CODE (_p1))
10825 : {
10826 0 : CASE_CONVERT:
10827 0 : {
10828 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10829 0 : switch (TREE_CODE (_q30))
10830 : {
10831 0 : case ADDR_EXPR:
10832 0 : {
10833 0 : {
10834 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
10835 0 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10836 0 : if (res) return res;
10837 : }
10838 0 : break;
10839 : }
10840 : default:;
10841 : }
10842 : break;
10843 : }
10844 10 : case ADDR_EXPR:
10845 10 : {
10846 10 : {
10847 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
10848 10 : tree res = generic_simplify_533 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10849 10 : if (res) return res;
10850 : }
10851 10 : break;
10852 : }
10853 : default:;
10854 : }
10855 : break;
10856 : }
10857 74 : case NEGATE_EXPR:
10858 74 : {
10859 74 : tree _q20 = TREE_OPERAND (_p0, 0);
10860 74 : switch (TREE_CODE (_p1))
10861 : {
10862 0 : case NEGATE_EXPR:
10863 0 : {
10864 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10865 0 : {
10866 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10867 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
10868 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
10869 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
10870 : )
10871 : {
10872 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1754;
10873 0 : {
10874 0 : tree res_op0;
10875 0 : {
10876 0 : tree _o1[2], _r1;
10877 0 : _o1[0] = captures[1];
10878 0 : _o1[1] = captures[3];
10879 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10880 0 : res_op0 = _r1;
10881 : }
10882 0 : tree _r;
10883 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
10884 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
10885 0 : return _r;
10886 : }
10887 0 : next_after_fail1754:;
10888 : }
10889 : }
10890 0 : break;
10891 : }
10892 : default:;
10893 : }
10894 : break;
10895 : }
10896 0 : case BIT_NOT_EXPR:
10897 0 : {
10898 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10899 0 : switch (TREE_CODE (_p1))
10900 : {
10901 0 : case BIT_NOT_EXPR:
10902 0 : {
10903 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10904 0 : {
10905 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10906 0 : tree res = generic_simplify_534 (loc, type, _p0, _p1, captures, MAX_EXPR, MIN_EXPR);
10907 0 : if (res) return res;
10908 : }
10909 0 : break;
10910 : }
10911 : default:;
10912 : }
10913 : break;
10914 : }
10915 0 : case VEC_COND_EXPR:
10916 0 : {
10917 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10918 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10919 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10920 0 : switch (TREE_CODE (_p1))
10921 : {
10922 0 : case VEC_COND_EXPR:
10923 0 : {
10924 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10925 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10926 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10927 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10928 : {
10929 0 : {
10930 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10931 0 : if (VECTOR_TYPE_P (type)
10932 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
10933 : || types_match (type, TREE_TYPE (captures[2]))
10934 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10935 : || (optimize_vectors_before_lowering_p ()
10936 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10937 : )
10938 : {
10939 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1755;
10940 0 : {
10941 0 : tree res_op0;
10942 0 : res_op0 = captures[1];
10943 0 : tree res_op1;
10944 0 : {
10945 0 : tree _o1[2], _r1;
10946 0 : _o1[0] = captures[2];
10947 0 : _o1[1] = captures[5];
10948 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10949 0 : if (EXPR_P (_r1))
10950 0 : goto next_after_fail1755;
10951 0 : res_op1 = _r1;
10952 : }
10953 0 : tree res_op2;
10954 0 : {
10955 0 : tree _o1[2], _r1;
10956 0 : _o1[0] = captures[3];
10957 0 : _o1[1] = captures[6];
10958 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10959 0 : if (EXPR_P (_r1))
10960 0 : goto next_after_fail1755;
10961 0 : res_op2 = _r1;
10962 : }
10963 0 : tree _r;
10964 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10965 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
10966 0 : return _r;
10967 : }
10968 0 : next_after_fail1755:;
10969 : }
10970 : }
10971 : }
10972 : break;
10973 : }
10974 0 : default:;
10975 : }
10976 0 : {
10977 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10978 0 : if (VECTOR_TYPE_P (type)
10979 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
10980 : || types_match (type, TREE_TYPE (captures[2]))
10981 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10982 : || (optimize_vectors_before_lowering_p ()
10983 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10984 : )
10985 : {
10986 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1756;
10987 0 : {
10988 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1756;
10989 0 : tree res_op0;
10990 0 : res_op0 = captures[1];
10991 0 : tree res_op1;
10992 0 : {
10993 0 : tree _o1[2], _r1;
10994 0 : _o1[0] = captures[2];
10995 0 : _o1[1] = unshare_expr (captures[4]);
10996 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10997 0 : if (EXPR_P (_r1))
10998 0 : goto next_after_fail1756;
10999 0 : res_op1 = _r1;
11000 : }
11001 0 : tree res_op2;
11002 0 : {
11003 0 : tree _o1[2], _r1;
11004 0 : _o1[0] = captures[3];
11005 0 : _o1[1] = captures[4];
11006 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
11007 0 : if (EXPR_P (_r1))
11008 0 : goto next_after_fail1756;
11009 0 : res_op2 = _r1;
11010 : }
11011 0 : tree _r;
11012 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11013 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11014 0 : return _r;
11015 : }
11016 0 : next_after_fail1756:;
11017 : }
11018 : }
11019 0 : break;
11020 : }
11021 388802 : default:;
11022 : }
11023 388802 : switch (TREE_CODE (_p1))
11024 : {
11025 0 : case VEC_COND_EXPR:
11026 0 : {
11027 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11028 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11029 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11030 0 : {
11031 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11032 0 : if (VECTOR_TYPE_P (type)
11033 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
11034 : || types_match (type, TREE_TYPE (captures[3]))
11035 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11036 : || (optimize_vectors_before_lowering_p ()
11037 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11038 : )
11039 : {
11040 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1757;
11041 0 : {
11042 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1757;
11043 0 : tree res_op0;
11044 0 : res_op0 = captures[2];
11045 0 : tree res_op1;
11046 0 : {
11047 0 : tree _o1[2], _r1;
11048 0 : _o1[0] = unshare_expr (captures[0]);
11049 0 : _o1[1] = captures[3];
11050 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
11051 0 : if (EXPR_P (_r1))
11052 0 : goto next_after_fail1757;
11053 0 : res_op1 = _r1;
11054 : }
11055 0 : tree res_op2;
11056 0 : {
11057 0 : tree _o1[2], _r1;
11058 0 : _o1[0] = captures[0];
11059 0 : _o1[1] = captures[4];
11060 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
11061 0 : if (EXPR_P (_r1))
11062 0 : goto next_after_fail1757;
11063 0 : res_op2 = _r1;
11064 : }
11065 0 : tree _r;
11066 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11067 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
11068 0 : return _r;
11069 : }
11070 0 : next_after_fail1757:;
11071 : }
11072 : }
11073 0 : break;
11074 : }
11075 388802 : default:;
11076 : }
11077 388802 : if (tree_zero_one_valued_p (_p0))
11078 : {
11079 10 : if (tree_zero_one_valued_p (_p1))
11080 : {
11081 0 : {
11082 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11083 0 : tree res = generic_simplify_535 (loc, type, _p0, _p1, captures, MAX_EXPR, BIT_IOR_EXPR);
11084 0 : if (res) return res;
11085 : }
11086 : }
11087 : }
11088 : return NULL_TREE;
11089 : }
11090 :
11091 : tree
11092 1259390 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11093 : {
11094 1259390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11095 1259390 : switch (TREE_CODE (_p0))
11096 : {
11097 0 : case VEC_COND_EXPR:
11098 0 : {
11099 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11100 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11101 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11102 0 : switch (TREE_CODE (_p1))
11103 : {
11104 0 : case VEC_COND_EXPR:
11105 0 : {
11106 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11107 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11108 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11109 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11110 : {
11111 0 : {
11112 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11113 0 : if (VECTOR_TYPE_P (type)
11114 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11115 0 : || types_match (type, TREE_TYPE (captures[2]))
11116 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11117 : || (optimize_vectors_before_lowering_p ()
11118 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11119 : )
11120 : {
11121 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1776;
11122 0 : {
11123 0 : tree res_op0;
11124 0 : res_op0 = captures[1];
11125 0 : tree res_op1;
11126 0 : {
11127 0 : tree _o1[2], _r1;
11128 0 : _o1[0] = captures[2];
11129 0 : _o1[1] = captures[5];
11130 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11131 0 : if (EXPR_P (_r1))
11132 0 : goto next_after_fail1776;
11133 0 : res_op1 = _r1;
11134 : }
11135 0 : tree res_op2;
11136 0 : {
11137 0 : tree _o1[2], _r1;
11138 0 : _o1[0] = captures[3];
11139 0 : _o1[1] = captures[6];
11140 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11141 0 : if (EXPR_P (_r1))
11142 0 : goto next_after_fail1776;
11143 0 : res_op2 = _r1;
11144 : }
11145 0 : tree _r;
11146 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11147 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
11148 0 : return _r;
11149 : }
11150 0 : next_after_fail1776:;
11151 : }
11152 : }
11153 : }
11154 : break;
11155 : }
11156 0 : default:;
11157 : }
11158 0 : {
11159 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11160 0 : if (VECTOR_TYPE_P (type)
11161 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11162 0 : || types_match (type, TREE_TYPE (captures[2]))
11163 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11164 : || (optimize_vectors_before_lowering_p ()
11165 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11166 : )
11167 : {
11168 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1777;
11169 0 : {
11170 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1777;
11171 0 : tree res_op0;
11172 0 : res_op0 = captures[1];
11173 0 : tree res_op1;
11174 0 : {
11175 0 : tree _o1[2], _r1;
11176 0 : _o1[0] = captures[2];
11177 0 : _o1[1] = unshare_expr (captures[4]);
11178 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11179 0 : if (EXPR_P (_r1))
11180 0 : goto next_after_fail1777;
11181 0 : res_op1 = _r1;
11182 : }
11183 0 : tree res_op2;
11184 0 : {
11185 0 : tree _o1[2], _r1;
11186 0 : _o1[0] = captures[3];
11187 0 : _o1[1] = captures[4];
11188 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11189 0 : if (EXPR_P (_r1))
11190 0 : goto next_after_fail1777;
11191 0 : res_op2 = _r1;
11192 : }
11193 0 : tree _r;
11194 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11195 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11196 0 : return _r;
11197 : }
11198 0 : next_after_fail1777:;
11199 : }
11200 : }
11201 0 : break;
11202 : }
11203 1259390 : default:;
11204 : }
11205 1259390 : switch (TREE_CODE (_p1))
11206 : {
11207 0 : case VEC_COND_EXPR:
11208 0 : {
11209 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11210 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11211 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11212 0 : {
11213 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11214 0 : if (VECTOR_TYPE_P (type)
11215 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11216 0 : || types_match (type, TREE_TYPE (captures[3]))
11217 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11218 : || (optimize_vectors_before_lowering_p ()
11219 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11220 : )
11221 : {
11222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1778;
11223 0 : {
11224 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1778;
11225 0 : tree res_op0;
11226 0 : res_op0 = captures[2];
11227 0 : tree res_op1;
11228 0 : {
11229 0 : tree _o1[2], _r1;
11230 0 : _o1[0] = unshare_expr (captures[0]);
11231 0 : _o1[1] = captures[3];
11232 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11233 0 : if (EXPR_P (_r1))
11234 0 : goto next_after_fail1778;
11235 0 : res_op1 = _r1;
11236 : }
11237 0 : tree res_op2;
11238 0 : {
11239 0 : tree _o1[2], _r1;
11240 0 : _o1[0] = captures[0];
11241 0 : _o1[1] = captures[4];
11242 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11243 0 : if (EXPR_P (_r1))
11244 0 : goto next_after_fail1778;
11245 0 : res_op2 = _r1;
11246 : }
11247 0 : tree _r;
11248 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11249 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
11250 0 : return _r;
11251 : }
11252 0 : next_after_fail1778:;
11253 : }
11254 : }
11255 0 : break;
11256 : }
11257 1259390 : default:;
11258 : }
11259 1259390 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11260 : {
11261 0 : {
11262 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11263 0 : tree res = generic_simplify_565 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11264 0 : if (res) return res;
11265 : }
11266 : }
11267 1259390 : switch (TREE_CODE (_p0))
11268 : {
11269 339 : case FLOAT_EXPR:
11270 339 : {
11271 339 : tree _q20 = TREE_OPERAND (_p0, 0);
11272 339 : switch (TREE_CODE (_p1))
11273 : {
11274 0 : case FLOAT_EXPR:
11275 0 : {
11276 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11277 0 : {
11278 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11279 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
11280 0 : if (res) return res;
11281 : }
11282 0 : break;
11283 : }
11284 : default:;
11285 : }
11286 : break;
11287 : }
11288 0 : case NEGATE_EXPR:
11289 0 : {
11290 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11291 0 : switch (TREE_CODE (_p1))
11292 : {
11293 0 : case NEGATE_EXPR:
11294 0 : {
11295 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11296 0 : {
11297 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11298 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11299 0 : if (res) return res;
11300 : }
11301 0 : break;
11302 : }
11303 0 : default:;
11304 : }
11305 0 : if (CONSTANT_CLASS_P (_p1))
11306 : {
11307 0 : {
11308 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11309 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11310 0 : if (res) return res;
11311 : }
11312 : }
11313 : break;
11314 : }
11315 1259390 : default:;
11316 : }
11317 1259390 : switch (TREE_CODE (_p1))
11318 : {
11319 908905 : case REAL_CST:
11320 908905 : {
11321 908905 : {
11322 908905 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11323 908905 : tree res = generic_simplify_564 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11324 908905 : if (res) return res;
11325 : }
11326 908903 : break;
11327 : }
11328 : default:;
11329 : }
11330 : return NULL_TREE;
11331 : }
11332 :
11333 : tree
11334 9333031 : generic_simplify_TRUTH_OR_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11335 : {
11336 9333031 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11337 9333031 : switch (TREE_CODE (_p0))
11338 : {
11339 1340761 : case LE_EXPR:
11340 1340761 : {
11341 1340761 : tree _q20 = TREE_OPERAND (_p0, 0);
11342 1340761 : tree _q21 = TREE_OPERAND (_p0, 1);
11343 1340761 : switch (TREE_CODE (_q20))
11344 : {
11345 3867 : case POINTER_PLUS_EXPR:
11346 3867 : {
11347 3867 : tree _q30 = TREE_OPERAND (_q20, 0);
11348 3867 : tree _q31 = TREE_OPERAND (_q20, 1);
11349 3867 : switch (TREE_CODE (_q31))
11350 : {
11351 3635 : case INTEGER_CST:
11352 3635 : {
11353 3635 : switch (TREE_CODE (_p1))
11354 : {
11355 1085 : case LE_EXPR:
11356 1085 : {
11357 1085 : tree _q70 = TREE_OPERAND (_p1, 0);
11358 1085 : tree _q71 = TREE_OPERAND (_p1, 1);
11359 1085 : switch (TREE_CODE (_q70))
11360 : {
11361 800 : case POINTER_PLUS_EXPR:
11362 800 : {
11363 800 : tree _q80 = TREE_OPERAND (_q70, 0);
11364 800 : tree _q81 = TREE_OPERAND (_q70, 1);
11365 800 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11366 : {
11367 514 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11368 : {
11369 395 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11370 : {
11371 395 : {
11372 395 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11373 395 : const enum tree_code cmp = LE_EXPR;
11374 395 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11375 394 : && TYPE_OVERFLOW_WRAPS (sizetype)
11376 789 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11377 : )
11378 : {
11379 394 : {
11380 394 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11381 394 : offset_int rhs = off * 2;
11382 394 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11383 : )
11384 : {
11385 394 : {
11386 394 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11387 394 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11388 394 : if (cmp == LT_EXPR
11389 : )
11390 : {
11391 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1805;
11392 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1805;
11393 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1805;
11394 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1805;
11395 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1805;
11396 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1805;
11397 : {
11398 : tree res_op0;
11399 : {
11400 : tree _o1[1], _r1;
11401 : {
11402 : tree _o2[2], _r2;
11403 : _o2[0] = swap_p ? captures[6] : captures[1];
11404 : _o2[1] = swap_p ? captures[2] : captures[4];
11405 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11406 : _o1[0] = _r2;
11407 : }
11408 : if (TREE_TYPE (_o1[0]) != sizetype)
11409 : {
11410 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11411 : }
11412 : else
11413 : _r1 = _o1[0];
11414 : res_op0 = _r1;
11415 : }
11416 : tree res_op1;
11417 : res_op1 = rhs_tree;
11418 : tree _r;
11419 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11420 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11421 394 : return _r;
11422 : }
11423 : next_after_fail1805:;
11424 : }
11425 : else
11426 : {
11427 394 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1806;
11428 394 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1806;
11429 394 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1806;
11430 394 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1806;
11431 394 : {
11432 394 : tree res_op0;
11433 394 : {
11434 394 : tree _o1[1], _r1;
11435 394 : {
11436 394 : tree _o2[2], _r2;
11437 394 : {
11438 394 : tree _o3[2], _r3;
11439 394 : _o3[0] = swap_p ? captures[4] : captures[2];
11440 394 : _o3[1] = wide_int_to_tree (sizetype, off);
11441 394 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11442 394 : _o2[0] = _r3;
11443 : }
11444 394 : _o2[1] = swap_p ? captures[2] : captures[4];
11445 394 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11446 394 : _o1[0] = _r2;
11447 : }
11448 394 : if (TREE_TYPE (_o1[0]) != sizetype)
11449 : {
11450 394 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11451 : }
11452 : else
11453 : _r1 = _o1[0];
11454 394 : res_op0 = _r1;
11455 : }
11456 394 : tree res_op1;
11457 394 : res_op1 = rhs_tree;
11458 394 : tree _r;
11459 394 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11460 394 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11461 394 : return _r;
11462 : }
11463 0 : next_after_fail1806:;
11464 : }
11465 : }
11466 : }
11467 : }
11468 : }
11469 : }
11470 : }
11471 : }
11472 : }
11473 : break;
11474 : }
11475 : default:;
11476 : }
11477 : break;
11478 : }
11479 116 : case GE_EXPR:
11480 116 : {
11481 116 : tree _q70 = TREE_OPERAND (_p1, 0);
11482 116 : tree _q71 = TREE_OPERAND (_p1, 1);
11483 116 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11484 : {
11485 18 : switch (TREE_CODE (_q71))
11486 : {
11487 18 : case POINTER_PLUS_EXPR:
11488 18 : {
11489 18 : tree _q90 = TREE_OPERAND (_q71, 0);
11490 18 : tree _q91 = TREE_OPERAND (_q71, 1);
11491 18 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11492 : {
11493 16 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11494 : {
11495 11 : {
11496 11 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11497 11 : const enum tree_code cmp = LE_EXPR;
11498 11 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11499 11 : && TYPE_OVERFLOW_WRAPS (sizetype)
11500 22 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11501 : )
11502 : {
11503 11 : {
11504 11 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11505 11 : offset_int rhs = off * 2;
11506 11 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11507 : )
11508 : {
11509 11 : {
11510 11 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11511 11 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11512 11 : if (cmp == LT_EXPR
11513 : )
11514 : {
11515 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1807;
11516 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1807;
11517 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1807;
11518 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1807;
11519 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1807;
11520 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1807;
11521 : {
11522 : tree res_op0;
11523 : {
11524 : tree _o1[1], _r1;
11525 : {
11526 : tree _o2[2], _r2;
11527 : _o2[0] = swap_p ? captures[6] : captures[1];
11528 : _o2[1] = swap_p ? captures[2] : captures[4];
11529 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11530 : _o1[0] = _r2;
11531 : }
11532 : if (TREE_TYPE (_o1[0]) != sizetype)
11533 : {
11534 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11535 : }
11536 : else
11537 : _r1 = _o1[0];
11538 : res_op0 = _r1;
11539 : }
11540 : tree res_op1;
11541 : res_op1 = rhs_tree;
11542 : tree _r;
11543 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11544 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11545 11 : return _r;
11546 : }
11547 : next_after_fail1807:;
11548 : }
11549 : else
11550 : {
11551 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1808;
11552 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1808;
11553 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1808;
11554 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1808;
11555 11 : {
11556 11 : tree res_op0;
11557 11 : {
11558 11 : tree _o1[1], _r1;
11559 11 : {
11560 11 : tree _o2[2], _r2;
11561 11 : {
11562 11 : tree _o3[2], _r3;
11563 11 : _o3[0] = swap_p ? captures[4] : captures[2];
11564 11 : _o3[1] = wide_int_to_tree (sizetype, off);
11565 11 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11566 11 : _o2[0] = _r3;
11567 : }
11568 11 : _o2[1] = swap_p ? captures[2] : captures[4];
11569 11 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11570 11 : _o1[0] = _r2;
11571 : }
11572 11 : if (TREE_TYPE (_o1[0]) != sizetype)
11573 : {
11574 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11575 : }
11576 : else
11577 : _r1 = _o1[0];
11578 11 : res_op0 = _r1;
11579 : }
11580 11 : tree res_op1;
11581 11 : res_op1 = rhs_tree;
11582 11 : tree _r;
11583 11 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11584 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11585 11 : return _r;
11586 : }
11587 0 : next_after_fail1808:;
11588 : }
11589 : }
11590 : }
11591 : }
11592 : }
11593 : }
11594 : }
11595 : }
11596 : break;
11597 : }
11598 : default:;
11599 : }
11600 : }
11601 : break;
11602 : }
11603 : default:;
11604 : }
11605 : break;
11606 : }
11607 : default:;
11608 : }
11609 : break;
11610 : }
11611 : default:;
11612 : }
11613 : break;
11614 : }
11615 1041396 : case LT_EXPR:
11616 1041396 : {
11617 1041396 : tree _q20 = TREE_OPERAND (_p0, 0);
11618 1041396 : tree _q21 = TREE_OPERAND (_p0, 1);
11619 1041396 : switch (TREE_CODE (_q20))
11620 : {
11621 2424 : case POINTER_PLUS_EXPR:
11622 2424 : {
11623 2424 : tree _q30 = TREE_OPERAND (_q20, 0);
11624 2424 : tree _q31 = TREE_OPERAND (_q20, 1);
11625 2424 : switch (TREE_CODE (_q31))
11626 : {
11627 2240 : case INTEGER_CST:
11628 2240 : {
11629 2240 : switch (TREE_CODE (_p1))
11630 : {
11631 158 : case LT_EXPR:
11632 158 : {
11633 158 : tree _q70 = TREE_OPERAND (_p1, 0);
11634 158 : tree _q71 = TREE_OPERAND (_p1, 1);
11635 158 : switch (TREE_CODE (_q70))
11636 : {
11637 10 : case POINTER_PLUS_EXPR:
11638 10 : {
11639 10 : tree _q80 = TREE_OPERAND (_q70, 0);
11640 10 : tree _q81 = TREE_OPERAND (_q70, 1);
11641 10 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11642 : {
11643 1 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11644 : {
11645 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11646 : {
11647 1 : {
11648 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11649 1 : const enum tree_code cmp = LT_EXPR;
11650 1 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11651 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11652 1 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11653 : )
11654 : {
11655 0 : {
11656 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11657 0 : offset_int rhs = off * 2;
11658 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11659 : )
11660 : {
11661 0 : {
11662 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11663 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11664 0 : if (cmp == LT_EXPR
11665 : )
11666 : {
11667 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1809;
11668 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1809;
11669 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1809;
11670 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1809;
11671 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1809;
11672 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1809;
11673 0 : {
11674 0 : tree res_op0;
11675 0 : {
11676 0 : tree _o1[1], _r1;
11677 0 : {
11678 0 : tree _o2[2], _r2;
11679 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11680 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11681 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11682 0 : _o1[0] = _r2;
11683 : }
11684 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11685 : {
11686 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11687 : }
11688 : else
11689 : _r1 = _o1[0];
11690 0 : res_op0 = _r1;
11691 : }
11692 0 : tree res_op1;
11693 0 : res_op1 = rhs_tree;
11694 0 : tree _r;
11695 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11696 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11697 0 : return _r;
11698 : }
11699 0 : next_after_fail1809:;
11700 : }
11701 : else
11702 : {
11703 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1810;
11704 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1810;
11705 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1810;
11706 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1810;
11707 : {
11708 : tree res_op0;
11709 : {
11710 : tree _o1[1], _r1;
11711 : {
11712 : tree _o2[2], _r2;
11713 : {
11714 : tree _o3[2], _r3;
11715 : _o3[0] = swap_p ? captures[4] : captures[2];
11716 : _o3[1] = wide_int_to_tree (sizetype, off);
11717 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11718 : _o2[0] = _r3;
11719 : }
11720 : _o2[1] = swap_p ? captures[2] : captures[4];
11721 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11722 : _o1[0] = _r2;
11723 : }
11724 : if (TREE_TYPE (_o1[0]) != sizetype)
11725 : {
11726 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11727 : }
11728 : else
11729 : _r1 = _o1[0];
11730 : res_op0 = _r1;
11731 : }
11732 : tree res_op1;
11733 : res_op1 = rhs_tree;
11734 : tree _r;
11735 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11736 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11737 : return _r;
11738 : }
11739 : next_after_fail1810:;
11740 : }
11741 : }
11742 : }
11743 : }
11744 : }
11745 : }
11746 : }
11747 : }
11748 : }
11749 : break;
11750 : }
11751 : default:;
11752 : }
11753 : break;
11754 : }
11755 785 : case GT_EXPR:
11756 785 : {
11757 785 : tree _q70 = TREE_OPERAND (_p1, 0);
11758 785 : tree _q71 = TREE_OPERAND (_p1, 1);
11759 785 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11760 : {
11761 0 : switch (TREE_CODE (_q71))
11762 : {
11763 0 : case POINTER_PLUS_EXPR:
11764 0 : {
11765 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11766 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11767 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11768 : {
11769 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11770 : {
11771 0 : {
11772 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11773 0 : const enum tree_code cmp = LT_EXPR;
11774 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11775 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11776 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11777 : )
11778 : {
11779 0 : {
11780 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11781 0 : offset_int rhs = off * 2;
11782 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11783 : )
11784 : {
11785 0 : {
11786 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11787 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11788 0 : if (cmp == LT_EXPR
11789 : )
11790 : {
11791 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1811;
11792 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1811;
11793 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1811;
11794 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1811;
11795 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1811;
11796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1811;
11797 0 : {
11798 0 : tree res_op0;
11799 0 : {
11800 0 : tree _o1[1], _r1;
11801 0 : {
11802 0 : tree _o2[2], _r2;
11803 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11804 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11805 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11806 0 : _o1[0] = _r2;
11807 : }
11808 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11809 : {
11810 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11811 : }
11812 : else
11813 : _r1 = _o1[0];
11814 0 : res_op0 = _r1;
11815 : }
11816 0 : tree res_op1;
11817 0 : res_op1 = rhs_tree;
11818 0 : tree _r;
11819 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11820 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11821 0 : return _r;
11822 : }
11823 0 : next_after_fail1811:;
11824 : }
11825 : else
11826 : {
11827 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1812;
11828 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1812;
11829 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1812;
11830 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1812;
11831 : {
11832 : tree res_op0;
11833 : {
11834 : tree _o1[1], _r1;
11835 : {
11836 : tree _o2[2], _r2;
11837 : {
11838 : tree _o3[2], _r3;
11839 : _o3[0] = swap_p ? captures[4] : captures[2];
11840 : _o3[1] = wide_int_to_tree (sizetype, off);
11841 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11842 : _o2[0] = _r3;
11843 : }
11844 : _o2[1] = swap_p ? captures[2] : captures[4];
11845 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11846 : _o1[0] = _r2;
11847 : }
11848 : if (TREE_TYPE (_o1[0]) != sizetype)
11849 : {
11850 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11851 : }
11852 : else
11853 : _r1 = _o1[0];
11854 : res_op0 = _r1;
11855 : }
11856 : tree res_op1;
11857 : res_op1 = rhs_tree;
11858 : tree _r;
11859 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11860 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11861 : return _r;
11862 : }
11863 : next_after_fail1812:;
11864 : }
11865 : }
11866 : }
11867 : }
11868 : }
11869 : }
11870 : }
11871 : }
11872 : break;
11873 : }
11874 : default:;
11875 : }
11876 : }
11877 : break;
11878 : }
11879 : default:;
11880 : }
11881 : break;
11882 : }
11883 : default:;
11884 : }
11885 : break;
11886 : }
11887 : default:;
11888 : }
11889 : break;
11890 : }
11891 795788 : case GE_EXPR:
11892 795788 : {
11893 795788 : tree _q20 = TREE_OPERAND (_p0, 0);
11894 795788 : tree _q21 = TREE_OPERAND (_p0, 1);
11895 795788 : switch (TREE_CODE (_q21))
11896 : {
11897 53 : case POINTER_PLUS_EXPR:
11898 53 : {
11899 53 : tree _q40 = TREE_OPERAND (_q21, 0);
11900 53 : tree _q41 = TREE_OPERAND (_q21, 1);
11901 53 : switch (TREE_CODE (_q41))
11902 : {
11903 53 : case INTEGER_CST:
11904 53 : {
11905 53 : switch (TREE_CODE (_p1))
11906 : {
11907 52 : case LE_EXPR:
11908 52 : {
11909 52 : tree _q70 = TREE_OPERAND (_p1, 0);
11910 52 : tree _q71 = TREE_OPERAND (_p1, 1);
11911 52 : switch (TREE_CODE (_q70))
11912 : {
11913 42 : case POINTER_PLUS_EXPR:
11914 42 : {
11915 42 : tree _q80 = TREE_OPERAND (_q70, 0);
11916 42 : tree _q81 = TREE_OPERAND (_q70, 1);
11917 42 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11918 : {
11919 27 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11920 : {
11921 3 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11922 : {
11923 3 : {
11924 3 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11925 3 : const enum tree_code cmp = LE_EXPR;
11926 3 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11927 3 : && TYPE_OVERFLOW_WRAPS (sizetype)
11928 6 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11929 : )
11930 : {
11931 3 : {
11932 3 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11933 3 : offset_int rhs = off * 2;
11934 3 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11935 : )
11936 : {
11937 3 : {
11938 3 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11939 3 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11940 3 : if (cmp == LT_EXPR
11941 : )
11942 : {
11943 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1813;
11944 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1813;
11945 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1813;
11946 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1813;
11947 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1813;
11948 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1813;
11949 : {
11950 : tree res_op0;
11951 : {
11952 : tree _o1[1], _r1;
11953 : {
11954 : tree _o2[2], _r2;
11955 : _o2[0] = swap_p ? captures[6] : captures[1];
11956 : _o2[1] = swap_p ? captures[2] : captures[4];
11957 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11958 : _o1[0] = _r2;
11959 : }
11960 : if (TREE_TYPE (_o1[0]) != sizetype)
11961 : {
11962 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11963 : }
11964 : else
11965 : _r1 = _o1[0];
11966 : res_op0 = _r1;
11967 : }
11968 : tree res_op1;
11969 : res_op1 = rhs_tree;
11970 : tree _r;
11971 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11972 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11973 3 : return _r;
11974 : }
11975 : next_after_fail1813:;
11976 : }
11977 : else
11978 : {
11979 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1814;
11980 3 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1814;
11981 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1814;
11982 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1814;
11983 3 : {
11984 3 : tree res_op0;
11985 3 : {
11986 3 : tree _o1[1], _r1;
11987 3 : {
11988 3 : tree _o2[2], _r2;
11989 3 : {
11990 3 : tree _o3[2], _r3;
11991 3 : _o3[0] = swap_p ? captures[4] : captures[2];
11992 3 : _o3[1] = wide_int_to_tree (sizetype, off);
11993 3 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11994 3 : _o2[0] = _r3;
11995 : }
11996 3 : _o2[1] = swap_p ? captures[2] : captures[4];
11997 3 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11998 3 : _o1[0] = _r2;
11999 : }
12000 3 : if (TREE_TYPE (_o1[0]) != sizetype)
12001 : {
12002 3 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12003 : }
12004 : else
12005 : _r1 = _o1[0];
12006 3 : res_op0 = _r1;
12007 : }
12008 3 : tree res_op1;
12009 3 : res_op1 = rhs_tree;
12010 3 : tree _r;
12011 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12012 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
12013 3 : return _r;
12014 : }
12015 0 : next_after_fail1814:;
12016 : }
12017 : }
12018 : }
12019 : }
12020 : }
12021 : }
12022 : }
12023 : }
12024 : }
12025 : break;
12026 : }
12027 : default:;
12028 : }
12029 : break;
12030 : }
12031 0 : case GE_EXPR:
12032 0 : {
12033 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12034 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12035 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12036 : {
12037 0 : switch (TREE_CODE (_q71))
12038 : {
12039 0 : case POINTER_PLUS_EXPR:
12040 0 : {
12041 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12042 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12043 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12044 : {
12045 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12046 : {
12047 0 : {
12048 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12049 0 : const enum tree_code cmp = LE_EXPR;
12050 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12051 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12052 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12053 : )
12054 : {
12055 0 : {
12056 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12057 0 : offset_int rhs = off * 2;
12058 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12059 : )
12060 : {
12061 0 : {
12062 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12063 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12064 0 : if (cmp == LT_EXPR
12065 : )
12066 : {
12067 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1815;
12068 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1815;
12069 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1815;
12070 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1815;
12071 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1815;
12072 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1815;
12073 : {
12074 : tree res_op0;
12075 : {
12076 : tree _o1[1], _r1;
12077 : {
12078 : tree _o2[2], _r2;
12079 : _o2[0] = swap_p ? captures[6] : captures[1];
12080 : _o2[1] = swap_p ? captures[2] : captures[4];
12081 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12082 : _o1[0] = _r2;
12083 : }
12084 : if (TREE_TYPE (_o1[0]) != sizetype)
12085 : {
12086 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12087 : }
12088 : else
12089 : _r1 = _o1[0];
12090 : res_op0 = _r1;
12091 : }
12092 : tree res_op1;
12093 : res_op1 = rhs_tree;
12094 : tree _r;
12095 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12096 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
12097 0 : return _r;
12098 : }
12099 : next_after_fail1815:;
12100 : }
12101 : else
12102 : {
12103 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1816;
12104 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1816;
12105 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1816;
12106 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1816;
12107 0 : {
12108 0 : tree res_op0;
12109 0 : {
12110 0 : tree _o1[1], _r1;
12111 0 : {
12112 0 : tree _o2[2], _r2;
12113 0 : {
12114 0 : tree _o3[2], _r3;
12115 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12116 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12117 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12118 0 : _o2[0] = _r3;
12119 : }
12120 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12121 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12122 0 : _o1[0] = _r2;
12123 : }
12124 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12125 : {
12126 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12127 : }
12128 : else
12129 : _r1 = _o1[0];
12130 0 : res_op0 = _r1;
12131 : }
12132 0 : tree res_op1;
12133 0 : res_op1 = rhs_tree;
12134 0 : tree _r;
12135 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12136 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
12137 0 : return _r;
12138 : }
12139 0 : next_after_fail1816:;
12140 : }
12141 : }
12142 : }
12143 : }
12144 : }
12145 : }
12146 : }
12147 : }
12148 : break;
12149 : }
12150 : default:;
12151 : }
12152 : }
12153 : break;
12154 : }
12155 : default:;
12156 : }
12157 : break;
12158 : }
12159 : default:;
12160 : }
12161 : break;
12162 : }
12163 : default:;
12164 : }
12165 : break;
12166 : }
12167 1173513 : case GT_EXPR:
12168 1173513 : {
12169 1173513 : tree _q20 = TREE_OPERAND (_p0, 0);
12170 1173513 : tree _q21 = TREE_OPERAND (_p0, 1);
12171 1173513 : switch (TREE_CODE (_q21))
12172 : {
12173 46 : case POINTER_PLUS_EXPR:
12174 46 : {
12175 46 : tree _q40 = TREE_OPERAND (_q21, 0);
12176 46 : tree _q41 = TREE_OPERAND (_q21, 1);
12177 46 : switch (TREE_CODE (_q41))
12178 : {
12179 46 : case INTEGER_CST:
12180 46 : {
12181 46 : switch (TREE_CODE (_p1))
12182 : {
12183 0 : case LT_EXPR:
12184 0 : {
12185 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12186 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12187 0 : switch (TREE_CODE (_q70))
12188 : {
12189 0 : case POINTER_PLUS_EXPR:
12190 0 : {
12191 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12192 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12193 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12194 : {
12195 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12196 : {
12197 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12198 : {
12199 0 : {
12200 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12201 0 : const enum tree_code cmp = LT_EXPR;
12202 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12203 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12204 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12205 : )
12206 : {
12207 0 : {
12208 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12209 0 : offset_int rhs = off * 2;
12210 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12211 : )
12212 : {
12213 0 : {
12214 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12215 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12216 0 : if (cmp == LT_EXPR
12217 : )
12218 : {
12219 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1817;
12220 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1817;
12221 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1817;
12222 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1817;
12223 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1817;
12224 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1817;
12225 0 : {
12226 0 : tree res_op0;
12227 0 : {
12228 0 : tree _o1[1], _r1;
12229 0 : {
12230 0 : tree _o2[2], _r2;
12231 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12232 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12233 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12234 0 : _o1[0] = _r2;
12235 : }
12236 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12237 : {
12238 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12239 : }
12240 : else
12241 : _r1 = _o1[0];
12242 0 : res_op0 = _r1;
12243 : }
12244 0 : tree res_op1;
12245 0 : res_op1 = rhs_tree;
12246 0 : tree _r;
12247 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12248 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
12249 0 : return _r;
12250 : }
12251 0 : next_after_fail1817:;
12252 : }
12253 : else
12254 : {
12255 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1818;
12256 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1818;
12257 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1818;
12258 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1818;
12259 : {
12260 : tree res_op0;
12261 : {
12262 : tree _o1[1], _r1;
12263 : {
12264 : tree _o2[2], _r2;
12265 : {
12266 : tree _o3[2], _r3;
12267 : _o3[0] = swap_p ? captures[4] : captures[2];
12268 : _o3[1] = wide_int_to_tree (sizetype, off);
12269 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12270 : _o2[0] = _r3;
12271 : }
12272 : _o2[1] = swap_p ? captures[2] : captures[4];
12273 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12274 : _o1[0] = _r2;
12275 : }
12276 : if (TREE_TYPE (_o1[0]) != sizetype)
12277 : {
12278 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12279 : }
12280 : else
12281 : _r1 = _o1[0];
12282 : res_op0 = _r1;
12283 : }
12284 : tree res_op1;
12285 : res_op1 = rhs_tree;
12286 : tree _r;
12287 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12288 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
12289 : return _r;
12290 : }
12291 : next_after_fail1818:;
12292 : }
12293 : }
12294 : }
12295 : }
12296 : }
12297 : }
12298 : }
12299 : }
12300 : }
12301 : break;
12302 : }
12303 : default:;
12304 : }
12305 : break;
12306 : }
12307 18 : case GT_EXPR:
12308 18 : {
12309 18 : tree _q70 = TREE_OPERAND (_p1, 0);
12310 18 : tree _q71 = TREE_OPERAND (_p1, 1);
12311 18 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12312 : {
12313 0 : switch (TREE_CODE (_q71))
12314 : {
12315 0 : case POINTER_PLUS_EXPR:
12316 0 : {
12317 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12318 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12319 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12320 : {
12321 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12322 : {
12323 0 : {
12324 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12325 0 : const enum tree_code cmp = LT_EXPR;
12326 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12327 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12328 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12329 : )
12330 : {
12331 0 : {
12332 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12333 0 : offset_int rhs = off * 2;
12334 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12335 : )
12336 : {
12337 0 : {
12338 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12339 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12340 0 : if (cmp == LT_EXPR
12341 : )
12342 : {
12343 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1819;
12344 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1819;
12345 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1819;
12346 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1819;
12347 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1819;
12348 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1819;
12349 0 : {
12350 0 : tree res_op0;
12351 0 : {
12352 0 : tree _o1[1], _r1;
12353 0 : {
12354 0 : tree _o2[2], _r2;
12355 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12356 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12357 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12358 0 : _o1[0] = _r2;
12359 : }
12360 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12361 : {
12362 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12363 : }
12364 : else
12365 : _r1 = _o1[0];
12366 0 : res_op0 = _r1;
12367 : }
12368 0 : tree res_op1;
12369 0 : res_op1 = rhs_tree;
12370 0 : tree _r;
12371 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12372 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
12373 0 : return _r;
12374 : }
12375 0 : next_after_fail1819:;
12376 : }
12377 : else
12378 : {
12379 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1820;
12380 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1820;
12381 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1820;
12382 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1820;
12383 : {
12384 : tree res_op0;
12385 : {
12386 : tree _o1[1], _r1;
12387 : {
12388 : tree _o2[2], _r2;
12389 : {
12390 : tree _o3[2], _r3;
12391 : _o3[0] = swap_p ? captures[4] : captures[2];
12392 : _o3[1] = wide_int_to_tree (sizetype, off);
12393 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12394 : _o2[0] = _r3;
12395 : }
12396 : _o2[1] = swap_p ? captures[2] : captures[4];
12397 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12398 : _o1[0] = _r2;
12399 : }
12400 : if (TREE_TYPE (_o1[0]) != sizetype)
12401 : {
12402 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12403 : }
12404 : else
12405 : _r1 = _o1[0];
12406 : res_op0 = _r1;
12407 : }
12408 : tree res_op1;
12409 : res_op1 = rhs_tree;
12410 : tree _r;
12411 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12412 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
12413 : return _r;
12414 : }
12415 : next_after_fail1820:;
12416 : }
12417 : }
12418 : }
12419 : }
12420 : }
12421 : }
12422 : }
12423 : }
12424 : break;
12425 : }
12426 : default:;
12427 : }
12428 : }
12429 : break;
12430 : }
12431 : default:;
12432 : }
12433 : break;
12434 : }
12435 : default:;
12436 : }
12437 : break;
12438 : }
12439 : default:;
12440 : }
12441 : break;
12442 : }
12443 : default:;
12444 : }
12445 : return NULL_TREE;
12446 : }
12447 : #pragma GCC diagnostic pop
|