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 1222233440 : tree_nop_convert (tree t, tree *res_ops)
11 : {
12 1222233440 : const tree type = TREE_TYPE (t);
13 1222233440 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1222233440 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1170643311 : switch (TREE_CODE (t))
16 : {
17 231883832 : CASE_CONVERT:
18 231883832 : {
19 231883832 : tree _p0 = TREE_OPERAND (t, 0);
20 231883832 : {
21 231883832 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 231883832 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
23 : )
24 : {
25 179768870 : {
26 179768870 : res_ops[0] = captures[0];
27 179768870 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 0, __FILE__, __LINE__, false);
28 179768870 : return true;
29 : }
30 : }
31 : }
32 : break;
33 : }
34 4687387 : case VIEW_CONVERT_EXPR:
35 4687387 : {
36 4687387 : tree _p0 = TREE_OPERAND (t, 0);
37 4687387 : {
38 4687387 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
39 3199921 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0]))
40 3199903 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
41 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0])))
42 6898018 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))
43 : )
44 : {
45 2210625 : {
46 2210625 : res_ops[0] = captures[0];
47 2210625 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1, __FILE__, __LINE__, false);
48 2210625 : return true;
49 : }
50 : }
51 : }
52 2476762 : break;
53 : }
54 : default:;
55 : }
56 : return false;
57 : }
58 :
59 : bool
60 99615331 : tree_with_known_nonzero_bits (tree t)
61 : {
62 99615331 : const tree type = TREE_TYPE (t);
63 99615331 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
64 99615331 : if (TREE_SIDE_EFFECTS (t)) return false;
65 93406609 : switch (TREE_CODE (t))
66 : {
67 271684 : case BIT_IOR_EXPR:
68 271684 : {
69 271684 : tree _p0 = TREE_OPERAND (t, 0);
70 271684 : tree _p1 = TREE_OPERAND (t, 1);
71 271684 : if (tree_with_known_nonzero_bits_1 (_p0))
72 : {
73 264201 : {
74 264201 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
75 264201 : {
76 264201 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
77 264201 : return true;
78 : }
79 : }
80 : }
81 7483 : if (tree_with_known_nonzero_bits_1 (_p1))
82 : {
83 186 : {
84 186 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
85 186 : {
86 186 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
87 186 : return true;
88 : }
89 : }
90 : }
91 : break;
92 : }
93 93142222 : default:;
94 : }
95 93142222 : if (tree_with_known_nonzero_bits_1 (t))
96 : {
97 40066103 : {
98 40066103 : tree captures[1] ATTRIBUTE_UNUSED = { t };
99 40066103 : {
100 40066103 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 40, __FILE__, __LINE__, false);
101 40066103 : return true;
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 316 : generic_simplify_4 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (outer_op),
112 : const enum tree_code ARG_UNUSED (inner_op))
113 : {
114 316 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
115 316 : if (real_zerop (captures[2])
116 34 : && real_zerop (captures[3])
117 350 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
118 : )
119 : {
120 10 : {
121 10 : bool inner_plus = ((inner_op == PLUS_EXPR)
122 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[2])));
123 10 : bool outer_plus
124 10 : = ((outer_op == PLUS_EXPR)
125 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[3])));
126 10 : if (outer_plus && !inner_plus
127 : )
128 : {
129 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail75;
130 2 : {
131 2 : tree res_op0;
132 2 : res_op0 = captures[1];
133 2 : tree res_op1;
134 2 : res_op1 = captures[3];
135 2 : tree _r;
136 2 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
137 2 : if (TREE_SIDE_EFFECTS (captures[2]))
138 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
139 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 52, __FILE__, __LINE__, true);
140 2 : return _r;
141 : }
142 0 : next_after_fail75:;
143 : }
144 : else
145 : {
146 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail76;
147 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail76;
148 8 : {
149 8 : tree _r;
150 8 : _r = captures[0];
151 8 : if (TREE_SIDE_EFFECTS (captures[3]))
152 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
153 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 53, __FILE__, __LINE__, true);
154 8 : return _r;
155 : }
156 : next_after_fail76:;
157 : }
158 : }
159 : }
160 : return NULL_TREE;
161 : }
162 :
163 : tree
164 833 : generic_simplify_19 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
165 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
166 : {
167 833 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
168 833 : if (!TYPE_SATURATING (type)
169 : )
170 : {
171 833 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
172 1666 : && !FIXED_POINT_TYPE_P (type)
173 : )
174 : {
175 833 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail99;
176 833 : {
177 833 : tree res_op0;
178 833 : res_op0 = captures[2];
179 833 : tree res_op1;
180 833 : res_op1 = captures[1];
181 833 : tree _r;
182 833 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
183 833 : if (TREE_SIDE_EFFECTS (captures[0]))
184 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
185 833 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
186 833 : return _r;
187 : }
188 0 : next_after_fail99:;
189 : }
190 : }
191 : return NULL_TREE;
192 : }
193 :
194 : tree
195 2315431 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
196 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
197 : const enum tree_code ARG_UNUSED (plusminus))
198 : {
199 2315431 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
200 2315431 : if (!TYPE_SATURATING (type)
201 2315431 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
202 : )
203 : {
204 110 : if (!ANY_INTEGRAL_TYPE_P (type)
205 2315208 : || TYPE_OVERFLOW_WRAPS (type)
206 4032953 : || (INTEGRAL_TYPE_P (type)
207 1717635 : && tree_expr_nonzero_p (captures[1])
208 3237480 : && expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (type)),
209 : gimple_match_ctx (captures[0])))
210 : )
211 : {
212 1519541 : if (single_use (captures[0]) || single_use (captures[3])
213 : )
214 : {
215 1519541 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail105;
216 1519541 : {
217 1519541 : tree res_op0;
218 1519541 : {
219 1519541 : tree _o1[2], _r1;
220 1519541 : _o1[0] = captures[2];
221 1519541 : _o1[1] = captures[4];
222 1519541 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
223 1519541 : res_op0 = _r1;
224 : }
225 1519541 : tree res_op1;
226 1519541 : res_op1 = captures[1];
227 1519541 : tree _r;
228 1519541 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
229 1519541 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 82, __FILE__, __LINE__, true);
230 1519541 : return _r;
231 : }
232 0 : next_after_fail105:;
233 : }
234 : else
235 : {
236 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail106;
237 : {
238 : tree res_op0;
239 : {
240 : tree _o1[2], _r1;
241 : _o1[0] = captures[2];
242 : _o1[1] = captures[4];
243 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
244 : res_op0 = _r1;
245 : }
246 : tree res_op1;
247 : res_op1 = captures[1];
248 : tree _r;
249 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
250 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 83, __FILE__, __LINE__, true);
251 : return _r;
252 : }
253 : next_after_fail106:;
254 : }
255 : }
256 : }
257 : return NULL_TREE;
258 : }
259 :
260 : tree
261 4 : generic_simplify_37 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
262 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
263 : const enum tree_code ARG_UNUSED (log1),
264 : const enum tree_code ARG_UNUSED (log2),
265 : const combined_fn ARG_UNUSED (popcount))
266 : {
267 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
268 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail119;
269 4 : {
270 4 : tree res_op0;
271 4 : {
272 4 : tree _o1[2], _r1;
273 4 : _o1[0] = captures[2];
274 4 : _o1[1] = captures[5];
275 4 : _r1 = fold_build2_loc (loc, log2, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
276 4 : res_op0 = _r1;
277 : }
278 4 : tree _r;
279 4 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
280 4 : if (!_r)
281 0 : goto next_after_fail119;
282 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, true);
283 : return _r;
284 : }
285 : next_after_fail119:;
286 : return NULL_TREE;
287 : }
288 :
289 : tree
290 0 : generic_simplify_43 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
291 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
292 : {
293 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
294 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail125;
295 0 : {
296 0 : tree res_op0;
297 0 : res_op0 = unshare_expr (captures[2]);
298 0 : tree res_op1;
299 0 : {
300 0 : tree _o1[2], _r1;
301 0 : _o1[0] = captures[1];
302 0 : _o1[1] = captures[2];
303 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
304 0 : res_op1 = _r1;
305 : }
306 0 : tree _r;
307 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
308 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 102, __FILE__, __LINE__, true);
309 : return _r;
310 : }
311 0 : next_after_fail125:;
312 0 : return NULL_TREE;
313 : }
314 :
315 : tree
316 56442 : generic_simplify_50 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
317 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
318 : {
319 56442 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
320 56442 : if (!TYPE_SATURATING (type)
321 : )
322 : {
323 56442 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
324 112873 : && !FIXED_POINT_TYPE_P (type)
325 : )
326 : {
327 56431 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail132;
328 56431 : {
329 56431 : tree res_op0;
330 56431 : res_op0 = captures[1];
331 56431 : tree _r;
332 56431 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
333 56431 : if (TREE_SIDE_EFFECTS (captures[0]))
334 15 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
335 56431 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, true);
336 56431 : return _r;
337 : }
338 0 : next_after_fail132:;
339 : }
340 : }
341 : return NULL_TREE;
342 : }
343 :
344 : tree
345 11113 : generic_simplify_57 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
346 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
347 : {
348 11113 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
349 11113 : if (!TYPE_SATURATING (type)
350 : )
351 : {
352 11113 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
353 22226 : && !FIXED_POINT_TYPE_P (type)
354 : )
355 : {
356 11113 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
357 11113 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
358 2982 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
359 : )
360 : {
361 10999 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail143;
362 10999 : {
363 10999 : tree res_op0;
364 10999 : res_op0 = captures[1];
365 10999 : tree _r;
366 10999 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
367 10999 : if (TREE_SIDE_EFFECTS (captures[2]))
368 15 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
369 10999 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 119, __FILE__, __LINE__, true);
370 10999 : return _r;
371 : }
372 0 : next_after_fail143:;
373 : }
374 : }
375 : }
376 : return NULL_TREE;
377 : }
378 :
379 : tree
380 4 : generic_simplify_63 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
381 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
382 : const enum tree_code ARG_UNUSED (log1),
383 : const enum tree_code ARG_UNUSED (log2),
384 : const combined_fn ARG_UNUSED (popcount))
385 : {
386 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
387 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail151;
388 4 : {
389 4 : tree res_op0;
390 4 : {
391 4 : tree _o1[2], _r1;
392 4 : _o1[0] = captures[2];
393 4 : _o1[1] = captures[4];
394 4 : _r1 = fold_build2_loc (loc, log2, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
395 4 : res_op0 = _r1;
396 : }
397 4 : tree _r;
398 4 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
399 4 : if (!_r)
400 0 : goto next_after_fail151;
401 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 127, __FILE__, __LINE__, true);
402 : return _r;
403 : }
404 : next_after_fail151:;
405 : return NULL_TREE;
406 : }
407 :
408 : tree
409 36 : generic_simplify_67 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
410 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
411 : const enum tree_code ARG_UNUSED (bitop),
412 : const enum tree_code ARG_UNUSED (cmp))
413 : {
414 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
415 72 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
416 36 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
417 72 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
418 : )
419 : {
420 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail155;
421 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail155;
422 36 : {
423 36 : tree res_op0;
424 36 : {
425 36 : tree _o1[2], _r1;
426 36 : _o1[0] = captures[0];
427 36 : {
428 36 : tree _o2[1], _r2;
429 36 : _o2[0] = captures[2];
430 36 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
431 : {
432 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
433 : }
434 : else
435 : _r2 = _o2[0];
436 36 : _o1[1] = _r2;
437 : }
438 36 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
439 36 : res_op0 = _r1;
440 : }
441 36 : tree res_op1;
442 36 : res_op1 = captures[1];
443 36 : tree _r;
444 36 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
445 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 131, __FILE__, __LINE__, true);
446 36 : return _r;
447 : }
448 : next_after_fail155:;
449 : }
450 : return NULL_TREE;
451 : }
452 :
453 : tree
454 0 : generic_simplify_79 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
455 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
456 : const enum tree_code ARG_UNUSED (op))
457 : {
458 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
459 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail171;
460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail171;
461 0 : {
462 0 : tree _r;
463 0 : _r = captures[0];
464 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 142, __FILE__, __LINE__, true);
465 : return _r;
466 : }
467 : next_after_fail171:;
468 : return NULL_TREE;
469 : }
470 :
471 : tree
472 516785 : generic_simplify_88 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
473 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
474 : const enum tree_code ARG_UNUSED (op))
475 : {
476 516785 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
477 516785 : {
478 516785 : bool wascmp;
479 516785 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
480 516785 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
481 : )
482 : {
483 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail180;
484 47 : {
485 47 : tree res_op0;
486 47 : res_op0 = wascmp
487 47 : ? constant_boolean_node (true, type)
488 40 : : build_all_ones_cst (TREE_TYPE (captures[0]));
489 47 : tree _r;
490 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
491 47 : if (TREE_SIDE_EFFECTS (captures[0]))
492 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
493 47 : if (TREE_SIDE_EFFECTS (captures[1]))
494 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
495 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 147, __FILE__, __LINE__, true);
496 47 : return _r;
497 : }
498 0 : next_after_fail180:;
499 : }
500 : }
501 516738 : return NULL_TREE;
502 : }
503 :
504 : tree
505 3815137 : generic_simplify_104 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
506 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
507 : const enum tree_code ARG_UNUSED (bitop))
508 : {
509 3815137 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
510 3815137 : if (((TREE_CODE (captures[3]) == INTEGER_CST
511 1673519 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
512 1493574 : && (int_fits_type_p (captures[3], TREE_TYPE (captures[1]))
513 10880 : || tree_nop_conversion_p (TREE_TYPE (captures[1]), type)))
514 2330155 : || types_match (captures[1], captures[3]))
515 1892090 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
516 1892090 : && !VECTOR_TYPE_P (TREE_TYPE (captures[1]))
517 1892087 : && TREE_CODE (TREE_TYPE (captures[1])) != OFFSET_TYPE
518 1892087 : && (bitop != BIT_AND_EXPR ||
519 :
520 : )
521 3815137 : && (
522 91282 : TYPE_PRECISION (TREE_TYPE (captures[1])) < TYPE_PRECISION (type)
523 : || (
524 :
525 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (type))
526 90228 : || GET_MODE_CLASS (TYPE_MODE (type)) != MODE_INT
527 90228 : || !type_has_mode_precision_p (type)
528 90228 : || (
529 :
530 : && TREE_CODE (captures[3]) != INTEGER_CST
531 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
532 : && single_use (captures[0])
533 : && single_use (captures[2])))
534 : )
535 : {
536 1057 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail200;
537 1057 : {
538 1057 : tree res_op0;
539 1057 : {
540 1057 : tree _o1[2], _r1;
541 1057 : _o1[0] = captures[1];
542 1057 : {
543 1057 : tree _o2[1], _r2;
544 1057 : _o2[0] = captures[3];
545 1057 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
546 : {
547 1057 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
548 : }
549 : else
550 : _r2 = _o2[0];
551 1057 : _o1[1] = _r2;
552 : }
553 1057 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
554 1057 : res_op0 = _r1;
555 : }
556 1057 : tree _r;
557 1057 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
558 1057 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 158, __FILE__, __LINE__, true);
559 1057 : return _r;
560 : }
561 0 : next_after_fail200:;
562 : }
563 : return NULL_TREE;
564 : }
565 :
566 : tree
567 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
568 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
569 : const enum tree_code ARG_UNUSED (op))
570 : {
571 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
572 0 : if (INTEGRAL_TYPE_P (type)
573 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
574 : )
575 : {
576 0 : {
577 0 : tree t = type;
578 0 : if (!TYPE_OVERFLOW_WRAPS (t))
579 0 : t = unsigned_type_for (t);
580 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
581 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail215;
582 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail215;
583 0 : {
584 0 : tree res_op0;
585 0 : {
586 0 : tree _o1[2], _r1;
587 0 : {
588 0 : tree _o2[1], _r2;
589 0 : _o2[0] = captures[2];
590 0 : if (TREE_TYPE (_o2[0]) != t)
591 : {
592 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
593 : }
594 : else
595 : _r2 = _o2[0];
596 0 : _o1[0] = _r2;
597 : }
598 0 : _o1[1] = wide_int_to_tree (t, c);
599 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
600 0 : res_op0 = _r1;
601 : }
602 0 : tree _r;
603 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
604 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 168, __FILE__, __LINE__, true);
605 0 : return _r;
606 : }
607 0 : next_after_fail215:;
608 0 : }
609 : }
610 : return NULL_TREE;
611 : }
612 :
613 : tree
614 4 : generic_simplify_126 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
615 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
616 : {
617 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
618 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail229;
619 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail229;
620 4 : {
621 4 : tree _r;
622 4 : _r = captures[2];
623 4 : if (TREE_SIDE_EFFECTS (captures[1]))
624 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
625 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 182, __FILE__, __LINE__, true);
626 : return _r;
627 : }
628 : next_after_fail229:;
629 : return NULL_TREE;
630 : }
631 :
632 : tree
633 0 : generic_simplify_132 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
634 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
635 : const enum tree_code ARG_UNUSED (cmp))
636 : {
637 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
638 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail253;
639 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail253;
640 0 : {
641 0 : tree res_op0;
642 0 : {
643 0 : tree _o1[2], _r1;
644 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
645 0 : _o1[1] = captures[2];
646 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
647 0 : res_op0 = _r1;
648 : }
649 0 : tree res_op1;
650 0 : res_op1 = captures[3];
651 0 : tree _r;
652 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
653 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 199, __FILE__, __LINE__, true);
654 : return _r;
655 : }
656 : next_after_fail253:;
657 : return NULL_TREE;
658 : }
659 :
660 : tree
661 0 : generic_simplify_137 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
662 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
663 : const enum tree_code ARG_UNUSED (code2),
664 : const enum tree_code ARG_UNUSED (code1))
665 : {
666 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
667 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
668 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
669 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
670 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
671 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
672 0 : && bitwise_equal_p (captures[2], captures[5]))
673 : )
674 : {
675 0 : {
676 0 : bool one_before = false;
677 0 : bool one_after = false;
678 0 : int cmp = 0;
679 0 : bool allbits = true;
680 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
681 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
682 : {
683 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
684 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
685 0 : auto t2 = wi::to_wide (captures[5]);
686 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
687 0 : if (cmp < 0
688 0 : && t1 == t2 - 1)
689 : one_before = true;
690 0 : if (cmp > 0
691 0 : && t1 == t2 + 1)
692 : one_after = true;
693 : }
694 0 : bool val;
695 0 : switch (code2)
696 : {
697 0 : case EQ_EXPR: val = (cmp == 0); break;
698 0 : case NE_EXPR: val = (cmp != 0); break;
699 0 : case LT_EXPR: val = (cmp < 0); break;
700 0 : case GT_EXPR: val = (cmp > 0); break;
701 0 : case LE_EXPR: val = (cmp <= 0); break;
702 0 : case GE_EXPR: val = (cmp >= 0); break;
703 0 : default: gcc_unreachable ();
704 : }
705 0 : if (code1 == EQ_EXPR && val
706 : )
707 : {
708 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail259;
709 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail259;
710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail259;
711 0 : {
712 0 : tree _r;
713 0 : _r = captures[3];
714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
715 0 : return _r;
716 : }
717 : next_after_fail259:;
718 : }
719 : else
720 : {
721 0 : if (code1 == NE_EXPR && val && allbits
722 : )
723 : {
724 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail260;
725 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail260;
726 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail260;
727 0 : {
728 0 : tree _r;
729 0 : _r = constant_boolean_node (true, type);
730 0 : if (TREE_SIDE_EFFECTS (captures[1]))
731 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
732 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 185, __FILE__, __LINE__, true);
733 0 : return _r;
734 : }
735 : next_after_fail260:;
736 : }
737 : else
738 : {
739 0 : if (code1 == NE_EXPR && !val && allbits
740 : )
741 : {
742 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail261;
743 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail261;
744 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail261;
745 0 : {
746 0 : tree _r;
747 0 : _r = captures[0];
748 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
749 0 : return _r;
750 : }
751 : next_after_fail261:;
752 : }
753 : else
754 : {
755 0 : if (code1 == EQ_EXPR
756 0 : && code2 == GT_EXPR
757 0 : && cmp == 0
758 0 : && allbits
759 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
760 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
761 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
762 : )
763 : {
764 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail262;
765 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail262;
766 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail262;
767 0 : {
768 0 : tree res_op0;
769 0 : res_op0 = captures[4];
770 0 : tree res_op1;
771 0 : res_op1 = captures[5];
772 0 : tree _r;
773 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
774 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
775 0 : return _r;
776 : }
777 : next_after_fail262:;
778 : }
779 : else
780 : {
781 0 : if (code1 == EQ_EXPR
782 0 : && code2 == LT_EXPR
783 0 : && cmp == 0
784 0 : && allbits
785 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
786 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
787 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
788 : )
789 : {
790 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail263;
791 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail263;
792 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail263;
793 0 : {
794 0 : tree res_op0;
795 0 : res_op0 = captures[4];
796 0 : tree res_op1;
797 0 : res_op1 = captures[5];
798 0 : tree _r;
799 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
800 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
801 0 : return _r;
802 : }
803 : next_after_fail263:;
804 : }
805 : else
806 : {
807 0 : if (code1 == EQ_EXPR
808 0 : && code2 == GE_EXPR
809 : && one_before
810 0 : && allbits
811 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
812 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
813 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
814 : )
815 : {
816 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail264;
817 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail264;
818 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail264;
819 0 : {
820 0 : tree res_op0;
821 0 : res_op0 = captures[4];
822 0 : tree res_op1;
823 0 : {
824 0 : tree _o1[1], _r1;
825 0 : _o1[0] = captures[2];
826 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
827 : {
828 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
829 : }
830 : else
831 : _r1 = _o1[0];
832 0 : res_op1 = _r1;
833 : }
834 0 : tree _r;
835 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
836 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 189, __FILE__, __LINE__, true);
837 0 : return _r;
838 : }
839 : next_after_fail264:;
840 : }
841 : else
842 : {
843 0 : if (code1 == EQ_EXPR
844 0 : && code2 == LE_EXPR
845 : && one_after
846 0 : && allbits
847 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
848 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
849 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
850 : )
851 : {
852 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail265;
853 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail265;
854 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail265;
855 0 : {
856 0 : tree res_op0;
857 0 : res_op0 = captures[4];
858 0 : tree res_op1;
859 0 : {
860 0 : tree _o1[1], _r1;
861 0 : _o1[0] = captures[2];
862 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
863 : {
864 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
865 : }
866 : else
867 : _r1 = _o1[0];
868 0 : res_op1 = _r1;
869 : }
870 0 : tree _r;
871 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
872 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 190, __FILE__, __LINE__, true);
873 0 : return _r;
874 : }
875 : next_after_fail265:;
876 : }
877 : }
878 : }
879 : }
880 : }
881 : }
882 : }
883 : }
884 : }
885 : return NULL_TREE;
886 : }
887 :
888 : tree
889 8395623 : generic_simplify_180 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
890 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
891 : const enum tree_code ARG_UNUSED (op))
892 : {
893 8395623 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
894 8395623 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail317;
895 8395623 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail317;
896 8395623 : {
897 8395623 : tree res_op0;
898 8395623 : res_op0 = captures[0];
899 8395623 : tree _r;
900 8395623 : _r = non_lvalue_loc (loc, res_op0);
901 8395623 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 236, __FILE__, __LINE__, true);
902 : return _r;
903 : }
904 : next_after_fail317:;
905 : return NULL_TREE;
906 : }
907 :
908 : tree
909 101907 : generic_simplify_187 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
910 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
911 : {
912 101907 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
913 101907 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
914 101907 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
915 : )
916 : {
917 33306 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail326;
918 33306 : {
919 33306 : tree res_op0;
920 33306 : {
921 33306 : tree _o1[1], _r1;
922 33306 : _o1[0] = captures[0];
923 33306 : if (TREE_TYPE (_o1[0]) != type)
924 : {
925 9485 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
926 : }
927 : else
928 : _r1 = _o1[0];
929 33306 : res_op0 = _r1;
930 : }
931 33306 : tree res_op1;
932 33306 : {
933 33306 : tree _o1[1], _r1;
934 33306 : {
935 33306 : tree _o2[1], _r2;
936 33306 : _o2[0] = captures[1];
937 33306 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
938 33306 : _o1[0] = _r2;
939 : }
940 33306 : if (TREE_TYPE (_o1[0]) != type)
941 : {
942 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
943 : }
944 : else
945 : _r1 = _o1[0];
946 33306 : res_op1 = _r1;
947 : }
948 33306 : tree _r;
949 33306 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
950 33306 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 242, __FILE__, __LINE__, true);
951 33306 : return _r;
952 : }
953 0 : next_after_fail326:;
954 : }
955 : return NULL_TREE;
956 : }
957 :
958 : tree
959 38 : generic_simplify_200 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
960 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
961 : const combined_fn ARG_UNUSED (POW))
962 : {
963 38 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
964 38 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
965 : )
966 : {
967 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail340;
968 38 : {
969 38 : tree res_op0;
970 38 : res_op0 = captures[1];
971 38 : tree res_op1;
972 38 : {
973 38 : tree _o1[2], _r1;
974 38 : _o1[0] = captures[2];
975 38 : _o1[1] = captures[4];
976 38 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
977 38 : res_op1 = _r1;
978 : }
979 38 : tree _r;
980 38 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
981 38 : if (!_r)
982 0 : goto next_after_fail340;
983 38 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 255, __FILE__, __LINE__, true);
984 38 : return _r;
985 : }
986 : next_after_fail340:;
987 : }
988 : return NULL_TREE;
989 : }
990 :
991 : tree
992 0 : generic_simplify_208 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
993 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
994 : const enum tree_code ARG_UNUSED (op))
995 : {
996 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
997 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail351;
998 0 : {
999 0 : tree _r;
1000 0 : _r = constant_boolean_node (op == NE_EXPR ? true : false, type);
1001 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1002 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1003 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 265, __FILE__, __LINE__, true);
1004 : return _r;
1005 : }
1006 0 : next_after_fail351:;
1007 0 : return NULL_TREE;
1008 : }
1009 :
1010 : tree
1011 1748795 : generic_simplify_213 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1012 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1013 : const enum tree_code ARG_UNUSED (cmp))
1014 : {
1015 1748795 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1016 3497590 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1017 1748795 : && integer_nonzerop (captures[2])
1018 1747005 : && !TREE_OVERFLOW (captures[2])
1019 3495800 : && !TREE_OVERFLOW (captures[3])
1020 : )
1021 : {
1022 1747005 : {
1023 1747005 : tree lo, hi; bool neg_overflow;
1024 1747005 : enum tree_code code = fold_div_compare (cmp, captures[2], captures[3], &lo, &hi,
1025 : &neg_overflow);
1026 1747005 : if (code == LT_EXPR || code == GE_EXPR
1027 : )
1028 : {
1029 41174 : if (TREE_OVERFLOW (lo)
1030 : )
1031 : {
1032 8664 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail356;
1033 8664 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail356;
1034 8664 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail356;
1035 8664 : {
1036 8664 : tree _r;
1037 8664 : _r = build_int_cst (type, (code == LT_EXPR) ^ neg_overflow);
1038 8664 : if (TREE_SIDE_EFFECTS (captures[1]))
1039 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1040 8664 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 270, __FILE__, __LINE__, true);
1041 1747002 : return _r;
1042 : }
1043 3 : next_after_fail356:;
1044 : }
1045 : else
1046 : {
1047 32510 : if (code == LT_EXPR
1048 : )
1049 : {
1050 729 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail357;
1051 729 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail357;
1052 729 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail357;
1053 729 : {
1054 729 : tree res_op0;
1055 729 : res_op0 = captures[1];
1056 729 : tree res_op1;
1057 729 : res_op1 = lo;
1058 729 : tree _r;
1059 729 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1060 729 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 271, __FILE__, __LINE__, true);
1061 729 : return _r;
1062 : }
1063 3 : next_after_fail357:;
1064 : }
1065 : else
1066 : {
1067 31781 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail358;
1068 31781 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail358;
1069 31781 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail358;
1070 31781 : {
1071 31781 : tree res_op0;
1072 31781 : res_op0 = captures[1];
1073 31781 : tree res_op1;
1074 31781 : res_op1 = lo;
1075 31781 : tree _r;
1076 31781 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1077 31781 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 272, __FILE__, __LINE__, true);
1078 31781 : return _r;
1079 : }
1080 3 : next_after_fail358:;
1081 : }
1082 : }
1083 : }
1084 : else
1085 : {
1086 1705831 : if (code == LE_EXPR || code == GT_EXPR
1087 : )
1088 : {
1089 1702778 : if (TREE_OVERFLOW (hi)
1090 : )
1091 : {
1092 536332 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail359;
1093 536332 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail359;
1094 536332 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail359;
1095 536332 : {
1096 536332 : tree _r;
1097 536332 : _r = build_int_cst (type, (code == LE_EXPR) ^ neg_overflow);
1098 536332 : if (TREE_SIDE_EFFECTS (captures[1]))
1099 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1100 536332 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 273, __FILE__, __LINE__, true);
1101 536332 : return _r;
1102 : }
1103 3 : next_after_fail359:;
1104 : }
1105 : else
1106 : {
1107 1166446 : if (code == LE_EXPR
1108 : )
1109 : {
1110 684 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail360;
1111 684 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail360;
1112 684 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail360;
1113 684 : {
1114 684 : tree res_op0;
1115 684 : res_op0 = captures[1];
1116 684 : tree res_op1;
1117 684 : res_op1 = hi;
1118 684 : tree _r;
1119 684 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1120 684 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 274, __FILE__, __LINE__, true);
1121 684 : return _r;
1122 : }
1123 3 : next_after_fail360:;
1124 : }
1125 : else
1126 : {
1127 1165762 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail361;
1128 1165762 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail361;
1129 1165762 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail361;
1130 1165762 : {
1131 1165762 : tree res_op0;
1132 1165762 : res_op0 = captures[1];
1133 1165762 : tree res_op1;
1134 1165762 : res_op1 = hi;
1135 1165762 : tree _r;
1136 1165762 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1137 1165762 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 275, __FILE__, __LINE__, true);
1138 1165762 : return _r;
1139 : }
1140 3 : next_after_fail361:;
1141 : }
1142 : }
1143 : }
1144 : else
1145 : {
1146 3053 : if (!lo && !hi
1147 : )
1148 : {
1149 40 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail362;
1150 40 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail362;
1151 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail362;
1152 40 : {
1153 40 : tree _r;
1154 40 : _r = build_int_cst (type, code == NE_EXPR);
1155 40 : if (TREE_SIDE_EFFECTS (captures[1]))
1156 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1157 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 276, __FILE__, __LINE__, true);
1158 40 : return _r;
1159 : }
1160 3 : next_after_fail362:;
1161 : }
1162 : else
1163 : {
1164 3013 : if (code == EQ_EXPR && !hi
1165 : )
1166 : {
1167 15 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail363;
1168 15 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail363;
1169 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail363;
1170 15 : {
1171 15 : tree res_op0;
1172 15 : res_op0 = captures[1];
1173 15 : tree res_op1;
1174 15 : res_op1 = lo;
1175 15 : tree _r;
1176 15 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1177 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 277, __FILE__, __LINE__, true);
1178 15 : return _r;
1179 : }
1180 3 : next_after_fail363:;
1181 : }
1182 : else
1183 : {
1184 910 : if (code == EQ_EXPR && !lo
1185 : )
1186 : {
1187 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail364;
1188 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail364;
1189 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail364;
1190 11 : {
1191 11 : tree res_op0;
1192 11 : res_op0 = captures[1];
1193 11 : tree res_op1;
1194 11 : res_op1 = hi;
1195 11 : tree _r;
1196 11 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1197 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 278, __FILE__, __LINE__, true);
1198 11 : return _r;
1199 : }
1200 3 : next_after_fail364:;
1201 : }
1202 : else
1203 : {
1204 2987 : if (code == NE_EXPR && !hi
1205 : )
1206 : {
1207 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail365;
1208 4 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail365;
1209 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail365;
1210 4 : {
1211 4 : tree res_op0;
1212 4 : res_op0 = captures[1];
1213 4 : tree res_op1;
1214 4 : res_op1 = lo;
1215 4 : tree _r;
1216 4 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1217 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 279, __FILE__, __LINE__, true);
1218 4 : return _r;
1219 : }
1220 3 : next_after_fail365:;
1221 : }
1222 : else
1223 : {
1224 2084 : if (code == NE_EXPR && !lo
1225 : )
1226 : {
1227 18 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail366;
1228 18 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail366;
1229 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail366;
1230 18 : {
1231 18 : tree res_op0;
1232 18 : res_op0 = captures[1];
1233 18 : tree res_op1;
1234 18 : res_op1 = hi;
1235 18 : tree _r;
1236 18 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1237 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 280, __FILE__, __LINE__, true);
1238 18 : return _r;
1239 : }
1240 3 : next_after_fail366:;
1241 : }
1242 : else
1243 : {
1244 2965 : if (1
1245 : )
1246 : {
1247 2965 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail367;
1248 2962 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail367;
1249 2962 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail367;
1250 2962 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail367;
1251 2962 : {
1252 2962 : tree _r;
1253 2962 : _r = build_range_check (UNKNOWN_LOCATION, type, captures[1], code == EQ_EXPR,
1254 : lo, hi);
1255 2962 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 281, __FILE__, __LINE__, true);
1256 2962 : return _r;
1257 : }
1258 3 : next_after_fail367:;
1259 : }
1260 : else
1261 : {
1262 : {
1263 : tree etype = range_check_type (TREE_TYPE (captures[1]));
1264 : if (etype)
1265 : {
1266 : hi = fold_convert (etype, hi);
1267 : lo = fold_convert (etype, lo);
1268 : hi = const_binop (MINUS_EXPR, etype, hi, lo);
1269 : }
1270 : if (etype && hi && !TREE_OVERFLOW (hi)
1271 : )
1272 : {
1273 : if (code == EQ_EXPR
1274 : )
1275 : {
1276 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail368;
1277 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail368;
1278 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail368;
1279 : {
1280 : tree res_op0;
1281 : {
1282 : tree _o1[2], _r1;
1283 : {
1284 : tree _o2[1], _r2;
1285 : _o2[0] = captures[1];
1286 : if (TREE_TYPE (_o2[0]) != etype)
1287 : {
1288 : _r2 = fold_build1_loc (loc, NOP_EXPR, etype, _o2[0]);
1289 : }
1290 : else
1291 : _r2 = _o2[0];
1292 : _o1[0] = _r2;
1293 : }
1294 : _o1[1] = lo;
1295 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1296 : res_op0 = _r1;
1297 : }
1298 : tree res_op1;
1299 : res_op1 = hi;
1300 : tree _r;
1301 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1302 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 282, __FILE__, __LINE__, true);
1303 : return _r;
1304 : }
1305 : next_after_fail368:;
1306 : }
1307 : else
1308 : {
1309 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail369;
1310 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail369;
1311 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail369;
1312 : {
1313 : tree res_op0;
1314 : {
1315 : tree _o1[2], _r1;
1316 : {
1317 : tree _o2[1], _r2;
1318 : _o2[0] = captures[1];
1319 : if (TREE_TYPE (_o2[0]) != etype)
1320 : {
1321 : _r2 = fold_build1_loc (loc, NOP_EXPR, etype, _o2[0]);
1322 : }
1323 : else
1324 : _r2 = _o2[0];
1325 : _o1[0] = _r2;
1326 : }
1327 : _o1[1] = lo;
1328 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1329 : res_op0 = _r1;
1330 : }
1331 : tree res_op1;
1332 : res_op1 = hi;
1333 : tree _r;
1334 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1335 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 283, __FILE__, __LINE__, true);
1336 : return _r;
1337 : }
1338 : next_after_fail369:;
1339 : }
1340 : }
1341 : }
1342 : }
1343 : }
1344 : }
1345 : }
1346 : }
1347 : }
1348 : }
1349 : }
1350 : }
1351 : }
1352 : return NULL_TREE;
1353 : }
1354 :
1355 : tree
1356 145162 : generic_simplify_270 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1357 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1358 : const enum tree_code ARG_UNUSED (cmp))
1359 : {
1360 145162 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1361 145162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail500;
1362 145162 : {
1363 145162 : tree res_op0;
1364 145162 : {
1365 145162 : tree _o1[2], _r1;
1366 145162 : _o1[0] = captures[0];
1367 145162 : {
1368 145162 : tree _o2[1], _r2;
1369 145162 : _o2[0] = captures[1];
1370 145162 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1371 145162 : if (EXPR_P (_r2))
1372 145133 : goto next_after_fail500;
1373 29 : _o1[1] = _r2;
1374 : }
1375 29 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1376 29 : res_op0 = _r1;
1377 : }
1378 29 : tree res_op1;
1379 29 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1380 29 : tree _r;
1381 29 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1382 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 404, __FILE__, __LINE__, true);
1383 : return _r;
1384 : }
1385 : next_after_fail500:;
1386 : return NULL_TREE;
1387 : }
1388 :
1389 : tree
1390 32532539 : generic_simplify_274 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1391 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1392 : const enum tree_code ARG_UNUSED (cmp))
1393 : {
1394 32532539 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1395 32532539 : if (tree_expr_nonzero_p (captures[0])
1396 : )
1397 : {
1398 1312914 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail504;
1399 1312914 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail504;
1400 1312914 : {
1401 1312914 : tree _r;
1402 1312914 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1403 1312914 : if (TREE_SIDE_EFFECTS (captures[0]))
1404 7785 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1405 1312914 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 408, __FILE__, __LINE__, true);
1406 1312914 : return _r;
1407 : }
1408 : next_after_fail504:;
1409 : }
1410 : return NULL_TREE;
1411 : }
1412 :
1413 : tree
1414 81 : generic_simplify_279 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1415 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1416 : const enum tree_code ARG_UNUSED (sgncmp),
1417 : const enum tree_code ARG_UNUSED (cmp),
1418 : const enum tree_code ARG_UNUSED (ncmp))
1419 : {
1420 81 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1421 162 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1422 81 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1423 162 : && types_match (captures[0], captures[2])
1424 : )
1425 : {
1426 81 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail509;
1427 81 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail509;
1428 81 : {
1429 81 : tree res_op0;
1430 81 : {
1431 81 : tree _o1[2], _r1;
1432 81 : _o1[0] = captures[0];
1433 81 : _o1[1] = captures[2];
1434 81 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1435 81 : res_op0 = _r1;
1436 : }
1437 81 : tree res_op1;
1438 81 : res_op1 = captures[1];
1439 81 : tree _r;
1440 81 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1441 81 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 412, __FILE__, __LINE__, true);
1442 81 : return _r;
1443 : }
1444 : next_after_fail509:;
1445 : }
1446 : return NULL_TREE;
1447 : }
1448 :
1449 : tree
1450 3049957 : generic_simplify_283 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1451 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1452 : const enum tree_code ARG_UNUSED (cmp))
1453 : {
1454 3049957 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1455 3049957 : {
1456 3049957 : poly_int64 off0, off1;
1457 3049957 : tree base0, base1;
1458 3049957 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1459 : off0, off1,
1460 : 1
1461 : );
1462 3049957 : if (equal == 1
1463 : )
1464 : {
1465 3015385 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1466 : )
1467 : {
1468 217981 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail513;
1469 217981 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail513;
1470 217981 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail513;
1471 217981 : {
1472 217981 : tree _r;
1473 217981 : _r = constant_boolean_node (known_eq (off0, off1), type);
1474 217981 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 415, __FILE__, __LINE__, true);
1475 3033190 : return _r;
1476 : }
1477 16767 : next_after_fail513:;
1478 : }
1479 : else
1480 : {
1481 2739495 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1482 : )
1483 : {
1484 2739495 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail514;
1485 2739495 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail514;
1486 2739495 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail514;
1487 2739495 : {
1488 2739495 : tree _r;
1489 2739495 : _r = constant_boolean_node (known_ne (off0, off1), type);
1490 2739495 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
1491 2739495 : return _r;
1492 : }
1493 16767 : next_after_fail514:;
1494 : }
1495 : else
1496 : {
1497 50826 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1498 : )
1499 : {
1500 50826 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail515;
1501 50826 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail515;
1502 50826 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail515;
1503 50826 : {
1504 50826 : tree _r;
1505 50826 : _r = constant_boolean_node (known_lt (off0, off1), type);
1506 50826 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
1507 50826 : return _r;
1508 : }
1509 16767 : next_after_fail515:;
1510 : }
1511 : else
1512 : {
1513 5390 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1514 : )
1515 : {
1516 5390 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail516;
1517 5390 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail516;
1518 5390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail516;
1519 5390 : {
1520 5390 : tree _r;
1521 5390 : _r = constant_boolean_node (known_le (off0, off1), type);
1522 5390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 418, __FILE__, __LINE__, true);
1523 5390 : return _r;
1524 : }
1525 16767 : next_after_fail516:;
1526 : }
1527 : else
1528 : {
1529 1200 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1530 : )
1531 : {
1532 1200 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail517;
1533 1200 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail517;
1534 1200 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail517;
1535 1200 : {
1536 1200 : tree _r;
1537 1200 : _r = constant_boolean_node (known_ge (off0, off1), type);
1538 1200 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 419, __FILE__, __LINE__, true);
1539 1200 : return _r;
1540 : }
1541 16767 : next_after_fail517:;
1542 : }
1543 : else
1544 : {
1545 493 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1546 : )
1547 : {
1548 493 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail518;
1549 493 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail518;
1550 493 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail518;
1551 493 : {
1552 493 : tree _r;
1553 493 : _r = constant_boolean_node (known_gt (off0, off1), type);
1554 493 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 420, __FILE__, __LINE__, true);
1555 493 : return _r;
1556 : }
1557 16767 : next_after_fail518:;
1558 : }
1559 : }
1560 : }
1561 : }
1562 : }
1563 : }
1564 : }
1565 : else
1566 : {
1567 34572 : if (equal == 0
1568 : )
1569 : {
1570 17805 : if (cmp == EQ_EXPR
1571 : )
1572 : {
1573 11772 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail519;
1574 11772 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail519;
1575 11772 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail519;
1576 11772 : {
1577 11772 : tree _r;
1578 11772 : _r = constant_boolean_node (false, type);
1579 11772 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
1580 11772 : return _r;
1581 : }
1582 16767 : next_after_fail519:;
1583 : }
1584 : else
1585 : {
1586 6033 : if (cmp == NE_EXPR
1587 : )
1588 : {
1589 6033 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail520;
1590 6033 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail520;
1591 6033 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail520;
1592 6033 : {
1593 6033 : tree _r;
1594 6033 : _r = constant_boolean_node (true, type);
1595 6033 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1596 6033 : return _r;
1597 : }
1598 16767 : next_after_fail520:;
1599 : }
1600 : }
1601 : }
1602 : }
1603 : }
1604 16767 : return NULL_TREE;
1605 : }
1606 :
1607 : tree
1608 282544 : generic_simplify_298 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1609 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1610 : const enum tree_code ARG_UNUSED (cmp),
1611 : const enum tree_code ARG_UNUSED (icmp),
1612 : const enum tree_code ARG_UNUSED (ncmp))
1613 : {
1614 282544 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1615 282544 : if (types_match (type, TREE_TYPE (captures[0]))
1616 : )
1617 : {
1618 46025 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail561;
1619 46025 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail561;
1620 46025 : {
1621 46025 : tree res_op0;
1622 46025 : res_op0 = captures[1];
1623 46025 : tree res_op1;
1624 46025 : res_op1 = captures[2];
1625 46025 : tree _r;
1626 46025 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1627 46025 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
1628 46025 : return _r;
1629 : }
1630 : next_after_fail561:;
1631 : }
1632 : return NULL_TREE;
1633 : }
1634 :
1635 : tree
1636 0 : generic_simplify_304 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1637 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1638 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1639 : {
1640 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1641 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail568;
1642 0 : {
1643 0 : tree _r;
1644 0 : _r = captures[0];
1645 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
1646 : return _r;
1647 : }
1648 0 : next_after_fail568:;
1649 0 : return NULL_TREE;
1650 : }
1651 :
1652 : tree
1653 2366 : generic_simplify_309 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1654 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1655 : const enum tree_code ARG_UNUSED (div))
1656 : {
1657 2366 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1658 2366 : if (!integer_zerop (captures[1])
1659 : )
1660 : {
1661 1737 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail575;
1662 1737 : {
1663 1737 : tree _r;
1664 1737 : _r = captures[0];
1665 1737 : if (TREE_SIDE_EFFECTS (captures[1]))
1666 59 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1667 1737 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 467, __FILE__, __LINE__, true);
1668 1737 : return _r;
1669 : }
1670 0 : next_after_fail575:;
1671 : }
1672 : return NULL_TREE;
1673 : }
1674 :
1675 : tree
1676 9021 : generic_simplify_315 (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 enum tree_code ARG_UNUSED (div))
1679 : {
1680 9021 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1681 9021 : {
1682 9021 : wi::overflow_type overflow;
1683 9021 : wide_int mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1684 18042 : TYPE_SIGN (type), &overflow);
1685 9021 : if (div == EXACT_DIV_EXPR
1686 9021 : || optimize_successive_divisions_p (captures[3], captures[0])
1687 : )
1688 : {
1689 0 : if (!overflow
1690 : )
1691 : {
1692 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail581;
1693 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail581;
1694 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail581;
1695 0 : {
1696 0 : tree res_op0;
1697 0 : res_op0 = captures[1];
1698 0 : tree res_op1;
1699 0 : res_op1 = wide_int_to_tree (type, mul);
1700 0 : tree _r;
1701 0 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1702 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 473, __FILE__, __LINE__, true);
1703 0 : return _r;
1704 : }
1705 9021 : next_after_fail581:;
1706 : }
1707 : else
1708 : {
1709 0 : if (TYPE_UNSIGNED (type)
1710 0 : || mul != wi::min_value (TYPE_PRECISION (type), SIGNED)
1711 : )
1712 : {
1713 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail582;
1714 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail582;
1715 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail582;
1716 0 : {
1717 0 : tree _r;
1718 0 : _r = build_zero_cst (type);
1719 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1720 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 474, __FILE__, __LINE__, true);
1722 0 : return _r;
1723 : }
1724 9021 : next_after_fail582:;
1725 : }
1726 : }
1727 : }
1728 0 : }
1729 9021 : return NULL_TREE;
1730 : }
1731 :
1732 : tree
1733 2 : generic_simplify_328 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1734 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1735 : {
1736 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1737 0 : if (FLOAT_TYPE_P (type)
1738 2 : && ! HONOR_NANS (type)
1739 2 : && ! HONOR_INFINITIES (type)
1740 : )
1741 : {
1742 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail595;
1743 0 : {
1744 0 : tree _r;
1745 0 : _r = build_minus_one_cst (type);
1746 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1747 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1748 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 487, __FILE__, __LINE__, true);
1749 0 : return _r;
1750 : }
1751 0 : next_after_fail595:;
1752 : }
1753 : return NULL_TREE;
1754 : }
1755 :
1756 : tree
1757 6 : generic_simplify_336 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1758 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1759 : const combined_fn ARG_UNUSED (TAN),
1760 : const combined_fn ARG_UNUSED (SIN),
1761 : const combined_fn ARG_UNUSED (COS))
1762 : {
1763 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1764 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1765 : )
1766 : {
1767 6 : if (! HONOR_NANS (captures[1])
1768 6 : && ! HONOR_INFINITIES (captures[1])
1769 : )
1770 : {
1771 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail605;
1772 6 : {
1773 6 : tree res_op0;
1774 6 : res_op0 = build_one_cst (type);
1775 6 : tree res_op1;
1776 6 : {
1777 6 : tree _o1[1], _r1;
1778 6 : _o1[0] = captures[1];
1779 6 : _r1 = maybe_build_call_expr_loc (loc, COS, TREE_TYPE (_o1[0]), 1, _o1[0]);
1780 6 : if (!_r1)
1781 0 : goto next_after_fail605;
1782 6 : res_op1 = _r1;
1783 : }
1784 6 : tree _r;
1785 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1786 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 497, __FILE__, __LINE__, true);
1787 6 : return _r;
1788 : }
1789 : next_after_fail605:;
1790 : }
1791 : }
1792 : return NULL_TREE;
1793 : }
1794 :
1795 : tree
1796 0 : generic_simplify_345 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1797 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1798 : const enum tree_code ARG_UNUSED (cmp))
1799 : {
1800 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1801 0 : if (INTEGRAL_TYPE_P (type)
1802 : )
1803 : {
1804 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail620;
1805 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail620;
1806 0 : {
1807 0 : tree _r;
1808 0 : _r = captures[2];
1809 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1810 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 512, __FILE__, __LINE__, true);
1812 0 : return _r;
1813 : }
1814 : next_after_fail620:;
1815 : }
1816 : return NULL_TREE;
1817 : }
1818 :
1819 : tree
1820 51 : generic_simplify_349 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1821 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1822 : const enum tree_code ARG_UNUSED (op))
1823 : {
1824 51 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1825 51 : if (bitwise_equal_p (captures[0], captures[2])
1826 1 : && tree_expr_nonzero_p (captures[3])
1827 52 : && expr_no_side_effects_p (captures[2])
1828 : )
1829 : {
1830 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail624;
1831 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail624;
1832 1 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail624;
1833 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail624;
1834 1 : {
1835 1 : tree _r;
1836 1 : _r = captures[1];
1837 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 515, __FILE__, __LINE__, true);
1838 1 : return _r;
1839 : }
1840 : next_after_fail624:;
1841 : }
1842 : return NULL_TREE;
1843 : }
1844 :
1845 : tree
1846 0 : generic_simplify_354 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1847 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1848 : const enum tree_code ARG_UNUSED (op))
1849 : {
1850 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1851 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail629;
1852 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail629;
1853 0 : {
1854 0 : tree _r;
1855 0 : _r = captures[2];
1856 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 520, __FILE__, __LINE__, true);
1857 : return _r;
1858 : }
1859 : next_after_fail629:;
1860 : return NULL_TREE;
1861 : }
1862 :
1863 : tree
1864 0 : generic_simplify_360 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1865 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1866 : const enum tree_code ARG_UNUSED (op))
1867 : {
1868 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1869 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail635;
1870 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail635;
1871 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail635;
1872 0 : {
1873 0 : tree _r;
1874 0 : _r = captures[2];
1875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 526, __FILE__, __LINE__, true);
1876 : return _r;
1877 : }
1878 : next_after_fail635:;
1879 : return NULL_TREE;
1880 : }
1881 :
1882 : tree
1883 3 : generic_simplify_367 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1884 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1885 : const combined_fn ARG_UNUSED (func))
1886 : {
1887 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1888 3 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
1889 : )
1890 : {
1891 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail643;
1892 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail643;
1893 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail643;
1894 3 : {
1895 3 : tree _r;
1896 3 : _r = captures[2];
1897 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1898 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1899 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 533, __FILE__, __LINE__, true);
1900 3 : return _r;
1901 : }
1902 : next_after_fail643:;
1903 : }
1904 : return NULL_TREE;
1905 : }
1906 :
1907 : tree
1908 1018 : generic_simplify_376 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1910 : const enum tree_code ARG_UNUSED (op))
1911 : {
1912 1018 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1913 2036 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1914 2036 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1915 : )
1916 : {
1917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail656;
1918 0 : {
1919 0 : tree res_op0;
1920 0 : res_op0 = captures[0];
1921 0 : tree res_op1;
1922 0 : res_op1 = captures[2];
1923 0 : tree _r;
1924 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1925 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1926 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1927 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 546, __FILE__, __LINE__, true);
1928 0 : return _r;
1929 : }
1930 0 : next_after_fail656:;
1931 : }
1932 : return NULL_TREE;
1933 : }
1934 :
1935 : tree
1936 64 : generic_simplify_379 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1937 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1938 : const enum tree_code ARG_UNUSED (minmax),
1939 : const enum tree_code ARG_UNUSED (cmp),
1940 : const enum tree_code ARG_UNUSED (comb))
1941 : {
1942 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1943 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail660;
1944 64 : {
1945 64 : if (! tree_invariant_p (captures[2])) goto next_after_fail660;
1946 64 : tree res_op0;
1947 64 : {
1948 64 : tree _o1[2], _r1;
1949 64 : _o1[0] = captures[0];
1950 64 : _o1[1] = unshare_expr (captures[2]);
1951 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
1952 64 : res_op0 = _r1;
1953 : }
1954 64 : tree res_op1;
1955 64 : {
1956 64 : tree _o1[2], _r1;
1957 64 : _o1[0] = captures[1];
1958 64 : _o1[1] = captures[2];
1959 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
1960 64 : res_op1 = _r1;
1961 : }
1962 64 : tree _r;
1963 64 : _r = fold_build2_loc (loc, comb, type, res_op0, res_op1);
1964 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 550, __FILE__, __LINE__, true);
1965 : return _r;
1966 : }
1967 : next_after_fail660:;
1968 : return NULL_TREE;
1969 : }
1970 :
1971 : tree
1972 0 : generic_simplify_390 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1973 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1974 : const enum tree_code ARG_UNUSED (cmp),
1975 : const enum tree_code ARG_UNUSED (out))
1976 : {
1977 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1978 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1979 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1980 : )
1981 : {
1982 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail703;
1983 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail703;
1984 0 : {
1985 0 : tree res_op0;
1986 0 : {
1987 0 : tree _o1[1], _r1;
1988 0 : _o1[0] = captures[0];
1989 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
1990 0 : res_op0 = _r1;
1991 : }
1992 0 : tree res_op1;
1993 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1994 0 : tree _r;
1995 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
1996 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
1997 0 : return _r;
1998 : }
1999 : next_after_fail703:;
2000 : }
2001 : return NULL_TREE;
2002 : }
2003 :
2004 : tree
2005 771753 : generic_simplify_397 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2006 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2007 : const enum tree_code ARG_UNUSED (cmp),
2008 : const enum tree_code ARG_UNUSED (icmp))
2009 : {
2010 771753 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2011 1540688 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2012 771753 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2013 358159 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
2014 1901665 : && (wi::to_wide (captures[2])
2015 1846230 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
2016 : )
2017 : {
2018 5081 : {
2019 5081 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
2020 5081 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail717;
2021 5081 : {
2022 5081 : tree res_op0;
2023 5081 : {
2024 5081 : tree _o1[1], _r1;
2025 5081 : _o1[0] = captures[0];
2026 5081 : if (TREE_TYPE (_o1[0]) != stype)
2027 : {
2028 5081 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2029 : }
2030 : else
2031 : _r1 = _o1[0];
2032 5081 : res_op0 = _r1;
2033 : }
2034 5081 : tree res_op1;
2035 5081 : res_op1 = build_int_cst (stype, 0);
2036 5081 : tree _r;
2037 5081 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2038 5081 : if (TREE_SIDE_EFFECTS (captures[1]))
2039 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2040 5081 : if (TREE_SIDE_EFFECTS (captures[2]))
2041 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2042 5081 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
2043 5081 : return _r;
2044 : }
2045 0 : next_after_fail717:;
2046 : }
2047 : }
2048 : return NULL_TREE;
2049 : }
2050 :
2051 : tree
2052 0 : generic_simplify_403 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2053 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2054 : const enum tree_code ARG_UNUSED (cmp),
2055 : const enum tree_code ARG_UNUSED (out))
2056 : {
2057 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2058 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2059 : )
2060 : {
2061 0 : {
2062 0 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2063 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail723;
2064 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail723;
2065 0 : {
2066 0 : tree res_op0;
2067 0 : {
2068 0 : tree _o1[1], _r1;
2069 0 : {
2070 0 : tree _o2[2], _r2;
2071 0 : _o2[0] = captures[2];
2072 0 : _o2[1] = captures[1];
2073 0 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2074 0 : if (!_r2)
2075 0 : goto next_after_fail723;
2076 0 : _o1[0] = _r2;
2077 : }
2078 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2079 0 : res_op0 = _r1;
2080 : }
2081 0 : tree res_op1;
2082 0 : res_op1 = build_zero_cst (t);
2083 0 : tree _r;
2084 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2085 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 578, __FILE__, __LINE__, true);
2086 0 : return _r;
2087 : }
2088 : next_after_fail723:;
2089 : }
2090 : }
2091 : return NULL_TREE;
2092 : }
2093 :
2094 : tree
2095 11 : generic_simplify_410 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2096 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2097 : {
2098 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2099 11 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2100 : )
2101 : {
2102 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail734;
2103 11 : {
2104 11 : tree res_op0;
2105 11 : {
2106 11 : tree _o1[1], _r1;
2107 11 : _o1[0] = captures[0];
2108 11 : if (TREE_TYPE (_o1[0]) != type)
2109 : {
2110 8 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2111 : }
2112 : else
2113 : _r1 = _o1[0];
2114 11 : res_op0 = _r1;
2115 : }
2116 11 : tree res_op1;
2117 11 : {
2118 11 : tree _o1[2], _r1;
2119 11 : _o1[0] = build_minus_one_cst (type);
2120 11 : _o1[1] = captures[1];
2121 11 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2122 11 : res_op1 = _r1;
2123 : }
2124 11 : tree _r;
2125 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2126 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 603, __FILE__, __LINE__, true);
2127 11 : return _r;
2128 : }
2129 0 : next_after_fail734:;
2130 : }
2131 : return NULL_TREE;
2132 : }
2133 :
2134 : tree
2135 267 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2136 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2137 : const combined_fn ARG_UNUSED (bswap))
2138 : {
2139 267 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2140 267 : if (BITS_PER_UNIT == 8
2141 : && CHAR_TYPE_SIZE == 8
2142 267 : && tree_fits_uhwi_p (captures[2])
2143 : )
2144 : {
2145 267 : {
2146 267 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[0]));
2147 267 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[2]);
2148 267 : tree st = TYPE_PRECISION (type) > prec ? TREE_TYPE (captures[0]) : type;
2149 267 : if (TYPE_PRECISION (type) > prec
2150 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2151 0 : && TYPE_UNSIGNED (type)
2152 267 : && bits < prec && bits + 8 >= prec
2153 : )
2154 : {
2155 0 : {
2156 0 : tree nst = build_int_cst (integer_type_node, prec - 8);
2157 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail747;
2158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail747;
2159 0 : {
2160 0 : tree res_op0;
2161 0 : {
2162 0 : tree _o1[1], _r1;
2163 0 : {
2164 0 : tree _o2[2], _r2;
2165 0 : {
2166 0 : tree _o3[1], _r3;
2167 0 : _o3[0] = captures[1];
2168 0 : if (TREE_TYPE (_o3[0]) != st)
2169 : {
2170 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, st, _o3[0]);
2171 : }
2172 : else
2173 : _r3 = _o3[0];
2174 0 : _o2[0] = _r3;
2175 : }
2176 0 : _o2[1] = nst;
2177 0 : _r2 = fold_build2_loc (loc, LSHIFT_EXPR, st, _o2[0], _o2[1]);
2178 0 : _o1[0] = _r2;
2179 : }
2180 0 : if (TREE_TYPE (_o1[0]) != type)
2181 : {
2182 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2183 : }
2184 : else
2185 : _r1 = _o1[0];
2186 0 : res_op0 = _r1;
2187 : }
2188 0 : tree res_op1;
2189 0 : res_op1 = captures[2];
2190 0 : tree _r;
2191 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
2192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 614, __FILE__, __LINE__, true);
2193 0 : return _r;
2194 : }
2195 : next_after_fail747:;
2196 : }
2197 : }
2198 : else
2199 : {
2200 267 : if (bits + 8 == prec
2201 : )
2202 : {
2203 46 : if (TYPE_UNSIGNED (st)
2204 : )
2205 : {
2206 36 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail748;
2207 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail748;
2208 36 : {
2209 36 : tree res_op0;
2210 36 : {
2211 36 : tree _o1[1], _r1;
2212 36 : _o1[0] = captures[1];
2213 36 : if (TREE_TYPE (_o1[0]) != unsigned_char_type_node)
2214 : {
2215 36 : _r1 = fold_build1_loc (loc, NOP_EXPR, unsigned_char_type_node, _o1[0]);
2216 : }
2217 : else
2218 : _r1 = _o1[0];
2219 36 : res_op0 = _r1;
2220 : }
2221 36 : tree _r;
2222 36 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2223 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 615, __FILE__, __LINE__, true);
2224 36 : return _r;
2225 : }
2226 : next_after_fail748:;
2227 : }
2228 : else
2229 : {
2230 10 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail749;
2231 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail749;
2232 10 : {
2233 10 : tree res_op0;
2234 10 : {
2235 10 : tree _o1[1], _r1;
2236 10 : _o1[0] = captures[1];
2237 10 : if (TREE_TYPE (_o1[0]) != signed_char_type_node)
2238 : {
2239 10 : _r1 = fold_build1_loc (loc, NOP_EXPR, signed_char_type_node, _o1[0]);
2240 : }
2241 : else
2242 : _r1 = _o1[0];
2243 10 : res_op0 = _r1;
2244 : }
2245 10 : tree _r;
2246 10 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2247 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 616, __FILE__, __LINE__, true);
2248 10 : return _r;
2249 : }
2250 : next_after_fail749:;
2251 : }
2252 : }
2253 : else
2254 : {
2255 221 : if (bits < prec && bits + 8 > prec
2256 : )
2257 : {
2258 57 : {
2259 57 : tree nst = build_int_cst (integer_type_node, bits & 7);
2260 57 : tree bt = TYPE_UNSIGNED (st) ? unsigned_char_type_node
2261 57 : : signed_char_type_node;
2262 57 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail750;
2263 57 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail750;
2264 57 : {
2265 57 : tree res_op0;
2266 57 : {
2267 57 : tree _o1[2], _r1;
2268 57 : {
2269 57 : tree _o2[1], _r2;
2270 57 : _o2[0] = captures[1];
2271 57 : if (TREE_TYPE (_o2[0]) != bt)
2272 : {
2273 57 : _r2 = fold_build1_loc (loc, NOP_EXPR, bt, _o2[0]);
2274 : }
2275 : else
2276 : _r2 = _o2[0];
2277 57 : _o1[0] = _r2;
2278 : }
2279 57 : _o1[1] = nst;
2280 57 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, bt, _o1[0], _o1[1]);
2281 57 : res_op0 = _r1;
2282 : }
2283 57 : tree _r;
2284 57 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2285 57 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2286 57 : return _r;
2287 : }
2288 : next_after_fail750:;
2289 : }
2290 : }
2291 : }
2292 : }
2293 : }
2294 : }
2295 : return NULL_TREE;
2296 : }
2297 :
2298 : tree
2299 0 : generic_simplify_433 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2300 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2301 : const combined_fn ARG_UNUSED (pow))
2302 : {
2303 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2304 0 : if (flag_unsafe_math_optimizations
2305 : )
2306 : {
2307 0 : if (! HONOR_INFINITIES (type)
2308 0 : && ! flag_trapping_math
2309 0 : && ! flag_errno_math
2310 : )
2311 : {
2312 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail778;
2313 0 : {
2314 0 : tree res_op0;
2315 0 : res_op0 = captures[2];
2316 0 : tree res_op1;
2317 0 : {
2318 0 : tree _o1[1], _r1;
2319 0 : _o1[0] = captures[3];
2320 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2321 0 : res_op1 = _r1;
2322 : }
2323 0 : tree _r;
2324 0 : _r = maybe_build_call_expr_loc (loc, pow, type, 2, res_op0, res_op1);
2325 0 : if (!_r)
2326 0 : goto next_after_fail778;
2327 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2328 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2329 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 633, __FILE__, __LINE__, true);
2330 0 : return _r;
2331 : }
2332 : next_after_fail778:;
2333 : }
2334 : }
2335 : return NULL_TREE;
2336 : }
2337 :
2338 : tree
2339 0 : generic_simplify_437 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2340 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2341 : const combined_fn ARG_UNUSED (copysigns),
2342 : const combined_fn ARG_UNUSED (hypots))
2343 : {
2344 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2345 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2346 0 : {
2347 0 : tree res_op0;
2348 0 : res_op0 = captures[0];
2349 0 : tree res_op1;
2350 0 : res_op1 = captures[2];
2351 0 : tree _r;
2352 0 : _r = maybe_build_call_expr_loc (loc, hypots, type, 2, res_op0, res_op1);
2353 0 : if (!_r)
2354 0 : goto next_after_fail782;
2355 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2356 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2357 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2358 : return _r;
2359 : }
2360 : next_after_fail782:;
2361 : return NULL_TREE;
2362 : }
2363 :
2364 : tree
2365 8 : generic_simplify_442 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2366 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2367 : {
2368 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2369 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2370 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
2371 : )
2372 : {
2373 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail787;
2374 0 : {
2375 0 : tree res_op0;
2376 0 : res_op0 = captures[0];
2377 0 : tree res_op1;
2378 0 : res_op1 = captures[1];
2379 0 : tree _r;
2380 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2381 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 642, __FILE__, __LINE__, true);
2382 0 : return _r;
2383 : }
2384 0 : next_after_fail787:;
2385 : }
2386 : return NULL_TREE;
2387 : }
2388 :
2389 : tree
2390 2 : generic_simplify_447 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2391 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2392 : {
2393 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2394 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail792;
2395 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2396 2 : {
2397 2 : tree res_op0;
2398 2 : res_op0 = captures[0];
2399 2 : tree res_op1;
2400 2 : {
2401 2 : tree _o1[1], _r1;
2402 2 : _o1[0] = captures[5];
2403 2 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2404 2 : res_op1 = _r1;
2405 : }
2406 2 : tree _r;
2407 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2408 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 647, __FILE__, __LINE__, true);
2409 : return _r;
2410 : }
2411 : next_after_fail792:;
2412 : return NULL_TREE;
2413 : }
2414 :
2415 : tree
2416 0 : generic_simplify_454 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2417 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2418 : {
2419 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2420 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail799;
2421 0 : {
2422 0 : tree res_op0;
2423 0 : res_op0 = captures[0];
2424 0 : tree res_op1;
2425 0 : res_op1 = captures[1];
2426 0 : tree _r;
2427 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2428 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 653, __FILE__, __LINE__, true);
2429 : return _r;
2430 : }
2431 0 : next_after_fail799:;
2432 0 : return NULL_TREE;
2433 : }
2434 :
2435 : tree
2436 13 : generic_simplify_458 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2437 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2438 : {
2439 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2440 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail803;
2441 13 : {
2442 13 : tree _r;
2443 13 : _r = build_zero_cst (type);
2444 13 : if (TREE_SIDE_EFFECTS (captures[0]))
2445 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2446 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 657, __FILE__, __LINE__, true);
2447 : return _r;
2448 : }
2449 0 : next_after_fail803:;
2450 0 : return NULL_TREE;
2451 : }
2452 :
2453 : tree
2454 8 : generic_simplify_463 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2455 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2456 : const enum tree_code ARG_UNUSED (eqne))
2457 : {
2458 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2459 8 : if (eqne == EQ_EXPR
2460 : )
2461 : {
2462 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail809;
2463 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail809;
2464 4 : {
2465 4 : tree _r;
2466 4 : _r = constant_boolean_node (false, type);
2467 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2468 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2469 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 662, __FILE__, __LINE__, true);
2470 4 : return _r;
2471 : }
2472 : next_after_fail809:;
2473 : }
2474 : else
2475 : {
2476 4 : if (eqne == NE_EXPR
2477 : )
2478 : {
2479 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail810;
2480 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail810;
2481 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail810;
2482 4 : {
2483 4 : tree _r;
2484 4 : _r = captures[0];
2485 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 663, __FILE__, __LINE__, true);
2486 4 : return _r;
2487 : }
2488 : next_after_fail810:;
2489 : }
2490 : }
2491 : return NULL_TREE;
2492 : }
2493 :
2494 : tree
2495 4 : generic_simplify_474 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2496 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2497 : {
2498 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2499 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail853;
2500 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2501 4 : {
2502 4 : tree _r;
2503 4 : _r = captures[2];
2504 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2505 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2506 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2507 : return _r;
2508 : }
2509 : next_after_fail853:;
2510 : return NULL_TREE;
2511 : }
2512 :
2513 : tree
2514 129295 : generic_simplify_478 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2515 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2516 : const enum tree_code ARG_UNUSED (shift))
2517 : {
2518 129295 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2519 129295 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2520 129295 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2521 129295 : && tree_fits_uhwi_p (captures[4])
2522 129295 : && tree_to_uhwi (captures[4]) > 0
2523 258589 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2524 : )
2525 : {
2526 129294 : {
2527 129294 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2528 129294 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2529 129294 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2530 129294 : tree shift_type = TREE_TYPE (captures[2]);
2531 129294 : unsigned int prec;
2532 129294 : if (shift == LSHIFT_EXPR)
2533 5222 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2534 124072 : else if (shift == RSHIFT_EXPR
2535 124072 : && type_has_mode_precision_p (shift_type))
2536 : {
2537 124072 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2538 124072 : tree arg00 = captures[3];
2539 124072 : if (captures[2] != captures[3]
2540 124072 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2541 : {
2542 123814 : tree inner_type = TREE_TYPE (captures[3]);
2543 123814 : if (type_has_mode_precision_p (inner_type)
2544 123814 : && TYPE_PRECISION (inner_type) < prec)
2545 : {
2546 270 : prec = TYPE_PRECISION (inner_type);
2547 270 : if (shiftc < prec)
2548 269 : shift_type = inner_type;
2549 : }
2550 : }
2551 124072 : zerobits = HOST_WIDE_INT_M1U;
2552 124072 : if (shiftc < prec)
2553 : {
2554 124071 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2555 124071 : zerobits <<= prec - shiftc;
2556 : }
2557 124072 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2558 124072 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2559 : {
2560 822 : if ((mask & zerobits) == 0)
2561 815 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2562 : else
2563 : zerobits = 0;
2564 : }
2565 : }
2566 129287 : if ((mask & zerobits) == mask
2567 : )
2568 : {
2569 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail857;
2570 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail857;
2571 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail857;
2572 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail857;
2573 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail857;
2574 1 : {
2575 1 : tree _r;
2576 1 : _r = build_int_cst (type, 0);
2577 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2578 1 : return _r;
2579 : }
2580 : next_after_fail857:;
2581 : }
2582 : else
2583 : {
2584 129293 : {
2585 129293 : newmask = mask | zerobits;
2586 129293 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2587 : )
2588 : {
2589 : {
2590 7054 : for (prec = BITS_PER_UNIT;
2591 10764 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2592 8674 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2593 : break;
2594 3710 : if (prec < HOST_BITS_PER_WIDE_INT
2595 2090 : || newmask == HOST_WIDE_INT_M1U
2596 : )
2597 : {
2598 2022 : {
2599 2022 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2600 2022 : if (!tree_int_cst_equal (newmaskt, captures[5])
2601 : )
2602 : {
2603 2022 : if (shift_type != TREE_TYPE (captures[2])
2604 : )
2605 : {
2606 96 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail858;
2607 96 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail858;
2608 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail858;
2609 96 : {
2610 96 : tree res_op0;
2611 96 : {
2612 96 : tree _o1[1], _r1;
2613 96 : {
2614 96 : tree _o2[2], _r2;
2615 96 : {
2616 96 : tree _o3[1], _r3;
2617 96 : _o3[0] = captures[2];
2618 96 : if (TREE_TYPE (_o3[0]) != shift_type)
2619 : {
2620 96 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2621 : }
2622 : else
2623 : _r3 = _o3[0];
2624 96 : _o2[0] = _r3;
2625 : }
2626 96 : _o2[1] = captures[4];
2627 96 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2628 96 : _o1[0] = _r2;
2629 : }
2630 96 : if (TREE_TYPE (_o1[0]) != type)
2631 : {
2632 96 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2633 : }
2634 : else
2635 : _r1 = _o1[0];
2636 96 : res_op0 = _r1;
2637 : }
2638 96 : tree res_op1;
2639 96 : res_op1 = newmaskt;
2640 96 : tree _r;
2641 96 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2642 96 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2643 96 : return _r;
2644 : }
2645 : next_after_fail858:;
2646 : }
2647 : else
2648 : {
2649 1926 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail859;
2650 879 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail859;
2651 879 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail859;
2652 879 : {
2653 879 : tree res_op0;
2654 879 : res_op0 = captures[0];
2655 879 : tree res_op1;
2656 879 : res_op1 = newmaskt;
2657 879 : tree _r;
2658 879 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2659 879 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 684, __FILE__, __LINE__, true);
2660 879 : return _r;
2661 : }
2662 : next_after_fail859:;
2663 : }
2664 : }
2665 : }
2666 : }
2667 : }
2668 : }
2669 : }
2670 : }
2671 : }
2672 : }
2673 : return NULL_TREE;
2674 : }
2675 :
2676 : tree
2677 429896 : generic_simplify_487 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2678 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2679 : const enum tree_code ARG_UNUSED (op))
2680 : {
2681 429896 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2682 859792 : if (INTEGRAL_TYPE_P (type)
2683 429896 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2684 67575 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2685 67575 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2686 67575 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2687 67575 : && type_has_mode_precision_p (type)
2688 67575 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2689 52 : && types_match (captures[2], captures[4])
2690 33 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
2691 33 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
2692 429923 : && (wi::to_wide (captures[5])
2693 429950 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
2694 429950 : true, TYPE_PRECISION (type))) == 0
2695 : )
2696 : {
2697 25 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2698 : )
2699 : {
2700 12 : {
2701 12 : tree ntype = TREE_TYPE (captures[2]);
2702 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail875;
2703 12 : {
2704 12 : tree res_op0;
2705 12 : {
2706 12 : tree _o1[2], _r1;
2707 12 : {
2708 12 : tree _o2[2], _r2;
2709 12 : _o2[0] = captures[2];
2710 12 : _o2[1] = captures[4];
2711 12 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2712 12 : _o1[0] = _r2;
2713 : }
2714 12 : {
2715 12 : tree _o2[1], _r2;
2716 12 : _o2[0] = captures[5];
2717 12 : if (TREE_TYPE (_o2[0]) != ntype)
2718 : {
2719 12 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2720 : }
2721 : else
2722 : _r2 = _o2[0];
2723 12 : _o1[1] = _r2;
2724 : }
2725 12 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2726 12 : res_op0 = _r1;
2727 : }
2728 12 : tree _r;
2729 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2730 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2731 12 : return _r;
2732 : }
2733 0 : next_after_fail875:;
2734 : }
2735 : }
2736 : else
2737 : {
2738 13 : {
2739 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2740 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail876;
2741 13 : {
2742 13 : tree res_op0;
2743 13 : {
2744 13 : tree _o1[2], _r1;
2745 13 : {
2746 13 : tree _o2[2], _r2;
2747 13 : {
2748 13 : tree _o3[1], _r3;
2749 13 : _o3[0] = captures[2];
2750 13 : if (TREE_TYPE (_o3[0]) != utype)
2751 : {
2752 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2753 : }
2754 : else
2755 : _r3 = _o3[0];
2756 13 : _o2[0] = _r3;
2757 : }
2758 13 : {
2759 13 : tree _o3[1], _r3;
2760 13 : _o3[0] = captures[4];
2761 13 : if (TREE_TYPE (_o3[0]) != utype)
2762 : {
2763 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2764 : }
2765 : else
2766 : _r3 = _o3[0];
2767 13 : _o2[1] = _r3;
2768 : }
2769 13 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2770 13 : _o1[0] = _r2;
2771 : }
2772 13 : {
2773 13 : tree _o2[1], _r2;
2774 13 : _o2[0] = captures[5];
2775 13 : if (TREE_TYPE (_o2[0]) != utype)
2776 : {
2777 13 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2778 : }
2779 : else
2780 : _r2 = _o2[0];
2781 13 : _o1[1] = _r2;
2782 : }
2783 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2784 13 : res_op0 = _r1;
2785 : }
2786 13 : tree _r;
2787 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2788 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2789 13 : return _r;
2790 : }
2791 0 : next_after_fail876:;
2792 : }
2793 : }
2794 : }
2795 : return NULL_TREE;
2796 : }
2797 :
2798 : tree
2799 20 : generic_simplify_518 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2800 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2801 : const enum tree_code ARG_UNUSED (minmax),
2802 : const enum tree_code ARG_UNUSED (cmp))
2803 : {
2804 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2805 20 : {
2806 20 : poly_int64 off0, off1;
2807 20 : tree base0, base1;
2808 20 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2809 : off0, off1,
2810 : 1
2811 : );
2812 20 : if (equal == 1
2813 : )
2814 : {
2815 0 : if (minmax == MIN_EXPR
2816 : )
2817 : {
2818 0 : if (known_le (off0, off1)
2819 : )
2820 : {
2821 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail918;
2822 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail918;
2823 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail918;
2824 0 : {
2825 0 : tree _r;
2826 0 : _r = captures[0];
2827 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 718, __FILE__, __LINE__, true);
2828 0 : return _r;
2829 : }
2830 20 : next_after_fail918:;
2831 : }
2832 : else
2833 : {
2834 0 : if (known_gt (off0, off1)
2835 : )
2836 : {
2837 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail919;
2838 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail919;
2839 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail919;
2840 0 : {
2841 0 : tree _r;
2842 0 : _r = captures[2];
2843 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 719, __FILE__, __LINE__, true);
2844 0 : return _r;
2845 : }
2846 20 : next_after_fail919:;
2847 : }
2848 : }
2849 : }
2850 : else
2851 : {
2852 0 : if (known_ge (off0, off1)
2853 : )
2854 : {
2855 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail920;
2856 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail920;
2857 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail920;
2858 0 : {
2859 0 : tree _r;
2860 0 : _r = captures[0];
2861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 720, __FILE__, __LINE__, true);
2862 0 : return _r;
2863 : }
2864 20 : next_after_fail920:;
2865 : }
2866 : else
2867 : {
2868 0 : if (known_lt (off0, off1)
2869 : )
2870 : {
2871 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail921;
2872 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail921;
2873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail921;
2874 0 : {
2875 0 : tree _r;
2876 0 : _r = captures[2];
2877 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 721, __FILE__, __LINE__, true);
2878 0 : return _r;
2879 : }
2880 20 : next_after_fail921:;
2881 : }
2882 : }
2883 : }
2884 : }
2885 : }
2886 20 : return NULL_TREE;
2887 : }
2888 :
2889 : tree
2890 0 : generic_simplify_540 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2891 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2892 : const combined_fn ARG_UNUSED (cond_op))
2893 : {
2894 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2895 0 : {
2896 0 : tree op_type = TREE_TYPE (captures[5]);
2897 0 : if (inverse_conditions_p (captures[0], captures[2])
2898 0 : && element_precision (type) == element_precision (op_type)
2899 : )
2900 : {
2901 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail946;
2902 0 : {
2903 0 : tree res_op0;
2904 0 : {
2905 0 : tree _o1[4], _r1;
2906 0 : _o1[0] = captures[2];
2907 0 : _o1[1] = captures[3];
2908 0 : _o1[2] = captures[4];
2909 0 : {
2910 0 : tree _o2[1], _r2;
2911 0 : _o2[0] = captures[1];
2912 0 : if (TREE_TYPE (_o2[0]) != op_type)
2913 : {
2914 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2915 : }
2916 : else
2917 : _r2 = _o2[0];
2918 0 : _o1[3] = _r2;
2919 : }
2920 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
2921 0 : if (!_r1)
2922 0 : goto next_after_fail946;
2923 0 : res_op0 = _r1;
2924 : }
2925 0 : tree _r;
2926 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2927 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2928 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2929 0 : if (TREE_SIDE_EFFECTS (captures[5]))
2930 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
2931 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
2932 0 : return _r;
2933 : }
2934 : next_after_fail946:;
2935 : }
2936 : }
2937 : return NULL_TREE;
2938 : }
2939 :
2940 : tree
2941 0 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2942 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2943 : const enum tree_code ARG_UNUSED (cmp))
2944 : {
2945 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2946 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail956;
2947 0 : {
2948 0 : tree res_op0;
2949 0 : res_op0 = unshare_expr (captures[0]);
2950 0 : tree res_op1;
2951 0 : res_op1 = captures[0];
2952 0 : tree _r;
2953 0 : _r = fold_build2_loc (loc, UNORDERED_EXPR, type, res_op0, res_op1);
2954 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 751, __FILE__, __LINE__, true);
2955 : return _r;
2956 : }
2957 0 : next_after_fail956:;
2958 0 : return NULL_TREE;
2959 : }
2960 :
2961 : tree
2962 0 : generic_simplify_556 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2963 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2964 : const combined_fn ARG_UNUSED (logs),
2965 : const combined_fn ARG_UNUSED (pows))
2966 : {
2967 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2968 0 : if (flag_unsafe_math_optimizations
2969 : )
2970 : {
2971 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail962;
2972 0 : {
2973 0 : tree res_op0;
2974 0 : res_op0 = captures[1];
2975 0 : tree res_op1;
2976 0 : {
2977 0 : tree _o1[1], _r1;
2978 0 : _o1[0] = captures[0];
2979 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
2980 0 : if (!_r1)
2981 0 : goto next_after_fail962;
2982 0 : res_op1 = _r1;
2983 : }
2984 0 : tree _r;
2985 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2986 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 757, __FILE__, __LINE__, true);
2987 0 : return _r;
2988 : }
2989 : next_after_fail962:;
2990 : }
2991 : return NULL_TREE;
2992 : }
2993 :
2994 : tree
2995 0 : generic_simplify_567 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2996 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2997 : const combined_fn ARG_UNUSED (froms),
2998 : const combined_fn ARG_UNUSED (tos))
2999 : {
3000 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3001 0 : if (optimize && canonicalize_math_p ()
3002 : )
3003 : {
3004 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail973;
3005 0 : {
3006 0 : tree res_op0;
3007 0 : res_op0 = captures[0];
3008 0 : tree _r;
3009 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3010 0 : if (!_r)
3011 0 : goto next_after_fail973;
3012 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 768, __FILE__, __LINE__, true);
3013 0 : return _r;
3014 : }
3015 : next_after_fail973:;
3016 : }
3017 : return NULL_TREE;
3018 : }
3019 :
3020 : tree
3021 0 : generic_simplify_575 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3022 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3023 : const combined_fn ARG_UNUSED (SIGNBIT))
3024 : {
3025 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3026 0 : if (!HONOR_SIGNED_ZEROS (captures[0])
3027 : )
3028 : {
3029 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail981;
3030 0 : {
3031 0 : tree res_op0;
3032 0 : {
3033 0 : tree _o1[2], _r1;
3034 0 : _o1[0] = captures[0];
3035 0 : _o1[1] = build_real (TREE_TYPE (captures[0]), dconst0);
3036 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3037 0 : res_op0 = _r1;
3038 : }
3039 0 : tree _r;
3040 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3041 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 776, __FILE__, __LINE__, true);
3042 0 : return _r;
3043 : }
3044 0 : next_after_fail981:;
3045 : }
3046 : return NULL_TREE;
3047 : }
3048 :
3049 : tree
3050 0 : generic_simplify_584 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3051 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3052 : {
3053 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3054 0 : if (canonicalize_math_after_vectorization_p ()
3055 : )
3056 : {
3057 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail990;
3058 : {
3059 : tree res_op0;
3060 : res_op0 = captures[0];
3061 : tree res_op1;
3062 : res_op1 = captures[1];
3063 : tree res_op2;
3064 : res_op2 = captures[2];
3065 : tree _r;
3066 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3067 : if (!_r)
3068 : goto next_after_fail990;
3069 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 785, __FILE__, __LINE__, true);
3070 : return _r;
3071 : }
3072 0 : next_after_fail990:;
3073 : }
3074 0 : return NULL_TREE;
3075 : }
3076 :
3077 : tree
3078 0 : generic_simplify_594 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3079 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3080 : const combined_fn ARG_UNUSED (ctz))
3081 : {
3082 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3083 0 : {
3084 0 : tree t = TREE_TYPE (captures[0]);
3085 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1000;
3086 0 : {
3087 0 : tree res_op0;
3088 0 : {
3089 0 : tree _o1[1], _r1;
3090 0 : _o1[0] = captures[1];
3091 0 : if (TREE_TYPE (_o1[0]) != t)
3092 : {
3093 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3094 : }
3095 : else
3096 : _r1 = _o1[0];
3097 0 : res_op0 = _r1;
3098 : }
3099 0 : tree _r;
3100 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3101 0 : if (!_r)
3102 0 : goto next_after_fail1000;
3103 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 794, __FILE__, __LINE__, true);
3104 : return _r;
3105 : }
3106 : next_after_fail1000:;
3107 : }
3108 : return NULL_TREE;
3109 : }
3110 :
3111 : tree
3112 0 : generic_simplify_604 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3113 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3114 : const combined_fn ARG_UNUSED (bswap),
3115 : const combined_fn ARG_UNUSED (parity))
3116 : {
3117 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3118 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3119 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3120 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3121 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3122 : )
3123 : {
3124 0 : {
3125 0 : tree type0 = TREE_TYPE (captures[0]);
3126 0 : tree type1 = TREE_TYPE (captures[1]);
3127 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1011;
3128 0 : {
3129 0 : tree res_op0;
3130 0 : {
3131 0 : tree _o1[1], _r1;
3132 0 : {
3133 0 : tree _o2[1], _r2;
3134 0 : _o2[0] = captures[2];
3135 0 : if (TREE_TYPE (_o2[0]) != type1)
3136 : {
3137 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3138 : }
3139 : else
3140 : _r2 = _o2[0];
3141 0 : _o1[0] = _r2;
3142 : }
3143 0 : if (TREE_TYPE (_o1[0]) != type0)
3144 : {
3145 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3146 : }
3147 : else
3148 : _r1 = _o1[0];
3149 0 : res_op0 = _r1;
3150 : }
3151 0 : tree _r;
3152 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3153 0 : if (!_r)
3154 0 : goto next_after_fail1011;
3155 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 801, __FILE__, __LINE__, true);
3156 0 : return _r;
3157 : }
3158 : next_after_fail1011:;
3159 : }
3160 : }
3161 : return NULL_TREE;
3162 : }
3163 :
3164 : tree
3165 878961035 : generic_simplify_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3166 : {
3167 878961035 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3168 878961035 : switch (TREE_CODE (_p0))
3169 : {
3170 610574 : case NEGATE_EXPR:
3171 610574 : {
3172 610574 : tree _q20 = TREE_OPERAND (_p0, 0);
3173 610574 : switch (TREE_CODE (_q20))
3174 : {
3175 158170 : CASE_CONVERT:
3176 158170 : {
3177 158170 : tree _q30 = TREE_OPERAND (_q20, 0);
3178 158170 : {
3179 158170 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3180 158170 : if (INTEGRAL_TYPE_P (type)
3181 157869 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
3182 154363 : && (TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3183 153585 : || TYPE_UNSIGNED (type))
3184 164640 : && TREE_CODE (type) != BOOLEAN_TYPE
3185 : )
3186 : {
3187 6470 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1025;
3188 6470 : {
3189 6470 : tree res_op0;
3190 6470 : {
3191 6470 : tree _o1[1], _r1;
3192 6470 : _o1[0] = captures[2];
3193 6470 : if (TREE_TYPE (_o1[0]) != type)
3194 : {
3195 6428 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3196 : }
3197 : else
3198 : _r1 = _o1[0];
3199 6470 : res_op0 = _r1;
3200 : }
3201 6470 : tree _r;
3202 6470 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3203 6470 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
3204 6470 : return _r;
3205 : }
3206 0 : next_after_fail1025:;
3207 : }
3208 : }
3209 151700 : break;
3210 : }
3211 : default:;
3212 : }
3213 : break;
3214 : }
3215 1642710 : case BIT_AND_EXPR:
3216 1642710 : {
3217 1642710 : tree _q20 = TREE_OPERAND (_p0, 0);
3218 1642710 : tree _q21 = TREE_OPERAND (_p0, 1);
3219 1642710 : {
3220 1642710 : tree _q20_pops[1];
3221 1642710 : if (tree_nop_convert (_q20, _q20_pops))
3222 : {
3223 647946 : tree _q30 = _q20_pops[0];
3224 647946 : {
3225 647946 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3226 647946 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_AND_EXPR);
3227 647946 : if (res) return res;
3228 : }
3229 : }
3230 : }
3231 1642710 : {
3232 1642710 : tree _q21_pops[1];
3233 1642710 : if (tree_nop_convert (_q21, _q21_pops))
3234 : {
3235 506338 : tree _q40 = _q21_pops[0];
3236 506338 : {
3237 506338 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3238 506338 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_AND_EXPR);
3239 506338 : if (res) return res;
3240 : }
3241 : }
3242 : }
3243 1642710 : switch (TREE_CODE (_q20))
3244 : {
3245 924826 : CASE_CONVERT:
3246 924826 : {
3247 924826 : tree _q30 = TREE_OPERAND (_q20, 0);
3248 924826 : {
3249 924826 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3250 924826 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_AND_EXPR);
3251 924826 : if (res) return res;
3252 : }
3253 924826 : break;
3254 : }
3255 1642710 : default:;
3256 : }
3257 1642710 : switch (TREE_CODE (_q21))
3258 : {
3259 507117 : CASE_CONVERT:
3260 507117 : {
3261 507117 : tree _q40 = TREE_OPERAND (_q21, 0);
3262 507117 : {
3263 507117 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3264 507117 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_AND_EXPR);
3265 507117 : if (res) return res;
3266 : }
3267 507117 : break;
3268 : }
3269 : default:;
3270 : }
3271 : break;
3272 : }
3273 1326663 : case BIT_IOR_EXPR:
3274 1326663 : {
3275 1326663 : tree _q20 = TREE_OPERAND (_p0, 0);
3276 1326663 : tree _q21 = TREE_OPERAND (_p0, 1);
3277 1326663 : {
3278 1326663 : tree _q20_pops[1];
3279 1326663 : if (tree_nop_convert (_q20, _q20_pops))
3280 : {
3281 413554 : tree _q30 = _q20_pops[0];
3282 413554 : {
3283 413554 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3284 413554 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_IOR_EXPR);
3285 413554 : if (res) return res;
3286 : }
3287 : }
3288 : }
3289 1326663 : {
3290 1326663 : tree _q21_pops[1];
3291 1326663 : if (tree_nop_convert (_q21, _q21_pops))
3292 : {
3293 1059042 : tree _q40 = _q21_pops[0];
3294 1059042 : {
3295 1059042 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3296 1059042 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_IOR_EXPR);
3297 1059042 : if (res) return res;
3298 : }
3299 : }
3300 : }
3301 1326663 : switch (TREE_CODE (_q20))
3302 : {
3303 463107 : CASE_CONVERT:
3304 463107 : {
3305 463107 : tree _q30 = TREE_OPERAND (_q20, 0);
3306 463107 : {
3307 463107 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3308 463107 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_IOR_EXPR);
3309 463107 : if (res) return res;
3310 : }
3311 463107 : break;
3312 : }
3313 1326663 : default:;
3314 : }
3315 1326663 : switch (TREE_CODE (_q21))
3316 : {
3317 1066800 : CASE_CONVERT:
3318 1066800 : {
3319 1066800 : tree _q40 = TREE_OPERAND (_q21, 0);
3320 1066800 : {
3321 1066800 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3322 1066800 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_IOR_EXPR);
3323 1066800 : if (res) return res;
3324 : }
3325 1066800 : break;
3326 : }
3327 : default:;
3328 : }
3329 : break;
3330 : }
3331 572465 : case BIT_XOR_EXPR:
3332 572465 : {
3333 572465 : tree _q20 = TREE_OPERAND (_p0, 0);
3334 572465 : tree _q21 = TREE_OPERAND (_p0, 1);
3335 572465 : {
3336 572465 : tree _q20_pops[1];
3337 572465 : if (tree_nop_convert (_q20, _q20_pops))
3338 : {
3339 328071 : tree _q30 = _q20_pops[0];
3340 328071 : {
3341 328071 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3342 328071 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_XOR_EXPR);
3343 328071 : if (res) return res;
3344 : }
3345 : }
3346 : }
3347 572465 : {
3348 572465 : tree _q21_pops[1];
3349 572465 : if (tree_nop_convert (_q21, _q21_pops))
3350 : {
3351 461111 : tree _q40 = _q21_pops[0];
3352 461111 : {
3353 461111 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3354 461111 : tree res = generic_simplify_420 (loc, type, _p0, captures, BIT_XOR_EXPR);
3355 461111 : if (res) return res;
3356 : }
3357 : }
3358 : }
3359 572465 : switch (TREE_CODE (_q20))
3360 : {
3361 368153 : CASE_CONVERT:
3362 368153 : {
3363 368153 : tree _q30 = TREE_OPERAND (_q20, 0);
3364 368153 : {
3365 368153 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3366 368153 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_XOR_EXPR);
3367 368153 : if (res) return res;
3368 : }
3369 368153 : break;
3370 : }
3371 572465 : default:;
3372 : }
3373 572465 : switch (TREE_CODE (_q21))
3374 : {
3375 500179 : CASE_CONVERT:
3376 500179 : {
3377 500179 : tree _q40 = TREE_OPERAND (_q21, 0);
3378 500179 : {
3379 500179 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3380 500179 : tree res = generic_simplify_421 (loc, type, _p0, captures, BIT_XOR_EXPR);
3381 500179 : if (res) return res;
3382 : }
3383 500179 : break;
3384 : }
3385 : default:;
3386 : }
3387 : break;
3388 : }
3389 9889782 : case MULT_EXPR:
3390 9889782 : {
3391 9889782 : tree _q20 = TREE_OPERAND (_p0, 0);
3392 9889782 : tree _q21 = TREE_OPERAND (_p0, 1);
3393 9889782 : if (tree_zero_one_valued_p (_q20))
3394 : {
3395 66291 : switch (TREE_CODE (_q21))
3396 : {
3397 60814 : case INTEGER_CST:
3398 60814 : {
3399 60814 : {
3400 60814 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3401 60814 : if (INTEGRAL_TYPE_P (type)
3402 60814 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3403 60814 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
3404 60820 : && (TYPE_UNSIGNED (type) || TYPE_PRECISION (type) > 1)
3405 : )
3406 : {
3407 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1026;
3408 6 : {
3409 6 : tree res_op0;
3410 6 : {
3411 6 : tree _o1[1], _r1;
3412 6 : _o1[0] = captures[1];
3413 6 : if (TREE_TYPE (_o1[0]) != type)
3414 : {
3415 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3416 : }
3417 : else
3418 : _r1 = _o1[0];
3419 6 : res_op0 = _r1;
3420 : }
3421 6 : tree res_op1;
3422 6 : {
3423 6 : tree _o1[1], _r1;
3424 6 : _o1[0] = captures[2];
3425 6 : if (TREE_TYPE (_o1[0]) != type)
3426 : {
3427 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3428 : }
3429 : else
3430 : _r1 = _o1[0];
3431 6 : res_op1 = _r1;
3432 : }
3433 6 : tree _r;
3434 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3435 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
3436 6 : return _r;
3437 : }
3438 0 : next_after_fail1026:;
3439 : }
3440 : }
3441 60808 : break;
3442 : }
3443 : default:;
3444 : }
3445 : }
3446 : break;
3447 : }
3448 1544096 : case POINTER_DIFF_EXPR:
3449 1544096 : {
3450 1544096 : tree _q20 = TREE_OPERAND (_p0, 0);
3451 1544096 : tree _q21 = TREE_OPERAND (_p0, 1);
3452 1544096 : switch (TREE_CODE (_q21))
3453 : {
3454 200 : case INTEGER_CST:
3455 200 : {
3456 200 : {
3457 200 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3458 200 : if (POINTER_TYPE_P (type)
3459 : )
3460 : {
3461 18 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1027;
3462 18 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1027;
3463 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1027;
3464 18 : {
3465 18 : tree _r;
3466 18 : _r = build_fold_addr_expr_with_type
3467 : (build2 (MEM_REF, char_type_node, captures[0],
3468 : wide_int_to_tree (ptr_type_node, wi::neg (wi::to_wide (captures[1])))),
3469 : type);
3470 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3471 18 : return _r;
3472 : }
3473 182 : next_after_fail1027:;
3474 : }
3475 : }
3476 182 : break;
3477 : }
3478 : default:;
3479 : }
3480 : break;
3481 : }
3482 203638 : case EQ_EXPR:
3483 203638 : {
3484 203638 : tree _q20 = TREE_OPERAND (_p0, 0);
3485 203638 : tree _q21 = TREE_OPERAND (_p0, 1);
3486 203638 : if (tree_zero_one_valued_p (_q20))
3487 : {
3488 1598 : switch (TREE_CODE (_q21))
3489 : {
3490 726 : case INTEGER_CST:
3491 726 : {
3492 726 : {
3493 726 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3494 726 : tree res = generic_simplify_422 (loc, type, _p0, captures, EQ_EXPR);
3495 726 : if (res) return res;
3496 : }
3497 679 : break;
3498 : }
3499 : default:;
3500 : }
3501 : }
3502 : break;
3503 : }
3504 253546 : case NE_EXPR:
3505 253546 : {
3506 253546 : tree _q20 = TREE_OPERAND (_p0, 0);
3507 253546 : tree _q21 = TREE_OPERAND (_p0, 1);
3508 253546 : if (tree_zero_one_valued_p (_q20))
3509 : {
3510 1845 : switch (TREE_CODE (_q21))
3511 : {
3512 1519 : case INTEGER_CST:
3513 1519 : {
3514 1519 : {
3515 1519 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3516 1519 : tree res = generic_simplify_422 (loc, type, _p0, captures, NE_EXPR);
3517 1519 : if (res) return res;
3518 : }
3519 1 : break;
3520 : }
3521 : default:;
3522 : }
3523 : }
3524 : break;
3525 : }
3526 1985 : case MIN_EXPR:
3527 1985 : {
3528 1985 : tree _q20 = TREE_OPERAND (_p0, 0);
3529 1985 : tree _q21 = TREE_OPERAND (_p0, 1);
3530 1985 : switch (TREE_CODE (_q20))
3531 : {
3532 722 : CASE_CONVERT:
3533 722 : {
3534 722 : tree _q30 = TREE_OPERAND (_q20, 0);
3535 722 : switch (TREE_CODE (_q21))
3536 : {
3537 650 : case INTEGER_CST:
3538 650 : {
3539 650 : {
3540 650 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3541 650 : tree res = generic_simplify_423 (loc, type, _p0, captures, MIN_EXPR);
3542 650 : if (res) return res;
3543 : }
3544 650 : break;
3545 : }
3546 : default:;
3547 : }
3548 : break;
3549 : }
3550 : default:;
3551 : }
3552 : break;
3553 : }
3554 298385 : case MAX_EXPR:
3555 298385 : {
3556 298385 : tree _q20 = TREE_OPERAND (_p0, 0);
3557 298385 : tree _q21 = TREE_OPERAND (_p0, 1);
3558 298385 : switch (TREE_CODE (_q20))
3559 : {
3560 6469 : CASE_CONVERT:
3561 6469 : {
3562 6469 : tree _q30 = TREE_OPERAND (_q20, 0);
3563 6469 : switch (TREE_CODE (_q21))
3564 : {
3565 6433 : case INTEGER_CST:
3566 6433 : {
3567 6433 : {
3568 6433 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3569 6433 : tree res = generic_simplify_423 (loc, type, _p0, captures, MAX_EXPR);
3570 6433 : if (res) return res;
3571 : }
3572 6433 : break;
3573 : }
3574 : default:;
3575 : }
3576 : break;
3577 : }
3578 : default:;
3579 : }
3580 : break;
3581 : }
3582 462492 : case LSHIFT_EXPR:
3583 462492 : {
3584 462492 : tree _q20 = TREE_OPERAND (_p0, 0);
3585 462492 : tree _q21 = TREE_OPERAND (_p0, 1);
3586 462492 : switch (TREE_CODE (_q21))
3587 : {
3588 140730 : case INTEGER_CST:
3589 140730 : {
3590 140730 : {
3591 140730 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3592 140730 : if (INTEGRAL_TYPE_P (type)
3593 140703 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3594 140703 : && !integer_zerop (captures[2])
3595 280660 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3596 : )
3597 : {
3598 138647 : if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3599 138647 : || wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (type))
3600 : )
3601 : {
3602 138359 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1028;
3603 138359 : {
3604 138359 : tree res_op0;
3605 138359 : {
3606 138359 : tree _o1[1], _r1;
3607 138359 : _o1[0] = captures[1];
3608 138359 : if (TREE_TYPE (_o1[0]) != type)
3609 : {
3610 129285 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3611 : }
3612 : else
3613 : _r1 = _o1[0];
3614 138359 : res_op0 = _r1;
3615 : }
3616 138359 : tree res_op1;
3617 138359 : res_op1 = captures[2];
3618 138359 : tree _r;
3619 138359 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
3620 138359 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 816, __FILE__, __LINE__, true);
3621 138359 : return _r;
3622 : }
3623 0 : next_after_fail1028:;
3624 : }
3625 : else
3626 : {
3627 288 : if (wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])))
3628 : )
3629 : {
3630 239 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3631 239 : {
3632 239 : tree _r;
3633 239 : _r = build_zero_cst (type);
3634 239 : if (TREE_SIDE_EFFECTS (captures[1]))
3635 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3636 239 : if (TREE_SIDE_EFFECTS (captures[2]))
3637 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3638 239 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 817, __FILE__, __LINE__, true);
3639 239 : return _r;
3640 : }
3641 0 : next_after_fail1029:;
3642 : }
3643 : }
3644 : }
3645 : }
3646 2132 : break;
3647 : }
3648 : default:;
3649 : }
3650 : break;
3651 : }
3652 878814378 : default:;
3653 : }
3654 878814378 : {
3655 878814378 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3656 1757628756 : if ((
3657 :
3658 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3659 : || (
3660 : 1
3661 878814378 : && type == TREE_TYPE (captures[0]))
3662 : )
3663 : {
3664 59325909 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1030;
3665 59325909 : {
3666 59325909 : tree _r;
3667 59325909 : _r = captures[0];
3668 59325909 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3669 59325909 : return _r;
3670 : }
3671 0 : next_after_fail1030:;
3672 : }
3673 : }
3674 819488469 : switch (TREE_CODE (_p0))
3675 : {
3676 126897598 : CASE_CONVERT:
3677 126897598 : {
3678 126897598 : tree _q20 = TREE_OPERAND (_p0, 0);
3679 126897598 : {
3680 126897598 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3681 126897598 : {
3682 126897598 : tree inside_type = TREE_TYPE (captures[1]);
3683 126897598 : tree inter_type = TREE_TYPE (captures[0]);
3684 126897598 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3685 126897598 : int inside_ptr = POINTER_TYPE_P (inside_type);
3686 126897598 : int inside_float = FLOAT_TYPE_P (inside_type);
3687 126897598 : int inside_vec = VECTOR_TYPE_P (inside_type);
3688 126897598 : unsigned int inside_prec = element_precision (inside_type);
3689 126897598 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3690 126897598 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3691 126897598 : int inter_ptr = POINTER_TYPE_P (inter_type);
3692 126897598 : int inter_float = FLOAT_TYPE_P (inter_type);
3693 126897598 : int inter_vec = VECTOR_TYPE_P (inter_type);
3694 126897598 : unsigned int inter_prec = element_precision (inter_type);
3695 126897598 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3696 126897598 : int final_int = INTEGRAL_TYPE_P (type);
3697 126897598 : int final_ptr = POINTER_TYPE_P (type);
3698 126897598 : int final_float = FLOAT_TYPE_P (type);
3699 126897598 : int final_vec = VECTOR_TYPE_P (type);
3700 126897598 : unsigned int final_prec = element_precision (type);
3701 126897598 : int final_unsignedp = TYPE_UNSIGNED (type);
3702 126897598 : if (((
3703 :
3704 : && useless_type_conversion_p (type, inside_type))
3705 : || (
3706 : 1
3707 126897598 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3708 28000794 : && (((inter_int || inter_ptr) && final_int)
3709 21880802 : || (inter_float && final_float))
3710 133095718 : && inter_prec >= final_prec
3711 : )
3712 : {
3713 5665265 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1031;
3714 5665265 : {
3715 5665265 : tree res_op0;
3716 5665265 : res_op0 = captures[1];
3717 5665265 : tree _r;
3718 5665265 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3719 5665265 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
3720 5665265 : return _r;
3721 : }
3722 0 : next_after_fail1031:;
3723 : }
3724 : else
3725 : {
3726 121232333 : if (((inter_int && inside_int) || (inter_float && inside_float))
3727 14069829 : && (final_int || final_float)
3728 13939905 : && inter_prec >= inside_prec
3729 12627941 : && (inter_float || inter_unsignedp == inside_unsignedp)
3730 : )
3731 : {
3732 8515675 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1032;
3733 8515675 : {
3734 8515675 : tree res_op0;
3735 8515675 : res_op0 = captures[1];
3736 8515675 : tree _r;
3737 8515675 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3738 8515675 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
3739 8515675 : return _r;
3740 : }
3741 0 : next_after_fail1032:;
3742 0 : }
3743 : else
3744 : {
3745 112716658 : if (inside_int && inter_int && final_int
3746 5417930 : && ((inside_prec < inter_prec && inter_prec < final_prec
3747 503813 : && inside_unsignedp && !inter_unsignedp)
3748 4940897 : || final_prec == inter_prec
3749 2352370 : || (inside_prec < inter_prec && inter_prec > final_prec
3750 152660 : && !inside_unsignedp && inter_unsignedp))
3751 : )
3752 : {
3753 3131106 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1033;
3754 3131106 : {
3755 3131106 : tree res_op0;
3756 3131106 : res_op0 = captures[1];
3757 3131106 : tree _r;
3758 3131106 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3759 3131106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3760 3131106 : return _r;
3761 : }
3762 0 : next_after_fail1033:;
3763 0 : }
3764 : else
3765 : {
3766 109585552 : if (! inside_float && ! inter_float && ! final_float
3767 : && ! inside_vec && ! inter_vec && ! final_vec
3768 109579248 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3769 108780408 : && ! (inside_int && inter_int
3770 1617904 : && inter_unsignedp != inside_unsignedp
3771 1617904 : && inter_prec < final_prec)
3772 107462316 : && ((inter_unsignedp && inter_prec > inside_prec)
3773 107462316 : == (final_unsignedp && final_prec > inter_prec))
3774 107439958 : && ! (inside_ptr && inter_prec != final_prec)
3775 106965906 : && ! (final_ptr && inside_prec != inter_prec)
3776 : )
3777 : {
3778 106945160 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1034;
3779 106945160 : {
3780 106945160 : tree res_op0;
3781 106945160 : res_op0 = captures[1];
3782 106945160 : tree _r;
3783 106945160 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3784 106945160 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3785 106945160 : return _r;
3786 : }
3787 0 : next_after_fail1034:;
3788 0 : }
3789 : else
3790 : {
3791 2640392 : if (inside_int && inter_int && final_int
3792 2146369 : && final_prec <= inside_prec
3793 738871 : && inter_prec >= inside_prec
3794 : )
3795 : {
3796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1035;
3797 0 : {
3798 0 : tree res_op0;
3799 0 : res_op0 = captures[1];
3800 0 : tree _r;
3801 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3802 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 823, __FILE__, __LINE__, true);
3803 0 : return _r;
3804 : }
3805 0 : next_after_fail1035:;
3806 0 : }
3807 : else
3808 : {
3809 : if (0
3810 : && final_int && inter_int && inside_int
3811 : && final_prec >= inside_prec
3812 : && inside_prec > inter_prec
3813 : && inter_unsignedp
3814 : )
3815 : {
3816 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1036;
3817 : {
3818 : tree res_op0;
3819 : {
3820 : tree _o1[2], _r1;
3821 : _o1[0] = captures[1];
3822 : _o1[1] = wide_int_to_tree
3823 : (inside_type,
3824 : wi::mask (inter_prec, false,
3825 : TYPE_PRECISION (inside_type)));
3826 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3827 : res_op0 = _r1;
3828 : }
3829 : tree _r;
3830 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3831 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
3832 : return _r;
3833 : }
3834 : next_after_fail1036:;
3835 : }
3836 : else
3837 : {
3838 : if (0
3839 : && inside_int && inter_float && final_int &&
3840 : (unsigned) significand_size (TYPE_MODE (inter_type))
3841 : >= inside_prec - !inside_unsignedp
3842 : )
3843 : {
3844 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1037;
3845 : {
3846 : tree res_op0;
3847 : res_op0 = captures[1];
3848 : tree _r;
3849 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3850 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 825, __FILE__, __LINE__, true);
3851 : return _r;
3852 : }
3853 : next_after_fail1037:;
3854 : }
3855 : }
3856 : }
3857 : }
3858 : }
3859 : }
3860 : }
3861 : }
3862 : }
3863 2640392 : break;
3864 : }
3865 3066 : case FLOAT_EXPR:
3866 3066 : {
3867 3066 : tree _q20 = TREE_OPERAND (_p0, 0);
3868 3066 : {
3869 3066 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3870 3066 : {
3871 3066 : tree inside_type = TREE_TYPE (captures[1]);
3872 3066 : tree inter_type = TREE_TYPE (captures[0]);
3873 3066 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3874 3066 : int inside_ptr = POINTER_TYPE_P (inside_type);
3875 3066 : int inside_float = FLOAT_TYPE_P (inside_type);
3876 3066 : int inside_vec = VECTOR_TYPE_P (inside_type);
3877 3066 : unsigned int inside_prec = element_precision (inside_type);
3878 3066 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3879 3066 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3880 3066 : int inter_ptr = POINTER_TYPE_P (inter_type);
3881 3066 : int inter_float = FLOAT_TYPE_P (inter_type);
3882 3066 : int inter_vec = VECTOR_TYPE_P (inter_type);
3883 3066 : unsigned int inter_prec = element_precision (inter_type);
3884 3066 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3885 3066 : int final_int = INTEGRAL_TYPE_P (type);
3886 3066 : int final_ptr = POINTER_TYPE_P (type);
3887 3066 : int final_float = FLOAT_TYPE_P (type);
3888 3066 : int final_vec = VECTOR_TYPE_P (type);
3889 3066 : unsigned int final_prec = element_precision (type);
3890 3066 : int final_unsignedp = TYPE_UNSIGNED (type);
3891 3066 : if (((
3892 :
3893 : && useless_type_conversion_p (type, inside_type))
3894 : || (
3895 : 1
3896 3066 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3897 0 : && (((inter_int || inter_ptr) && final_int)
3898 0 : || (inter_float && final_float))
3899 3066 : && inter_prec >= final_prec
3900 : )
3901 : {
3902 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1038;
3903 0 : {
3904 0 : tree res_op0;
3905 0 : res_op0 = captures[1];
3906 0 : tree _r;
3907 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
3909 0 : return _r;
3910 : }
3911 0 : next_after_fail1038:;
3912 : }
3913 : else
3914 : {
3915 3066 : if (((inter_int && inside_int) || (inter_float && inside_float))
3916 0 : && (final_int || final_float)
3917 0 : && inter_prec >= inside_prec
3918 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
3919 : )
3920 : {
3921 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1039;
3922 0 : {
3923 0 : tree res_op0;
3924 0 : res_op0 = captures[1];
3925 0 : tree _r;
3926 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3927 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
3928 0 : return _r;
3929 : }
3930 0 : next_after_fail1039:;
3931 0 : }
3932 : else
3933 : {
3934 3066 : if (inside_int && inter_int && final_int
3935 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3936 0 : && inside_unsignedp && !inter_unsignedp)
3937 0 : || final_prec == inter_prec
3938 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3939 0 : && !inside_unsignedp && inter_unsignedp))
3940 : )
3941 : {
3942 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1040;
3943 0 : {
3944 0 : tree res_op0;
3945 0 : res_op0 = captures[1];
3946 0 : tree _r;
3947 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3949 0 : return _r;
3950 : }
3951 0 : next_after_fail1040:;
3952 0 : }
3953 : else
3954 : {
3955 3066 : if (! inside_float && ! inter_float && ! final_float
3956 : && ! inside_vec && ! inter_vec && ! final_vec
3957 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3958 0 : && ! (inside_int && inter_int
3959 0 : && inter_unsignedp != inside_unsignedp
3960 0 : && inter_prec < final_prec)
3961 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3962 0 : == (final_unsignedp && final_prec > inter_prec))
3963 0 : && ! (inside_ptr && inter_prec != final_prec)
3964 0 : && ! (final_ptr && inside_prec != inter_prec)
3965 : )
3966 : {
3967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1041;
3968 0 : {
3969 0 : tree res_op0;
3970 0 : res_op0 = captures[1];
3971 0 : tree _r;
3972 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3974 0 : return _r;
3975 : }
3976 0 : next_after_fail1041:;
3977 0 : }
3978 : else
3979 : {
3980 3066 : if (inside_int && inter_int && final_int
3981 0 : && final_prec <= inside_prec
3982 0 : && inter_prec >= inside_prec
3983 : )
3984 : {
3985 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1042;
3986 0 : {
3987 0 : tree res_op0;
3988 0 : res_op0 = captures[1];
3989 0 : tree _r;
3990 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 823, __FILE__, __LINE__, true);
3992 0 : return _r;
3993 : }
3994 0 : next_after_fail1042:;
3995 0 : }
3996 : else
3997 : {
3998 : if (0
3999 : && final_int && inter_int && inside_int
4000 : && final_prec >= inside_prec
4001 : && inside_prec > inter_prec
4002 : && inter_unsignedp
4003 : )
4004 : {
4005 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1043;
4006 : {
4007 : tree res_op0;
4008 : {
4009 : tree _o1[2], _r1;
4010 : _o1[0] = captures[1];
4011 : _o1[1] = wide_int_to_tree
4012 : (inside_type,
4013 : wi::mask (inter_prec, false,
4014 : TYPE_PRECISION (inside_type)));
4015 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4016 : res_op0 = _r1;
4017 : }
4018 : tree _r;
4019 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4020 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
4021 : return _r;
4022 : }
4023 : next_after_fail1043:;
4024 : }
4025 : else
4026 : {
4027 : if (0
4028 : && inside_int && inter_float && final_int &&
4029 : (unsigned) significand_size (TYPE_MODE (inter_type))
4030 : >= inside_prec - !inside_unsignedp
4031 : )
4032 : {
4033 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1044;
4034 : {
4035 : tree res_op0;
4036 : res_op0 = captures[1];
4037 : tree _r;
4038 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4039 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 825, __FILE__, __LINE__, true);
4040 : return _r;
4041 : }
4042 : next_after_fail1044:;
4043 : }
4044 : }
4045 : }
4046 : }
4047 : }
4048 : }
4049 : }
4050 : }
4051 : }
4052 3066 : break;
4053 : }
4054 1278894 : case BIT_AND_EXPR:
4055 1278894 : {
4056 1278894 : tree _q20 = TREE_OPERAND (_p0, 0);
4057 1278894 : tree _q21 = TREE_OPERAND (_p0, 1);
4058 1278894 : switch (TREE_CODE (_q21))
4059 : {
4060 661424 : case INTEGER_CST:
4061 661424 : {
4062 661424 : {
4063 661424 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4064 661424 : if (INTEGRAL_TYPE_P (type)
4065 660916 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4066 660916 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
4067 961720 : && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]),
4068 300296 : TYPE_PRECISION (type)), 0)
4069 : )
4070 : {
4071 12202 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
4072 12202 : {
4073 12202 : tree res_op0;
4074 12202 : res_op0 = captures[0];
4075 12202 : tree _r;
4076 12202 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4077 12202 : if (TREE_SIDE_EFFECTS (captures[1]))
4078 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4079 12202 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 826, __FILE__, __LINE__, true);
4080 12202 : return _r;
4081 : }
4082 0 : next_after_fail1045:;
4083 : }
4084 : }
4085 649222 : break;
4086 : }
4087 : default:;
4088 : }
4089 : break;
4090 : }
4091 5 : case VEC_COND_EXPR:
4092 5 : {
4093 5 : tree _q20 = TREE_OPERAND (_p0, 0);
4094 5 : tree _q21 = TREE_OPERAND (_p0, 1);
4095 5 : tree _q22 = TREE_OPERAND (_p0, 2);
4096 5 : {
4097 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4098 5 : if (VECTOR_TYPE_P (type)
4099 0 : && types_match (TREE_TYPE (captures[1]), truth_type_for (type))
4100 5 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4101 0 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
4102 : )
4103 : {
4104 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
4105 0 : {
4106 0 : tree res_op0;
4107 0 : res_op0 = captures[1];
4108 0 : tree res_op1;
4109 0 : {
4110 0 : tree _o1[1], _r1;
4111 0 : _o1[0] = captures[2];
4112 0 : if (TREE_TYPE (_o1[0]) != type)
4113 : {
4114 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4115 0 : if (EXPR_P (_r1))
4116 0 : goto next_after_fail1046;
4117 : }
4118 : else
4119 : _r1 = _o1[0];
4120 0 : res_op1 = _r1;
4121 : }
4122 0 : tree res_op2;
4123 0 : {
4124 0 : tree _o1[1], _r1;
4125 0 : _o1[0] = captures[3];
4126 0 : if (TREE_TYPE (_o1[0]) != type)
4127 : {
4128 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4129 0 : if (EXPR_P (_r1))
4130 0 : goto next_after_fail1046;
4131 : }
4132 : else
4133 : _r1 = _o1[0];
4134 0 : res_op2 = _r1;
4135 : }
4136 0 : tree _r;
4137 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4138 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
4139 0 : return _r;
4140 : }
4141 5 : next_after_fail1046:;
4142 : }
4143 : }
4144 5 : break;
4145 : }
4146 883485 : case COND_EXPR:
4147 883485 : {
4148 883485 : tree _q20 = TREE_OPERAND (_p0, 0);
4149 883485 : tree _q21 = TREE_OPERAND (_p0, 1);
4150 883485 : tree _q22 = TREE_OPERAND (_p0, 2);
4151 883485 : switch (TREE_CODE (_q21))
4152 : {
4153 222962 : case INTEGER_CST:
4154 222962 : {
4155 222962 : switch (TREE_CODE (_q22))
4156 : {
4157 158348 : case INTEGER_CST:
4158 158348 : {
4159 158348 : {
4160 158348 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4161 158348 : if (INTEGRAL_TYPE_P (type)
4162 158348 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4163 : )
4164 : {
4165 158348 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1047;
4166 158348 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1047;
4167 158348 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1047;
4168 158348 : {
4169 158348 : tree res_op0;
4170 158348 : res_op0 = captures[1];
4171 158348 : tree res_op1;
4172 158348 : {
4173 158348 : tree _o1[1], _r1;
4174 158348 : _o1[0] = captures[2];
4175 158348 : if (TREE_TYPE (_o1[0]) != type)
4176 : {
4177 158348 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4178 : }
4179 : else
4180 : _r1 = _o1[0];
4181 158348 : res_op1 = _r1;
4182 : }
4183 158348 : tree res_op2;
4184 158348 : {
4185 158348 : tree _o1[1], _r1;
4186 158348 : _o1[0] = captures[3];
4187 158348 : if (TREE_TYPE (_o1[0]) != type)
4188 : {
4189 158348 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4190 : }
4191 : else
4192 : _r1 = _o1[0];
4193 158348 : res_op2 = _r1;
4194 : }
4195 158348 : tree _r;
4196 158348 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4197 158348 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 828, __FILE__, __LINE__, true);
4198 158348 : return _r;
4199 : }
4200 0 : next_after_fail1047:;
4201 : }
4202 : }
4203 0 : break;
4204 : }
4205 : default:;
4206 : }
4207 : break;
4208 : }
4209 : default:;
4210 : }
4211 : break;
4212 : }
4213 11678510 : case PLUS_EXPR:
4214 11678510 : {
4215 11678510 : tree _q20 = TREE_OPERAND (_p0, 0);
4216 11678510 : tree _q21 = TREE_OPERAND (_p0, 1);
4217 11678510 : switch (TREE_CODE (_q20))
4218 : {
4219 4560165 : CASE_CONVERT:
4220 4560165 : {
4221 4560165 : tree _q30 = TREE_OPERAND (_q20, 0);
4222 4560165 : switch (TREE_CODE (_q21))
4223 : {
4224 395072 : CASE_CONVERT:
4225 395072 : {
4226 395072 : tree _q50 = TREE_OPERAND (_q21, 0);
4227 395072 : {
4228 395072 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4229 395072 : tree res = generic_simplify_424 (loc, type, _p0, captures, PLUS_EXPR);
4230 395072 : if (res) return res;
4231 : }
4232 395023 : break;
4233 : }
4234 4560116 : default:;
4235 : }
4236 4560116 : {
4237 4560116 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4238 4560116 : tree res = generic_simplify_425 (loc, type, _p0, captures, PLUS_EXPR);
4239 4560116 : if (res) return res;
4240 : }
4241 4547106 : break;
4242 : }
4243 11665451 : default:;
4244 : }
4245 11665451 : switch (TREE_CODE (_q21))
4246 : {
4247 1549243 : CASE_CONVERT:
4248 1549243 : {
4249 1549243 : tree _q40 = TREE_OPERAND (_q21, 0);
4250 1549243 : {
4251 1549243 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4252 1549243 : tree res = generic_simplify_426 (loc, type, _p0, captures, PLUS_EXPR);
4253 1549243 : if (res) return res;
4254 : }
4255 1549243 : break;
4256 : }
4257 11665451 : default:;
4258 : }
4259 11665451 : {
4260 11665451 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4261 11665451 : tree res = generic_simplify_427 (loc, type, _p0, captures, PLUS_EXPR);
4262 11665451 : if (res) return res;
4263 : }
4264 11665417 : break;
4265 : }
4266 921792 : case MINUS_EXPR:
4267 921792 : {
4268 921792 : tree _q20 = TREE_OPERAND (_p0, 0);
4269 921792 : tree _q21 = TREE_OPERAND (_p0, 1);
4270 921792 : switch (TREE_CODE (_q20))
4271 : {
4272 350342 : CASE_CONVERT:
4273 350342 : {
4274 350342 : tree _q30 = TREE_OPERAND (_q20, 0);
4275 350342 : switch (TREE_CODE (_q21))
4276 : {
4277 200191 : CASE_CONVERT:
4278 200191 : {
4279 200191 : tree _q50 = TREE_OPERAND (_q21, 0);
4280 200191 : {
4281 200191 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4282 200191 : tree res = generic_simplify_424 (loc, type, _p0, captures, MINUS_EXPR);
4283 200191 : if (res) return res;
4284 : }
4285 200169 : break;
4286 : }
4287 350320 : default:;
4288 : }
4289 350320 : {
4290 350320 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4291 350320 : tree res = generic_simplify_425 (loc, type, _p0, captures, MINUS_EXPR);
4292 350320 : if (res) return res;
4293 : }
4294 349207 : break;
4295 : }
4296 920657 : default:;
4297 : }
4298 920657 : switch (TREE_CODE (_q21))
4299 : {
4300 259708 : CASE_CONVERT:
4301 259708 : {
4302 259708 : tree _q40 = TREE_OPERAND (_q21, 0);
4303 259708 : {
4304 259708 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4305 259708 : tree res = generic_simplify_426 (loc, type, _p0, captures, MINUS_EXPR);
4306 259708 : if (res) return res;
4307 : }
4308 259698 : break;
4309 : }
4310 920647 : default:;
4311 : }
4312 920647 : {
4313 920647 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4314 920647 : tree res = generic_simplify_427 (loc, type, _p0, captures, MINUS_EXPR);
4315 920647 : if (res) return res;
4316 : }
4317 920615 : break;
4318 : }
4319 9671998 : case MULT_EXPR:
4320 9671998 : {
4321 9671998 : tree _q20 = TREE_OPERAND (_p0, 0);
4322 9671998 : tree _q21 = TREE_OPERAND (_p0, 1);
4323 9671998 : switch (TREE_CODE (_q20))
4324 : {
4325 4432278 : CASE_CONVERT:
4326 4432278 : {
4327 4432278 : tree _q30 = TREE_OPERAND (_q20, 0);
4328 4432278 : switch (TREE_CODE (_q21))
4329 : {
4330 321650 : CASE_CONVERT:
4331 321650 : {
4332 321650 : tree _q50 = TREE_OPERAND (_q21, 0);
4333 321650 : {
4334 321650 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4335 321650 : tree res = generic_simplify_424 (loc, type, _p0, captures, MULT_EXPR);
4336 321650 : if (res) return res;
4337 : }
4338 321650 : break;
4339 : }
4340 4432278 : default:;
4341 : }
4342 4432278 : {
4343 4432278 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4344 4432278 : tree res = generic_simplify_425 (loc, type, _p0, captures, MULT_EXPR);
4345 4432278 : if (res) return res;
4346 : }
4347 4432159 : break;
4348 : }
4349 9671879 : default:;
4350 : }
4351 9671879 : switch (TREE_CODE (_q21))
4352 : {
4353 694899 : CASE_CONVERT:
4354 694899 : {
4355 694899 : tree _q40 = TREE_OPERAND (_q21, 0);
4356 694899 : {
4357 694899 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4358 694899 : tree res = generic_simplify_426 (loc, type, _p0, captures, MULT_EXPR);
4359 694899 : if (res) return res;
4360 : }
4361 694899 : break;
4362 : }
4363 9671879 : default:;
4364 : }
4365 9671879 : {
4366 9671879 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4367 9671879 : tree res = generic_simplify_427 (loc, type, _p0, captures, MULT_EXPR);
4368 9671879 : if (res) return res;
4369 : }
4370 9671846 : break;
4371 : }
4372 3074 : case RDIV_EXPR:
4373 3074 : {
4374 3074 : tree _q20 = TREE_OPERAND (_p0, 0);
4375 3074 : tree _q21 = TREE_OPERAND (_p0, 1);
4376 3074 : switch (TREE_CODE (_q20))
4377 : {
4378 971 : CASE_CONVERT:
4379 971 : {
4380 971 : tree _q30 = TREE_OPERAND (_q20, 0);
4381 971 : switch (TREE_CODE (_q21))
4382 : {
4383 669 : CASE_CONVERT:
4384 669 : {
4385 669 : tree _q50 = TREE_OPERAND (_q21, 0);
4386 669 : {
4387 669 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4388 669 : tree res = generic_simplify_424 (loc, type, _p0, captures, RDIV_EXPR);
4389 669 : if (res) return res;
4390 : }
4391 668 : break;
4392 : }
4393 970 : default:;
4394 : }
4395 970 : {
4396 970 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4397 970 : tree res = generic_simplify_425 (loc, type, _p0, captures, RDIV_EXPR);
4398 970 : if (res) return res;
4399 : }
4400 968 : break;
4401 : }
4402 3071 : default:;
4403 : }
4404 3071 : switch (TREE_CODE (_q21))
4405 : {
4406 1658 : CASE_CONVERT:
4407 1658 : {
4408 1658 : tree _q40 = TREE_OPERAND (_q21, 0);
4409 1658 : {
4410 1658 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4411 1658 : tree res = generic_simplify_426 (loc, type, _p0, captures, RDIV_EXPR);
4412 1658 : if (res) return res;
4413 : }
4414 1013 : break;
4415 : }
4416 2426 : default:;
4417 : }
4418 2426 : {
4419 2426 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4420 2426 : tree res = generic_simplify_427 (loc, type, _p0, captures, RDIV_EXPR);
4421 2426 : if (res) return res;
4422 : }
4423 2384 : break;
4424 : }
4425 588399 : case NEGATE_EXPR:
4426 588399 : {
4427 588399 : tree _q20 = TREE_OPERAND (_p0, 0);
4428 588399 : {
4429 588399 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4430 588399 : tree res = generic_simplify_428 (loc, type, _p0, captures);
4431 588399 : if (res) return res;
4432 : }
4433 588377 : break;
4434 : }
4435 : default:;
4436 : }
4437 : return NULL_TREE;
4438 : }
4439 :
4440 : tree
4441 6916 : 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)
4442 : {
4443 6916 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4444 6916 : if (integer_onep (_p1))
4445 : {
4446 1755 : {
4447 1755 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4448 1755 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4449 1755 : if (res) return res;
4450 : }
4451 : }
4452 5161 : if (integer_zerop (_p0))
4453 : {
4454 0 : {
4455 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4456 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4457 0 : if (res) return res;
4458 : }
4459 : }
4460 5161 : switch (TREE_CODE (_p1))
4461 : {
4462 34 : case SSA_NAME:
4463 34 : {
4464 34 : {
4465 34 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4466 34 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4467 34 : if (res) return res;
4468 : }
4469 34 : break;
4470 : }
4471 5161 : default:;
4472 : }
4473 5161 : if (integer_minus_onep (_p1))
4474 : {
4475 0 : {
4476 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4477 0 : tree res = generic_simplify_310 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4478 0 : if (res) return res;
4479 : }
4480 : }
4481 5161 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4482 : {
4483 0 : {
4484 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4485 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4486 0 : if (res) return res;
4487 : }
4488 : }
4489 5161 : switch (TREE_CODE (_p1))
4490 : {
4491 0 : case ABS_EXPR:
4492 0 : {
4493 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4494 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4495 : {
4496 0 : {
4497 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4498 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4499 0 : if (res) return res;
4500 : }
4501 : }
4502 : break;
4503 : }
4504 5161 : default:;
4505 : }
4506 5161 : switch (TREE_CODE (_p0))
4507 : {
4508 0 : case ABS_EXPR:
4509 0 : {
4510 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4511 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4512 : {
4513 0 : {
4514 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4515 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4516 0 : if (res) return res;
4517 : }
4518 : }
4519 : break;
4520 : }
4521 5161 : default:;
4522 : }
4523 5161 : switch (TREE_CODE (_p1))
4524 : {
4525 0 : case NEGATE_EXPR:
4526 0 : {
4527 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4528 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4529 : {
4530 0 : {
4531 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4532 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4533 0 : if (res) return res;
4534 : }
4535 : }
4536 : break;
4537 : }
4538 5161 : default:;
4539 : }
4540 5161 : switch (TREE_CODE (_p0))
4541 : {
4542 0 : case NEGATE_EXPR:
4543 0 : {
4544 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4545 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4546 : {
4547 0 : {
4548 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4549 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4550 0 : if (res) return res;
4551 : }
4552 : }
4553 : break;
4554 : }
4555 536 : CASE_CONVERT:
4556 536 : {
4557 536 : tree _q20 = TREE_OPERAND (_p0, 0);
4558 536 : switch (TREE_CODE (_q20))
4559 : {
4560 0 : case BIT_AND_EXPR:
4561 0 : {
4562 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4563 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4564 0 : switch (TREE_CODE (_q31))
4565 : {
4566 0 : case INTEGER_CST:
4567 0 : {
4568 0 : switch (TREE_CODE (_p1))
4569 : {
4570 0 : case INTEGER_CST:
4571 0 : {
4572 0 : {
4573 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4574 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4575 0 : if (res) return res;
4576 : }
4577 0 : break;
4578 : }
4579 : default:;
4580 : }
4581 : break;
4582 : }
4583 : default:;
4584 : }
4585 : break;
4586 : }
4587 : default:;
4588 : }
4589 : break;
4590 : }
4591 0 : case BIT_AND_EXPR:
4592 0 : {
4593 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4594 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4595 0 : switch (TREE_CODE (_q21))
4596 : {
4597 0 : case INTEGER_CST:
4598 0 : {
4599 0 : switch (TREE_CODE (_p1))
4600 : {
4601 0 : case INTEGER_CST:
4602 0 : {
4603 0 : {
4604 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4605 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4606 0 : if (res) return res;
4607 : }
4608 0 : break;
4609 : }
4610 : default:;
4611 : }
4612 : break;
4613 : }
4614 : default:;
4615 : }
4616 : break;
4617 : }
4618 0 : case MULT_EXPR:
4619 0 : {
4620 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4621 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4622 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4623 : {
4624 0 : {
4625 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4626 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4627 0 : if (res) return res;
4628 : }
4629 : }
4630 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4631 : {
4632 0 : {
4633 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4634 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4635 0 : if (res) return res;
4636 : }
4637 : }
4638 0 : switch (TREE_CODE (_q21))
4639 : {
4640 0 : case INTEGER_CST:
4641 0 : {
4642 0 : switch (TREE_CODE (_p1))
4643 : {
4644 0 : case MULT_EXPR:
4645 0 : {
4646 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4647 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4648 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4649 : {
4650 0 : switch (TREE_CODE (_q51))
4651 : {
4652 0 : case INTEGER_CST:
4653 0 : {
4654 0 : {
4655 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4656 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4657 0 : if (res) return res;
4658 : }
4659 0 : break;
4660 : }
4661 : default:;
4662 : }
4663 : }
4664 : break;
4665 : }
4666 : default:;
4667 : }
4668 : break;
4669 : }
4670 : default:;
4671 : }
4672 : break;
4673 : }
4674 0 : case VEC_COND_EXPR:
4675 0 : {
4676 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4677 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4678 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4679 0 : switch (TREE_CODE (_p1))
4680 : {
4681 0 : case VEC_COND_EXPR:
4682 0 : {
4683 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4684 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4685 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4686 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4687 : {
4688 0 : {
4689 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4690 0 : if (VECTOR_TYPE_P (type)
4691 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4692 : || types_match (type, TREE_TYPE (captures[2]))
4693 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4694 : || (optimize_vectors_before_lowering_p ()
4695 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4696 : )
4697 : {
4698 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1559;
4699 0 : {
4700 0 : tree res_op0;
4701 0 : res_op0 = captures[1];
4702 0 : tree res_op1;
4703 0 : {
4704 0 : tree _o1[2], _r1;
4705 0 : _o1[0] = captures[2];
4706 0 : _o1[1] = captures[5];
4707 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4708 0 : if (EXPR_P (_r1))
4709 0 : goto next_after_fail1559;
4710 0 : res_op1 = _r1;
4711 : }
4712 0 : tree res_op2;
4713 0 : {
4714 0 : tree _o1[2], _r1;
4715 0 : _o1[0] = captures[3];
4716 0 : _o1[1] = captures[6];
4717 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4718 0 : if (EXPR_P (_r1))
4719 0 : goto next_after_fail1559;
4720 0 : res_op2 = _r1;
4721 : }
4722 0 : tree _r;
4723 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4724 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
4725 0 : return _r;
4726 : }
4727 0 : next_after_fail1559:;
4728 : }
4729 : }
4730 : }
4731 : break;
4732 : }
4733 0 : default:;
4734 : }
4735 0 : {
4736 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4737 0 : if (VECTOR_TYPE_P (type)
4738 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4739 : || types_match (type, TREE_TYPE (captures[2]))
4740 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4741 : || (optimize_vectors_before_lowering_p ()
4742 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4743 : )
4744 : {
4745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1560;
4746 0 : {
4747 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1560;
4748 0 : tree res_op0;
4749 0 : res_op0 = captures[1];
4750 0 : tree res_op1;
4751 0 : {
4752 0 : tree _o1[2], _r1;
4753 0 : _o1[0] = captures[2];
4754 0 : _o1[1] = unshare_expr (captures[4]);
4755 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4756 0 : if (EXPR_P (_r1))
4757 0 : goto next_after_fail1560;
4758 0 : res_op1 = _r1;
4759 : }
4760 0 : tree res_op2;
4761 0 : {
4762 0 : tree _o1[2], _r1;
4763 0 : _o1[0] = captures[3];
4764 0 : _o1[1] = captures[4];
4765 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4766 0 : if (EXPR_P (_r1))
4767 0 : goto next_after_fail1560;
4768 0 : res_op2 = _r1;
4769 : }
4770 0 : tree _r;
4771 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4772 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
4773 0 : return _r;
4774 : }
4775 0 : next_after_fail1560:;
4776 : }
4777 : }
4778 0 : break;
4779 : }
4780 5161 : default:;
4781 : }
4782 5161 : switch (TREE_CODE (_p1))
4783 : {
4784 0 : case VEC_COND_EXPR:
4785 0 : {
4786 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4787 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4788 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4789 0 : {
4790 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4791 0 : if (VECTOR_TYPE_P (type)
4792 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4793 : || types_match (type, TREE_TYPE (captures[3]))
4794 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4795 : || (optimize_vectors_before_lowering_p ()
4796 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4797 : )
4798 : {
4799 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1561;
4800 0 : {
4801 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1561;
4802 0 : tree res_op0;
4803 0 : res_op0 = captures[2];
4804 0 : tree res_op1;
4805 0 : {
4806 0 : tree _o1[2], _r1;
4807 0 : _o1[0] = unshare_expr (captures[0]);
4808 0 : _o1[1] = captures[3];
4809 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4810 0 : if (EXPR_P (_r1))
4811 0 : goto next_after_fail1561;
4812 0 : res_op1 = _r1;
4813 : }
4814 0 : tree res_op2;
4815 0 : {
4816 0 : tree _o1[2], _r1;
4817 0 : _o1[0] = captures[0];
4818 0 : _o1[1] = captures[4];
4819 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4820 0 : if (EXPR_P (_r1))
4821 0 : goto next_after_fail1561;
4822 0 : res_op2 = _r1;
4823 : }
4824 0 : tree _r;
4825 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4826 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
4827 0 : return _r;
4828 : }
4829 0 : next_after_fail1561:;
4830 : }
4831 : }
4832 0 : break;
4833 : }
4834 : default:;
4835 : }
4836 : return NULL_TREE;
4837 : }
4838 :
4839 : tree
4840 4435268 : 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)
4841 : {
4842 4435268 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4843 4435268 : if (integer_onep (_p1))
4844 : {
4845 2946924 : {
4846 2946924 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4847 2946924 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4848 2946924 : if (res) return res;
4849 : }
4850 : }
4851 1488344 : switch (TREE_CODE (_p0))
4852 : {
4853 9465 : CASE_CONVERT:
4854 9465 : {
4855 9465 : tree _q20 = TREE_OPERAND (_p0, 0);
4856 9465 : switch (TREE_CODE (_p1))
4857 : {
4858 0 : CASE_CONVERT:
4859 0 : {
4860 0 : tree _q40 = TREE_OPERAND (_p1, 0);
4861 0 : switch (TREE_CODE (_q40))
4862 : {
4863 0 : case LSHIFT_EXPR:
4864 0 : {
4865 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4866 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4867 0 : if (integer_onep (_q50))
4868 : {
4869 0 : {
4870 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
4871 0 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4872 0 : if (res) return res;
4873 : }
4874 : }
4875 : break;
4876 : }
4877 : default:;
4878 : }
4879 : break;
4880 : }
4881 0 : case LSHIFT_EXPR:
4882 0 : {
4883 0 : tree _q40 = TREE_OPERAND (_p1, 0);
4884 0 : tree _q41 = TREE_OPERAND (_p1, 1);
4885 0 : if (integer_onep (_q40))
4886 : {
4887 0 : {
4888 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
4889 0 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4890 0 : if (res) return res;
4891 : }
4892 : }
4893 : break;
4894 : }
4895 : default:;
4896 : }
4897 : break;
4898 : }
4899 1488344 : default:;
4900 : }
4901 1488344 : switch (TREE_CODE (_p1))
4902 : {
4903 2 : CASE_CONVERT:
4904 2 : {
4905 2 : tree _q30 = TREE_OPERAND (_p1, 0);
4906 2 : switch (TREE_CODE (_q30))
4907 : {
4908 0 : case LSHIFT_EXPR:
4909 0 : {
4910 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4911 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4912 0 : if (integer_onep (_q40))
4913 : {
4914 0 : {
4915 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
4916 0 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4917 0 : if (res) return res;
4918 : }
4919 : }
4920 : break;
4921 : }
4922 : default:;
4923 : }
4924 : break;
4925 : }
4926 0 : case LSHIFT_EXPR:
4927 0 : {
4928 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4929 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4930 0 : if (integer_onep (_q30))
4931 : {
4932 0 : {
4933 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
4934 0 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4935 0 : if (res) return res;
4936 : }
4937 : }
4938 : break;
4939 : }
4940 1488344 : default:;
4941 : }
4942 1488344 : if (integer_zerop (_p0))
4943 : {
4944 0 : {
4945 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4946 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4947 0 : if (res) return res;
4948 : }
4949 : }
4950 1488344 : switch (TREE_CODE (_p1))
4951 : {
4952 0 : case SSA_NAME:
4953 0 : {
4954 0 : {
4955 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4956 0 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4957 0 : if (res) return res;
4958 : }
4959 0 : break;
4960 : }
4961 1488344 : default:;
4962 : }
4963 1488344 : if (integer_minus_onep (_p1))
4964 : {
4965 0 : {
4966 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4967 0 : tree res = generic_simplify_310 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4968 0 : if (res) return res;
4969 : }
4970 : }
4971 1488344 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4972 : {
4973 0 : {
4974 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4975 0 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4976 0 : if (res) return res;
4977 : }
4978 : }
4979 1488344 : switch (TREE_CODE (_p1))
4980 : {
4981 0 : case ABS_EXPR:
4982 0 : {
4983 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4984 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4985 : {
4986 0 : {
4987 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4988 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
4989 0 : if (res) return res;
4990 : }
4991 : }
4992 : break;
4993 : }
4994 1488344 : default:;
4995 : }
4996 1488344 : switch (TREE_CODE (_p0))
4997 : {
4998 0 : case ABS_EXPR:
4999 0 : {
5000 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5001 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5002 : {
5003 0 : {
5004 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5005 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5006 0 : if (res) return res;
5007 : }
5008 : }
5009 : break;
5010 : }
5011 1488344 : default:;
5012 : }
5013 1488344 : switch (TREE_CODE (_p1))
5014 : {
5015 0 : case NEGATE_EXPR:
5016 0 : {
5017 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5018 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5019 : {
5020 0 : {
5021 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5022 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5023 0 : if (res) return res;
5024 : }
5025 : }
5026 : break;
5027 : }
5028 1488344 : default:;
5029 : }
5030 1488344 : switch (TREE_CODE (_p0))
5031 : {
5032 1466 : case NEGATE_EXPR:
5033 1466 : {
5034 1466 : tree _q20 = TREE_OPERAND (_p0, 0);
5035 1466 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5036 : {
5037 0 : {
5038 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5039 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5040 0 : if (res) return res;
5041 : }
5042 : }
5043 : break;
5044 : }
5045 0 : case EXACT_DIV_EXPR:
5046 0 : {
5047 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5048 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5049 0 : switch (TREE_CODE (_q21))
5050 : {
5051 0 : case INTEGER_CST:
5052 0 : {
5053 0 : switch (TREE_CODE (_p1))
5054 : {
5055 0 : case INTEGER_CST:
5056 0 : {
5057 0 : {
5058 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5059 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5060 0 : if (res) return res;
5061 : }
5062 0 : break;
5063 : }
5064 : default:;
5065 : }
5066 : break;
5067 : }
5068 : default:;
5069 : }
5070 : break;
5071 : }
5072 9465 : CASE_CONVERT:
5073 9465 : {
5074 9465 : tree _q20 = TREE_OPERAND (_p0, 0);
5075 9465 : switch (TREE_CODE (_q20))
5076 : {
5077 0 : case BIT_AND_EXPR:
5078 0 : {
5079 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5080 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5081 0 : switch (TREE_CODE (_q31))
5082 : {
5083 0 : case INTEGER_CST:
5084 0 : {
5085 0 : switch (TREE_CODE (_p1))
5086 : {
5087 0 : case INTEGER_CST:
5088 0 : {
5089 0 : {
5090 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5091 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5092 0 : if (res) return res;
5093 : }
5094 0 : break;
5095 : }
5096 : default:;
5097 : }
5098 : break;
5099 : }
5100 : default:;
5101 : }
5102 : break;
5103 : }
5104 : default:;
5105 : }
5106 : break;
5107 : }
5108 0 : case BIT_AND_EXPR:
5109 0 : {
5110 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5111 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5112 0 : switch (TREE_CODE (_q21))
5113 : {
5114 0 : case INTEGER_CST:
5115 0 : {
5116 0 : switch (TREE_CODE (_p1))
5117 : {
5118 0 : case INTEGER_CST:
5119 0 : {
5120 0 : {
5121 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5122 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5123 0 : if (res) return res;
5124 : }
5125 0 : break;
5126 : }
5127 : default:;
5128 : }
5129 : break;
5130 : }
5131 : default:;
5132 : }
5133 : break;
5134 : }
5135 18648 : case MULT_EXPR:
5136 18648 : {
5137 18648 : tree _q20 = TREE_OPERAND (_p0, 0);
5138 18648 : tree _q21 = TREE_OPERAND (_p0, 1);
5139 18648 : if (integer_pow2p (_q21))
5140 : {
5141 17516 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5142 : {
5143 17436 : {
5144 17436 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5145 17436 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5146 17436 : if (res) return res;
5147 : }
5148 : }
5149 : }
5150 1219 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5151 : {
5152 7 : {
5153 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5154 7 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5155 7 : if (res) return res;
5156 : }
5157 : }
5158 1212 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5159 : {
5160 0 : {
5161 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5162 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5163 0 : if (res) return res;
5164 : }
5165 : }
5166 1212 : switch (TREE_CODE (_q21))
5167 : {
5168 1212 : case INTEGER_CST:
5169 1212 : {
5170 1212 : switch (TREE_CODE (_p1))
5171 : {
5172 0 : case MULT_EXPR:
5173 0 : {
5174 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5175 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5176 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5177 : {
5178 0 : switch (TREE_CODE (_q51))
5179 : {
5180 0 : case INTEGER_CST:
5181 0 : {
5182 0 : {
5183 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5184 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5185 0 : if (res) return res;
5186 : }
5187 0 : break;
5188 : }
5189 : default:;
5190 : }
5191 : }
5192 : break;
5193 : }
5194 : default:;
5195 : }
5196 : break;
5197 : }
5198 : default:;
5199 : }
5200 : break;
5201 : }
5202 0 : case VEC_COND_EXPR:
5203 0 : {
5204 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5205 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5206 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5207 0 : switch (TREE_CODE (_p1))
5208 : {
5209 0 : case VEC_COND_EXPR:
5210 0 : {
5211 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5212 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5213 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5214 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5215 : {
5216 0 : {
5217 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5218 0 : if (VECTOR_TYPE_P (type)
5219 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5220 : || types_match (type, TREE_TYPE (captures[2]))
5221 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5222 : || (optimize_vectors_before_lowering_p ()
5223 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5224 : )
5225 : {
5226 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1568;
5227 0 : {
5228 0 : tree res_op0;
5229 0 : res_op0 = captures[1];
5230 0 : tree res_op1;
5231 0 : {
5232 0 : tree _o1[2], _r1;
5233 0 : _o1[0] = captures[2];
5234 0 : _o1[1] = captures[5];
5235 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5236 0 : if (EXPR_P (_r1))
5237 0 : goto next_after_fail1568;
5238 0 : res_op1 = _r1;
5239 : }
5240 0 : tree res_op2;
5241 0 : {
5242 0 : tree _o1[2], _r1;
5243 0 : _o1[0] = captures[3];
5244 0 : _o1[1] = captures[6];
5245 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5246 0 : if (EXPR_P (_r1))
5247 0 : goto next_after_fail1568;
5248 0 : res_op2 = _r1;
5249 : }
5250 0 : tree _r;
5251 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5252 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
5253 0 : return _r;
5254 : }
5255 0 : next_after_fail1568:;
5256 : }
5257 : }
5258 : }
5259 : break;
5260 : }
5261 0 : default:;
5262 : }
5263 0 : {
5264 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5265 0 : if (VECTOR_TYPE_P (type)
5266 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5267 : || types_match (type, TREE_TYPE (captures[2]))
5268 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5269 : || (optimize_vectors_before_lowering_p ()
5270 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5271 : )
5272 : {
5273 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
5274 0 : {
5275 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1569;
5276 0 : tree res_op0;
5277 0 : res_op0 = captures[1];
5278 0 : tree res_op1;
5279 0 : {
5280 0 : tree _o1[2], _r1;
5281 0 : _o1[0] = captures[2];
5282 0 : _o1[1] = unshare_expr (captures[4]);
5283 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5284 0 : if (EXPR_P (_r1))
5285 0 : goto next_after_fail1569;
5286 0 : res_op1 = _r1;
5287 : }
5288 0 : tree res_op2;
5289 0 : {
5290 0 : tree _o1[2], _r1;
5291 0 : _o1[0] = captures[3];
5292 0 : _o1[1] = captures[4];
5293 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5294 0 : if (EXPR_P (_r1))
5295 0 : goto next_after_fail1569;
5296 0 : res_op2 = _r1;
5297 : }
5298 0 : tree _r;
5299 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
5301 0 : return _r;
5302 : }
5303 0 : next_after_fail1569:;
5304 : }
5305 : }
5306 0 : break;
5307 : }
5308 1470908 : default:;
5309 : }
5310 1470908 : switch (TREE_CODE (_p1))
5311 : {
5312 0 : case VEC_COND_EXPR:
5313 0 : {
5314 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5315 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5316 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5317 0 : {
5318 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5319 0 : if (VECTOR_TYPE_P (type)
5320 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5321 : || types_match (type, TREE_TYPE (captures[3]))
5322 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5323 : || (optimize_vectors_before_lowering_p ()
5324 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5325 : )
5326 : {
5327 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
5328 0 : {
5329 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1570;
5330 0 : tree res_op0;
5331 0 : res_op0 = captures[2];
5332 0 : tree res_op1;
5333 0 : {
5334 0 : tree _o1[2], _r1;
5335 0 : _o1[0] = unshare_expr (captures[0]);
5336 0 : _o1[1] = captures[3];
5337 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5338 0 : if (EXPR_P (_r1))
5339 0 : goto next_after_fail1570;
5340 0 : res_op1 = _r1;
5341 : }
5342 0 : tree res_op2;
5343 0 : {
5344 0 : tree _o1[2], _r1;
5345 0 : _o1[0] = captures[0];
5346 0 : _o1[1] = captures[4];
5347 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5348 0 : if (EXPR_P (_r1))
5349 0 : goto next_after_fail1570;
5350 0 : res_op2 = _r1;
5351 : }
5352 0 : tree _r;
5353 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5354 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
5355 0 : return _r;
5356 : }
5357 0 : next_after_fail1570:;
5358 : }
5359 : }
5360 0 : break;
5361 : }
5362 : default:;
5363 : }
5364 : return NULL_TREE;
5365 : }
5366 :
5367 : tree
5368 10375479 : generic_simplify_LE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5369 : {
5370 10375479 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5371 10375479 : switch (TREE_CODE (_p0))
5372 : {
5373 2318 : case RDIV_EXPR:
5374 2318 : {
5375 2318 : tree _q20 = TREE_OPERAND (_p0, 0);
5376 2318 : tree _q21 = TREE_OPERAND (_p0, 1);
5377 2318 : switch (TREE_CODE (_q20))
5378 : {
5379 548 : case REAL_CST:
5380 548 : {
5381 548 : if (real_zerop (_p1))
5382 : {
5383 2 : {
5384 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5385 2 : tree res = generic_simplify_370 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
5386 2 : if (res) return res;
5387 : }
5388 : }
5389 : break;
5390 : }
5391 : default:;
5392 : }
5393 : break;
5394 : }
5395 10375477 : default:;
5396 : }
5397 10375477 : switch (TREE_CODE (_p1))
5398 : {
5399 7 : case TRUNC_MOD_EXPR:
5400 7 : {
5401 7 : tree _q30 = TREE_OPERAND (_p1, 0);
5402 7 : tree _q31 = TREE_OPERAND (_p1, 1);
5403 7 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5404 : {
5405 0 : {
5406 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5407 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, captures, GE_EXPR);
5408 0 : if (res) return res;
5409 : }
5410 : }
5411 : break;
5412 : }
5413 10375477 : default:;
5414 : }
5415 10375477 : switch (TREE_CODE (_p0))
5416 : {
5417 61881 : case MULT_EXPR:
5418 61881 : {
5419 61881 : tree _q20 = TREE_OPERAND (_p0, 0);
5420 61881 : tree _q21 = TREE_OPERAND (_p0, 1);
5421 61881 : switch (TREE_CODE (_p1))
5422 : {
5423 2720 : case MULT_EXPR:
5424 2720 : {
5425 2720 : tree _q50 = TREE_OPERAND (_p1, 0);
5426 2720 : tree _q51 = TREE_OPERAND (_p1, 1);
5427 2720 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5428 : {
5429 1869 : {
5430 1869 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5431 1869 : tree res = generic_simplify_372 (loc, type, _p0, _p1, captures, LE_EXPR);
5432 1869 : if (res) return res;
5433 : }
5434 : }
5435 1739 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5436 : {
5437 1 : {
5438 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5439 1 : tree res = generic_simplify_372 (loc, type, _p0, _p1, captures, LE_EXPR);
5440 1 : if (res) return res;
5441 : }
5442 : }
5443 1739 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5444 : {
5445 4 : {
5446 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5447 4 : tree res = generic_simplify_372 (loc, type, _p0, _p1, captures, LE_EXPR);
5448 4 : if (res) return res;
5449 : }
5450 : }
5451 1739 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5452 : {
5453 315 : {
5454 315 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5455 315 : tree res = generic_simplify_372 (loc, type, _p0, _p1, captures, LE_EXPR);
5456 315 : if (res) return res;
5457 : }
5458 : }
5459 : break;
5460 : }
5461 : default:;
5462 : }
5463 : break;
5464 : }
5465 1726644 : case PLUS_EXPR:
5466 1726644 : {
5467 1726644 : tree _q20 = TREE_OPERAND (_p0, 0);
5468 1726644 : tree _q21 = TREE_OPERAND (_p0, 1);
5469 1726644 : if (integer_minus_onep (_q21))
5470 : {
5471 559903 : switch (TREE_CODE (_p1))
5472 : {
5473 356610 : case INTEGER_CST:
5474 356610 : {
5475 356610 : {
5476 356610 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5477 356610 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
5478 356610 : if (res) return res;
5479 : }
5480 356608 : break;
5481 : }
5482 : default:;
5483 : }
5484 : }
5485 1726642 : switch (TREE_CODE (_p1))
5486 : {
5487 87345 : case PLUS_EXPR:
5488 87345 : {
5489 87345 : tree _q50 = TREE_OPERAND (_p1, 0);
5490 87345 : tree _q51 = TREE_OPERAND (_p1, 1);
5491 87345 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5492 : {
5493 7070 : {
5494 7070 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5495 7070 : tree res = generic_simplify_373 (loc, type, _p0, _p1, captures, LE_EXPR);
5496 7070 : if (res) return res;
5497 : }
5498 : }
5499 83214 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5500 : {
5501 13 : {
5502 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5503 13 : tree res = generic_simplify_373 (loc, type, _p0, _p1, captures, LE_EXPR);
5504 13 : if (res) return res;
5505 : }
5506 : }
5507 83214 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5508 : {
5509 191 : {
5510 191 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5511 191 : tree res = generic_simplify_373 (loc, type, _p0, _p1, captures, LE_EXPR);
5512 191 : if (res) return res;
5513 : }
5514 : }
5515 83206 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5516 : {
5517 6986 : {
5518 6986 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5519 6986 : tree res = generic_simplify_373 (loc, type, _p0, _p1, captures, LE_EXPR);
5520 6986 : if (res) return res;
5521 : }
5522 : }
5523 : break;
5524 : }
5525 1721977 : default:;
5526 : }
5527 1721977 : switch (TREE_CODE (_q21))
5528 : {
5529 1599895 : case INTEGER_CST:
5530 1599895 : {
5531 1599895 : switch (TREE_CODE (_p1))
5532 : {
5533 80629 : case PLUS_EXPR:
5534 80629 : {
5535 80629 : tree _q50 = TREE_OPERAND (_p1, 0);
5536 80629 : tree _q51 = TREE_OPERAND (_p1, 1);
5537 80629 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5538 : {
5539 2881 : {
5540 2881 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5541 2881 : tree res = generic_simplify_374 (loc, type, _p0, _p1, captures, LE_EXPR);
5542 2881 : if (res) return res;
5543 : }
5544 : }
5545 : break;
5546 : }
5547 : default:;
5548 : }
5549 : break;
5550 : }
5551 1721977 : default:;
5552 : }
5553 1721977 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5554 : {
5555 74047 : {
5556 74047 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5557 74047 : tree res = generic_simplify_375 (loc, type, _p0, _p1, captures, LE_EXPR);
5558 74047 : if (res) return res;
5559 : }
5560 : }
5561 1680264 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5562 : {
5563 3116 : {
5564 3116 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5565 3116 : tree res = generic_simplify_375 (loc, type, _p0, _p1, captures, LE_EXPR);
5566 3116 : if (res) return res;
5567 : }
5568 : }
5569 : break;
5570 : }
5571 2031245 : CASE_CONVERT:
5572 2031245 : {
5573 2031245 : tree _q20 = TREE_OPERAND (_p0, 0);
5574 2031245 : switch (TREE_CODE (_q20))
5575 : {
5576 0 : case EXACT_DIV_EXPR:
5577 0 : {
5578 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5579 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5580 0 : switch (TREE_CODE (_q31))
5581 : {
5582 0 : case INTEGER_CST:
5583 0 : {
5584 0 : switch (TREE_CODE (_p1))
5585 : {
5586 0 : CASE_CONVERT:
5587 0 : {
5588 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5589 0 : switch (TREE_CODE (_q60))
5590 : {
5591 0 : case EXACT_DIV_EXPR:
5592 0 : {
5593 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5594 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5595 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5596 : {
5597 0 : {
5598 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5599 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, LE_EXPR);
5600 0 : if (res) return res;
5601 : }
5602 : }
5603 : break;
5604 : }
5605 : default:;
5606 : }
5607 : break;
5608 : }
5609 : default:;
5610 : }
5611 : break;
5612 : }
5613 : default:;
5614 : }
5615 : break;
5616 : }
5617 : default:;
5618 : }
5619 : break;
5620 : }
5621 417 : case EXACT_DIV_EXPR:
5622 417 : {
5623 417 : tree _q20 = TREE_OPERAND (_p0, 0);
5624 417 : tree _q21 = TREE_OPERAND (_p0, 1);
5625 417 : switch (TREE_CODE (_q21))
5626 : {
5627 417 : case INTEGER_CST:
5628 417 : {
5629 417 : switch (TREE_CODE (_p1))
5630 : {
5631 0 : case EXACT_DIV_EXPR:
5632 0 : {
5633 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5634 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5635 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5636 : {
5637 0 : {
5638 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5639 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, LE_EXPR);
5640 0 : if (res) return res;
5641 : }
5642 : }
5643 : break;
5644 : }
5645 : default:;
5646 : }
5647 : break;
5648 : }
5649 : default:;
5650 : }
5651 : break;
5652 : }
5653 10811 : case TRUNC_DIV_EXPR:
5654 10811 : {
5655 10811 : tree _q20 = TREE_OPERAND (_p0, 0);
5656 10811 : tree _q21 = TREE_OPERAND (_p0, 1);
5657 10811 : switch (TREE_CODE (_q21))
5658 : {
5659 2814 : case INTEGER_CST:
5660 2814 : {
5661 2814 : switch (TREE_CODE (_p1))
5662 : {
5663 1389 : case INTEGER_CST:
5664 1389 : {
5665 1389 : {
5666 1389 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5667 1389 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, LE_EXPR);
5668 1389 : if (res) return res;
5669 : }
5670 679 : break;
5671 : }
5672 : default:;
5673 : }
5674 : break;
5675 : }
5676 : default:;
5677 : }
5678 : break;
5679 : }
5680 70144 : case MINUS_EXPR:
5681 70144 : {
5682 70144 : tree _q20 = TREE_OPERAND (_p0, 0);
5683 70144 : tree _q21 = TREE_OPERAND (_p0, 1);
5684 70144 : switch (TREE_CODE (_p1))
5685 : {
5686 500 : case MINUS_EXPR:
5687 500 : {
5688 500 : tree _q50 = TREE_OPERAND (_p1, 0);
5689 500 : tree _q51 = TREE_OPERAND (_p1, 1);
5690 500 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5691 : {
5692 54 : {
5693 54 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5694 54 : tree res = generic_simplify_376 (loc, type, _p0, _p1, captures, LE_EXPR);
5695 54 : if (res) return res;
5696 : }
5697 : }
5698 500 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5699 : {
5700 26 : {
5701 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5702 26 : tree res = generic_simplify_377 (loc, type, _p0, _p1, captures, LE_EXPR);
5703 26 : if (res) return res;
5704 : }
5705 : }
5706 : break;
5707 : }
5708 : default:;
5709 : }
5710 : break;
5711 : }
5712 5315 : case POINTER_DIFF_EXPR:
5713 5315 : {
5714 5315 : tree _q20 = TREE_OPERAND (_p0, 0);
5715 5315 : tree _q21 = TREE_OPERAND (_p0, 1);
5716 5315 : switch (TREE_CODE (_p1))
5717 : {
5718 251 : case POINTER_DIFF_EXPR:
5719 251 : {
5720 251 : tree _q50 = TREE_OPERAND (_p1, 0);
5721 251 : tree _q51 = TREE_OPERAND (_p1, 1);
5722 251 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5723 : {
5724 0 : {
5725 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5726 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, LE_EXPR);
5727 0 : if (res) return res;
5728 : }
5729 : }
5730 251 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5731 : {
5732 0 : {
5733 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5734 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, LE_EXPR);
5735 0 : if (res) return res;
5736 : }
5737 : }
5738 : break;
5739 : }
5740 : default:;
5741 : }
5742 : break;
5743 : }
5744 10327097 : default:;
5745 : }
5746 10327097 : switch (TREE_CODE (_p1))
5747 : {
5748 118489 : case PLUS_EXPR:
5749 118489 : {
5750 118489 : tree _q30 = TREE_OPERAND (_p1, 0);
5751 118489 : tree _q31 = TREE_OPERAND (_p1, 1);
5752 118489 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5753 : {
5754 0 : {
5755 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5756 0 : tree res = generic_simplify_375 (loc, type, _p0, _p1, captures, GE_EXPR);
5757 0 : if (res) return res;
5758 : }
5759 : }
5760 118489 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5761 : {
5762 57 : {
5763 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
5764 57 : tree res = generic_simplify_375 (loc, type, _p0, _p1, captures, GE_EXPR);
5765 57 : if (res) return res;
5766 : }
5767 : }
5768 : break;
5769 : }
5770 1215 : case MINUS_EXPR:
5771 1215 : {
5772 1215 : tree _q30 = TREE_OPERAND (_p1, 0);
5773 1215 : tree _q31 = TREE_OPERAND (_p1, 1);
5774 1215 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5775 : {
5776 0 : {
5777 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5778 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, LE_EXPR);
5779 0 : if (res) return res;
5780 : }
5781 : }
5782 : break;
5783 : }
5784 10327070 : default:;
5785 : }
5786 10327070 : switch (TREE_CODE (_p0))
5787 : {
5788 70144 : case MINUS_EXPR:
5789 70144 : {
5790 70144 : tree _q20 = TREE_OPERAND (_p0, 0);
5791 70144 : tree _q21 = TREE_OPERAND (_p0, 1);
5792 70144 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5793 : {
5794 2510 : {
5795 2510 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5796 2510 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, GE_EXPR);
5797 2510 : if (res) return res;
5798 : }
5799 : }
5800 : break;
5801 : }
5802 5260 : case BIT_AND_EXPR:
5803 5260 : {
5804 5260 : tree _q20 = TREE_OPERAND (_p0, 0);
5805 5260 : tree _q21 = TREE_OPERAND (_p0, 1);
5806 5260 : if (tree_expr_nonnegative_p (_q20))
5807 : {
5808 4456 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5809 : {
5810 0 : {
5811 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5812 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5813 0 : if (res) return res;
5814 : }
5815 : }
5816 : }
5817 5260 : if (tree_expr_nonnegative_p (_q21))
5818 : {
5819 4866 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5820 : {
5821 0 : {
5822 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5823 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5824 0 : if (res) return res;
5825 : }
5826 : }
5827 : }
5828 : break;
5829 : }
5830 10327070 : default:;
5831 : }
5832 10327070 : switch (TREE_CODE (_p1))
5833 : {
5834 46 : case BIT_IOR_EXPR:
5835 46 : {
5836 46 : tree _q30 = TREE_OPERAND (_p1, 0);
5837 46 : tree _q31 = TREE_OPERAND (_p1, 1);
5838 46 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5839 : {
5840 0 : if (tree_expr_nonnegative_p (_q30))
5841 : {
5842 0 : {
5843 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
5844 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
5845 0 : if (res) return res;
5846 : }
5847 : }
5848 : }
5849 46 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5850 : {
5851 0 : if (tree_expr_nonnegative_p (_q31))
5852 : {
5853 0 : {
5854 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5855 0 : tree res = generic_simplify_378 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
5856 0 : if (res) return res;
5857 : }
5858 : }
5859 : }
5860 : break;
5861 : }
5862 10327070 : default:;
5863 : }
5864 10327070 : switch (TREE_CODE (_p0))
5865 : {
5866 4378 : case MAX_EXPR:
5867 4378 : {
5868 4378 : tree _q20 = TREE_OPERAND (_p0, 0);
5869 4378 : tree _q21 = TREE_OPERAND (_p0, 1);
5870 4378 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5871 : {
5872 0 : {
5873 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5874 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
5875 0 : if (res) return res;
5876 : }
5877 : }
5878 4378 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5879 : {
5880 1 : {
5881 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5882 1 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
5883 1 : if (res) return res;
5884 : }
5885 : }
5886 4377 : switch (TREE_CODE (_q21))
5887 : {
5888 4136 : case INTEGER_CST:
5889 4136 : {
5890 4136 : switch (TREE_CODE (_p1))
5891 : {
5892 0 : case INTEGER_CST:
5893 0 : {
5894 0 : {
5895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5896 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, BIT_AND_EXPR);
5897 0 : if (res) return res;
5898 : }
5899 0 : break;
5900 : }
5901 : default:;
5902 : }
5903 : break;
5904 : }
5905 : default:;
5906 : }
5907 : break;
5908 : }
5909 10327069 : default:;
5910 : }
5911 10327069 : switch (TREE_CODE (_p1))
5912 : {
5913 306 : case MIN_EXPR:
5914 306 : {
5915 306 : tree _q30 = TREE_OPERAND (_p1, 0);
5916 306 : tree _q31 = TREE_OPERAND (_p1, 1);
5917 306 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5918 : {
5919 0 : {
5920 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
5921 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
5922 0 : if (res) return res;
5923 : }
5924 : }
5925 306 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5926 : {
5927 0 : {
5928 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5929 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
5930 0 : if (res) return res;
5931 : }
5932 : }
5933 : break;
5934 : }
5935 13 : case MAX_EXPR:
5936 13 : {
5937 13 : tree _q30 = TREE_OPERAND (_p1, 0);
5938 13 : tree _q31 = TREE_OPERAND (_p1, 1);
5939 13 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5940 : {
5941 0 : {
5942 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
5943 0 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
5944 0 : if (res) return res;
5945 : }
5946 : }
5947 13 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5948 : {
5949 0 : {
5950 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5951 0 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
5952 0 : if (res) return res;
5953 : }
5954 : }
5955 : break;
5956 : }
5957 10327069 : default:;
5958 : }
5959 10327069 : switch (TREE_CODE (_p0))
5960 : {
5961 9656 : case MIN_EXPR:
5962 9656 : {
5963 9656 : tree _q20 = TREE_OPERAND (_p0, 0);
5964 9656 : tree _q21 = TREE_OPERAND (_p0, 1);
5965 9656 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5966 : {
5967 0 : {
5968 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5969 0 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
5970 0 : if (res) return res;
5971 : }
5972 : }
5973 9656 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5974 : {
5975 0 : {
5976 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5977 0 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
5978 0 : if (res) return res;
5979 : }
5980 : }
5981 9656 : switch (TREE_CODE (_q21))
5982 : {
5983 919 : case INTEGER_CST:
5984 919 : {
5985 919 : switch (TREE_CODE (_p1))
5986 : {
5987 0 : case INTEGER_CST:
5988 0 : {
5989 0 : {
5990 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5991 0 : tree res = generic_simplify_379 (loc, type, _p0, _p1, captures, MIN_EXPR, LE_EXPR, BIT_IOR_EXPR);
5992 0 : if (res) return res;
5993 : }
5994 0 : break;
5995 : }
5996 : default:;
5997 : }
5998 : break;
5999 : }
6000 : default:;
6001 : }
6002 : break;
6003 : }
6004 9 : case VEC_COND_EXPR:
6005 9 : {
6006 9 : tree _q20 = TREE_OPERAND (_p0, 0);
6007 9 : tree _q21 = TREE_OPERAND (_p0, 1);
6008 9 : tree _q22 = TREE_OPERAND (_p0, 2);
6009 9 : switch (TREE_CODE (_p1))
6010 : {
6011 2 : case VEC_COND_EXPR:
6012 2 : {
6013 2 : tree _q60 = TREE_OPERAND (_p1, 0);
6014 2 : tree _q61 = TREE_OPERAND (_p1, 1);
6015 2 : tree _q62 = TREE_OPERAND (_p1, 2);
6016 2 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6017 : {
6018 0 : {
6019 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
6020 0 : if (VECTOR_TYPE_P (type)
6021 0 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6022 0 : || types_match (type, TREE_TYPE (captures[2]))
6023 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6024 : || (optimize_vectors_before_lowering_p ()
6025 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6026 : )
6027 : {
6028 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1616;
6029 0 : {
6030 0 : tree res_op0;
6031 0 : res_op0 = captures[1];
6032 0 : tree res_op1;
6033 0 : {
6034 0 : tree _o1[2], _r1;
6035 0 : _o1[0] = captures[2];
6036 0 : _o1[1] = captures[5];
6037 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6038 0 : if (EXPR_P (_r1))
6039 0 : goto next_after_fail1616;
6040 0 : res_op1 = _r1;
6041 : }
6042 0 : tree res_op2;
6043 0 : {
6044 0 : tree _o1[2], _r1;
6045 0 : _o1[0] = captures[3];
6046 0 : _o1[1] = captures[6];
6047 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6048 0 : if (EXPR_P (_r1))
6049 0 : goto next_after_fail1616;
6050 0 : res_op2 = _r1;
6051 : }
6052 0 : tree _r;
6053 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6054 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
6055 0 : return _r;
6056 : }
6057 0 : next_after_fail1616:;
6058 : }
6059 : }
6060 : }
6061 : break;
6062 : }
6063 9 : default:;
6064 : }
6065 9 : {
6066 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
6067 9 : if (VECTOR_TYPE_P (type)
6068 9 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6069 9 : || types_match (type, TREE_TYPE (captures[2]))
6070 9 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6071 : || (optimize_vectors_before_lowering_p ()
6072 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6073 : )
6074 : {
6075 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1617;
6076 9 : {
6077 9 : if (! tree_invariant_p (captures[4])) goto next_after_fail1617;
6078 7 : tree res_op0;
6079 7 : res_op0 = captures[1];
6080 7 : tree res_op1;
6081 7 : {
6082 7 : tree _o1[2], _r1;
6083 7 : _o1[0] = captures[2];
6084 7 : _o1[1] = unshare_expr (captures[4]);
6085 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6086 7 : if (EXPR_P (_r1))
6087 0 : goto next_after_fail1617;
6088 7 : res_op1 = _r1;
6089 : }
6090 7 : tree res_op2;
6091 7 : {
6092 7 : tree _o1[2], _r1;
6093 7 : _o1[0] = captures[3];
6094 7 : _o1[1] = captures[4];
6095 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6096 7 : if (EXPR_P (_r1))
6097 0 : goto next_after_fail1617;
6098 7 : res_op2 = _r1;
6099 : }
6100 7 : tree _r;
6101 7 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6102 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
6103 7 : return _r;
6104 : }
6105 2 : next_after_fail1617:;
6106 : }
6107 : }
6108 2 : break;
6109 : }
6110 10327062 : default:;
6111 : }
6112 10327062 : switch (TREE_CODE (_p1))
6113 : {
6114 2 : case VEC_COND_EXPR:
6115 2 : {
6116 2 : tree _q30 = TREE_OPERAND (_p1, 0);
6117 2 : tree _q31 = TREE_OPERAND (_p1, 1);
6118 2 : tree _q32 = TREE_OPERAND (_p1, 2);
6119 2 : {
6120 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
6121 2 : if (VECTOR_TYPE_P (type)
6122 2 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6123 2 : || types_match (type, TREE_TYPE (captures[3]))
6124 2 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
6125 : || (optimize_vectors_before_lowering_p ()
6126 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
6127 : )
6128 : {
6129 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1618;
6130 2 : {
6131 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail1618;
6132 0 : tree res_op0;
6133 0 : res_op0 = captures[2];
6134 0 : tree res_op1;
6135 0 : {
6136 0 : tree _o1[2], _r1;
6137 0 : _o1[0] = unshare_expr (captures[0]);
6138 0 : _o1[1] = captures[3];
6139 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6140 0 : if (EXPR_P (_r1))
6141 0 : goto next_after_fail1618;
6142 0 : res_op1 = _r1;
6143 : }
6144 0 : tree res_op2;
6145 0 : {
6146 0 : tree _o1[2], _r1;
6147 0 : _o1[0] = captures[0];
6148 0 : _o1[1] = captures[4];
6149 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6150 0 : if (EXPR_P (_r1))
6151 0 : goto next_after_fail1618;
6152 0 : res_op2 = _r1;
6153 : }
6154 0 : tree _r;
6155 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6156 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
6157 0 : return _r;
6158 : }
6159 2 : next_after_fail1618:;
6160 : }
6161 : }
6162 2 : break;
6163 : }
6164 10327062 : default:;
6165 : }
6166 10327062 : if (uniform_integer_cst_p (_p1))
6167 : {
6168 7653775 : {
6169 7653775 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6170 7653775 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, LE_EXPR, LT_EXPR);
6171 7653775 : if (res) return res;
6172 : }
6173 : }
6174 10230991 : switch (TREE_CODE (_p0))
6175 : {
6176 60479 : case MULT_EXPR:
6177 60479 : {
6178 60479 : tree _q20 = TREE_OPERAND (_p0, 0);
6179 60479 : tree _q21 = TREE_OPERAND (_p0, 1);
6180 60479 : switch (TREE_CODE (_q21))
6181 : {
6182 53144 : case INTEGER_CST:
6183 53144 : {
6184 53144 : if (integer_zerop (_p1))
6185 : {
6186 948 : {
6187 948 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6188 948 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6189 948 : if (res) return res;
6190 : }
6191 : }
6192 : break;
6193 : }
6194 : default:;
6195 : }
6196 : break;
6197 : }
6198 10230246 : default:;
6199 : }
6200 10230246 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6201 : {
6202 4946 : {
6203 4946 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6204 4946 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, LE_EXPR);
6205 4946 : if (res) return res;
6206 : }
6207 : }
6208 10225342 : switch (TREE_CODE (_p0))
6209 : {
6210 2516 : case BIT_NOT_EXPR:
6211 2516 : {
6212 2516 : tree _q20 = TREE_OPERAND (_p0, 0);
6213 2516 : switch (TREE_CODE (_p1))
6214 : {
6215 0 : case BIT_NOT_EXPR:
6216 0 : {
6217 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6218 0 : {
6219 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
6220 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, LE_EXPR);
6221 0 : if (res) return res;
6222 : }
6223 0 : break;
6224 : }
6225 2516 : default:;
6226 : }
6227 2516 : {
6228 2516 : tree _p1_pops[1];
6229 2516 : if (tree_nop_convert (_p1, _p1_pops))
6230 : {
6231 1 : tree _q40 = _p1_pops[0];
6232 1 : switch (TREE_CODE (_q40))
6233 : {
6234 0 : case BIT_NOT_EXPR:
6235 0 : {
6236 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6237 0 : {
6238 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
6239 0 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, LE_EXPR);
6240 0 : if (res) return res;
6241 : }
6242 0 : break;
6243 : }
6244 : default:;
6245 : }
6246 : }
6247 : }
6248 2516 : if (CONSTANT_CLASS_P (_p1))
6249 : {
6250 2222 : {
6251 2222 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6252 2222 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6253 2222 : if (res) return res;
6254 : }
6255 : }
6256 : break;
6257 : }
6258 10223120 : default:;
6259 : }
6260 10223120 : {
6261 10223120 : tree _p0_pops[1];
6262 10223120 : if (tree_nop_convert (_p0, _p0_pops))
6263 : {
6264 1019026 : tree _q20 = _p0_pops[0];
6265 1019026 : switch (TREE_CODE (_q20))
6266 : {
6267 0 : case BIT_NOT_EXPR:
6268 0 : {
6269 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6270 0 : switch (TREE_CODE (_p1))
6271 : {
6272 0 : case BIT_NOT_EXPR:
6273 0 : {
6274 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6275 0 : {
6276 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
6277 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, LE_EXPR);
6278 0 : if (res) return res;
6279 : }
6280 0 : break;
6281 : }
6282 0 : default:;
6283 : }
6284 0 : {
6285 0 : tree _p1_pops[1];
6286 0 : if (tree_nop_convert (_p1, _p1_pops))
6287 : {
6288 0 : tree _q50 = _p1_pops[0];
6289 0 : switch (TREE_CODE (_q50))
6290 : {
6291 0 : case BIT_NOT_EXPR:
6292 0 : {
6293 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6294 0 : {
6295 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
6296 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, LE_EXPR);
6297 0 : if (res) return res;
6298 : }
6299 0 : break;
6300 : }
6301 : default:;
6302 : }
6303 : }
6304 : }
6305 0 : if (CONSTANT_CLASS_P (_p1))
6306 : {
6307 0 : {
6308 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
6309 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6310 0 : if (res) return res;
6311 : }
6312 : }
6313 : break;
6314 : }
6315 : default:;
6316 : }
6317 : }
6318 : }
6319 10223120 : switch (TREE_CODE (_p1))
6320 : {
6321 186323 : case REAL_CST:
6322 186323 : {
6323 186323 : {
6324 186323 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6325 186323 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, LE_EXPR);
6326 186323 : if (res) return res;
6327 : }
6328 186247 : break;
6329 : }
6330 10223044 : default:;
6331 : }
6332 10223044 : switch (TREE_CODE (_p0))
6333 : {
6334 1678638 : case PLUS_EXPR:
6335 1678638 : {
6336 1678638 : tree _q20 = TREE_OPERAND (_p0, 0);
6337 1678638 : tree _q21 = TREE_OPERAND (_p0, 1);
6338 1678638 : switch (TREE_CODE (_q21))
6339 : {
6340 86 : case REAL_CST:
6341 86 : {
6342 86 : switch (TREE_CODE (_p1))
6343 : {
6344 81 : case REAL_CST:
6345 81 : {
6346 81 : {
6347 81 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6348 81 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR);
6349 81 : if (res) return res;
6350 : }
6351 81 : break;
6352 : }
6353 : default:;
6354 : }
6355 : break;
6356 : }
6357 1577308 : case INTEGER_CST:
6358 1577308 : {
6359 1577308 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6360 : {
6361 1968 : {
6362 1968 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
6363 1968 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
6364 1968 : if (res) return res;
6365 : }
6366 : }
6367 : break;
6368 : }
6369 : default:;
6370 : }
6371 : break;
6372 : }
6373 64529 : case MINUS_EXPR:
6374 64529 : {
6375 64529 : tree _q20 = TREE_OPERAND (_p0, 0);
6376 64529 : tree _q21 = TREE_OPERAND (_p0, 1);
6377 64529 : switch (TREE_CODE (_q21))
6378 : {
6379 1225 : case REAL_CST:
6380 1225 : {
6381 1225 : switch (TREE_CODE (_p1))
6382 : {
6383 1202 : case REAL_CST:
6384 1202 : {
6385 1202 : {
6386 1202 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6387 1202 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, MINUS_EXPR, LE_EXPR);
6388 1202 : if (res) return res;
6389 : }
6390 1202 : break;
6391 : }
6392 : default:;
6393 : }
6394 : break;
6395 : }
6396 64529 : default:;
6397 : }
6398 64529 : switch (TREE_CODE (_q20))
6399 : {
6400 2 : case REAL_CST:
6401 2 : {
6402 2 : switch (TREE_CODE (_p1))
6403 : {
6404 0 : case REAL_CST:
6405 0 : {
6406 0 : {
6407 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6408 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, LE_EXPR);
6409 0 : if (res) return res;
6410 : }
6411 0 : break;
6412 : }
6413 : default:;
6414 : }
6415 : break;
6416 : }
6417 : default:;
6418 : }
6419 : break;
6420 : }
6421 11745 : case FLOAT_EXPR:
6422 11745 : {
6423 11745 : tree _q20 = TREE_OPERAND (_p0, 0);
6424 11745 : switch (TREE_CODE (_p1))
6425 : {
6426 0 : case FLOAT_EXPR:
6427 0 : {
6428 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6429 0 : {
6430 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6431 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6432 0 : if (res) return res;
6433 : }
6434 0 : break;
6435 : }
6436 235 : case REAL_CST:
6437 235 : {
6438 235 : {
6439 235 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6440 235 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6441 235 : if (res) return res;
6442 : }
6443 156 : break;
6444 : }
6445 : default:;
6446 : }
6447 : break;
6448 : }
6449 417 : case EXACT_DIV_EXPR:
6450 417 : {
6451 417 : tree _q20 = TREE_OPERAND (_p0, 0);
6452 417 : tree _q21 = TREE_OPERAND (_p0, 1);
6453 417 : switch (TREE_CODE (_q21))
6454 : {
6455 417 : case INTEGER_CST:
6456 417 : {
6457 417 : switch (TREE_CODE (_p1))
6458 : {
6459 340 : case INTEGER_CST:
6460 340 : {
6461 340 : {
6462 340 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6463 340 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
6464 340 : if (res) return res;
6465 : }
6466 0 : break;
6467 : }
6468 : default:;
6469 : }
6470 : break;
6471 : }
6472 : default:;
6473 : }
6474 : break;
6475 : }
6476 2028012 : CASE_CONVERT:
6477 2028012 : {
6478 2028012 : tree _q20 = TREE_OPERAND (_p0, 0);
6479 2028012 : switch (TREE_CODE (_q20))
6480 : {
6481 0 : case EXACT_DIV_EXPR:
6482 0 : {
6483 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6484 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6485 0 : switch (TREE_CODE (_q31))
6486 : {
6487 0 : case INTEGER_CST:
6488 0 : {
6489 0 : switch (TREE_CODE (_p1))
6490 : {
6491 0 : case INTEGER_CST:
6492 0 : {
6493 0 : {
6494 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6495 0 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6496 0 : if (res) return res;
6497 : }
6498 0 : break;
6499 : }
6500 : default:;
6501 : }
6502 : break;
6503 : }
6504 : default:;
6505 : }
6506 : break;
6507 : }
6508 2028012 : default:;
6509 : }
6510 2028012 : switch (TREE_CODE (_p1))
6511 : {
6512 110172 : CASE_CONVERT:
6513 110172 : {
6514 110172 : tree _q40 = TREE_OPERAND (_p1, 0);
6515 110172 : {
6516 110172 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6517 110172 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, LE_EXPR);
6518 110172 : if (res) return res;
6519 : }
6520 28832 : break;
6521 : }
6522 1946672 : default:;
6523 : }
6524 1946672 : {
6525 1946672 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
6526 1946672 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, LE_EXPR);
6527 1946672 : if (res) return res;
6528 : }
6529 1003914 : switch (TREE_CODE (_q20))
6530 : {
6531 5861 : case ADDR_EXPR:
6532 5861 : {
6533 5861 : switch (TREE_CODE (_p1))
6534 : {
6535 5550 : CASE_CONVERT:
6536 5550 : {
6537 5550 : tree _q40 = TREE_OPERAND (_p1, 0);
6538 5550 : switch (TREE_CODE (_q40))
6539 : {
6540 5550 : case ADDR_EXPR:
6541 5550 : {
6542 5550 : {
6543 5550 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6544 5550 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, LE_EXPR);
6545 5550 : if (res) return res;
6546 : }
6547 160 : break;
6548 : }
6549 : default:;
6550 : }
6551 : break;
6552 : }
6553 0 : case ADDR_EXPR:
6554 0 : {
6555 0 : {
6556 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6557 0 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, LE_EXPR);
6558 0 : if (res) return res;
6559 : }
6560 0 : break;
6561 : }
6562 : default:;
6563 : }
6564 : break;
6565 : }
6566 998524 : default:;
6567 : }
6568 998524 : if (uniform_integer_cst_p (_p1))
6569 : {
6570 536180 : {
6571 536180 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6572 536180 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR);
6573 536180 : if (res) return res;
6574 : }
6575 : }
6576 : break;
6577 : }
6578 5260 : case BIT_AND_EXPR:
6579 5260 : {
6580 5260 : tree _q20 = TREE_OPERAND (_p0, 0);
6581 5260 : tree _q21 = TREE_OPERAND (_p0, 1);
6582 5260 : switch (TREE_CODE (_q21))
6583 : {
6584 4779 : case INTEGER_CST:
6585 4779 : {
6586 4779 : switch (TREE_CODE (_p1))
6587 : {
6588 2712 : case INTEGER_CST:
6589 2712 : {
6590 2712 : {
6591 2712 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6592 2712 : tree res = generic_simplify_399 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
6593 2712 : if (res) return res;
6594 : }
6595 2665 : break;
6596 : }
6597 : default:;
6598 : }
6599 : break;
6600 : }
6601 : default:;
6602 : }
6603 : break;
6604 : }
6605 5462 : case NEGATE_EXPR:
6606 5462 : {
6607 5462 : tree _q20 = TREE_OPERAND (_p0, 0);
6608 5462 : switch (TREE_CODE (_p1))
6609 : {
6610 32 : case NEGATE_EXPR:
6611 32 : {
6612 32 : tree _q40 = TREE_OPERAND (_p1, 0);
6613 32 : {
6614 32 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6615 32 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6616 32 : if (res) return res;
6617 : }
6618 32 : break;
6619 : }
6620 5462 : default:;
6621 : }
6622 5462 : if (CONSTANT_CLASS_P (_p1))
6623 : {
6624 452 : {
6625 452 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6626 452 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6627 452 : if (res) return res;
6628 : }
6629 : }
6630 : break;
6631 : }
6632 1483 : case ADDR_EXPR:
6633 1483 : {
6634 1483 : switch (TREE_CODE (_p1))
6635 : {
6636 18 : CASE_CONVERT:
6637 18 : {
6638 18 : tree _q30 = TREE_OPERAND (_p1, 0);
6639 18 : switch (TREE_CODE (_q30))
6640 : {
6641 18 : case ADDR_EXPR:
6642 18 : {
6643 18 : {
6644 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
6645 18 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, LE_EXPR);
6646 18 : if (res) return res;
6647 : }
6648 0 : break;
6649 : }
6650 : default:;
6651 : }
6652 : break;
6653 : }
6654 645 : case ADDR_EXPR:
6655 645 : {
6656 645 : {
6657 645 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
6658 645 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, LE_EXPR);
6659 645 : if (res) return res;
6660 : }
6661 300 : break;
6662 : }
6663 : default:;
6664 : }
6665 : break;
6666 : }
6667 205589 : case CALL_EXPR:
6668 205589 : switch (get_call_combined_fn (_p0))
6669 : {
6670 2 : case CFN_BUILT_IN_SQRTF:
6671 2 : if (call_expr_nargs (_p0) == 1)
6672 : {
6673 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6674 2 : switch (TREE_CODE (_p1))
6675 : {
6676 2 : case REAL_CST:
6677 2 : {
6678 2 : {
6679 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6680 2 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6681 2 : if (res) return res;
6682 : }
6683 0 : break;
6684 : }
6685 0 : case CALL_EXPR:
6686 0 : switch (get_call_combined_fn (_p1))
6687 : {
6688 0 : case CFN_BUILT_IN_SQRTF:
6689 0 : if (call_expr_nargs (_p1) == 1)
6690 : {
6691 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6692 0 : {
6693 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6694 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6695 0 : if (res) return res;
6696 : }
6697 : }
6698 : break;
6699 : default:;
6700 : }
6701 : break;
6702 : default:;
6703 : }
6704 : }
6705 : break;
6706 0 : case CFN_BUILT_IN_SQRTL:
6707 0 : if (call_expr_nargs (_p0) == 1)
6708 : {
6709 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6710 0 : switch (TREE_CODE (_p1))
6711 : {
6712 0 : case REAL_CST:
6713 0 : {
6714 0 : {
6715 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6716 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6717 0 : if (res) return res;
6718 : }
6719 0 : break;
6720 : }
6721 0 : case CALL_EXPR:
6722 0 : switch (get_call_combined_fn (_p1))
6723 : {
6724 0 : case CFN_BUILT_IN_SQRTL:
6725 0 : if (call_expr_nargs (_p1) == 1)
6726 : {
6727 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6728 0 : {
6729 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6730 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6731 0 : if (res) return res;
6732 : }
6733 : }
6734 : break;
6735 : default:;
6736 : }
6737 : break;
6738 : default:;
6739 : }
6740 : }
6741 : break;
6742 2 : case CFN_BUILT_IN_SQRT:
6743 2 : if (call_expr_nargs (_p0) == 1)
6744 : {
6745 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6746 2 : switch (TREE_CODE (_p1))
6747 : {
6748 2 : case REAL_CST:
6749 2 : {
6750 2 : {
6751 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6752 2 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6753 2 : if (res) return res;
6754 : }
6755 2 : break;
6756 : }
6757 0 : case CALL_EXPR:
6758 0 : switch (get_call_combined_fn (_p1))
6759 : {
6760 0 : case CFN_BUILT_IN_SQRT:
6761 0 : if (call_expr_nargs (_p1) == 1)
6762 : {
6763 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6764 0 : {
6765 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6766 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6767 0 : if (res) return res;
6768 : }
6769 : }
6770 : break;
6771 : default:;
6772 : }
6773 : break;
6774 : default:;
6775 : }
6776 : }
6777 : break;
6778 0 : case CFN_SQRT:
6779 0 : if (call_expr_nargs (_p0) == 1)
6780 : {
6781 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6782 0 : switch (TREE_CODE (_p1))
6783 : {
6784 0 : case REAL_CST:
6785 0 : {
6786 0 : {
6787 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6788 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
6789 0 : if (res) return res;
6790 : }
6791 0 : break;
6792 : }
6793 0 : case CALL_EXPR:
6794 0 : switch (get_call_combined_fn (_p1))
6795 : {
6796 0 : case CFN_SQRT:
6797 0 : if (call_expr_nargs (_p1) == 1)
6798 : {
6799 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6800 0 : {
6801 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6802 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
6803 0 : if (res) return res;
6804 : }
6805 : }
6806 : break;
6807 : default:;
6808 : }
6809 : break;
6810 : default:;
6811 : }
6812 : }
6813 : break;
6814 : default:;
6815 : }
6816 : break;
6817 9168967 : default:;
6818 : }
6819 9168967 : if (uniform_integer_cst_p (_p1))
6820 : {
6821 6589908 : {
6822 6589908 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
6823 6589908 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR);
6824 6589908 : if (res) return res;
6825 : }
6826 : }
6827 8616389 : switch (TREE_CODE (_p0))
6828 : {
6829 961266 : CASE_CONVERT:
6830 961266 : {
6831 961266 : tree _q20 = TREE_OPERAND (_p0, 0);
6832 961266 : switch (TREE_CODE (_q20))
6833 : {
6834 96078 : case PLUS_EXPR:
6835 96078 : {
6836 96078 : tree _q30 = TREE_OPERAND (_q20, 0);
6837 96078 : tree _q31 = TREE_OPERAND (_q20, 1);
6838 96078 : switch (TREE_CODE (_q30))
6839 : {
6840 81896 : CASE_CONVERT:
6841 81896 : {
6842 81896 : tree _q40 = TREE_OPERAND (_q30, 0);
6843 81896 : switch (TREE_CODE (_q31))
6844 : {
6845 81313 : case INTEGER_CST:
6846 81313 : {
6847 81313 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6848 : {
6849 4 : {
6850 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
6851 4 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
6852 4 : if (res) return res;
6853 : }
6854 : }
6855 : break;
6856 : }
6857 : default:;
6858 : }
6859 : break;
6860 : }
6861 : default:;
6862 : }
6863 : break;
6864 : }
6865 : default:;
6866 : }
6867 : break;
6868 : }
6869 8616385 : default:;
6870 : }
6871 8616385 : switch (TREE_CODE (_p1))
6872 : {
6873 223791 : CASE_CONVERT:
6874 223791 : {
6875 223791 : tree _q30 = TREE_OPERAND (_p1, 0);
6876 223791 : switch (TREE_CODE (_q30))
6877 : {
6878 1939 : case PLUS_EXPR:
6879 1939 : {
6880 1939 : tree _q40 = TREE_OPERAND (_q30, 0);
6881 1939 : tree _q41 = TREE_OPERAND (_q30, 1);
6882 1939 : switch (TREE_CODE (_q40))
6883 : {
6884 426 : CASE_CONVERT:
6885 426 : {
6886 426 : tree _q50 = TREE_OPERAND (_q40, 0);
6887 426 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6888 : {
6889 0 : switch (TREE_CODE (_q41))
6890 : {
6891 0 : case INTEGER_CST:
6892 0 : {
6893 0 : {
6894 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
6895 0 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
6896 0 : if (res) return res;
6897 : }
6898 0 : break;
6899 : }
6900 : default:;
6901 : }
6902 : }
6903 : break;
6904 : }
6905 : default:;
6906 : }
6907 : break;
6908 : }
6909 : default:;
6910 : }
6911 : break;
6912 : }
6913 118146 : case PLUS_EXPR:
6914 118146 : {
6915 118146 : tree _q30 = TREE_OPERAND (_p1, 0);
6916 118146 : tree _q31 = TREE_OPERAND (_p1, 1);
6917 118146 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6918 : {
6919 30 : switch (TREE_CODE (_q31))
6920 : {
6921 30 : case INTEGER_CST:
6922 30 : {
6923 30 : {
6924 30 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
6925 30 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
6926 30 : if (res) return res;
6927 : }
6928 0 : break;
6929 : }
6930 : default:;
6931 : }
6932 : }
6933 : break;
6934 : }
6935 8616355 : default:;
6936 : }
6937 8616355 : switch (TREE_CODE (_p0))
6938 : {
6939 62421 : case MINUS_EXPR:
6940 62421 : {
6941 62421 : tree _q20 = TREE_OPERAND (_p0, 0);
6942 62421 : tree _q21 = TREE_OPERAND (_p0, 1);
6943 62421 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6944 : {
6945 2510 : {
6946 2510 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6947 2510 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, LE_EXPR);
6948 2510 : if (res) return res;
6949 : }
6950 : }
6951 : break;
6952 : }
6953 8616228 : default:;
6954 : }
6955 8616228 : switch (TREE_CODE (_p1))
6956 : {
6957 118116 : case PLUS_EXPR:
6958 118116 : {
6959 118116 : tree _q30 = TREE_OPERAND (_p1, 0);
6960 118116 : tree _q31 = TREE_OPERAND (_p1, 1);
6961 118116 : switch (TREE_CODE (_q30))
6962 : {
6963 4 : case MINUS_EXPR:
6964 4 : {
6965 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6966 4 : tree _q41 = TREE_OPERAND (_q30, 1);
6967 4 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6968 : {
6969 0 : if (integer_minus_onep (_q31))
6970 : {
6971 0 : {
6972 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
6973 0 : tree res = generic_simplify_400 (loc, type, _p0, _p1, captures, GE_EXPR);
6974 0 : if (res) return res;
6975 : }
6976 : }
6977 : }
6978 : break;
6979 : }
6980 : default:;
6981 : }
6982 : break;
6983 : }
6984 8616228 : default:;
6985 : }
6986 8616228 : switch (TREE_CODE (_p0))
6987 : {
6988 12 : case REALPART_EXPR:
6989 12 : {
6990 12 : tree _q20 = TREE_OPERAND (_p0, 0);
6991 12 : switch (TREE_CODE (_q20))
6992 : {
6993 0 : case CALL_EXPR:
6994 0 : switch (get_call_combined_fn (_q20))
6995 : {
6996 0 : case CFN_SUB_OVERFLOW:
6997 0 : if (call_expr_nargs (_q20) == 2)
6998 : {
6999 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7000 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
7001 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7002 : {
7003 0 : {
7004 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7005 0 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7006 0 : if (res) return res;
7007 : }
7008 : }
7009 : }
7010 : break;
7011 : default:;
7012 : }
7013 : break;
7014 : default:;
7015 : }
7016 : break;
7017 : }
7018 8616228 : default:;
7019 : }
7020 8616228 : switch (TREE_CODE (_p1))
7021 : {
7022 0 : case REALPART_EXPR:
7023 0 : {
7024 0 : tree _q30 = TREE_OPERAND (_p1, 0);
7025 0 : switch (TREE_CODE (_q30))
7026 : {
7027 0 : case CALL_EXPR:
7028 0 : switch (get_call_combined_fn (_q30))
7029 : {
7030 0 : case CFN_ADD_OVERFLOW:
7031 0 : if (call_expr_nargs (_q30) == 2)
7032 : {
7033 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
7034 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
7035 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7036 : {
7037 0 : {
7038 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7039 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7040 0 : if (res) return res;
7041 : }
7042 : }
7043 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7044 : {
7045 0 : {
7046 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q40 };
7047 0 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7048 0 : if (res) return res;
7049 : }
7050 : }
7051 : }
7052 : break;
7053 : default:;
7054 : }
7055 : break;
7056 : default:;
7057 : }
7058 : break;
7059 : }
7060 340 : case TRUNC_DIV_EXPR:
7061 340 : {
7062 340 : tree _q30 = TREE_OPERAND (_p1, 0);
7063 340 : tree _q31 = TREE_OPERAND (_p1, 1);
7064 340 : if (integer_all_onesp (_q30))
7065 : {
7066 0 : {
7067 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
7068 0 : tree res = generic_simplify_403 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7069 0 : if (res) return res;
7070 : }
7071 : }
7072 : break;
7073 : }
7074 8616228 : default:;
7075 : }
7076 8616228 : switch (TREE_CODE (_p0))
7077 : {
7078 57433 : case MULT_EXPR:
7079 57433 : {
7080 57433 : tree _q20 = TREE_OPERAND (_p0, 0);
7081 57433 : tree _q21 = TREE_OPERAND (_p0, 1);
7082 57433 : switch (TREE_CODE (_q21))
7083 : {
7084 810 : case REAL_CST:
7085 810 : {
7086 810 : switch (TREE_CODE (_p1))
7087 : {
7088 542 : case REAL_CST:
7089 542 : {
7090 542 : {
7091 542 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7092 542 : tree res = generic_simplify_393 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7093 542 : if (res) return res;
7094 : }
7095 540 : break;
7096 : }
7097 : default:;
7098 : }
7099 : break;
7100 : }
7101 : default:;
7102 : }
7103 : break;
7104 : }
7105 26 : case REAL_CST:
7106 26 : {
7107 26 : switch (TREE_CODE (_p1))
7108 : {
7109 0 : case CALL_EXPR:
7110 0 : switch (get_call_combined_fn (_p1))
7111 : {
7112 0 : case CFN_BUILT_IN_EXP:
7113 0 : if (call_expr_nargs (_p1) == 1)
7114 : {
7115 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7116 0 : {
7117 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7118 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7119 0 : if (res) return res;
7120 : }
7121 : }
7122 : break;
7123 0 : case CFN_BUILT_IN_LOG:
7124 0 : if (call_expr_nargs (_p1) == 1)
7125 : {
7126 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7127 0 : {
7128 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7129 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7130 0 : if (res) return res;
7131 : }
7132 : }
7133 : break;
7134 0 : case CFN_BUILT_IN_EXP10F:
7135 0 : if (call_expr_nargs (_p1) == 1)
7136 : {
7137 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7138 0 : {
7139 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7140 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7141 0 : if (res) return res;
7142 : }
7143 : }
7144 : break;
7145 0 : case CFN_BUILT_IN_EXP10L:
7146 0 : if (call_expr_nargs (_p1) == 1)
7147 : {
7148 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7149 0 : {
7150 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7151 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7152 0 : if (res) return res;
7153 : }
7154 : }
7155 : break;
7156 0 : case CFN_BUILT_IN_EXP2:
7157 0 : if (call_expr_nargs (_p1) == 1)
7158 : {
7159 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7160 0 : {
7161 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7162 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7163 0 : if (res) return res;
7164 : }
7165 : }
7166 : break;
7167 0 : case CFN_BUILT_IN_EXPF:
7168 0 : if (call_expr_nargs (_p1) == 1)
7169 : {
7170 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7171 0 : {
7172 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7173 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7174 0 : if (res) return res;
7175 : }
7176 : }
7177 : break;
7178 0 : case CFN_BUILT_IN_EXPL:
7179 0 : if (call_expr_nargs (_p1) == 1)
7180 : {
7181 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7182 0 : {
7183 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7184 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7185 0 : if (res) return res;
7186 : }
7187 : }
7188 : break;
7189 0 : case CFN_BUILT_IN_LOG2:
7190 0 : if (call_expr_nargs (_p1) == 1)
7191 : {
7192 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7193 0 : {
7194 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7195 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7196 0 : if (res) return res;
7197 : }
7198 : }
7199 : break;
7200 0 : case CFN_BUILT_IN_LOGF:
7201 0 : if (call_expr_nargs (_p1) == 1)
7202 : {
7203 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7204 0 : {
7205 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7206 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7207 0 : if (res) return res;
7208 : }
7209 : }
7210 : break;
7211 0 : case CFN_BUILT_IN_LOGL:
7212 0 : if (call_expr_nargs (_p1) == 1)
7213 : {
7214 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7215 0 : {
7216 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7217 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7218 0 : if (res) return res;
7219 : }
7220 : }
7221 : break;
7222 0 : case CFN_BUILT_IN_LOG10F:
7223 0 : if (call_expr_nargs (_p1) == 1)
7224 : {
7225 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7226 0 : {
7227 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7228 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7229 0 : if (res) return res;
7230 : }
7231 : }
7232 : break;
7233 0 : case CFN_BUILT_IN_LOG10L:
7234 0 : if (call_expr_nargs (_p1) == 1)
7235 : {
7236 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7237 0 : {
7238 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7239 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7240 0 : if (res) return res;
7241 : }
7242 : }
7243 : break;
7244 0 : case CFN_EXP:
7245 0 : if (call_expr_nargs (_p1) == 1)
7246 : {
7247 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7248 0 : {
7249 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7250 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7251 0 : if (res) return res;
7252 : }
7253 : }
7254 : break;
7255 0 : case CFN_LOG:
7256 0 : if (call_expr_nargs (_p1) == 1)
7257 : {
7258 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7259 0 : {
7260 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7261 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7262 0 : if (res) return res;
7263 : }
7264 : }
7265 : break;
7266 0 : case CFN_EXP2:
7267 0 : if (call_expr_nargs (_p1) == 1)
7268 : {
7269 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7270 0 : {
7271 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7272 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7273 0 : if (res) return res;
7274 : }
7275 : }
7276 : break;
7277 0 : case CFN_LOG2:
7278 0 : if (call_expr_nargs (_p1) == 1)
7279 : {
7280 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7281 0 : {
7282 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7283 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7284 0 : if (res) return res;
7285 : }
7286 : }
7287 : break;
7288 0 : case CFN_EXP10:
7289 0 : if (call_expr_nargs (_p1) == 1)
7290 : {
7291 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7292 0 : {
7293 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7294 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7295 0 : if (res) return res;
7296 : }
7297 : }
7298 : break;
7299 0 : case CFN_LOG10:
7300 0 : if (call_expr_nargs (_p1) == 1)
7301 : {
7302 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7303 0 : {
7304 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7305 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7306 0 : if (res) return res;
7307 : }
7308 : }
7309 : break;
7310 0 : case CFN_BUILT_IN_EXP10:
7311 0 : if (call_expr_nargs (_p1) == 1)
7312 : {
7313 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7314 0 : {
7315 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7316 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7317 0 : if (res) return res;
7318 : }
7319 : }
7320 : break;
7321 0 : case CFN_BUILT_IN_EXP2F:
7322 0 : if (call_expr_nargs (_p1) == 1)
7323 : {
7324 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7325 0 : {
7326 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7327 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7328 0 : if (res) return res;
7329 : }
7330 : }
7331 : break;
7332 0 : case CFN_BUILT_IN_EXP2L:
7333 0 : if (call_expr_nargs (_p1) == 1)
7334 : {
7335 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7336 0 : {
7337 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7338 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7339 0 : if (res) return res;
7340 : }
7341 : }
7342 : break;
7343 0 : case CFN_BUILT_IN_LOG10:
7344 0 : if (call_expr_nargs (_p1) == 1)
7345 : {
7346 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7347 0 : {
7348 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7349 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7350 0 : if (res) return res;
7351 : }
7352 : }
7353 : break;
7354 0 : case CFN_BUILT_IN_LOG2F:
7355 0 : if (call_expr_nargs (_p1) == 1)
7356 : {
7357 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7358 0 : {
7359 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7360 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7361 0 : if (res) return res;
7362 : }
7363 : }
7364 : break;
7365 0 : case CFN_BUILT_IN_LOG2L:
7366 0 : if (call_expr_nargs (_p1) == 1)
7367 : {
7368 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7369 0 : {
7370 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7371 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7372 0 : if (res) return res;
7373 : }
7374 : }
7375 : break;
7376 : default:;
7377 : }
7378 : break;
7379 : default:;
7380 : }
7381 : break;
7382 : }
7383 1580870 : case PLUS_EXPR:
7384 1580870 : {
7385 1580870 : tree _q20 = TREE_OPERAND (_p0, 0);
7386 1580870 : tree _q21 = TREE_OPERAND (_p0, 1);
7387 1580870 : switch (TREE_CODE (_q21))
7388 : {
7389 1482102 : case INTEGER_CST:
7390 1482102 : {
7391 1482102 : switch (TREE_CODE (_p1))
7392 : {
7393 965963 : case INTEGER_CST:
7394 965963 : {
7395 965963 : {
7396 965963 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7397 965963 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, LE_EXPR, GE_EXPR);
7398 965963 : if (res) return res;
7399 : }
7400 784206 : break;
7401 : }
7402 : default:;
7403 : }
7404 : break;
7405 : }
7406 : default:;
7407 : }
7408 : break;
7409 : }
7410 62294 : case MINUS_EXPR:
7411 62294 : {
7412 62294 : tree _q20 = TREE_OPERAND (_p0, 0);
7413 62294 : tree _q21 = TREE_OPERAND (_p0, 1);
7414 62294 : switch (TREE_CODE (_q21))
7415 : {
7416 2223 : case INTEGER_CST:
7417 2223 : {
7418 2223 : switch (TREE_CODE (_p1))
7419 : {
7420 2223 : case INTEGER_CST:
7421 2223 : {
7422 2223 : {
7423 2223 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7424 2223 : tree res = generic_simplify_394 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, LE_EXPR, GE_EXPR);
7425 2223 : if (res) return res;
7426 : }
7427 2222 : break;
7428 : }
7429 : default:;
7430 : }
7431 : break;
7432 : }
7433 62293 : default:;
7434 : }
7435 62293 : switch (TREE_CODE (_q20))
7436 : {
7437 2028 : case INTEGER_CST:
7438 2028 : {
7439 2028 : switch (TREE_CODE (_p1))
7440 : {
7441 1071 : case INTEGER_CST:
7442 1071 : {
7443 1071 : {
7444 1071 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7445 1071 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7446 1071 : if (res) return res;
7447 : }
7448 0 : break;
7449 : }
7450 : default:;
7451 : }
7452 : break;
7453 : }
7454 : default:;
7455 : }
7456 : break;
7457 : }
7458 205179 : case CALL_EXPR:
7459 205179 : switch (get_call_combined_fn (_p0))
7460 : {
7461 18 : case CFN_BUILT_IN_CTZ:
7462 18 : if (call_expr_nargs (_p0) == 1)
7463 : {
7464 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7465 18 : switch (TREE_CODE (_p1))
7466 : {
7467 18 : case INTEGER_CST:
7468 18 : {
7469 18 : {
7470 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7471 18 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZ);
7472 18 : if (res) return res;
7473 : }
7474 16 : break;
7475 : }
7476 : default:;
7477 : }
7478 : }
7479 : break;
7480 0 : case CFN_BUILT_IN_EXP:
7481 0 : if (call_expr_nargs (_p0) == 1)
7482 : {
7483 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7484 0 : switch (TREE_CODE (_p1))
7485 : {
7486 0 : case REAL_CST:
7487 0 : {
7488 0 : {
7489 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7490 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7491 0 : if (res) return res;
7492 : }
7493 0 : break;
7494 : }
7495 : default:;
7496 : }
7497 : }
7498 : break;
7499 8 : case CFN_BUILT_IN_FFS:
7500 8 : if (call_expr_nargs (_p0) == 1)
7501 : {
7502 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7503 8 : switch (TREE_CODE (_p1))
7504 : {
7505 8 : case INTEGER_CST:
7506 8 : {
7507 8 : {
7508 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7509 8 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFS);
7510 8 : if (res) return res;
7511 : }
7512 2 : break;
7513 : }
7514 : default:;
7515 : }
7516 : }
7517 : break;
7518 0 : case CFN_BUILT_IN_LOG:
7519 0 : if (call_expr_nargs (_p0) == 1)
7520 : {
7521 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7522 0 : switch (TREE_CODE (_p1))
7523 : {
7524 0 : case REAL_CST:
7525 0 : {
7526 0 : {
7527 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7528 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7529 0 : if (res) return res;
7530 : }
7531 0 : break;
7532 : }
7533 : default:;
7534 : }
7535 : }
7536 : break;
7537 0 : case CFN_BUILT_IN_FFSIMAX:
7538 0 : if (call_expr_nargs (_p0) == 1)
7539 : {
7540 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7541 0 : switch (TREE_CODE (_p1))
7542 : {
7543 0 : case INTEGER_CST:
7544 0 : {
7545 0 : {
7546 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7547 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSIMAX);
7548 0 : if (res) return res;
7549 : }
7550 0 : break;
7551 : }
7552 : default:;
7553 : }
7554 : }
7555 : break;
7556 0 : case CFN_BUILT_IN_EXP10F:
7557 0 : if (call_expr_nargs (_p0) == 1)
7558 : {
7559 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7560 0 : switch (TREE_CODE (_p1))
7561 : {
7562 0 : case REAL_CST:
7563 0 : {
7564 0 : {
7565 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7566 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7567 0 : if (res) return res;
7568 : }
7569 0 : break;
7570 : }
7571 : default:;
7572 : }
7573 : }
7574 : break;
7575 0 : case CFN_BUILT_IN_EXP10L:
7576 0 : if (call_expr_nargs (_p0) == 1)
7577 : {
7578 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7579 0 : switch (TREE_CODE (_p1))
7580 : {
7581 0 : case REAL_CST:
7582 0 : {
7583 0 : {
7584 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7585 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7586 0 : if (res) return res;
7587 : }
7588 0 : break;
7589 : }
7590 : default:;
7591 : }
7592 : }
7593 : break;
7594 37 : case CFN_BUILT_IN_POPCOUNT:
7595 37 : if (call_expr_nargs (_p0) == 1)
7596 : {
7597 37 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7598 37 : if (integer_zerop (_p1))
7599 : {
7600 1 : {
7601 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7602 1 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
7603 1 : if (res) return res;
7604 : }
7605 : }
7606 : }
7607 : break;
7608 0 : case CFN_BUILT_IN_CTZL:
7609 0 : if (call_expr_nargs (_p0) == 1)
7610 : {
7611 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7612 0 : switch (TREE_CODE (_p1))
7613 : {
7614 0 : case INTEGER_CST:
7615 0 : {
7616 0 : {
7617 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7618 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZL);
7619 0 : if (res) return res;
7620 : }
7621 0 : break;
7622 : }
7623 : default:;
7624 : }
7625 : }
7626 : break;
7627 0 : case CFN_BUILT_IN_EXP2:
7628 0 : if (call_expr_nargs (_p0) == 1)
7629 : {
7630 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7631 0 : switch (TREE_CODE (_p1))
7632 : {
7633 0 : case REAL_CST:
7634 0 : {
7635 0 : {
7636 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7637 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7638 0 : if (res) return res;
7639 : }
7640 0 : break;
7641 : }
7642 : default:;
7643 : }
7644 : }
7645 : break;
7646 0 : case CFN_BUILT_IN_EXPF:
7647 0 : if (call_expr_nargs (_p0) == 1)
7648 : {
7649 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7650 0 : switch (TREE_CODE (_p1))
7651 : {
7652 0 : case REAL_CST:
7653 0 : {
7654 0 : {
7655 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7656 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7657 0 : if (res) return res;
7658 : }
7659 0 : break;
7660 : }
7661 : default:;
7662 : }
7663 : }
7664 : break;
7665 0 : case CFN_BUILT_IN_EXPL:
7666 0 : if (call_expr_nargs (_p0) == 1)
7667 : {
7668 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7669 0 : switch (TREE_CODE (_p1))
7670 : {
7671 0 : case REAL_CST:
7672 0 : {
7673 0 : {
7674 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7675 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7676 0 : if (res) return res;
7677 : }
7678 0 : break;
7679 : }
7680 : default:;
7681 : }
7682 : }
7683 : break;
7684 3 : case CFN_BUILT_IN_FFSL:
7685 3 : if (call_expr_nargs (_p0) == 1)
7686 : {
7687 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7688 3 : switch (TREE_CODE (_p1))
7689 : {
7690 3 : case INTEGER_CST:
7691 3 : {
7692 3 : {
7693 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7694 3 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSL);
7695 3 : if (res) return res;
7696 : }
7697 0 : break;
7698 : }
7699 : default:;
7700 : }
7701 : }
7702 : break;
7703 0 : case CFN_BUILT_IN_LOG2:
7704 0 : if (call_expr_nargs (_p0) == 1)
7705 : {
7706 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7707 0 : switch (TREE_CODE (_p1))
7708 : {
7709 0 : case REAL_CST:
7710 0 : {
7711 0 : {
7712 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7713 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7714 0 : if (res) return res;
7715 : }
7716 0 : break;
7717 : }
7718 : default:;
7719 : }
7720 : }
7721 : break;
7722 0 : case CFN_BUILT_IN_LOGF:
7723 0 : if (call_expr_nargs (_p0) == 1)
7724 : {
7725 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7726 0 : switch (TREE_CODE (_p1))
7727 : {
7728 0 : case REAL_CST:
7729 0 : {
7730 0 : {
7731 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7732 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7733 0 : if (res) return res;
7734 : }
7735 0 : break;
7736 : }
7737 : default:;
7738 : }
7739 : }
7740 : break;
7741 0 : case CFN_BUILT_IN_LOGL:
7742 0 : if (call_expr_nargs (_p0) == 1)
7743 : {
7744 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7745 0 : switch (TREE_CODE (_p1))
7746 : {
7747 0 : case REAL_CST:
7748 0 : {
7749 0 : {
7750 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7751 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7752 0 : if (res) return res;
7753 : }
7754 0 : break;
7755 : }
7756 : default:;
7757 : }
7758 : }
7759 : break;
7760 1 : case CFN_BUILT_IN_POPCOUNTLL:
7761 1 : if (call_expr_nargs (_p0) == 1)
7762 : {
7763 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7764 1 : if (integer_zerop (_p1))
7765 : {
7766 1 : {
7767 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7768 1 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
7769 1 : if (res) return res;
7770 : }
7771 : }
7772 : }
7773 : break;
7774 0 : case CFN_BUILT_IN_LOG10F:
7775 0 : if (call_expr_nargs (_p0) == 1)
7776 : {
7777 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7778 0 : switch (TREE_CODE (_p1))
7779 : {
7780 0 : case REAL_CST:
7781 0 : {
7782 0 : {
7783 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7784 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7785 0 : if (res) return res;
7786 : }
7787 0 : break;
7788 : }
7789 : default:;
7790 : }
7791 : }
7792 : break;
7793 0 : case CFN_BUILT_IN_LOG10L:
7794 0 : if (call_expr_nargs (_p0) == 1)
7795 : {
7796 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7797 0 : switch (TREE_CODE (_p1))
7798 : {
7799 0 : case REAL_CST:
7800 0 : {
7801 0 : {
7802 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7803 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7804 0 : if (res) return res;
7805 : }
7806 0 : break;
7807 : }
7808 : default:;
7809 : }
7810 : }
7811 : break;
7812 0 : case CFN_BUILT_IN_CTZIMAX:
7813 0 : if (call_expr_nargs (_p0) == 1)
7814 : {
7815 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7816 0 : switch (TREE_CODE (_p1))
7817 : {
7818 0 : case INTEGER_CST:
7819 0 : {
7820 0 : {
7821 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7822 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
7823 0 : if (res) return res;
7824 : }
7825 0 : break;
7826 : }
7827 : default:;
7828 : }
7829 : }
7830 : break;
7831 0 : case CFN_POPCOUNT:
7832 0 : if (call_expr_nargs (_p0) == 1)
7833 : {
7834 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7835 0 : if (integer_zerop (_p1))
7836 : {
7837 0 : {
7838 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7839 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_POPCOUNT);
7840 0 : if (res) return res;
7841 : }
7842 : }
7843 : }
7844 : break;
7845 0 : case CFN_CTZ:
7846 0 : if (call_expr_nargs (_p0) == 2)
7847 : {
7848 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7849 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
7850 0 : switch (TREE_CODE (_p1))
7851 : {
7852 0 : case INTEGER_CST:
7853 0 : {
7854 0 : {
7855 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7856 0 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR);
7857 0 : if (res) return res;
7858 : }
7859 0 : break;
7860 : }
7861 : default:;
7862 : }
7863 : }
7864 0 : if (call_expr_nargs (_p0) == 1)
7865 : {
7866 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7867 0 : switch (TREE_CODE (_p1))
7868 : {
7869 0 : case INTEGER_CST:
7870 0 : {
7871 0 : {
7872 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7873 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_CTZ);
7874 0 : if (res) return res;
7875 : }
7876 0 : break;
7877 : }
7878 : default:;
7879 : }
7880 : }
7881 : break;
7882 0 : case CFN_EXP:
7883 0 : if (call_expr_nargs (_p0) == 1)
7884 : {
7885 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7886 0 : switch (TREE_CODE (_p1))
7887 : {
7888 0 : case REAL_CST:
7889 0 : {
7890 0 : {
7891 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7892 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
7893 0 : if (res) return res;
7894 : }
7895 0 : break;
7896 : }
7897 : default:;
7898 : }
7899 : }
7900 : break;
7901 0 : case CFN_FFS:
7902 0 : if (call_expr_nargs (_p0) == 1)
7903 : {
7904 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7905 0 : switch (TREE_CODE (_p1))
7906 : {
7907 0 : case INTEGER_CST:
7908 0 : {
7909 0 : {
7910 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7911 0 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_FFS);
7912 0 : if (res) return res;
7913 : }
7914 0 : break;
7915 : }
7916 : default:;
7917 : }
7918 : }
7919 : break;
7920 0 : case CFN_LOG:
7921 0 : if (call_expr_nargs (_p0) == 1)
7922 : {
7923 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7924 0 : switch (TREE_CODE (_p1))
7925 : {
7926 0 : case REAL_CST:
7927 0 : {
7928 0 : {
7929 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7930 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
7931 0 : if (res) return res;
7932 : }
7933 0 : break;
7934 : }
7935 : default:;
7936 : }
7937 : }
7938 : break;
7939 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
7940 0 : if (call_expr_nargs (_p0) == 1)
7941 : {
7942 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7943 0 : if (integer_zerop (_p1))
7944 : {
7945 0 : {
7946 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7947 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
7948 0 : if (res) return res;
7949 : }
7950 : }
7951 : }
7952 : break;
7953 0 : case CFN_EXP2:
7954 0 : if (call_expr_nargs (_p0) == 1)
7955 : {
7956 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7957 0 : switch (TREE_CODE (_p1))
7958 : {
7959 0 : case REAL_CST:
7960 0 : {
7961 0 : {
7962 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7963 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
7964 0 : if (res) return res;
7965 : }
7966 0 : break;
7967 : }
7968 : default:;
7969 : }
7970 : }
7971 : break;
7972 0 : case CFN_LOG2:
7973 0 : if (call_expr_nargs (_p0) == 1)
7974 : {
7975 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7976 0 : switch (TREE_CODE (_p1))
7977 : {
7978 0 : case REAL_CST:
7979 0 : {
7980 0 : {
7981 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7982 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
7983 0 : if (res) return res;
7984 : }
7985 0 : break;
7986 : }
7987 : default:;
7988 : }
7989 : }
7990 : break;
7991 0 : case CFN_EXP10:
7992 0 : if (call_expr_nargs (_p0) == 1)
7993 : {
7994 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7995 0 : switch (TREE_CODE (_p1))
7996 : {
7997 0 : case REAL_CST:
7998 0 : {
7999 0 : {
8000 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8001 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8002 0 : if (res) return res;
8003 : }
8004 0 : break;
8005 : }
8006 : default:;
8007 : }
8008 : }
8009 : break;
8010 1 : case CFN_BUILT_IN_POPCOUNTL:
8011 1 : if (call_expr_nargs (_p0) == 1)
8012 : {
8013 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8014 1 : if (integer_zerop (_p1))
8015 : {
8016 1 : {
8017 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8018 1 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
8019 1 : if (res) return res;
8020 : }
8021 : }
8022 : }
8023 : break;
8024 0 : case CFN_BUILT_IN_CTZLL:
8025 0 : if (call_expr_nargs (_p0) == 1)
8026 : {
8027 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8028 0 : switch (TREE_CODE (_p1))
8029 : {
8030 0 : case INTEGER_CST:
8031 0 : {
8032 0 : {
8033 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8034 0 : tree res = generic_simplify_395 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZLL);
8035 0 : if (res) return res;
8036 : }
8037 0 : break;
8038 : }
8039 : default:;
8040 : }
8041 : }
8042 : break;
8043 0 : case CFN_LOG10:
8044 0 : if (call_expr_nargs (_p0) == 1)
8045 : {
8046 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8047 0 : switch (TREE_CODE (_p1))
8048 : {
8049 0 : case REAL_CST:
8050 0 : {
8051 0 : {
8052 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8053 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8054 0 : if (res) return res;
8055 : }
8056 0 : break;
8057 : }
8058 : default:;
8059 : }
8060 : }
8061 : break;
8062 0 : case CFN_BUILT_IN_EXP10:
8063 0 : if (call_expr_nargs (_p0) == 1)
8064 : {
8065 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8066 0 : switch (TREE_CODE (_p1))
8067 : {
8068 0 : case REAL_CST:
8069 0 : {
8070 0 : {
8071 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8072 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8073 0 : if (res) return res;
8074 : }
8075 0 : break;
8076 : }
8077 : default:;
8078 : }
8079 : }
8080 : break;
8081 0 : case CFN_BUILT_IN_EXP2F:
8082 0 : if (call_expr_nargs (_p0) == 1)
8083 : {
8084 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8085 0 : switch (TREE_CODE (_p1))
8086 : {
8087 0 : case REAL_CST:
8088 0 : {
8089 0 : {
8090 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8091 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8092 0 : if (res) return res;
8093 : }
8094 0 : break;
8095 : }
8096 : default:;
8097 : }
8098 : }
8099 : break;
8100 0 : case CFN_BUILT_IN_EXP2L:
8101 0 : if (call_expr_nargs (_p0) == 1)
8102 : {
8103 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8104 0 : switch (TREE_CODE (_p1))
8105 : {
8106 0 : case REAL_CST:
8107 0 : {
8108 0 : {
8109 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8110 0 : tree res = generic_simplify_405 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8111 0 : if (res) return res;
8112 : }
8113 0 : break;
8114 : }
8115 : default:;
8116 : }
8117 : }
8118 : break;
8119 3 : case CFN_BUILT_IN_FFSLL:
8120 3 : if (call_expr_nargs (_p0) == 1)
8121 : {
8122 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8123 3 : switch (TREE_CODE (_p1))
8124 : {
8125 3 : case INTEGER_CST:
8126 3 : {
8127 3 : {
8128 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8129 3 : tree res = generic_simplify_406 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSLL);
8130 3 : if (res) return res;
8131 : }
8132 0 : break;
8133 : }
8134 : default:;
8135 : }
8136 : }
8137 : break;
8138 0 : case CFN_BUILT_IN_LOG10:
8139 0 : if (call_expr_nargs (_p0) == 1)
8140 : {
8141 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8142 0 : switch (TREE_CODE (_p1))
8143 : {
8144 0 : case REAL_CST:
8145 0 : {
8146 0 : {
8147 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8148 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8149 0 : if (res) return res;
8150 : }
8151 0 : break;
8152 : }
8153 : default:;
8154 : }
8155 : }
8156 : break;
8157 0 : case CFN_BUILT_IN_LOG2F:
8158 0 : if (call_expr_nargs (_p0) == 1)
8159 : {
8160 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8161 0 : switch (TREE_CODE (_p1))
8162 : {
8163 0 : case REAL_CST:
8164 0 : {
8165 0 : {
8166 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8167 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8168 0 : if (res) return res;
8169 : }
8170 0 : break;
8171 : }
8172 : default:;
8173 : }
8174 : }
8175 : break;
8176 0 : case CFN_BUILT_IN_LOG2L:
8177 0 : if (call_expr_nargs (_p0) == 1)
8178 : {
8179 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8180 0 : switch (TREE_CODE (_p1))
8181 : {
8182 0 : case REAL_CST:
8183 0 : {
8184 0 : {
8185 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8186 0 : tree res = generic_simplify_404 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8187 0 : if (res) return res;
8188 : }
8189 0 : break;
8190 : }
8191 : default:;
8192 : }
8193 : }
8194 : break;
8195 : default:;
8196 : }
8197 : break;
8198 : default:;
8199 : }
8200 : return NULL_TREE;
8201 : }
8202 :
8203 : tree
8204 4068 : 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)
8205 : {
8206 4068 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8207 4068 : if (integer_zerop (_p0))
8208 : {
8209 0 : {
8210 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8211 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8212 0 : if (res) return res;
8213 : }
8214 : }
8215 4068 : if (integer_onep (_p1))
8216 : {
8217 0 : {
8218 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8219 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8220 0 : if (res) return res;
8221 : }
8222 : }
8223 4068 : if (integer_minus_onep (_p1))
8224 : {
8225 0 : {
8226 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8227 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8228 0 : if (res) return res;
8229 : }
8230 : }
8231 4068 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8232 : {
8233 0 : {
8234 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8235 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8236 0 : if (res) return res;
8237 : }
8238 : }
8239 4068 : switch (TREE_CODE (_p0))
8240 : {
8241 0 : case CEIL_MOD_EXPR:
8242 0 : {
8243 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8244 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8245 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8246 : {
8247 0 : {
8248 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8249 0 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8250 0 : if (res) return res;
8251 : }
8252 : }
8253 : break;
8254 : }
8255 0 : case MULT_EXPR:
8256 0 : {
8257 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8258 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8259 0 : switch (TREE_CODE (_q21))
8260 : {
8261 0 : case INTEGER_CST:
8262 0 : {
8263 0 : switch (TREE_CODE (_p1))
8264 : {
8265 0 : case INTEGER_CST:
8266 0 : {
8267 0 : {
8268 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8269 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8270 0 : if (res) return res;
8271 : }
8272 0 : break;
8273 : }
8274 : default:;
8275 : }
8276 : break;
8277 : }
8278 : default:;
8279 : }
8280 : break;
8281 : }
8282 0 : case VEC_COND_EXPR:
8283 0 : {
8284 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8285 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8286 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8287 0 : switch (TREE_CODE (_p1))
8288 : {
8289 0 : case VEC_COND_EXPR:
8290 0 : {
8291 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8292 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8293 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8294 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8295 : {
8296 0 : {
8297 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8298 0 : if (VECTOR_TYPE_P (type)
8299 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8300 : || types_match (type, TREE_TYPE (captures[2]))
8301 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8302 : || (optimize_vectors_before_lowering_p ()
8303 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8304 : )
8305 : {
8306 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1626;
8307 0 : {
8308 0 : tree res_op0;
8309 0 : res_op0 = captures[1];
8310 0 : tree res_op1;
8311 0 : {
8312 0 : tree _o1[2], _r1;
8313 0 : _o1[0] = captures[2];
8314 0 : _o1[1] = captures[5];
8315 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8316 0 : if (EXPR_P (_r1))
8317 0 : goto next_after_fail1626;
8318 0 : res_op1 = _r1;
8319 : }
8320 0 : tree res_op2;
8321 0 : {
8322 0 : tree _o1[2], _r1;
8323 0 : _o1[0] = captures[3];
8324 0 : _o1[1] = captures[6];
8325 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8326 0 : if (EXPR_P (_r1))
8327 0 : goto next_after_fail1626;
8328 0 : res_op2 = _r1;
8329 : }
8330 0 : tree _r;
8331 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8332 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
8333 0 : return _r;
8334 : }
8335 0 : next_after_fail1626:;
8336 : }
8337 : }
8338 : }
8339 : break;
8340 : }
8341 0 : default:;
8342 : }
8343 0 : {
8344 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8345 0 : if (VECTOR_TYPE_P (type)
8346 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8347 : || types_match (type, TREE_TYPE (captures[2]))
8348 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8349 : || (optimize_vectors_before_lowering_p ()
8350 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8351 : )
8352 : {
8353 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1627;
8354 0 : {
8355 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1627;
8356 0 : tree res_op0;
8357 0 : res_op0 = captures[1];
8358 0 : tree res_op1;
8359 0 : {
8360 0 : tree _o1[2], _r1;
8361 0 : _o1[0] = captures[2];
8362 0 : _o1[1] = unshare_expr (captures[4]);
8363 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8364 0 : if (EXPR_P (_r1))
8365 0 : goto next_after_fail1627;
8366 0 : res_op1 = _r1;
8367 : }
8368 0 : tree res_op2;
8369 0 : {
8370 0 : tree _o1[2], _r1;
8371 0 : _o1[0] = captures[3];
8372 0 : _o1[1] = captures[4];
8373 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8374 0 : if (EXPR_P (_r1))
8375 0 : goto next_after_fail1627;
8376 0 : res_op2 = _r1;
8377 : }
8378 0 : tree _r;
8379 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8380 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
8381 0 : return _r;
8382 : }
8383 0 : next_after_fail1627:;
8384 : }
8385 : }
8386 0 : break;
8387 : }
8388 4068 : default:;
8389 : }
8390 4068 : switch (TREE_CODE (_p1))
8391 : {
8392 0 : case VEC_COND_EXPR:
8393 0 : {
8394 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8395 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8396 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8397 0 : {
8398 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8399 0 : if (VECTOR_TYPE_P (type)
8400 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8401 : || types_match (type, TREE_TYPE (captures[3]))
8402 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8403 : || (optimize_vectors_before_lowering_p ()
8404 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8405 : )
8406 : {
8407 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1628;
8408 0 : {
8409 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1628;
8410 0 : tree res_op0;
8411 0 : res_op0 = captures[2];
8412 0 : tree res_op1;
8413 0 : {
8414 0 : tree _o1[2], _r1;
8415 0 : _o1[0] = unshare_expr (captures[0]);
8416 0 : _o1[1] = captures[3];
8417 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8418 0 : if (EXPR_P (_r1))
8419 0 : goto next_after_fail1628;
8420 0 : res_op1 = _r1;
8421 : }
8422 0 : tree res_op2;
8423 0 : {
8424 0 : tree _o1[2], _r1;
8425 0 : _o1[0] = captures[0];
8426 0 : _o1[1] = captures[4];
8427 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8428 0 : if (EXPR_P (_r1))
8429 0 : goto next_after_fail1628;
8430 0 : res_op2 = _r1;
8431 : }
8432 0 : tree _r;
8433 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8434 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
8435 0 : return _r;
8436 : }
8437 0 : next_after_fail1628:;
8438 : }
8439 : }
8440 0 : break;
8441 : }
8442 : default:;
8443 : }
8444 : return NULL_TREE;
8445 : }
8446 :
8447 : tree
8448 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)
8449 : {
8450 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8451 0 : if (integer_zerop (_p0))
8452 : {
8453 0 : {
8454 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8455 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8456 0 : if (res) return res;
8457 : }
8458 : }
8459 0 : if (integer_onep (_p1))
8460 : {
8461 0 : {
8462 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8463 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8464 0 : if (res) return res;
8465 : }
8466 : }
8467 0 : if (integer_minus_onep (_p1))
8468 : {
8469 0 : {
8470 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8471 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8472 0 : if (res) return res;
8473 : }
8474 : }
8475 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8476 : {
8477 0 : {
8478 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8479 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8480 0 : if (res) return res;
8481 : }
8482 : }
8483 0 : switch (TREE_CODE (_p0))
8484 : {
8485 0 : case ROUND_MOD_EXPR:
8486 0 : {
8487 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8488 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8489 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8490 : {
8491 0 : {
8492 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8493 0 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8494 0 : if (res) return res;
8495 : }
8496 : }
8497 : break;
8498 : }
8499 0 : case MULT_EXPR:
8500 0 : {
8501 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8502 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8503 0 : switch (TREE_CODE (_q21))
8504 : {
8505 0 : case INTEGER_CST:
8506 0 : {
8507 0 : switch (TREE_CODE (_p1))
8508 : {
8509 0 : case INTEGER_CST:
8510 0 : {
8511 0 : {
8512 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8513 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8514 0 : if (res) return res;
8515 : }
8516 0 : break;
8517 : }
8518 : default:;
8519 : }
8520 : break;
8521 : }
8522 : default:;
8523 : }
8524 : break;
8525 : }
8526 0 : case VEC_COND_EXPR:
8527 0 : {
8528 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8529 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8530 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8531 0 : switch (TREE_CODE (_p1))
8532 : {
8533 0 : case VEC_COND_EXPR:
8534 0 : {
8535 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8536 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8537 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8538 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8539 : {
8540 0 : {
8541 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8542 0 : if (VECTOR_TYPE_P (type)
8543 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8544 : || types_match (type, TREE_TYPE (captures[2]))
8545 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8546 : || (optimize_vectors_before_lowering_p ()
8547 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8548 : )
8549 : {
8550 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1629;
8551 0 : {
8552 0 : tree res_op0;
8553 0 : res_op0 = captures[1];
8554 0 : tree res_op1;
8555 0 : {
8556 0 : tree _o1[2], _r1;
8557 0 : _o1[0] = captures[2];
8558 0 : _o1[1] = captures[5];
8559 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8560 0 : if (EXPR_P (_r1))
8561 0 : goto next_after_fail1629;
8562 0 : res_op1 = _r1;
8563 : }
8564 0 : tree res_op2;
8565 0 : {
8566 0 : tree _o1[2], _r1;
8567 0 : _o1[0] = captures[3];
8568 0 : _o1[1] = captures[6];
8569 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8570 0 : if (EXPR_P (_r1))
8571 0 : goto next_after_fail1629;
8572 0 : res_op2 = _r1;
8573 : }
8574 0 : tree _r;
8575 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8576 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
8577 0 : return _r;
8578 : }
8579 0 : next_after_fail1629:;
8580 : }
8581 : }
8582 : }
8583 : break;
8584 : }
8585 0 : default:;
8586 : }
8587 0 : {
8588 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8589 0 : if (VECTOR_TYPE_P (type)
8590 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8591 : || types_match (type, TREE_TYPE (captures[2]))
8592 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8593 : || (optimize_vectors_before_lowering_p ()
8594 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8595 : )
8596 : {
8597 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1630;
8598 0 : {
8599 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1630;
8600 0 : tree res_op0;
8601 0 : res_op0 = captures[1];
8602 0 : tree res_op1;
8603 0 : {
8604 0 : tree _o1[2], _r1;
8605 0 : _o1[0] = captures[2];
8606 0 : _o1[1] = unshare_expr (captures[4]);
8607 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8608 0 : if (EXPR_P (_r1))
8609 0 : goto next_after_fail1630;
8610 0 : res_op1 = _r1;
8611 : }
8612 0 : tree res_op2;
8613 0 : {
8614 0 : tree _o1[2], _r1;
8615 0 : _o1[0] = captures[3];
8616 0 : _o1[1] = captures[4];
8617 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8618 0 : if (EXPR_P (_r1))
8619 0 : goto next_after_fail1630;
8620 0 : res_op2 = _r1;
8621 : }
8622 0 : tree _r;
8623 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8624 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
8625 0 : return _r;
8626 : }
8627 0 : next_after_fail1630:;
8628 : }
8629 : }
8630 0 : break;
8631 : }
8632 0 : default:;
8633 : }
8634 0 : switch (TREE_CODE (_p1))
8635 : {
8636 0 : case VEC_COND_EXPR:
8637 0 : {
8638 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8639 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8640 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8641 0 : {
8642 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8643 0 : if (VECTOR_TYPE_P (type)
8644 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8645 : || types_match (type, TREE_TYPE (captures[3]))
8646 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8647 : || (optimize_vectors_before_lowering_p ()
8648 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8649 : )
8650 : {
8651 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1631;
8652 0 : {
8653 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1631;
8654 0 : tree res_op0;
8655 0 : res_op0 = captures[2];
8656 0 : tree res_op1;
8657 0 : {
8658 0 : tree _o1[2], _r1;
8659 0 : _o1[0] = unshare_expr (captures[0]);
8660 0 : _o1[1] = captures[3];
8661 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8662 0 : if (EXPR_P (_r1))
8663 0 : goto next_after_fail1631;
8664 0 : res_op1 = _r1;
8665 : }
8666 0 : tree res_op2;
8667 0 : {
8668 0 : tree _o1[2], _r1;
8669 0 : _o1[0] = captures[0];
8670 0 : _o1[1] = captures[4];
8671 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8672 0 : if (EXPR_P (_r1))
8673 0 : goto next_after_fail1631;
8674 0 : res_op2 = _r1;
8675 : }
8676 0 : tree _r;
8677 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8678 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
8679 0 : return _r;
8680 : }
8681 0 : next_after_fail1631:;
8682 : }
8683 : }
8684 0 : break;
8685 : }
8686 : default:;
8687 : }
8688 : return NULL_TREE;
8689 : }
8690 :
8691 : tree
8692 2072741 : 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)
8693 : {
8694 2072741 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8695 2072741 : if (integer_zerop (_p0))
8696 : {
8697 919 : {
8698 919 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8699 919 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8700 919 : if (res) return res;
8701 : }
8702 : }
8703 2071956 : if (integer_onep (_p1))
8704 : {
8705 216139 : {
8706 216139 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8707 216139 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8708 216139 : if (res) return res;
8709 : }
8710 : }
8711 1855817 : if (integer_minus_onep (_p1))
8712 : {
8713 529 : {
8714 529 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8715 529 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8716 529 : if (res) return res;
8717 : }
8718 : }
8719 1855797 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8720 : {
8721 227 : {
8722 227 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8723 227 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8724 227 : if (res) return res;
8725 : }
8726 : }
8727 1855704 : switch (TREE_CODE (_p0))
8728 : {
8729 107 : case TRUNC_MOD_EXPR:
8730 107 : {
8731 107 : tree _q20 = TREE_OPERAND (_p0, 0);
8732 107 : tree _q21 = TREE_OPERAND (_p0, 1);
8733 107 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8734 : {
8735 52 : {
8736 52 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8737 52 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8738 52 : if (res) return res;
8739 : }
8740 : }
8741 : break;
8742 : }
8743 7409 : case MULT_EXPR:
8744 7409 : {
8745 7409 : tree _q20 = TREE_OPERAND (_p0, 0);
8746 7409 : tree _q21 = TREE_OPERAND (_p0, 1);
8747 7409 : switch (TREE_CODE (_q21))
8748 : {
8749 7316 : case INTEGER_CST:
8750 7316 : {
8751 7316 : switch (TREE_CODE (_p1))
8752 : {
8753 7294 : case INTEGER_CST:
8754 7294 : {
8755 7294 : {
8756 7294 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8757 7294 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8758 7294 : if (res) return res;
8759 : }
8760 7294 : break;
8761 : }
8762 : default:;
8763 : }
8764 : break;
8765 : }
8766 : default:;
8767 : }
8768 : break;
8769 : }
8770 1855652 : default:;
8771 : }
8772 1855652 : switch (TREE_CODE (_p1))
8773 : {
8774 1587793 : case INTEGER_CST:
8775 1587793 : {
8776 1587793 : {
8777 1587793 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8778 1587793 : if (TYPE_SIGN (type) == SIGNED
8779 276818 : && !TREE_OVERFLOW (captures[1])
8780 1587797 : && wi::neg_p (wi::to_wide (captures[1]))
8781 313 : && !TYPE_OVERFLOW_TRAPS (type)
8782 1588106 : && !sign_bit_p (captures[1], captures[1])
8783 : )
8784 : {
8785 309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1632;
8786 309 : {
8787 309 : tree res_op0;
8788 309 : res_op0 = captures[0];
8789 309 : tree res_op1;
8790 309 : {
8791 309 : tree _o1[1], _r1;
8792 309 : _o1[0] = captures[1];
8793 309 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
8794 309 : res_op1 = _r1;
8795 : }
8796 309 : tree _r;
8797 309 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
8798 309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
8799 309 : return _r;
8800 : }
8801 0 : next_after_fail1632:;
8802 : }
8803 : }
8804 1587484 : break;
8805 : }
8806 54378 : CASE_CONVERT:
8807 54378 : {
8808 54378 : tree _q30 = TREE_OPERAND (_p1, 0);
8809 54378 : switch (TREE_CODE (_q30))
8810 : {
8811 0 : case NEGATE_EXPR:
8812 0 : {
8813 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8814 0 : {
8815 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
8816 0 : tree res = generic_simplify_407 (loc, type, _p0, _p1, captures);
8817 0 : if (res) return res;
8818 : }
8819 0 : break;
8820 : }
8821 54378 : default:;
8822 : }
8823 54378 : {
8824 54378 : tree _q30_pops[1];
8825 54378 : if (tree_power_of_two_cand (_q30, _q30_pops))
8826 : {
8827 7 : tree _q40 = _q30_pops[0];
8828 7 : {
8829 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
8830 7 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8831 7 : if (res) return res;
8832 : }
8833 : }
8834 : }
8835 54371 : break;
8836 : }
8837 94 : case NEGATE_EXPR:
8838 94 : {
8839 94 : tree _q30 = TREE_OPERAND (_p1, 0);
8840 94 : {
8841 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
8842 94 : tree res = generic_simplify_407 (loc, type, _p0, _p1, captures);
8843 94 : if (res) return res;
8844 : }
8845 94 : break;
8846 : }
8847 1855336 : default:;
8848 : }
8849 1855336 : {
8850 1855336 : tree _p1_pops[1];
8851 1855336 : if (tree_power_of_two_cand (_p1, _p1_pops))
8852 : {
8853 1587493 : tree _q30 = _p1_pops[0];
8854 1587493 : {
8855 1587493 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
8856 1587493 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8857 1587493 : if (res) return res;
8858 : }
8859 : }
8860 : }
8861 882214 : switch (TREE_CODE (_p0))
8862 : {
8863 0 : case VEC_COND_EXPR:
8864 0 : {
8865 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8866 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8867 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8868 0 : switch (TREE_CODE (_p1))
8869 : {
8870 0 : case VEC_COND_EXPR:
8871 0 : {
8872 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8873 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8874 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8875 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8876 : {
8877 0 : {
8878 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8879 0 : if (VECTOR_TYPE_P (type)
8880 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
8881 : || types_match (type, TREE_TYPE (captures[2]))
8882 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8883 : || (optimize_vectors_before_lowering_p ()
8884 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8885 : )
8886 : {
8887 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1633;
8888 0 : {
8889 0 : tree res_op0;
8890 0 : res_op0 = captures[1];
8891 0 : tree res_op1;
8892 0 : {
8893 0 : tree _o1[2], _r1;
8894 0 : _o1[0] = captures[2];
8895 0 : _o1[1] = captures[5];
8896 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
8897 0 : if (EXPR_P (_r1))
8898 0 : goto next_after_fail1633;
8899 0 : res_op1 = _r1;
8900 : }
8901 0 : tree res_op2;
8902 0 : {
8903 0 : tree _o1[2], _r1;
8904 0 : _o1[0] = captures[3];
8905 0 : _o1[1] = captures[6];
8906 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
8907 0 : if (EXPR_P (_r1))
8908 0 : goto next_after_fail1633;
8909 0 : res_op2 = _r1;
8910 : }
8911 0 : tree _r;
8912 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8913 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
8914 0 : return _r;
8915 : }
8916 0 : next_after_fail1633:;
8917 : }
8918 : }
8919 : }
8920 : break;
8921 : }
8922 0 : default:;
8923 : }
8924 0 : {
8925 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8926 0 : if (VECTOR_TYPE_P (type)
8927 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
8928 : || types_match (type, TREE_TYPE (captures[2]))
8929 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8930 : || (optimize_vectors_before_lowering_p ()
8931 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8932 : )
8933 : {
8934 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1634;
8935 0 : {
8936 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1634;
8937 0 : tree res_op0;
8938 0 : res_op0 = captures[1];
8939 0 : tree res_op1;
8940 0 : {
8941 0 : tree _o1[2], _r1;
8942 0 : _o1[0] = captures[2];
8943 0 : _o1[1] = unshare_expr (captures[4]);
8944 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
8945 0 : if (EXPR_P (_r1))
8946 0 : goto next_after_fail1634;
8947 0 : res_op1 = _r1;
8948 : }
8949 0 : tree res_op2;
8950 0 : {
8951 0 : tree _o1[2], _r1;
8952 0 : _o1[0] = captures[3];
8953 0 : _o1[1] = captures[4];
8954 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
8955 0 : if (EXPR_P (_r1))
8956 0 : goto next_after_fail1634;
8957 0 : res_op2 = _r1;
8958 : }
8959 0 : tree _r;
8960 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8961 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
8962 0 : return _r;
8963 : }
8964 0 : next_after_fail1634:;
8965 : }
8966 : }
8967 0 : break;
8968 : }
8969 882214 : default:;
8970 : }
8971 882214 : switch (TREE_CODE (_p1))
8972 : {
8973 7 : case VEC_COND_EXPR:
8974 7 : {
8975 7 : tree _q30 = TREE_OPERAND (_p1, 0);
8976 7 : tree _q31 = TREE_OPERAND (_p1, 1);
8977 7 : tree _q32 = TREE_OPERAND (_p1, 2);
8978 7 : {
8979 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8980 7 : if (VECTOR_TYPE_P (type)
8981 7 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
8982 : || types_match (type, TREE_TYPE (captures[3]))
8983 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8984 : || (optimize_vectors_before_lowering_p ()
8985 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8986 : )
8987 : {
8988 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1635;
8989 7 : {
8990 7 : if (! tree_invariant_p (captures[0])) goto next_after_fail1635;
8991 0 : tree res_op0;
8992 0 : res_op0 = captures[2];
8993 0 : tree res_op1;
8994 0 : {
8995 0 : tree _o1[2], _r1;
8996 0 : _o1[0] = unshare_expr (captures[0]);
8997 0 : _o1[1] = captures[3];
8998 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
8999 0 : if (EXPR_P (_r1))
9000 0 : goto next_after_fail1635;
9001 0 : res_op1 = _r1;
9002 : }
9003 0 : tree res_op2;
9004 0 : {
9005 0 : tree _o1[2], _r1;
9006 0 : _o1[0] = captures[0];
9007 0 : _o1[1] = captures[4];
9008 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9009 0 : if (EXPR_P (_r1))
9010 0 : goto next_after_fail1635;
9011 0 : res_op2 = _r1;
9012 : }
9013 0 : tree _r;
9014 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9015 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
9016 0 : return _r;
9017 : }
9018 7 : next_after_fail1635:;
9019 : }
9020 : }
9021 7 : break;
9022 : }
9023 : default:;
9024 : }
9025 : return NULL_TREE;
9026 : }
9027 :
9028 : tree
9029 1259629 : generic_simplify_RSHIFT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
9030 : {
9031 1259629 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9032 1259629 : switch (TREE_CODE (_p1))
9033 : {
9034 119 : case TRUNC_MOD_EXPR:
9035 119 : {
9036 119 : tree _q30 = TREE_OPERAND (_p1, 0);
9037 119 : tree _q31 = TREE_OPERAND (_p1, 1);
9038 119 : {
9039 119 : tree _q31_pops[1];
9040 119 : if (tree_power_of_two_cand (_q31, _q31_pops))
9041 : {
9042 111 : tree _q50 = _q31_pops[0];
9043 111 : {
9044 111 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9045 111 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, TRUNC_MOD_EXPR);
9046 111 : if (res) return res;
9047 : }
9048 : }
9049 : }
9050 14 : break;
9051 : }
9052 0 : case FLOOR_MOD_EXPR:
9053 0 : {
9054 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9055 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9056 0 : {
9057 0 : tree _q31_pops[1];
9058 0 : if (tree_power_of_two_cand (_q31, _q31_pops))
9059 : {
9060 0 : tree _q50 = _q31_pops[0];
9061 0 : {
9062 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9063 0 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, FLOOR_MOD_EXPR);
9064 0 : if (res) return res;
9065 : }
9066 : }
9067 : }
9068 0 : break;
9069 : }
9070 1259524 : default:;
9071 : }
9072 1259524 : if (uniform_integer_cst_p (_p1))
9073 : {
9074 1032591 : {
9075 1032591 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9076 1032591 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9077 1032591 : if (res) return res;
9078 : }
9079 : }
9080 1258767 : switch (TREE_CODE (_p0))
9081 : {
9082 58 : case NEGATE_EXPR:
9083 58 : {
9084 58 : tree _q20 = TREE_OPERAND (_p0, 0);
9085 58 : switch (TREE_CODE (_p1))
9086 : {
9087 57 : case INTEGER_CST:
9088 57 : {
9089 57 : {
9090 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9091 57 : if (!TYPE_UNSIGNED (type)
9092 57 : && TYPE_OVERFLOW_UNDEFINED (type)
9093 : )
9094 : {
9095 32 : {
9096 32 : tree stype = TREE_TYPE (captures[2]);
9097 32 : tree bt = truth_type_for (type);
9098 32 : tree zeros = build_zero_cst (type);
9099 32 : tree INTEGER_CST = NULL_TREE;
9100 32 : if (INTEGRAL_TYPE_P (type)
9101 : && canonicalize_math_after_vectorization_p ()
9102 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9103 : )
9104 : {
9105 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1644;
9106 : {
9107 : tree res_op0;
9108 : {
9109 : tree _o1[1], _r1;
9110 : {
9111 : tree _o2[2], _r2;
9112 : _o2[0] = captures[1];
9113 : _o2[1] = zeros;
9114 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9115 : _o1[0] = _r2;
9116 : }
9117 : if (TREE_TYPE (_o1[0]) != type)
9118 : {
9119 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9120 : }
9121 : else
9122 : _r1 = _o1[0];
9123 : res_op0 = _r1;
9124 : }
9125 : tree _r;
9126 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9127 : if (TREE_SIDE_EFFECTS (captures[2]))
9128 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9129 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9130 : return _r;
9131 : }
9132 : next_after_fail1644:;
9133 : }
9134 : else
9135 : {
9136 0 : if (VECTOR_INTEGER_TYPE_P (type)
9137 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9138 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9139 0 : && (INTEGER_CST = uniform_integer_cst_p (captures[2])) != NULL
9140 32 : && wi::eq_p (wi::to_wide (INTEGER_CST), element_precision (type) - 1)
9141 : )
9142 : {
9143 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1645;
9144 0 : {
9145 0 : tree res_op0;
9146 0 : {
9147 0 : tree _o1[2], _r1;
9148 0 : _o1[0] = captures[1];
9149 0 : _o1[1] = zeros;
9150 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9151 0 : res_op0 = _r1;
9152 : }
9153 0 : tree _r;
9154 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9155 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9156 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9157 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
9158 0 : return _r;
9159 : }
9160 0 : next_after_fail1645:;
9161 : }
9162 : }
9163 : }
9164 : }
9165 : }
9166 57 : break;
9167 : }
9168 0 : case VECTOR_CST:
9169 0 : {
9170 0 : {
9171 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9172 0 : if (!TYPE_UNSIGNED (type)
9173 0 : && TYPE_OVERFLOW_UNDEFINED (type)
9174 : )
9175 : {
9176 0 : {
9177 0 : tree stype = TREE_TYPE (captures[2]);
9178 0 : tree bt = truth_type_for (type);
9179 0 : tree zeros = build_zero_cst (type);
9180 0 : tree VECTOR_CST = NULL_TREE;
9181 0 : if (INTEGRAL_TYPE_P (type)
9182 : && canonicalize_math_after_vectorization_p ()
9183 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9184 : )
9185 : {
9186 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1646;
9187 : {
9188 : tree res_op0;
9189 : {
9190 : tree _o1[1], _r1;
9191 : {
9192 : tree _o2[2], _r2;
9193 : _o2[0] = captures[1];
9194 : _o2[1] = zeros;
9195 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9196 : _o1[0] = _r2;
9197 : }
9198 : if (TREE_TYPE (_o1[0]) != type)
9199 : {
9200 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9201 : }
9202 : else
9203 : _r1 = _o1[0];
9204 : res_op0 = _r1;
9205 : }
9206 : tree _r;
9207 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9208 : if (TREE_SIDE_EFFECTS (captures[2]))
9209 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9210 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
9211 : return _r;
9212 : }
9213 : next_after_fail1646:;
9214 : }
9215 : else
9216 : {
9217 0 : if (VECTOR_INTEGER_TYPE_P (type)
9218 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9219 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9220 0 : && (VECTOR_CST = uniform_integer_cst_p (captures[2])) != NULL
9221 0 : && wi::eq_p (wi::to_wide (VECTOR_CST), element_precision (type) - 1)
9222 : )
9223 : {
9224 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1647;
9225 0 : {
9226 0 : tree res_op0;
9227 0 : {
9228 0 : tree _o1[2], _r1;
9229 0 : _o1[0] = captures[1];
9230 0 : _o1[1] = zeros;
9231 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9232 0 : res_op0 = _r1;
9233 : }
9234 0 : tree _r;
9235 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9236 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9237 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9238 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
9239 0 : return _r;
9240 : }
9241 0 : next_after_fail1647:;
9242 : }
9243 : }
9244 : }
9245 : }
9246 : }
9247 0 : break;
9248 : }
9249 : default:;
9250 : }
9251 : break;
9252 : }
9253 437 : case LSHIFT_EXPR:
9254 437 : {
9255 437 : tree _q20 = TREE_OPERAND (_p0, 0);
9256 437 : tree _q21 = TREE_OPERAND (_p0, 1);
9257 437 : switch (TREE_CODE (_q21))
9258 : {
9259 358 : case INTEGER_CST:
9260 358 : {
9261 358 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
9262 : {
9263 67 : {
9264 67 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
9265 67 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures);
9266 67 : if (res) return res;
9267 : }
9268 : }
9269 : break;
9270 : }
9271 : default:;
9272 : }
9273 : break;
9274 : }
9275 1258740 : default:;
9276 : }
9277 1258740 : {
9278 1258740 : tree _p0_pops[1];
9279 1258740 : if (tree_nop_convert (_p0, _p0_pops))
9280 : {
9281 418101 : tree _q20 = _p0_pops[0];
9282 418101 : switch (TREE_CODE (_q20))
9283 : {
9284 20 : case LSHIFT_EXPR:
9285 20 : {
9286 20 : tree _q30 = TREE_OPERAND (_q20, 0);
9287 20 : tree _q31 = TREE_OPERAND (_q20, 1);
9288 20 : switch (TREE_CODE (_q31))
9289 : {
9290 0 : case INTEGER_CST:
9291 0 : {
9292 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
9293 : {
9294 0 : {
9295 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p1, _q31 };
9296 0 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures);
9297 0 : if (res) return res;
9298 : }
9299 : }
9300 : break;
9301 : }
9302 : default:;
9303 : }
9304 : break;
9305 : }
9306 : default:;
9307 : }
9308 : }
9309 : }
9310 1258740 : if (integer_all_onesp (_p0))
9311 : {
9312 10820 : {
9313 10820 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9314 10820 : if (!TYPE_UNSIGNED (type)
9315 : )
9316 : {
9317 119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1648;
9318 119 : {
9319 119 : tree _r;
9320 119 : _r = captures[0];
9321 119 : if (TREE_SIDE_EFFECTS (captures[1]))
9322 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9323 119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
9324 119 : return _r;
9325 : }
9326 0 : next_after_fail1648:;
9327 : }
9328 : }
9329 : }
9330 1258621 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9331 : {
9332 25 : {
9333 25 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9334 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
9335 25 : {
9336 25 : tree _r;
9337 25 : _r = build_zero_cst (type);
9338 25 : if (TREE_SIDE_EFFECTS (captures[0]))
9339 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
9340 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
9341 25 : return _r;
9342 : }
9343 0 : next_after_fail1649:;
9344 : }
9345 : }
9346 1258596 : if (integer_zerop (_p1))
9347 : {
9348 1279 : {
9349 1279 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9350 1279 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9351 1279 : if (res) return res;
9352 : }
9353 : }
9354 1257317 : if (integer_zerop (_p0))
9355 : {
9356 152 : {
9357 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9358 152 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9359 152 : if (res) return res;
9360 : }
9361 : }
9362 1257165 : switch (TREE_CODE (_p1))
9363 : {
9364 0 : case VECTOR_CST:
9365 0 : {
9366 0 : {
9367 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9368 0 : tree res = generic_simplify_413 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9369 0 : if (res) return res;
9370 : }
9371 0 : break;
9372 : }
9373 0 : case CONSTRUCTOR:
9374 0 : {
9375 0 : {
9376 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9377 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9378 0 : if (res) return res;
9379 : }
9380 0 : break;
9381 : }
9382 1257165 : default:;
9383 : }
9384 1257165 : switch (TREE_CODE (_p0))
9385 : {
9386 118 : case RSHIFT_EXPR:
9387 118 : {
9388 118 : tree _q20 = TREE_OPERAND (_p0, 0);
9389 118 : tree _q21 = TREE_OPERAND (_p0, 1);
9390 118 : switch (TREE_CODE (_q21))
9391 : {
9392 73 : case INTEGER_CST:
9393 73 : {
9394 73 : switch (TREE_CODE (_p1))
9395 : {
9396 47 : case INTEGER_CST:
9397 47 : {
9398 47 : {
9399 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9400 47 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9401 47 : if (res) return res;
9402 : }
9403 0 : break;
9404 : }
9405 : default:;
9406 : }
9407 : break;
9408 : }
9409 : default:;
9410 : }
9411 : break;
9412 : }
9413 474622 : CASE_CONVERT:
9414 474622 : {
9415 474622 : tree _q20 = TREE_OPERAND (_p0, 0);
9416 474622 : switch (TREE_CODE (_q20))
9417 : {
9418 6 : case BIT_AND_EXPR:
9419 6 : {
9420 6 : tree _q30 = TREE_OPERAND (_q20, 0);
9421 6 : tree _q31 = TREE_OPERAND (_q20, 1);
9422 6 : switch (TREE_CODE (_q31))
9423 : {
9424 0 : case INTEGER_CST:
9425 0 : {
9426 0 : switch (TREE_CODE (_p1))
9427 : {
9428 0 : case INTEGER_CST:
9429 0 : {
9430 0 : {
9431 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9432 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9433 0 : if (res) return res;
9434 : }
9435 0 : break;
9436 : }
9437 : default:;
9438 : }
9439 : break;
9440 : }
9441 : default:;
9442 : }
9443 : break;
9444 : }
9445 14 : case BIT_XOR_EXPR:
9446 14 : {
9447 14 : tree _q30 = TREE_OPERAND (_q20, 0);
9448 14 : tree _q31 = TREE_OPERAND (_q20, 1);
9449 14 : switch (TREE_CODE (_q31))
9450 : {
9451 0 : case INTEGER_CST:
9452 0 : {
9453 0 : switch (TREE_CODE (_p1))
9454 : {
9455 0 : case INTEGER_CST:
9456 0 : {
9457 0 : {
9458 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9459 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9460 0 : if (res) return res;
9461 : }
9462 0 : break;
9463 : }
9464 : default:;
9465 : }
9466 : break;
9467 : }
9468 : default:;
9469 : }
9470 : break;
9471 : }
9472 43 : case BIT_IOR_EXPR:
9473 43 : {
9474 43 : tree _q30 = TREE_OPERAND (_q20, 0);
9475 43 : tree _q31 = TREE_OPERAND (_q20, 1);
9476 43 : switch (TREE_CODE (_q31))
9477 : {
9478 24 : case INTEGER_CST:
9479 24 : {
9480 24 : switch (TREE_CODE (_p1))
9481 : {
9482 7 : case INTEGER_CST:
9483 7 : {
9484 7 : {
9485 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9486 7 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9487 7 : if (res) return res;
9488 : }
9489 0 : break;
9490 : }
9491 : default:;
9492 : }
9493 : break;
9494 : }
9495 : default:;
9496 : }
9497 : break;
9498 : }
9499 59 : case CALL_EXPR:
9500 59 : switch (get_call_combined_fn (_q20))
9501 : {
9502 0 : case CFN_BUILT_IN_BSWAP128:
9503 0 : if (call_expr_nargs (_q20) == 1)
9504 : {
9505 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9506 0 : switch (TREE_CODE (_p1))
9507 : {
9508 0 : case INTEGER_CST:
9509 0 : {
9510 0 : {
9511 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9512 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
9513 0 : if (res) return res;
9514 : }
9515 0 : break;
9516 : }
9517 : default:;
9518 : }
9519 : }
9520 : break;
9521 8 : case CFN_BUILT_IN_BSWAP16:
9522 8 : if (call_expr_nargs (_q20) == 1)
9523 : {
9524 8 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9525 8 : switch (TREE_CODE (_p1))
9526 : {
9527 7 : case INTEGER_CST:
9528 7 : {
9529 7 : {
9530 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9531 7 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
9532 7 : if (res) return res;
9533 : }
9534 2 : break;
9535 : }
9536 : default:;
9537 : }
9538 : }
9539 : break;
9540 13 : case CFN_BUILT_IN_BSWAP32:
9541 13 : if (call_expr_nargs (_q20) == 1)
9542 : {
9543 13 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9544 13 : switch (TREE_CODE (_p1))
9545 : {
9546 13 : case INTEGER_CST:
9547 13 : {
9548 13 : {
9549 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9550 13 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
9551 13 : if (res) return res;
9552 : }
9553 9 : break;
9554 : }
9555 : default:;
9556 : }
9557 : }
9558 : break;
9559 18 : case CFN_BUILT_IN_BSWAP64:
9560 18 : if (call_expr_nargs (_q20) == 1)
9561 : {
9562 18 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9563 18 : switch (TREE_CODE (_p1))
9564 : {
9565 18 : case INTEGER_CST:
9566 18 : {
9567 18 : {
9568 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9569 18 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
9570 18 : if (res) return res;
9571 : }
9572 12 : break;
9573 : }
9574 : default:;
9575 : }
9576 : }
9577 : break;
9578 : default:;
9579 : }
9580 : break;
9581 : default:;
9582 : }
9583 : break;
9584 : }
9585 13879 : case BIT_AND_EXPR:
9586 13879 : {
9587 13879 : tree _q20 = TREE_OPERAND (_p0, 0);
9588 13879 : tree _q21 = TREE_OPERAND (_p0, 1);
9589 13879 : switch (TREE_CODE (_q21))
9590 : {
9591 13829 : case INTEGER_CST:
9592 13829 : {
9593 13829 : switch (TREE_CODE (_p1))
9594 : {
9595 13806 : case INTEGER_CST:
9596 13806 : {
9597 13806 : {
9598 13806 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9599 13806 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9600 13806 : if (res) return res;
9601 : }
9602 0 : break;
9603 : }
9604 : default:;
9605 : }
9606 : break;
9607 : }
9608 : default:;
9609 : }
9610 : break;
9611 : }
9612 240 : case BIT_XOR_EXPR:
9613 240 : {
9614 240 : tree _q20 = TREE_OPERAND (_p0, 0);
9615 240 : tree _q21 = TREE_OPERAND (_p0, 1);
9616 240 : switch (TREE_CODE (_q21))
9617 : {
9618 97 : case INTEGER_CST:
9619 97 : {
9620 97 : switch (TREE_CODE (_p1))
9621 : {
9622 97 : case INTEGER_CST:
9623 97 : {
9624 97 : {
9625 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9626 97 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9627 97 : if (res) return res;
9628 : }
9629 0 : break;
9630 : }
9631 : default:;
9632 : }
9633 : break;
9634 : }
9635 : default:;
9636 : }
9637 : break;
9638 : }
9639 55 : case BIT_IOR_EXPR:
9640 55 : {
9641 55 : tree _q20 = TREE_OPERAND (_p0, 0);
9642 55 : tree _q21 = TREE_OPERAND (_p0, 1);
9643 55 : switch (TREE_CODE (_q21))
9644 : {
9645 10 : case INTEGER_CST:
9646 10 : {
9647 10 : switch (TREE_CODE (_p1))
9648 : {
9649 8 : case INTEGER_CST:
9650 8 : {
9651 8 : {
9652 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9653 8 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9654 8 : if (res) return res;
9655 : }
9656 0 : break;
9657 : }
9658 : default:;
9659 : }
9660 : break;
9661 : }
9662 : default:;
9663 : }
9664 : break;
9665 : }
9666 0 : case VEC_COND_EXPR:
9667 0 : {
9668 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9669 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9670 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9671 0 : switch (TREE_CODE (_p1))
9672 : {
9673 0 : case VEC_COND_EXPR:
9674 0 : {
9675 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9676 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9677 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9678 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9679 : {
9680 0 : {
9681 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9682 0 : if (VECTOR_TYPE_P (type)
9683 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9684 : || types_match (type, TREE_TYPE (captures[2]))
9685 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9686 : || (optimize_vectors_before_lowering_p ()
9687 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9688 : )
9689 : {
9690 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1650;
9691 0 : {
9692 0 : tree res_op0;
9693 0 : res_op0 = captures[1];
9694 0 : tree res_op1;
9695 0 : {
9696 0 : tree _o1[2], _r1;
9697 0 : _o1[0] = captures[2];
9698 0 : _o1[1] = captures[5];
9699 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9700 0 : if (EXPR_P (_r1))
9701 0 : goto next_after_fail1650;
9702 0 : res_op1 = _r1;
9703 : }
9704 0 : tree res_op2;
9705 0 : {
9706 0 : tree _o1[2], _r1;
9707 0 : _o1[0] = captures[3];
9708 0 : _o1[1] = captures[6];
9709 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9710 0 : if (EXPR_P (_r1))
9711 0 : goto next_after_fail1650;
9712 0 : res_op2 = _r1;
9713 : }
9714 0 : tree _r;
9715 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9716 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
9717 0 : return _r;
9718 : }
9719 0 : next_after_fail1650:;
9720 : }
9721 : }
9722 : }
9723 : break;
9724 : }
9725 0 : default:;
9726 : }
9727 0 : {
9728 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9729 0 : if (VECTOR_TYPE_P (type)
9730 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9731 : || types_match (type, TREE_TYPE (captures[2]))
9732 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9733 : || (optimize_vectors_before_lowering_p ()
9734 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9735 : )
9736 : {
9737 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
9738 0 : {
9739 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1651;
9740 0 : tree res_op0;
9741 0 : res_op0 = captures[1];
9742 0 : tree res_op1;
9743 0 : {
9744 0 : tree _o1[2], _r1;
9745 0 : _o1[0] = captures[2];
9746 0 : _o1[1] = unshare_expr (captures[4]);
9747 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9748 0 : if (EXPR_P (_r1))
9749 0 : goto next_after_fail1651;
9750 0 : res_op1 = _r1;
9751 : }
9752 0 : tree res_op2;
9753 0 : {
9754 0 : tree _o1[2], _r1;
9755 0 : _o1[0] = captures[3];
9756 0 : _o1[1] = captures[4];
9757 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9758 0 : if (EXPR_P (_r1))
9759 0 : goto next_after_fail1651;
9760 0 : res_op2 = _r1;
9761 : }
9762 0 : tree _r;
9763 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
9765 0 : return _r;
9766 : }
9767 0 : next_after_fail1651:;
9768 : }
9769 : }
9770 0 : break;
9771 : }
9772 436 : case CALL_EXPR:
9773 436 : switch (get_call_combined_fn (_p0))
9774 : {
9775 0 : case CFN_BUILT_IN_BSWAP128:
9776 0 : if (call_expr_nargs (_p0) == 1)
9777 : {
9778 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9779 0 : switch (TREE_CODE (_p1))
9780 : {
9781 0 : case INTEGER_CST:
9782 0 : {
9783 0 : {
9784 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9785 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
9786 0 : if (res) return res;
9787 : }
9788 0 : break;
9789 : }
9790 : default:;
9791 : }
9792 : }
9793 : break;
9794 32 : case CFN_BUILT_IN_BSWAP16:
9795 32 : if (call_expr_nargs (_p0) == 1)
9796 : {
9797 32 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9798 32 : switch (TREE_CODE (_p1))
9799 : {
9800 32 : case INTEGER_CST:
9801 32 : {
9802 32 : {
9803 32 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9804 32 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
9805 32 : if (res) return res;
9806 : }
9807 9 : break;
9808 : }
9809 : default:;
9810 : }
9811 : }
9812 : break;
9813 99 : case CFN_BUILT_IN_BSWAP32:
9814 99 : if (call_expr_nargs (_p0) == 1)
9815 : {
9816 99 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9817 99 : switch (TREE_CODE (_p1))
9818 : {
9819 98 : case INTEGER_CST:
9820 98 : {
9821 98 : {
9822 98 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9823 98 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
9824 98 : if (res) return res;
9825 : }
9826 59 : break;
9827 : }
9828 : default:;
9829 : }
9830 : }
9831 : break;
9832 100 : case CFN_BUILT_IN_BSWAP64:
9833 100 : if (call_expr_nargs (_p0) == 1)
9834 : {
9835 100 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9836 100 : switch (TREE_CODE (_p1))
9837 : {
9838 99 : case INTEGER_CST:
9839 99 : {
9840 99 : {
9841 99 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9842 99 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
9843 99 : if (res) return res;
9844 : }
9845 73 : break;
9846 : }
9847 : default:;
9848 : }
9849 : }
9850 : break;
9851 : default:;
9852 : }
9853 : break;
9854 1243097 : default:;
9855 : }
9856 1243097 : if (integer_onep (_p0))
9857 : {
9858 524 : {
9859 524 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
9860 524 : if (INTEGRAL_TYPE_P (type)
9861 : )
9862 : {
9863 524 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1652;
9864 524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
9865 524 : {
9866 524 : tree res_op0;
9867 524 : {
9868 524 : tree _o1[2], _r1;
9869 524 : _o1[0] = captures[0];
9870 524 : _o1[1] = build_zero_cst (TREE_TYPE (captures[0]));
9871 524 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
9872 524 : res_op0 = _r1;
9873 : }
9874 524 : tree _r;
9875 524 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
9876 524 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
9877 524 : return _r;
9878 : }
9879 : next_after_fail1652:;
9880 : }
9881 : }
9882 : }
9883 1242573 : switch (TREE_CODE (_p1))
9884 : {
9885 11 : case VEC_COND_EXPR:
9886 11 : {
9887 11 : tree _q30 = TREE_OPERAND (_p1, 0);
9888 11 : tree _q31 = TREE_OPERAND (_p1, 1);
9889 11 : tree _q32 = TREE_OPERAND (_p1, 2);
9890 11 : {
9891 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9892 11 : if (VECTOR_TYPE_P (type)
9893 11 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9894 : || types_match (type, TREE_TYPE (captures[3]))
9895 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9896 : || (optimize_vectors_before_lowering_p ()
9897 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9898 : )
9899 : {
9900 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
9901 11 : {
9902 11 : if (! tree_invariant_p (captures[0])) goto next_after_fail1653;
9903 0 : tree res_op0;
9904 0 : res_op0 = captures[2];
9905 0 : tree res_op1;
9906 0 : {
9907 0 : tree _o1[2], _r1;
9908 0 : _o1[0] = unshare_expr (captures[0]);
9909 0 : _o1[1] = captures[3];
9910 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9911 0 : if (EXPR_P (_r1))
9912 0 : goto next_after_fail1653;
9913 0 : res_op1 = _r1;
9914 : }
9915 0 : tree res_op2;
9916 0 : {
9917 0 : tree _o1[2], _r1;
9918 0 : _o1[0] = captures[0];
9919 0 : _o1[1] = captures[4];
9920 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9921 0 : if (EXPR_P (_r1))
9922 0 : goto next_after_fail1653;
9923 0 : res_op2 = _r1;
9924 : }
9925 0 : tree _r;
9926 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9927 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
9928 0 : return _r;
9929 : }
9930 11 : next_after_fail1653:;
9931 : }
9932 : }
9933 11 : break;
9934 : }
9935 1242573 : default:;
9936 : }
9937 1242573 : switch (TREE_CODE (_p0))
9938 : {
9939 0 : case VEC_PERM_EXPR:
9940 0 : {
9941 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9942 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9943 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9944 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
9945 : {
9946 0 : switch (TREE_CODE (_p1))
9947 : {
9948 0 : case VEC_PERM_EXPR:
9949 0 : {
9950 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9951 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9952 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9953 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
9954 : {
9955 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9956 : {
9957 0 : {
9958 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
9959 0 : if (VECTOR_INTEGER_TYPE_P (type)
9960 : )
9961 : {
9962 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1654;
9963 0 : {
9964 0 : tree res_op0;
9965 0 : {
9966 0 : tree _o1[2], _r1;
9967 0 : _o1[0] = captures[0];
9968 0 : _o1[1] = captures[2];
9969 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9970 0 : captures[3] = _r1;
9971 : }
9972 0 : res_op0 = unshare_expr (captures[3]);
9973 0 : tree res_op1;
9974 0 : res_op1 = captures[3];
9975 0 : tree res_op2;
9976 0 : res_op2 = captures[1];
9977 0 : tree _r;
9978 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
9979 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
9980 0 : return _r;
9981 : }
9982 0 : next_after_fail1654:;
9983 : }
9984 : }
9985 : }
9986 : }
9987 : break;
9988 : }
9989 : default:;
9990 : }
9991 : }
9992 : break;
9993 : }
9994 : default:;
9995 : }
9996 : return NULL_TREE;
9997 : }
9998 :
9999 : tree
10000 378820 : generic_simplify_MAX_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10001 : {
10002 378820 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10003 378820 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10004 : {
10005 0 : {
10006 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10007 0 : tree res = generic_simplify_510 (loc, type, _p0, _p1, captures, MAX_EXPR);
10008 0 : if (res) return res;
10009 : }
10010 : }
10011 378820 : switch (TREE_CODE (_p0))
10012 : {
10013 111 : case MAX_EXPR:
10014 111 : {
10015 111 : tree _q20 = TREE_OPERAND (_p0, 0);
10016 111 : tree _q21 = TREE_OPERAND (_p0, 1);
10017 111 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10018 : {
10019 0 : {
10020 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10021 0 : tree res = generic_simplify_511 (loc, type, _p0, _p1, captures, MAX_EXPR);
10022 0 : if (res) return res;
10023 : }
10024 : }
10025 111 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10026 : {
10027 0 : {
10028 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10029 0 : tree res = generic_simplify_511 (loc, type, _p0, _p1, captures, MAX_EXPR);
10030 0 : if (res) return res;
10031 : }
10032 : }
10033 : break;
10034 : }
10035 378820 : default:;
10036 : }
10037 378820 : switch (TREE_CODE (_p1))
10038 : {
10039 0 : case MAX_EXPR:
10040 0 : {
10041 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10042 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10043 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10044 : {
10045 0 : {
10046 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
10047 0 : tree res = generic_simplify_512 (loc, type, _p0, _p1, captures, MAX_EXPR);
10048 0 : if (res) return res;
10049 : }
10050 : }
10051 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10052 : {
10053 0 : {
10054 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
10055 0 : tree res = generic_simplify_512 (loc, type, _p0, _p1, captures, MAX_EXPR);
10056 0 : if (res) return res;
10057 : }
10058 : }
10059 : break;
10060 : }
10061 378820 : default:;
10062 : }
10063 378820 : switch (TREE_CODE (_p0))
10064 : {
10065 3235 : case MIN_EXPR:
10066 3235 : {
10067 3235 : tree _q20 = TREE_OPERAND (_p0, 0);
10068 3235 : tree _q21 = TREE_OPERAND (_p0, 1);
10069 3235 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10070 : {
10071 1 : {
10072 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10073 1 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
10074 1 : if (res) return res;
10075 : }
10076 : }
10077 3234 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10078 : {
10079 1 : {
10080 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10081 1 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
10082 1 : if (res) return res;
10083 : }
10084 : }
10085 : break;
10086 : }
10087 378818 : default:;
10088 : }
10089 378818 : switch (TREE_CODE (_p1))
10090 : {
10091 0 : case MIN_EXPR:
10092 0 : {
10093 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10094 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10095 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10096 : {
10097 0 : {
10098 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10099 0 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
10100 0 : if (res) return res;
10101 : }
10102 : }
10103 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10104 : {
10105 0 : {
10106 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10107 0 : tree res = generic_simplify_521 (loc, type, _p0, _p1, captures);
10108 0 : if (res) return res;
10109 : }
10110 : }
10111 : break;
10112 : }
10113 0 : case NEGATE_EXPR:
10114 0 : {
10115 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10116 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10117 : {
10118 0 : {
10119 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10120 0 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures);
10121 0 : if (res) return res;
10122 : }
10123 : }
10124 : break;
10125 : }
10126 378818 : default:;
10127 : }
10128 378818 : switch (TREE_CODE (_p0))
10129 : {
10130 76 : case NEGATE_EXPR:
10131 76 : {
10132 76 : tree _q20 = TREE_OPERAND (_p0, 0);
10133 76 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10134 : {
10135 2 : {
10136 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10137 2 : tree res = generic_simplify_522 (loc, type, _p0, _p1, captures);
10138 2 : if (res) return res;
10139 : }
10140 : }
10141 : break;
10142 : }
10143 378816 : default:;
10144 : }
10145 378816 : {
10146 378816 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10147 378816 : if (INTEGRAL_TYPE_P (type)
10148 376896 : && TYPE_MAX_VALUE (type)
10149 755712 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
10150 : )
10151 : {
10152 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1721;
10153 0 : {
10154 0 : tree _r;
10155 0 : _r = captures[1];
10156 0 : if (TREE_SIDE_EFFECTS (captures[0]))
10157 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10158 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1010, __FILE__, __LINE__, true);
10159 0 : return _r;
10160 : }
10161 0 : next_after_fail1721:;
10162 : }
10163 : else
10164 : {
10165 378816 : if (INTEGRAL_TYPE_P (type)
10166 376896 : && TYPE_MIN_VALUE (type)
10167 755712 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
10168 : )
10169 : {
10170 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1722;
10171 11 : {
10172 11 : tree _r;
10173 11 : _r = captures[0];
10174 11 : if (TREE_SIDE_EFFECTS (captures[1]))
10175 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10176 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1011, __FILE__, __LINE__, true);
10177 11 : return _r;
10178 : }
10179 0 : next_after_fail1722:;
10180 : }
10181 : }
10182 : }
10183 378805 : switch (TREE_CODE (_p1))
10184 : {
10185 110 : case PLUS_EXPR:
10186 110 : {
10187 110 : tree _q30 = TREE_OPERAND (_p1, 0);
10188 110 : tree _q31 = TREE_OPERAND (_p1, 1);
10189 110 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10190 : {
10191 0 : switch (TREE_CODE (_q31))
10192 : {
10193 0 : case INTEGER_CST:
10194 0 : {
10195 0 : {
10196 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10197 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10198 : )
10199 : {
10200 0 : if (tree_int_cst_sgn (captures[2]) > 0
10201 : )
10202 : {
10203 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1723;
10204 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1723;
10205 0 : {
10206 0 : tree _r;
10207 0 : _r = captures[1];
10208 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
10209 0 : return _r;
10210 : }
10211 0 : next_after_fail1723:;
10212 : }
10213 : else
10214 : {
10215 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1724;
10216 0 : {
10217 0 : tree _r;
10218 0 : _r = captures[0];
10219 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10220 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10221 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
10222 0 : return _r;
10223 : }
10224 0 : next_after_fail1724:;
10225 : }
10226 : }
10227 : }
10228 0 : break;
10229 : }
10230 : default:;
10231 : }
10232 : }
10233 : break;
10234 : }
10235 378805 : default:;
10236 : }
10237 378805 : switch (TREE_CODE (_p0))
10238 : {
10239 22836 : case PLUS_EXPR:
10240 22836 : {
10241 22836 : tree _q20 = TREE_OPERAND (_p0, 0);
10242 22836 : tree _q21 = TREE_OPERAND (_p0, 1);
10243 22836 : switch (TREE_CODE (_q21))
10244 : {
10245 22798 : case INTEGER_CST:
10246 22798 : {
10247 22798 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10248 : {
10249 11 : {
10250 11 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10251 11 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10252 : )
10253 : {
10254 0 : if (tree_int_cst_sgn (captures[2]) > 0
10255 : )
10256 : {
10257 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1725;
10258 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1725;
10259 0 : {
10260 0 : tree _r;
10261 0 : _r = captures[1];
10262 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1012, __FILE__, __LINE__, true);
10263 0 : return _r;
10264 : }
10265 11 : next_after_fail1725:;
10266 : }
10267 : else
10268 : {
10269 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1726;
10270 0 : {
10271 0 : tree _r;
10272 0 : _r = captures[0];
10273 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10274 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10275 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1013, __FILE__, __LINE__, true);
10276 0 : return _r;
10277 : }
10278 0 : next_after_fail1726:;
10279 : }
10280 : }
10281 : }
10282 : }
10283 : break;
10284 : }
10285 : default:;
10286 : }
10287 : break;
10288 : }
10289 3233 : case MIN_EXPR:
10290 3233 : {
10291 3233 : tree _q20 = TREE_OPERAND (_p0, 0);
10292 3233 : tree _q21 = TREE_OPERAND (_p0, 1);
10293 3233 : switch (TREE_CODE (_p1))
10294 : {
10295 0 : case MAX_EXPR:
10296 0 : {
10297 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10298 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10299 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10300 : {
10301 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10302 : {
10303 0 : {
10304 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10305 0 : if (!HONOR_NANS (captures[0])
10306 : )
10307 : {
10308 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1727;
10309 0 : {
10310 0 : tree res_op0;
10311 0 : res_op0 = captures[0];
10312 0 : tree res_op1;
10313 0 : res_op1 = captures[1];
10314 0 : tree _r;
10315 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10316 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
10317 0 : return _r;
10318 : }
10319 0 : next_after_fail1727:;
10320 : }
10321 : }
10322 : }
10323 : }
10324 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10325 : {
10326 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10327 : {
10328 0 : {
10329 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10330 0 : if (!HONOR_NANS (captures[0])
10331 : )
10332 : {
10333 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1728;
10334 0 : {
10335 0 : tree res_op0;
10336 0 : res_op0 = captures[0];
10337 0 : tree res_op1;
10338 0 : res_op1 = captures[1];
10339 0 : tree _r;
10340 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10341 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
10342 0 : return _r;
10343 : }
10344 0 : next_after_fail1728:;
10345 : }
10346 : }
10347 : }
10348 : }
10349 : break;
10350 : }
10351 : default:;
10352 : }
10353 : break;
10354 : }
10355 111 : case MAX_EXPR:
10356 111 : {
10357 111 : tree _q20 = TREE_OPERAND (_p0, 0);
10358 111 : tree _q21 = TREE_OPERAND (_p0, 1);
10359 111 : switch (TREE_CODE (_p1))
10360 : {
10361 0 : case MIN_EXPR:
10362 0 : {
10363 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10364 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10365 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10366 : {
10367 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10368 : {
10369 0 : {
10370 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10371 0 : if (!HONOR_NANS (captures[0])
10372 : )
10373 : {
10374 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1729;
10375 0 : {
10376 0 : tree res_op0;
10377 0 : res_op0 = captures[0];
10378 0 : tree res_op1;
10379 0 : res_op1 = captures[1];
10380 0 : tree _r;
10381 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10382 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
10383 0 : return _r;
10384 : }
10385 0 : next_after_fail1729:;
10386 : }
10387 : }
10388 : }
10389 : }
10390 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10391 : {
10392 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10393 : {
10394 0 : {
10395 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10396 0 : if (!HONOR_NANS (captures[0])
10397 : )
10398 : {
10399 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1730;
10400 0 : {
10401 0 : tree res_op0;
10402 0 : res_op0 = captures[0];
10403 0 : tree res_op1;
10404 0 : res_op1 = captures[1];
10405 0 : tree _r;
10406 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
10407 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
10408 0 : return _r;
10409 : }
10410 0 : next_after_fail1730:;
10411 : }
10412 : }
10413 : }
10414 : }
10415 : break;
10416 : }
10417 : default:;
10418 : }
10419 : break;
10420 : }
10421 32199 : CASE_CONVERT:
10422 32199 : {
10423 32199 : tree _q20 = TREE_OPERAND (_p0, 0);
10424 32199 : switch (TREE_CODE (_q20))
10425 : {
10426 0 : case ADDR_EXPR:
10427 0 : {
10428 0 : switch (TREE_CODE (_p1))
10429 : {
10430 0 : CASE_CONVERT:
10431 0 : {
10432 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10433 0 : switch (TREE_CODE (_q40))
10434 : {
10435 0 : case ADDR_EXPR:
10436 0 : {
10437 0 : {
10438 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10439 0 : tree res = generic_simplify_515 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10440 0 : if (res) return res;
10441 : }
10442 0 : break;
10443 : }
10444 : default:;
10445 : }
10446 : break;
10447 : }
10448 0 : case ADDR_EXPR:
10449 0 : {
10450 0 : {
10451 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10452 0 : tree res = generic_simplify_516 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10453 0 : if (res) return res;
10454 : }
10455 0 : break;
10456 : }
10457 : default:;
10458 : }
10459 : break;
10460 : }
10461 : default:;
10462 : }
10463 : break;
10464 : }
10465 10 : case ADDR_EXPR:
10466 10 : {
10467 10 : switch (TREE_CODE (_p1))
10468 : {
10469 0 : CASE_CONVERT:
10470 0 : {
10471 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10472 0 : switch (TREE_CODE (_q30))
10473 : {
10474 0 : case ADDR_EXPR:
10475 0 : {
10476 0 : {
10477 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
10478 0 : tree res = generic_simplify_517 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10479 0 : if (res) return res;
10480 : }
10481 0 : break;
10482 : }
10483 : default:;
10484 : }
10485 : break;
10486 : }
10487 10 : case ADDR_EXPR:
10488 10 : {
10489 10 : {
10490 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
10491 10 : tree res = generic_simplify_518 (loc, type, _p0, _p1, captures, MAX_EXPR, GT_EXPR);
10492 10 : if (res) return res;
10493 : }
10494 10 : break;
10495 : }
10496 : default:;
10497 : }
10498 : break;
10499 : }
10500 74 : case NEGATE_EXPR:
10501 74 : {
10502 74 : tree _q20 = TREE_OPERAND (_p0, 0);
10503 74 : switch (TREE_CODE (_p1))
10504 : {
10505 0 : case NEGATE_EXPR:
10506 0 : {
10507 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10508 0 : {
10509 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10510 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
10511 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
10512 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
10513 : )
10514 : {
10515 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1731;
10516 0 : {
10517 0 : tree res_op0;
10518 0 : {
10519 0 : tree _o1[2], _r1;
10520 0 : _o1[0] = captures[1];
10521 0 : _o1[1] = captures[3];
10522 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10523 0 : res_op0 = _r1;
10524 : }
10525 0 : tree _r;
10526 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
10527 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1009, __FILE__, __LINE__, true);
10528 0 : return _r;
10529 : }
10530 0 : next_after_fail1731:;
10531 : }
10532 : }
10533 0 : break;
10534 : }
10535 : default:;
10536 : }
10537 : break;
10538 : }
10539 0 : case BIT_NOT_EXPR:
10540 0 : {
10541 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10542 0 : switch (TREE_CODE (_p1))
10543 : {
10544 0 : case BIT_NOT_EXPR:
10545 0 : {
10546 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10547 0 : {
10548 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10549 0 : tree res = generic_simplify_519 (loc, type, _p0, _p1, captures, MAX_EXPR, MIN_EXPR);
10550 0 : if (res) return res;
10551 : }
10552 0 : break;
10553 : }
10554 : default:;
10555 : }
10556 : break;
10557 : }
10558 0 : case VEC_COND_EXPR:
10559 0 : {
10560 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10561 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10562 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10563 0 : switch (TREE_CODE (_p1))
10564 : {
10565 0 : case VEC_COND_EXPR:
10566 0 : {
10567 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10568 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10569 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10570 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10571 : {
10572 0 : {
10573 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10574 0 : if (VECTOR_TYPE_P (type)
10575 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
10576 : || types_match (type, TREE_TYPE (captures[2]))
10577 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10578 : || (optimize_vectors_before_lowering_p ()
10579 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10580 : )
10581 : {
10582 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1732;
10583 0 : {
10584 0 : tree res_op0;
10585 0 : res_op0 = captures[1];
10586 0 : tree res_op1;
10587 0 : {
10588 0 : tree _o1[2], _r1;
10589 0 : _o1[0] = captures[2];
10590 0 : _o1[1] = captures[5];
10591 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10592 0 : if (EXPR_P (_r1))
10593 0 : goto next_after_fail1732;
10594 0 : res_op1 = _r1;
10595 : }
10596 0 : tree res_op2;
10597 0 : {
10598 0 : tree _o1[2], _r1;
10599 0 : _o1[0] = captures[3];
10600 0 : _o1[1] = captures[6];
10601 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10602 0 : if (EXPR_P (_r1))
10603 0 : goto next_after_fail1732;
10604 0 : res_op2 = _r1;
10605 : }
10606 0 : tree _r;
10607 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10608 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
10609 0 : return _r;
10610 : }
10611 0 : next_after_fail1732:;
10612 : }
10613 : }
10614 : }
10615 : break;
10616 : }
10617 0 : default:;
10618 : }
10619 0 : {
10620 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10621 0 : if (VECTOR_TYPE_P (type)
10622 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
10623 : || types_match (type, TREE_TYPE (captures[2]))
10624 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10625 : || (optimize_vectors_before_lowering_p ()
10626 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10627 : )
10628 : {
10629 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1733;
10630 0 : {
10631 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1733;
10632 0 : tree res_op0;
10633 0 : res_op0 = captures[1];
10634 0 : tree res_op1;
10635 0 : {
10636 0 : tree _o1[2], _r1;
10637 0 : _o1[0] = captures[2];
10638 0 : _o1[1] = unshare_expr (captures[4]);
10639 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10640 0 : if (EXPR_P (_r1))
10641 0 : goto next_after_fail1733;
10642 0 : res_op1 = _r1;
10643 : }
10644 0 : tree res_op2;
10645 0 : {
10646 0 : tree _o1[2], _r1;
10647 0 : _o1[0] = captures[3];
10648 0 : _o1[1] = captures[4];
10649 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10650 0 : if (EXPR_P (_r1))
10651 0 : goto next_after_fail1733;
10652 0 : res_op2 = _r1;
10653 : }
10654 0 : tree _r;
10655 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10656 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
10657 0 : return _r;
10658 : }
10659 0 : next_after_fail1733:;
10660 : }
10661 : }
10662 0 : break;
10663 : }
10664 378805 : default:;
10665 : }
10666 378805 : switch (TREE_CODE (_p1))
10667 : {
10668 0 : case VEC_COND_EXPR:
10669 0 : {
10670 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10671 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10672 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10673 0 : {
10674 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10675 0 : if (VECTOR_TYPE_P (type)
10676 0 : && (TREE_CODE_CLASS (MAX_EXPR) != tcc_comparison
10677 : || types_match (type, TREE_TYPE (captures[3]))
10678 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10679 : || (optimize_vectors_before_lowering_p ()
10680 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10681 : )
10682 : {
10683 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1734;
10684 0 : {
10685 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1734;
10686 0 : tree res_op0;
10687 0 : res_op0 = captures[2];
10688 0 : tree res_op1;
10689 0 : {
10690 0 : tree _o1[2], _r1;
10691 0 : _o1[0] = unshare_expr (captures[0]);
10692 0 : _o1[1] = captures[3];
10693 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10694 0 : if (EXPR_P (_r1))
10695 0 : goto next_after_fail1734;
10696 0 : res_op1 = _r1;
10697 : }
10698 0 : tree res_op2;
10699 0 : {
10700 0 : tree _o1[2], _r1;
10701 0 : _o1[0] = captures[0];
10702 0 : _o1[1] = captures[4];
10703 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, type, _o1[0], _o1[1]);
10704 0 : if (EXPR_P (_r1))
10705 0 : goto next_after_fail1734;
10706 0 : res_op2 = _r1;
10707 : }
10708 0 : tree _r;
10709 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10710 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
10711 0 : return _r;
10712 : }
10713 0 : next_after_fail1734:;
10714 : }
10715 : }
10716 0 : break;
10717 : }
10718 378805 : default:;
10719 : }
10720 378805 : if (tree_zero_one_valued_p (_p0))
10721 : {
10722 9 : if (tree_zero_one_valued_p (_p1))
10723 : {
10724 0 : {
10725 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10726 0 : tree res = generic_simplify_520 (loc, type, _p0, _p1, captures, MAX_EXPR, BIT_IOR_EXPR);
10727 0 : if (res) return res;
10728 : }
10729 : }
10730 : }
10731 : return NULL_TREE;
10732 : }
10733 :
10734 : tree
10735 2845078 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10736 : {
10737 2845078 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10738 2845078 : switch (TREE_CODE (_p0))
10739 : {
10740 0 : case VEC_COND_EXPR:
10741 0 : {
10742 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10743 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10744 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10745 0 : switch (TREE_CODE (_p1))
10746 : {
10747 0 : case VEC_COND_EXPR:
10748 0 : {
10749 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10750 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10751 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10752 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10753 : {
10754 0 : {
10755 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10756 0 : if (VECTOR_TYPE_P (type)
10757 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10758 0 : || types_match (type, TREE_TYPE (captures[2]))
10759 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10760 : || (optimize_vectors_before_lowering_p ()
10761 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10762 : )
10763 : {
10764 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1753;
10765 0 : {
10766 0 : tree res_op0;
10767 0 : res_op0 = captures[1];
10768 0 : tree res_op1;
10769 0 : {
10770 0 : tree _o1[2], _r1;
10771 0 : _o1[0] = captures[2];
10772 0 : _o1[1] = captures[5];
10773 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10774 0 : if (EXPR_P (_r1))
10775 0 : goto next_after_fail1753;
10776 0 : res_op1 = _r1;
10777 : }
10778 0 : tree res_op2;
10779 0 : {
10780 0 : tree _o1[2], _r1;
10781 0 : _o1[0] = captures[3];
10782 0 : _o1[1] = captures[6];
10783 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10784 0 : if (EXPR_P (_r1))
10785 0 : goto next_after_fail1753;
10786 0 : res_op2 = _r1;
10787 : }
10788 0 : tree _r;
10789 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10790 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
10791 0 : return _r;
10792 : }
10793 0 : next_after_fail1753:;
10794 : }
10795 : }
10796 : }
10797 : break;
10798 : }
10799 0 : default:;
10800 : }
10801 0 : {
10802 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10803 0 : if (VECTOR_TYPE_P (type)
10804 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10805 0 : || types_match (type, TREE_TYPE (captures[2]))
10806 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10807 : || (optimize_vectors_before_lowering_p ()
10808 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10809 : )
10810 : {
10811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1754;
10812 0 : {
10813 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1754;
10814 0 : tree res_op0;
10815 0 : res_op0 = captures[1];
10816 0 : tree res_op1;
10817 0 : {
10818 0 : tree _o1[2], _r1;
10819 0 : _o1[0] = captures[2];
10820 0 : _o1[1] = unshare_expr (captures[4]);
10821 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10822 0 : if (EXPR_P (_r1))
10823 0 : goto next_after_fail1754;
10824 0 : res_op1 = _r1;
10825 : }
10826 0 : tree res_op2;
10827 0 : {
10828 0 : tree _o1[2], _r1;
10829 0 : _o1[0] = captures[3];
10830 0 : _o1[1] = captures[4];
10831 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10832 0 : if (EXPR_P (_r1))
10833 0 : goto next_after_fail1754;
10834 0 : res_op2 = _r1;
10835 : }
10836 0 : tree _r;
10837 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10838 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
10839 0 : return _r;
10840 : }
10841 0 : next_after_fail1754:;
10842 : }
10843 : }
10844 0 : break;
10845 : }
10846 2845078 : default:;
10847 : }
10848 2845078 : switch (TREE_CODE (_p1))
10849 : {
10850 0 : case VEC_COND_EXPR:
10851 0 : {
10852 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10853 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10854 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10855 0 : {
10856 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10857 0 : if (VECTOR_TYPE_P (type)
10858 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10859 0 : || types_match (type, TREE_TYPE (captures[3]))
10860 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10861 : || (optimize_vectors_before_lowering_p ()
10862 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10863 : )
10864 : {
10865 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1755;
10866 0 : {
10867 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1755;
10868 0 : tree res_op0;
10869 0 : res_op0 = captures[2];
10870 0 : tree res_op1;
10871 0 : {
10872 0 : tree _o1[2], _r1;
10873 0 : _o1[0] = unshare_expr (captures[0]);
10874 0 : _o1[1] = captures[3];
10875 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10876 0 : if (EXPR_P (_r1))
10877 0 : goto next_after_fail1755;
10878 0 : res_op1 = _r1;
10879 : }
10880 0 : tree res_op2;
10881 0 : {
10882 0 : tree _o1[2], _r1;
10883 0 : _o1[0] = captures[0];
10884 0 : _o1[1] = captures[4];
10885 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10886 0 : if (EXPR_P (_r1))
10887 0 : goto next_after_fail1755;
10888 0 : res_op2 = _r1;
10889 : }
10890 0 : tree _r;
10891 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10892 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
10893 0 : return _r;
10894 : }
10895 0 : next_after_fail1755:;
10896 : }
10897 : }
10898 0 : break;
10899 : }
10900 2845078 : default:;
10901 : }
10902 2845078 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10903 : {
10904 0 : {
10905 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10906 0 : tree res = generic_simplify_550 (loc, type, _p0, _p1, captures, UNGT_EXPR);
10907 0 : if (res) return res;
10908 : }
10909 : }
10910 2845078 : switch (TREE_CODE (_p0))
10911 : {
10912 339 : case FLOAT_EXPR:
10913 339 : {
10914 339 : tree _q20 = TREE_OPERAND (_p0, 0);
10915 339 : switch (TREE_CODE (_p1))
10916 : {
10917 0 : case FLOAT_EXPR:
10918 0 : {
10919 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10920 0 : {
10921 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10922 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
10923 0 : if (res) return res;
10924 : }
10925 0 : break;
10926 : }
10927 : default:;
10928 : }
10929 : break;
10930 : }
10931 0 : case NEGATE_EXPR:
10932 0 : {
10933 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10934 0 : switch (TREE_CODE (_p1))
10935 : {
10936 0 : case NEGATE_EXPR:
10937 0 : {
10938 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10939 0 : {
10940 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10941 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
10942 0 : if (res) return res;
10943 : }
10944 0 : break;
10945 : }
10946 0 : default:;
10947 : }
10948 0 : if (CONSTANT_CLASS_P (_p1))
10949 : {
10950 0 : {
10951 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10952 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
10953 0 : if (res) return res;
10954 : }
10955 : }
10956 : break;
10957 : }
10958 2845078 : default:;
10959 : }
10960 2845078 : switch (TREE_CODE (_p1))
10961 : {
10962 2498748 : case REAL_CST:
10963 2498748 : {
10964 2498748 : {
10965 2498748 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10966 2498748 : tree res = generic_simplify_549 (loc, type, _p0, _p1, captures, UNGT_EXPR);
10967 2498748 : if (res) return res;
10968 : }
10969 2498746 : break;
10970 : }
10971 : default:;
10972 : }
10973 : return NULL_TREE;
10974 : }
10975 :
10976 : tree
10977 9406301 : 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)
10978 : {
10979 9406301 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10980 9406301 : switch (TREE_CODE (_p0))
10981 : {
10982 1334627 : case LE_EXPR:
10983 1334627 : {
10984 1334627 : tree _q20 = TREE_OPERAND (_p0, 0);
10985 1334627 : tree _q21 = TREE_OPERAND (_p0, 1);
10986 1334627 : switch (TREE_CODE (_q20))
10987 : {
10988 3904 : case POINTER_PLUS_EXPR:
10989 3904 : {
10990 3904 : tree _q30 = TREE_OPERAND (_q20, 0);
10991 3904 : tree _q31 = TREE_OPERAND (_q20, 1);
10992 3904 : switch (TREE_CODE (_q31))
10993 : {
10994 3671 : case INTEGER_CST:
10995 3671 : {
10996 3671 : switch (TREE_CODE (_p1))
10997 : {
10998 1086 : case LE_EXPR:
10999 1086 : {
11000 1086 : tree _q70 = TREE_OPERAND (_p1, 0);
11001 1086 : tree _q71 = TREE_OPERAND (_p1, 1);
11002 1086 : switch (TREE_CODE (_q70))
11003 : {
11004 800 : case POINTER_PLUS_EXPR:
11005 800 : {
11006 800 : tree _q80 = TREE_OPERAND (_q70, 0);
11007 800 : tree _q81 = TREE_OPERAND (_q70, 1);
11008 800 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11009 : {
11010 514 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11011 : {
11012 395 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11013 : {
11014 395 : {
11015 395 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11016 395 : const enum tree_code cmp = LE_EXPR;
11017 395 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11018 394 : && TYPE_OVERFLOW_WRAPS (sizetype)
11019 789 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11020 : )
11021 : {
11022 394 : {
11023 394 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11024 394 : offset_int rhs = off * 2;
11025 394 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11026 : )
11027 : {
11028 394 : {
11029 394 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11030 394 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11031 394 : if (cmp == LT_EXPR
11032 : )
11033 : {
11034 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1782;
11035 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1782;
11036 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1782;
11037 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1782;
11038 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1782;
11039 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1782;
11040 : {
11041 : tree res_op0;
11042 : {
11043 : tree _o1[1], _r1;
11044 : {
11045 : tree _o2[2], _r2;
11046 : _o2[0] = swap_p ? captures[6] : captures[1];
11047 : _o2[1] = swap_p ? captures[2] : captures[4];
11048 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11049 : _o1[0] = _r2;
11050 : }
11051 : if (TREE_TYPE (_o1[0]) != sizetype)
11052 : {
11053 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11054 : }
11055 : else
11056 : _r1 = _o1[0];
11057 : res_op0 = _r1;
11058 : }
11059 : tree res_op1;
11060 : res_op1 = rhs_tree;
11061 : tree _r;
11062 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11063 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11064 394 : return _r;
11065 : }
11066 : next_after_fail1782:;
11067 : }
11068 : else
11069 : {
11070 394 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1783;
11071 394 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1783;
11072 394 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1783;
11073 394 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1783;
11074 394 : {
11075 394 : tree res_op0;
11076 394 : {
11077 394 : tree _o1[1], _r1;
11078 394 : {
11079 394 : tree _o2[2], _r2;
11080 394 : {
11081 394 : tree _o3[2], _r3;
11082 394 : _o3[0] = swap_p ? captures[4] : captures[2];
11083 394 : _o3[1] = wide_int_to_tree (sizetype, off);
11084 394 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11085 394 : _o2[0] = _r3;
11086 : }
11087 394 : _o2[1] = swap_p ? captures[2] : captures[4];
11088 394 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11089 394 : _o1[0] = _r2;
11090 : }
11091 394 : if (TREE_TYPE (_o1[0]) != sizetype)
11092 : {
11093 394 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11094 : }
11095 : else
11096 : _r1 = _o1[0];
11097 394 : res_op0 = _r1;
11098 : }
11099 394 : tree res_op1;
11100 394 : res_op1 = rhs_tree;
11101 394 : tree _r;
11102 394 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11103 394 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11104 394 : return _r;
11105 : }
11106 0 : next_after_fail1783:;
11107 : }
11108 : }
11109 : }
11110 : }
11111 : }
11112 : }
11113 : }
11114 : }
11115 : }
11116 : break;
11117 : }
11118 : default:;
11119 : }
11120 : break;
11121 : }
11122 117 : case GE_EXPR:
11123 117 : {
11124 117 : tree _q70 = TREE_OPERAND (_p1, 0);
11125 117 : tree _q71 = TREE_OPERAND (_p1, 1);
11126 117 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11127 : {
11128 18 : switch (TREE_CODE (_q71))
11129 : {
11130 18 : case POINTER_PLUS_EXPR:
11131 18 : {
11132 18 : tree _q90 = TREE_OPERAND (_q71, 0);
11133 18 : tree _q91 = TREE_OPERAND (_q71, 1);
11134 18 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11135 : {
11136 16 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11137 : {
11138 11 : {
11139 11 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11140 11 : const enum tree_code cmp = LE_EXPR;
11141 11 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11142 11 : && TYPE_OVERFLOW_WRAPS (sizetype)
11143 22 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11144 : )
11145 : {
11146 11 : {
11147 11 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11148 11 : offset_int rhs = off * 2;
11149 11 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11150 : )
11151 : {
11152 11 : {
11153 11 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11154 11 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11155 11 : if (cmp == LT_EXPR
11156 : )
11157 : {
11158 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1784;
11159 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1784;
11160 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1784;
11161 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1784;
11162 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1784;
11163 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1784;
11164 : {
11165 : tree res_op0;
11166 : {
11167 : tree _o1[1], _r1;
11168 : {
11169 : tree _o2[2], _r2;
11170 : _o2[0] = swap_p ? captures[6] : captures[1];
11171 : _o2[1] = swap_p ? captures[2] : captures[4];
11172 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11173 : _o1[0] = _r2;
11174 : }
11175 : if (TREE_TYPE (_o1[0]) != sizetype)
11176 : {
11177 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11178 : }
11179 : else
11180 : _r1 = _o1[0];
11181 : res_op0 = _r1;
11182 : }
11183 : tree res_op1;
11184 : res_op1 = rhs_tree;
11185 : tree _r;
11186 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11187 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11188 11 : return _r;
11189 : }
11190 : next_after_fail1784:;
11191 : }
11192 : else
11193 : {
11194 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1785;
11195 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1785;
11196 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1785;
11197 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1785;
11198 11 : {
11199 11 : tree res_op0;
11200 11 : {
11201 11 : tree _o1[1], _r1;
11202 11 : {
11203 11 : tree _o2[2], _r2;
11204 11 : {
11205 11 : tree _o3[2], _r3;
11206 11 : _o3[0] = swap_p ? captures[4] : captures[2];
11207 11 : _o3[1] = wide_int_to_tree (sizetype, off);
11208 11 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11209 11 : _o2[0] = _r3;
11210 : }
11211 11 : _o2[1] = swap_p ? captures[2] : captures[4];
11212 11 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11213 11 : _o1[0] = _r2;
11214 : }
11215 11 : if (TREE_TYPE (_o1[0]) != sizetype)
11216 : {
11217 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11218 : }
11219 : else
11220 : _r1 = _o1[0];
11221 11 : res_op0 = _r1;
11222 : }
11223 11 : tree res_op1;
11224 11 : res_op1 = rhs_tree;
11225 11 : tree _r;
11226 11 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11227 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11228 11 : return _r;
11229 : }
11230 0 : next_after_fail1785:;
11231 : }
11232 : }
11233 : }
11234 : }
11235 : }
11236 : }
11237 : }
11238 : }
11239 : break;
11240 : }
11241 : default:;
11242 : }
11243 : }
11244 : break;
11245 : }
11246 : default:;
11247 : }
11248 : break;
11249 : }
11250 : default:;
11251 : }
11252 : break;
11253 : }
11254 : default:;
11255 : }
11256 : break;
11257 : }
11258 1061189 : case LT_EXPR:
11259 1061189 : {
11260 1061189 : tree _q20 = TREE_OPERAND (_p0, 0);
11261 1061189 : tree _q21 = TREE_OPERAND (_p0, 1);
11262 1061189 : switch (TREE_CODE (_q20))
11263 : {
11264 2393 : case POINTER_PLUS_EXPR:
11265 2393 : {
11266 2393 : tree _q30 = TREE_OPERAND (_q20, 0);
11267 2393 : tree _q31 = TREE_OPERAND (_q20, 1);
11268 2393 : switch (TREE_CODE (_q31))
11269 : {
11270 2197 : case INTEGER_CST:
11271 2197 : {
11272 2197 : switch (TREE_CODE (_p1))
11273 : {
11274 158 : case LT_EXPR:
11275 158 : {
11276 158 : tree _q70 = TREE_OPERAND (_p1, 0);
11277 158 : tree _q71 = TREE_OPERAND (_p1, 1);
11278 158 : switch (TREE_CODE (_q70))
11279 : {
11280 10 : case POINTER_PLUS_EXPR:
11281 10 : {
11282 10 : tree _q80 = TREE_OPERAND (_q70, 0);
11283 10 : tree _q81 = TREE_OPERAND (_q70, 1);
11284 10 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11285 : {
11286 1 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11287 : {
11288 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11289 : {
11290 1 : {
11291 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11292 1 : const enum tree_code cmp = LT_EXPR;
11293 1 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11294 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11295 1 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11296 : )
11297 : {
11298 0 : {
11299 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11300 0 : offset_int rhs = off * 2;
11301 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11302 : )
11303 : {
11304 0 : {
11305 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11306 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11307 0 : if (cmp == LT_EXPR
11308 : )
11309 : {
11310 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1786;
11311 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1786;
11312 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1786;
11313 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1786;
11314 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1786;
11315 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1786;
11316 0 : {
11317 0 : tree res_op0;
11318 0 : {
11319 0 : tree _o1[1], _r1;
11320 0 : {
11321 0 : tree _o2[2], _r2;
11322 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11323 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11324 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11325 0 : _o1[0] = _r2;
11326 : }
11327 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11328 : {
11329 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11330 : }
11331 : else
11332 : _r1 = _o1[0];
11333 0 : res_op0 = _r1;
11334 : }
11335 0 : tree res_op1;
11336 0 : res_op1 = rhs_tree;
11337 0 : tree _r;
11338 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11339 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11340 0 : return _r;
11341 : }
11342 0 : next_after_fail1786:;
11343 : }
11344 : else
11345 : {
11346 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1787;
11347 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1787;
11348 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1787;
11349 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1787;
11350 : {
11351 : tree res_op0;
11352 : {
11353 : tree _o1[1], _r1;
11354 : {
11355 : tree _o2[2], _r2;
11356 : {
11357 : tree _o3[2], _r3;
11358 : _o3[0] = swap_p ? captures[4] : captures[2];
11359 : _o3[1] = wide_int_to_tree (sizetype, off);
11360 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11361 : _o2[0] = _r3;
11362 : }
11363 : _o2[1] = swap_p ? captures[2] : captures[4];
11364 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11365 : _o1[0] = _r2;
11366 : }
11367 : if (TREE_TYPE (_o1[0]) != sizetype)
11368 : {
11369 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11370 : }
11371 : else
11372 : _r1 = _o1[0];
11373 : res_op0 = _r1;
11374 : }
11375 : tree res_op1;
11376 : res_op1 = rhs_tree;
11377 : tree _r;
11378 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11379 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11380 : return _r;
11381 : }
11382 : next_after_fail1787:;
11383 : }
11384 : }
11385 : }
11386 : }
11387 : }
11388 : }
11389 : }
11390 : }
11391 : }
11392 : break;
11393 : }
11394 : default:;
11395 : }
11396 : break;
11397 : }
11398 778 : case GT_EXPR:
11399 778 : {
11400 778 : tree _q70 = TREE_OPERAND (_p1, 0);
11401 778 : tree _q71 = TREE_OPERAND (_p1, 1);
11402 778 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11403 : {
11404 0 : switch (TREE_CODE (_q71))
11405 : {
11406 0 : case POINTER_PLUS_EXPR:
11407 0 : {
11408 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11409 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11410 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11411 : {
11412 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11413 : {
11414 0 : {
11415 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11416 0 : const enum tree_code cmp = LT_EXPR;
11417 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11418 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11419 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11420 : )
11421 : {
11422 0 : {
11423 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11424 0 : offset_int rhs = off * 2;
11425 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11426 : )
11427 : {
11428 0 : {
11429 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11430 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11431 0 : if (cmp == LT_EXPR
11432 : )
11433 : {
11434 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1788;
11435 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1788;
11436 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1788;
11437 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1788;
11438 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1788;
11439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1788;
11440 0 : {
11441 0 : tree res_op0;
11442 0 : {
11443 0 : tree _o1[1], _r1;
11444 0 : {
11445 0 : tree _o2[2], _r2;
11446 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11447 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11448 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11449 0 : _o1[0] = _r2;
11450 : }
11451 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11452 : {
11453 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11454 : }
11455 : else
11456 : _r1 = _o1[0];
11457 0 : res_op0 = _r1;
11458 : }
11459 0 : tree res_op1;
11460 0 : res_op1 = rhs_tree;
11461 0 : tree _r;
11462 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11463 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11464 0 : return _r;
11465 : }
11466 0 : next_after_fail1788:;
11467 : }
11468 : else
11469 : {
11470 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1789;
11471 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1789;
11472 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1789;
11473 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1789;
11474 : {
11475 : tree res_op0;
11476 : {
11477 : tree _o1[1], _r1;
11478 : {
11479 : tree _o2[2], _r2;
11480 : {
11481 : tree _o3[2], _r3;
11482 : _o3[0] = swap_p ? captures[4] : captures[2];
11483 : _o3[1] = wide_int_to_tree (sizetype, off);
11484 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11485 : _o2[0] = _r3;
11486 : }
11487 : _o2[1] = swap_p ? captures[2] : captures[4];
11488 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11489 : _o1[0] = _r2;
11490 : }
11491 : if (TREE_TYPE (_o1[0]) != sizetype)
11492 : {
11493 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11494 : }
11495 : else
11496 : _r1 = _o1[0];
11497 : res_op0 = _r1;
11498 : }
11499 : tree res_op1;
11500 : res_op1 = rhs_tree;
11501 : tree _r;
11502 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11503 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11504 : return _r;
11505 : }
11506 : next_after_fail1789:;
11507 : }
11508 : }
11509 : }
11510 : }
11511 : }
11512 : }
11513 : }
11514 : }
11515 : break;
11516 : }
11517 : default:;
11518 : }
11519 : }
11520 : break;
11521 : }
11522 : default:;
11523 : }
11524 : break;
11525 : }
11526 : default:;
11527 : }
11528 : break;
11529 : }
11530 : default:;
11531 : }
11532 : break;
11533 : }
11534 796072 : case GE_EXPR:
11535 796072 : {
11536 796072 : tree _q20 = TREE_OPERAND (_p0, 0);
11537 796072 : tree _q21 = TREE_OPERAND (_p0, 1);
11538 796072 : switch (TREE_CODE (_q21))
11539 : {
11540 52 : case POINTER_PLUS_EXPR:
11541 52 : {
11542 52 : tree _q40 = TREE_OPERAND (_q21, 0);
11543 52 : tree _q41 = TREE_OPERAND (_q21, 1);
11544 52 : switch (TREE_CODE (_q41))
11545 : {
11546 52 : case INTEGER_CST:
11547 52 : {
11548 52 : switch (TREE_CODE (_p1))
11549 : {
11550 52 : case LE_EXPR:
11551 52 : {
11552 52 : tree _q70 = TREE_OPERAND (_p1, 0);
11553 52 : tree _q71 = TREE_OPERAND (_p1, 1);
11554 52 : switch (TREE_CODE (_q70))
11555 : {
11556 42 : case POINTER_PLUS_EXPR:
11557 42 : {
11558 42 : tree _q80 = TREE_OPERAND (_q70, 0);
11559 42 : tree _q81 = TREE_OPERAND (_q70, 1);
11560 42 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11561 : {
11562 27 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11563 : {
11564 3 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11565 : {
11566 3 : {
11567 3 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11568 3 : const enum tree_code cmp = LE_EXPR;
11569 3 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11570 3 : && TYPE_OVERFLOW_WRAPS (sizetype)
11571 6 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11572 : )
11573 : {
11574 3 : {
11575 3 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11576 3 : offset_int rhs = off * 2;
11577 3 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11578 : )
11579 : {
11580 3 : {
11581 3 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11582 3 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11583 3 : if (cmp == LT_EXPR
11584 : )
11585 : {
11586 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1790;
11587 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1790;
11588 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1790;
11589 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1790;
11590 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1790;
11591 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1790;
11592 : {
11593 : tree res_op0;
11594 : {
11595 : tree _o1[1], _r1;
11596 : {
11597 : tree _o2[2], _r2;
11598 : _o2[0] = swap_p ? captures[6] : captures[1];
11599 : _o2[1] = swap_p ? captures[2] : captures[4];
11600 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11601 : _o1[0] = _r2;
11602 : }
11603 : if (TREE_TYPE (_o1[0]) != sizetype)
11604 : {
11605 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11606 : }
11607 : else
11608 : _r1 = _o1[0];
11609 : res_op0 = _r1;
11610 : }
11611 : tree res_op1;
11612 : res_op1 = rhs_tree;
11613 : tree _r;
11614 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11615 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11616 3 : return _r;
11617 : }
11618 : next_after_fail1790:;
11619 : }
11620 : else
11621 : {
11622 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1791;
11623 3 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1791;
11624 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1791;
11625 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1791;
11626 3 : {
11627 3 : tree res_op0;
11628 3 : {
11629 3 : tree _o1[1], _r1;
11630 3 : {
11631 3 : tree _o2[2], _r2;
11632 3 : {
11633 3 : tree _o3[2], _r3;
11634 3 : _o3[0] = swap_p ? captures[4] : captures[2];
11635 3 : _o3[1] = wide_int_to_tree (sizetype, off);
11636 3 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11637 3 : _o2[0] = _r3;
11638 : }
11639 3 : _o2[1] = swap_p ? captures[2] : captures[4];
11640 3 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11641 3 : _o1[0] = _r2;
11642 : }
11643 3 : if (TREE_TYPE (_o1[0]) != sizetype)
11644 : {
11645 3 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11646 : }
11647 : else
11648 : _r1 = _o1[0];
11649 3 : res_op0 = _r1;
11650 : }
11651 3 : tree res_op1;
11652 3 : res_op1 = rhs_tree;
11653 3 : tree _r;
11654 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11655 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11656 3 : return _r;
11657 : }
11658 0 : next_after_fail1791:;
11659 : }
11660 : }
11661 : }
11662 : }
11663 : }
11664 : }
11665 : }
11666 : }
11667 : }
11668 : break;
11669 : }
11670 : default:;
11671 : }
11672 : break;
11673 : }
11674 0 : case GE_EXPR:
11675 0 : {
11676 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11677 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11678 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11679 : {
11680 0 : switch (TREE_CODE (_q71))
11681 : {
11682 0 : case POINTER_PLUS_EXPR:
11683 0 : {
11684 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11685 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11686 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11687 : {
11688 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11689 : {
11690 0 : {
11691 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11692 0 : const enum tree_code cmp = LE_EXPR;
11693 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11694 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11695 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11696 : )
11697 : {
11698 0 : {
11699 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11700 0 : offset_int rhs = off * 2;
11701 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11702 : )
11703 : {
11704 0 : {
11705 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11706 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11707 0 : if (cmp == LT_EXPR
11708 : )
11709 : {
11710 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1792;
11711 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1792;
11712 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1792;
11713 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1792;
11714 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1792;
11715 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1792;
11716 : {
11717 : tree res_op0;
11718 : {
11719 : tree _o1[1], _r1;
11720 : {
11721 : tree _o2[2], _r2;
11722 : _o2[0] = swap_p ? captures[6] : captures[1];
11723 : _o2[1] = swap_p ? captures[2] : captures[4];
11724 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11725 : _o1[0] = _r2;
11726 : }
11727 : if (TREE_TYPE (_o1[0]) != sizetype)
11728 : {
11729 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11730 : }
11731 : else
11732 : _r1 = _o1[0];
11733 : res_op0 = _r1;
11734 : }
11735 : tree res_op1;
11736 : res_op1 = rhs_tree;
11737 : tree _r;
11738 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11739 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11740 0 : return _r;
11741 : }
11742 : next_after_fail1792:;
11743 : }
11744 : else
11745 : {
11746 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1793;
11747 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1793;
11748 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1793;
11749 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1793;
11750 0 : {
11751 0 : tree res_op0;
11752 0 : {
11753 0 : tree _o1[1], _r1;
11754 0 : {
11755 0 : tree _o2[2], _r2;
11756 0 : {
11757 0 : tree _o3[2], _r3;
11758 0 : _o3[0] = swap_p ? captures[4] : captures[2];
11759 0 : _o3[1] = wide_int_to_tree (sizetype, off);
11760 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11761 0 : _o2[0] = _r3;
11762 : }
11763 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11764 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11765 0 : _o1[0] = _r2;
11766 : }
11767 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11768 : {
11769 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11770 : }
11771 : else
11772 : _r1 = _o1[0];
11773 0 : res_op0 = _r1;
11774 : }
11775 0 : tree res_op1;
11776 0 : res_op1 = rhs_tree;
11777 0 : tree _r;
11778 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11779 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11780 0 : return _r;
11781 : }
11782 0 : next_after_fail1793:;
11783 : }
11784 : }
11785 : }
11786 : }
11787 : }
11788 : }
11789 : }
11790 : }
11791 : break;
11792 : }
11793 : default:;
11794 : }
11795 : }
11796 : break;
11797 : }
11798 : default:;
11799 : }
11800 : break;
11801 : }
11802 : default:;
11803 : }
11804 : break;
11805 : }
11806 : default:;
11807 : }
11808 : break;
11809 : }
11810 1176074 : case GT_EXPR:
11811 1176074 : {
11812 1176074 : tree _q20 = TREE_OPERAND (_p0, 0);
11813 1176074 : tree _q21 = TREE_OPERAND (_p0, 1);
11814 1176074 : switch (TREE_CODE (_q21))
11815 : {
11816 46 : case POINTER_PLUS_EXPR:
11817 46 : {
11818 46 : tree _q40 = TREE_OPERAND (_q21, 0);
11819 46 : tree _q41 = TREE_OPERAND (_q21, 1);
11820 46 : switch (TREE_CODE (_q41))
11821 : {
11822 46 : case INTEGER_CST:
11823 46 : {
11824 46 : switch (TREE_CODE (_p1))
11825 : {
11826 0 : case LT_EXPR:
11827 0 : {
11828 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11829 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11830 0 : switch (TREE_CODE (_q70))
11831 : {
11832 0 : case POINTER_PLUS_EXPR:
11833 0 : {
11834 0 : tree _q80 = TREE_OPERAND (_q70, 0);
11835 0 : tree _q81 = TREE_OPERAND (_q70, 1);
11836 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11837 : {
11838 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11839 : {
11840 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11841 : {
11842 0 : {
11843 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11844 0 : const enum tree_code cmp = LT_EXPR;
11845 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11846 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11847 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11848 : )
11849 : {
11850 0 : {
11851 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11852 0 : offset_int rhs = off * 2;
11853 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11854 : )
11855 : {
11856 0 : {
11857 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11858 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11859 0 : if (cmp == LT_EXPR
11860 : )
11861 : {
11862 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1794;
11863 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1794;
11864 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1794;
11865 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1794;
11866 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1794;
11867 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1794;
11868 0 : {
11869 0 : tree res_op0;
11870 0 : {
11871 0 : tree _o1[1], _r1;
11872 0 : {
11873 0 : tree _o2[2], _r2;
11874 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11875 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11876 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11877 0 : _o1[0] = _r2;
11878 : }
11879 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11880 : {
11881 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11882 : }
11883 : else
11884 : _r1 = _o1[0];
11885 0 : res_op0 = _r1;
11886 : }
11887 0 : tree res_op1;
11888 0 : res_op1 = rhs_tree;
11889 0 : tree _r;
11890 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11891 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
11892 0 : return _r;
11893 : }
11894 0 : next_after_fail1794:;
11895 : }
11896 : else
11897 : {
11898 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1795;
11899 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1795;
11900 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1795;
11901 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1795;
11902 : {
11903 : tree res_op0;
11904 : {
11905 : tree _o1[1], _r1;
11906 : {
11907 : tree _o2[2], _r2;
11908 : {
11909 : tree _o3[2], _r3;
11910 : _o3[0] = swap_p ? captures[4] : captures[2];
11911 : _o3[1] = wide_int_to_tree (sizetype, off);
11912 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11913 : _o2[0] = _r3;
11914 : }
11915 : _o2[1] = swap_p ? captures[2] : captures[4];
11916 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11917 : _o1[0] = _r2;
11918 : }
11919 : if (TREE_TYPE (_o1[0]) != sizetype)
11920 : {
11921 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11922 : }
11923 : else
11924 : _r1 = _o1[0];
11925 : res_op0 = _r1;
11926 : }
11927 : tree res_op1;
11928 : res_op1 = rhs_tree;
11929 : tree _r;
11930 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11931 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
11932 : return _r;
11933 : }
11934 : next_after_fail1795:;
11935 : }
11936 : }
11937 : }
11938 : }
11939 : }
11940 : }
11941 : }
11942 : }
11943 : }
11944 : break;
11945 : }
11946 : default:;
11947 : }
11948 : break;
11949 : }
11950 18 : case GT_EXPR:
11951 18 : {
11952 18 : tree _q70 = TREE_OPERAND (_p1, 0);
11953 18 : tree _q71 = TREE_OPERAND (_p1, 1);
11954 18 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11955 : {
11956 0 : switch (TREE_CODE (_q71))
11957 : {
11958 0 : case POINTER_PLUS_EXPR:
11959 0 : {
11960 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11961 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11962 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11963 : {
11964 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11965 : {
11966 0 : {
11967 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11968 0 : const enum tree_code cmp = LT_EXPR;
11969 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11970 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11971 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11972 : )
11973 : {
11974 0 : {
11975 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11976 0 : offset_int rhs = off * 2;
11977 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11978 : )
11979 : {
11980 0 : {
11981 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11982 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11983 0 : if (cmp == LT_EXPR
11984 : )
11985 : {
11986 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1796;
11987 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1796;
11988 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1796;
11989 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1796;
11990 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1796;
11991 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1796;
11992 0 : {
11993 0 : tree res_op0;
11994 0 : {
11995 0 : tree _o1[1], _r1;
11996 0 : {
11997 0 : tree _o2[2], _r2;
11998 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11999 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12000 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12001 0 : _o1[0] = _r2;
12002 : }
12003 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12004 : {
12005 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12006 : }
12007 : else
12008 : _r1 = _o1[0];
12009 0 : res_op0 = _r1;
12010 : }
12011 0 : tree res_op1;
12012 0 : res_op1 = rhs_tree;
12013 0 : tree _r;
12014 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12015 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
12016 0 : return _r;
12017 : }
12018 0 : next_after_fail1796:;
12019 : }
12020 : else
12021 : {
12022 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1797;
12023 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1797;
12024 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1797;
12025 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
12026 : {
12027 : tree res_op0;
12028 : {
12029 : tree _o1[1], _r1;
12030 : {
12031 : tree _o2[2], _r2;
12032 : {
12033 : tree _o3[2], _r3;
12034 : _o3[0] = swap_p ? captures[4] : captures[2];
12035 : _o3[1] = wide_int_to_tree (sizetype, off);
12036 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12037 : _o2[0] = _r3;
12038 : }
12039 : _o2[1] = swap_p ? captures[2] : captures[4];
12040 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12041 : _o1[0] = _r2;
12042 : }
12043 : if (TREE_TYPE (_o1[0]) != sizetype)
12044 : {
12045 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12046 : }
12047 : else
12048 : _r1 = _o1[0];
12049 : res_op0 = _r1;
12050 : }
12051 : tree res_op1;
12052 : res_op1 = rhs_tree;
12053 : tree _r;
12054 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12055 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
12056 : return _r;
12057 : }
12058 : next_after_fail1797:;
12059 : }
12060 : }
12061 : }
12062 : }
12063 : }
12064 : }
12065 : }
12066 : }
12067 : break;
12068 : }
12069 : default:;
12070 : }
12071 : }
12072 : break;
12073 : }
12074 : default:;
12075 : }
12076 : break;
12077 : }
12078 : default:;
12079 : }
12080 : break;
12081 : }
12082 : default:;
12083 : }
12084 : break;
12085 : }
12086 : default:;
12087 : }
12088 : return NULL_TREE;
12089 : }
12090 : #pragma GCC diagnostic pop
|