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 117360805 : tree_maybe_cmp (tree t, tree *res_ops)
11 : {
12 117360805 : const tree type = TREE_TYPE (t);
13 117360805 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 117360805 : if (TREE_SIDE_EFFECTS (t)) return false;
15 117360805 : switch (TREE_CODE (t))
16 : {
17 470679 : case LT_EXPR:
18 470679 : case LE_EXPR:
19 470679 : case EQ_EXPR:
20 470679 : case NE_EXPR:
21 470679 : case GE_EXPR:
22 470679 : case GT_EXPR:
23 470679 : case UNORDERED_EXPR:
24 470679 : case ORDERED_EXPR:
25 470679 : case UNLT_EXPR:
26 470679 : case UNLE_EXPR:
27 470679 : case UNGT_EXPR:
28 470679 : case UNGE_EXPR:
29 470679 : case UNEQ_EXPR:
30 470679 : case LTGT_EXPR:
31 470679 : {
32 470679 : tree _p0 = TREE_OPERAND (t, 0);
33 470679 : tree _p1 = TREE_OPERAND (t, 1);
34 470679 : {
35 470679 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
36 470679 : {
37 470679 : res_ops[0] = captures[0];
38 470679 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 5, __FILE__, __LINE__, false);
39 470679 : return true;
40 : }
41 : }
42 25473965 : break;
43 : }
44 25473965 : CASE_CONVERT:
45 25473965 : {
46 25473965 : tree _p0 = TREE_OPERAND (t, 0);
47 25473965 : switch (TREE_CODE (_p0))
48 : {
49 1442 : case LT_EXPR:
50 1442 : case LE_EXPR:
51 1442 : case EQ_EXPR:
52 1442 : case NE_EXPR:
53 1442 : case GE_EXPR:
54 1442 : case GT_EXPR:
55 1442 : case UNORDERED_EXPR:
56 1442 : case ORDERED_EXPR:
57 1442 : case UNLT_EXPR:
58 1442 : case UNLE_EXPR:
59 1442 : case UNGT_EXPR:
60 1442 : case UNGE_EXPR:
61 1442 : case UNEQ_EXPR:
62 1442 : case LTGT_EXPR:
63 1442 : {
64 1442 : tree _q20 = TREE_OPERAND (_p0, 0);
65 1442 : tree _q21 = TREE_OPERAND (_p0, 1);
66 1442 : {
67 1442 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
68 1442 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
69 : )
70 : {
71 778 : {
72 778 : res_ops[0] = captures[0];
73 778 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 6, __FILE__, __LINE__, false);
74 778 : return true;
75 : }
76 : }
77 : }
78 : break;
79 : }
80 : default:;
81 : }
82 : break;
83 : }
84 187616 : case BIT_XOR_EXPR:
85 187616 : {
86 187616 : tree _p0 = TREE_OPERAND (t, 0);
87 187616 : tree _p1 = TREE_OPERAND (t, 1);
88 187616 : {
89 187616 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
90 187616 : if (INTEGRAL_TYPE_P (type)
91 187616 : && TYPE_PRECISION (type) == 1
92 : )
93 : {
94 91391 : {
95 91391 : res_ops[0] = captures[0];
96 91391 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 7, __FILE__, __LINE__, false);
97 91391 : return true;
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : bool
109 0 : tree_float_value_p (tree t)
110 : {
111 0 : const tree type = TREE_TYPE (t);
112 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
113 0 : if (TREE_SIDE_EFFECTS (t)) return false;
114 0 : {
115 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
116 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == float_type_node
117 : )
118 : {
119 0 : {
120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 45, __FILE__, __LINE__, false);
121 0 : return true;
122 : }
123 : }
124 : }
125 : return false;
126 : }
127 :
128 : tree
129 0 : generic_simplify_7 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
131 : {
132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
133 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail78;
134 0 : {
135 0 : tree res_op0;
136 0 : res_op0 = captures[1];
137 0 : tree res_op1;
138 0 : res_op1 = captures[2];
139 0 : tree _r;
140 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 55, __FILE__, __LINE__, true);
142 : return _r;
143 : }
144 0 : next_after_fail78:;
145 0 : return NULL_TREE;
146 : }
147 :
148 : tree
149 196 : generic_simplify_13 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
151 : {
152 196 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
153 196 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail87;
154 196 : {
155 196 : if (! tree_invariant_p (captures[3])) goto next_after_fail87;
156 15 : tree res_op0;
157 15 : {
158 15 : tree _o1[2], _r1;
159 15 : _o1[0] = captures[2];
160 15 : _o1[1] = unshare_expr (captures[3]);
161 15 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
162 15 : res_op0 = _r1;
163 : }
164 15 : tree res_op1;
165 15 : {
166 15 : tree _o1[2], _r1;
167 15 : _o1[0] = captures[4];
168 15 : _o1[1] = captures[3];
169 15 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
170 15 : if (EXPR_P (_r1))
171 14 : goto next_after_fail87;
172 1 : res_op1 = _r1;
173 : }
174 1 : tree _r;
175 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
176 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 62, __FILE__, __LINE__, true);
177 : return _r;
178 : }
179 : next_after_fail87:;
180 : return NULL_TREE;
181 : }
182 :
183 : tree
184 510 : generic_simplify_23 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
185 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
186 : const enum tree_code ARG_UNUSED (op))
187 : {
188 510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
189 510 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
190 510 : && tree_nop_conversion_p (type, TREE_TYPE (captures[4]))
191 1020 : && (wi::to_wide (captures[2]) & wi::to_wide (captures[5])) == 0
192 : )
193 : {
194 101 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail97;
195 101 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail97;
196 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail97;
197 101 : {
198 101 : tree res_op0;
199 101 : {
200 101 : tree _o1[1], _r1;
201 101 : _o1[0] = captures[0];
202 101 : if (TREE_TYPE (_o1[0]) != type)
203 : {
204 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
205 : }
206 : else
207 : _r1 = _o1[0];
208 101 : res_op0 = _r1;
209 : }
210 101 : tree res_op1;
211 101 : {
212 101 : tree _o1[1], _r1;
213 101 : _o1[0] = captures[3];
214 101 : if (TREE_TYPE (_o1[0]) != type)
215 : {
216 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
217 : }
218 : else
219 : _r1 = _o1[0];
220 101 : res_op1 = _r1;
221 : }
222 101 : tree _r;
223 101 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
224 101 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 72, __FILE__, __LINE__, true);
225 101 : return _r;
226 : }
227 : next_after_fail97:;
228 : }
229 : return NULL_TREE;
230 : }
231 :
232 : tree
233 24 : generic_simplify_36 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
234 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
235 : {
236 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
237 24 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
238 : )
239 : {
240 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail112;
241 24 : {
242 24 : tree res_op0;
243 24 : {
244 24 : tree _o1[2], _r1;
245 24 : {
246 24 : tree _o2[1], _r2;
247 24 : _o2[0] = captures[2];
248 24 : if (TREE_TYPE (_o2[0]) != type)
249 : {
250 24 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
251 : }
252 : else
253 : _r2 = _o2[0];
254 24 : _o1[0] = _r2;
255 : }
256 24 : _o1[1] = captures[3];
257 24 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
258 24 : res_op0 = _r1;
259 : }
260 24 : tree _r;
261 24 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
262 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 75, __FILE__, __LINE__, true);
263 24 : return _r;
264 : }
265 0 : next_after_fail112:;
266 : }
267 : return NULL_TREE;
268 : }
269 :
270 : tree
271 18 : generic_simplify_43 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
272 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
273 : const enum tree_code ARG_UNUSED (op))
274 : {
275 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
276 36 : if (INTEGRAL_TYPE_P (type)
277 54 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
278 : )
279 : {
280 0 : {
281 0 : tree t = type;
282 0 : if (!TYPE_OVERFLOW_WRAPS (t))
283 0 : t = unsigned_type_for (t);
284 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
285 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail120;
286 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail120;
287 0 : {
288 0 : tree res_op0;
289 0 : {
290 0 : tree _o1[2], _r1;
291 0 : {
292 0 : tree _o2[1], _r2;
293 0 : _o2[0] = captures[2];
294 0 : if (TREE_TYPE (_o2[0]) != t)
295 : {
296 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
297 : }
298 : else
299 : _r2 = _o2[0];
300 0 : _o1[0] = _r2;
301 : }
302 0 : _o1[1] = wide_int_to_tree (t, c);
303 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
304 0 : res_op0 = _r1;
305 : }
306 0 : tree _r;
307 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
308 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
309 0 : return _r;
310 : }
311 0 : next_after_fail120:;
312 0 : }
313 : }
314 : return NULL_TREE;
315 : }
316 :
317 : tree
318 0 : generic_simplify_51 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
319 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
320 : {
321 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
322 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
323 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
324 0 : && !TYPE_SATURATING (TREE_TYPE (captures[0]))
325 0 : && (
326 :
327 0 : || !TREE_SIDE_EFFECTS (captures[0]))
328 : )
329 : {
330 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail130;
331 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail130;
332 0 : {
333 0 : tree res_op0;
334 0 : res_op0 = captures[0];
335 0 : tree _r;
336 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
337 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, true);
338 0 : return _r;
339 : }
340 : next_after_fail130:;
341 : }
342 : return NULL_TREE;
343 : }
344 :
345 : tree
346 7 : generic_simplify_56 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
347 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
348 : const enum tree_code ARG_UNUSED (op))
349 : {
350 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
351 7 : if (INTEGRAL_TYPE_P (type)
352 7 : && TYPE_OVERFLOW_WRAPS (type)
353 14 : && !TYPE_SATURATING (type)
354 : )
355 : {
356 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail136;
357 7 : {
358 7 : tree res_op0;
359 7 : {
360 7 : tree _o1[2], _r1;
361 7 : _o1[0] = captures[1];
362 7 : _o1[1] = captures[4];
363 7 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
364 7 : res_op0 = _r1;
365 : }
366 7 : tree res_op1;
367 7 : res_op1 = captures[2];
368 7 : tree _r;
369 7 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
370 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 105, __FILE__, __LINE__, true);
371 7 : return _r;
372 : }
373 0 : next_after_fail136:;
374 : }
375 : return NULL_TREE;
376 : }
377 :
378 : tree
379 154 : generic_simplify_65 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
380 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
381 : {
382 154 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
383 154 : if (!TYPE_SATURATING (type)
384 : )
385 : {
386 154 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
387 308 : && !FIXED_POINT_TYPE_P (type)
388 : )
389 : {
390 154 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail153;
391 154 : {
392 154 : tree res_op0;
393 154 : res_op0 = captures[2];
394 154 : tree res_op1;
395 154 : res_op1 = captures[1];
396 154 : tree _r;
397 154 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
398 154 : if (TREE_SIDE_EFFECTS (captures[0]))
399 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
400 154 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 122, __FILE__, __LINE__, true);
401 154 : return _r;
402 : }
403 0 : next_after_fail153:;
404 : }
405 : }
406 : return NULL_TREE;
407 : }
408 :
409 : tree
410 3829378 : generic_simplify_73 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
411 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
412 : {
413 3829378 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
414 3829378 : if (!TYPE_SATURATING (type)
415 3829378 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
416 : )
417 : {
418 3829378 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
419 : )
420 : {
421 7658756 : if (TREE_CODE (type) == INTEGER_TYPE
422 3829378 : && wi::neg_p (wi::to_wide (captures[3]))
423 11488134 : && wi::to_wide (captures[3]) != wi::min_value (TYPE_PRECISION (type), SIGNED)
424 : )
425 : {
426 1006162 : {
427 1006162 : wide_int c0 = wi::to_wide (captures[1]);
428 1006162 : wide_int c2 = wi::to_wide (captures[3]);
429 1006162 : wide_int c2_abs = wi::abs (c2);
430 1006162 : if (wi::multiple_of_p (c2_abs, c0, TYPE_SIGN (type))
431 : )
432 : {
433 459010 : {
434 459010 : wide_int div_res = wi::sdiv_trunc (c2, c0);
435 459010 : tree div_cst = wide_int_to_tree (type, div_res);
436 459010 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail162;
437 459010 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail162;
438 459010 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail162;
439 459010 : {
440 459010 : tree res_op0;
441 459010 : {
442 459010 : tree _o1[2], _r1;
443 459010 : _o1[0] = captures[2];
444 459010 : _o1[1] = div_cst;
445 459010 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
446 459010 : res_op0 = _r1;
447 : }
448 459010 : tree res_op1;
449 459010 : res_op1 = captures[1];
450 459010 : tree _r;
451 459010 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
452 459010 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 131, __FILE__, __LINE__, true);
453 459010 : return _r;
454 : }
455 0 : next_after_fail162:;
456 459010 : }
457 : }
458 1006162 : }
459 : }
460 : }
461 : }
462 : return NULL_TREE;
463 : }
464 :
465 : tree
466 0 : generic_simplify_84 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
467 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
468 : {
469 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
470 0 : if (TREE_CODE (captures[1]) == SSA_NAME && num_imm_uses (captures[1]) == 2
471 : )
472 : {
473 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail174;
474 0 : {
475 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail174;
476 0 : tree res_op0;
477 0 : {
478 0 : tree _o1[2], _r1;
479 0 : {
480 0 : tree _o2[3], _r2;
481 0 : _o2[0] = unshare_expr (captures[2]);
482 0 : _o2[1] = captures[2];
483 0 : _o2[2] = captures[4];
484 0 : _r2 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1], _o2[2]);
485 0 : _o1[0] = _r2;
486 : }
487 0 : _o1[1] = captures[3];
488 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
489 0 : res_op0 = _r1;
490 : }
491 0 : tree res_op1;
492 0 : res_op1 = captures[5];
493 0 : tree _r;
494 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
495 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 143, __FILE__, __LINE__, true);
496 0 : return _r;
497 : }
498 : next_after_fail174:;
499 : }
500 : return NULL_TREE;
501 : }
502 :
503 : tree
504 26 : generic_simplify_91 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
505 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
506 : const enum tree_code ARG_UNUSED (rop),
507 : const enum tree_code ARG_UNUSED (res))
508 : {
509 26 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
510 26 : if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type)
511 26 : && !TYPE_SATURATING (type)
512 : )
513 : {
514 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail181;
515 0 : {
516 0 : tree res_op0;
517 0 : res_op0 = captures[0];
518 0 : tree res_op1;
519 0 : res_op1 = captures[1];
520 0 : tree _r;
521 0 : _r = fold_build2_loc (loc, res, type, res_op0, res_op1);
522 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 150, __FILE__, __LINE__, true);
523 0 : return _r;
524 : }
525 0 : next_after_fail181:;
526 : }
527 : return NULL_TREE;
528 : }
529 :
530 : tree
531 57846 : generic_simplify_98 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
532 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
533 : {
534 57846 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
535 57846 : if (!TYPE_SATURATING (type)
536 : )
537 : {
538 57846 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
539 115681 : && !FIXED_POINT_TYPE_P (type)
540 : )
541 : {
542 57835 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail188;
543 57835 : {
544 57835 : tree res_op0;
545 57835 : res_op0 = captures[1];
546 57835 : tree _r;
547 57835 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
548 57835 : if (TREE_SIDE_EFFECTS (captures[0]))
549 15 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
550 57835 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 156, __FILE__, __LINE__, true);
551 57835 : return _r;
552 : }
553 0 : next_after_fail188:;
554 : }
555 : }
556 : return NULL_TREE;
557 : }
558 :
559 : tree
560 10577 : generic_simplify_106 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
561 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
562 : {
563 10577 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
564 10577 : if (!TYPE_SATURATING (type)
565 : )
566 : {
567 10577 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
568 21154 : && !FIXED_POINT_TYPE_P (type)
569 : )
570 : {
571 10577 : if (INTEGRAL_TYPE_P (type)
572 10577 : && TYPE_OVERFLOW_UNDEFINED (type)
573 3274 : && TREE_CODE (captures[1]) != INTEGER_CST
574 11775 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
575 : )
576 : {
577 1198 : {
578 1198 : tree utype = unsigned_type_for (type);
579 1198 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail200;
580 1198 : {
581 1198 : tree res_op0;
582 1198 : {
583 1198 : tree _o1[1], _r1;
584 1198 : {
585 1198 : tree _o2[1], _r2;
586 1198 : _o2[0] = captures[1];
587 1198 : if (TREE_TYPE (_o2[0]) != utype)
588 : {
589 1198 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
590 : }
591 : else
592 : _r2 = _o2[0];
593 1198 : _o1[0] = _r2;
594 : }
595 1198 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
596 1198 : res_op0 = _r1;
597 : }
598 1198 : tree _r;
599 1198 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
600 1198 : if (TREE_SIDE_EFFECTS (captures[2]))
601 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
602 1198 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 168, __FILE__, __LINE__, true);
603 1198 : return _r;
604 : }
605 0 : next_after_fail200:;
606 : }
607 : }
608 : else
609 : {
610 9379 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
611 9379 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
612 2333 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
613 : )
614 : {
615 9119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail201;
616 9119 : {
617 9119 : tree res_op0;
618 9119 : {
619 9119 : tree _o1[1], _r1;
620 9119 : _o1[0] = captures[1];
621 9119 : if (TREE_TYPE (_o1[0]) != type)
622 : {
623 9119 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
624 : }
625 : else
626 : _r1 = _o1[0];
627 9119 : res_op0 = _r1;
628 : }
629 9119 : tree _r;
630 9119 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
631 9119 : if (TREE_SIDE_EFFECTS (captures[2]))
632 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
633 9119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 169, __FILE__, __LINE__, true);
634 9119 : return _r;
635 : }
636 0 : next_after_fail201:;
637 : }
638 : }
639 : }
640 : }
641 : return NULL_TREE;
642 : }
643 :
644 : tree
645 0 : generic_simplify_120 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
646 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
647 : {
648 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
649 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail218;
650 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail218;
651 0 : {
652 0 : tree _r;
653 0 : _r = captures[2];
654 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 182, __FILE__, __LINE__, true);
655 : return _r;
656 : }
657 : next_after_fail218:;
658 : return NULL_TREE;
659 : }
660 :
661 : tree
662 0 : generic_simplify_125 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
663 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
664 : const enum tree_code ARG_UNUSED (op))
665 : {
666 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
667 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail223;
668 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail223;
669 0 : {
670 0 : tree _r;
671 0 : _r = captures[0];
672 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
673 : return _r;
674 : }
675 : next_after_fail223:;
676 : return NULL_TREE;
677 : }
678 :
679 : tree
680 2 : generic_simplify_135 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
681 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
682 : const enum tree_code ARG_UNUSED (lop),
683 : const enum tree_code ARG_UNUSED (res))
684 : {
685 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
686 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail233;
687 2 : {
688 2 : tree res_op0;
689 2 : {
690 2 : tree _o1[2], _r1;
691 2 : _o1[0] = captures[1];
692 2 : _o1[1] = captures[2];
693 2 : _r1 = fold_build2_loc (loc, res, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
694 2 : res_op0 = _r1;
695 : }
696 2 : tree _r;
697 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
698 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 194, __FILE__, __LINE__, true);
699 : return _r;
700 : }
701 0 : next_after_fail233:;
702 0 : return NULL_TREE;
703 : }
704 :
705 : tree
706 2 : generic_simplify_145 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
707 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
708 : const enum tree_code ARG_UNUSED (bitop),
709 : const enum tree_code ARG_UNUSED (rbitop))
710 : {
711 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
712 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail247;
713 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail247;
714 2 : {
715 2 : tree _r;
716 2 : _r = captures[2];
717 2 : if (TREE_SIDE_EFFECTS (captures[1]))
718 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
719 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 200, __FILE__, __LINE__, true);
720 : return _r;
721 : }
722 : next_after_fail247:;
723 : return NULL_TREE;
724 : }
725 :
726 : tree
727 700 : generic_simplify_151 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
728 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
729 : const enum tree_code ARG_UNUSED (op))
730 : {
731 700 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
732 700 : if (bitwise_equal_p (captures[4], captures[7])
733 : )
734 : {
735 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail254;
736 40 : {
737 40 : tree res_op0;
738 40 : {
739 40 : tree _o1[2], _r1;
740 40 : {
741 40 : tree _o2[2], _r2;
742 40 : _o2[0] = captures[5];
743 40 : {
744 40 : tree _o3[1], _r3;
745 40 : _o3[0] = captures[6];
746 40 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
747 : {
748 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
749 : }
750 : else
751 : _r3 = _o3[0];
752 40 : _o2[1] = _r3;
753 : }
754 40 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
755 40 : _o1[0] = _r2;
756 : }
757 40 : {
758 40 : tree _o2[1], _r2;
759 40 : _o2[0] = captures[4];
760 40 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
761 : {
762 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
763 : }
764 : else
765 : _r2 = _o2[0];
766 40 : _o1[1] = _r2;
767 : }
768 40 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
769 40 : res_op0 = _r1;
770 : }
771 40 : tree _r;
772 40 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
773 40 : if (TREE_SIDE_EFFECTS (captures[7]))
774 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
775 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
776 40 : return _r;
777 : }
778 0 : next_after_fail254:;
779 : }
780 : return NULL_TREE;
781 : }
782 :
783 : tree
784 25 : generic_simplify_163 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
785 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
786 : const enum tree_code ARG_UNUSED (code2),
787 : const enum tree_code ARG_UNUSED (code1))
788 : {
789 25 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
790 25 : if ((TREE_CODE (captures[2]) == INTEGER_CST
791 7 : && TREE_CODE (captures[4]) == INTEGER_CST)
792 25 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
793 18 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
794 0 : && operand_equal_p (captures[2], captures[4]))
795 : )
796 : {
797 7 : {
798 7 : int cmp = 0;
799 7 : if (TREE_CODE (captures[2]) == INTEGER_CST
800 7 : && TREE_CODE (captures[4]) == INTEGER_CST)
801 7 : cmp = tree_int_cst_compare (captures[2], captures[4]);
802 7 : if ((code1 == LT_EXPR || code1 == LE_EXPR)
803 7 : && (code2 == LT_EXPR || code2 == LE_EXPR)
804 : )
805 : {
806 7 : if ((cmp < 0) || (cmp == 0 && code1 == LT_EXPR)
807 : )
808 : {
809 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail282;
810 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail282;
811 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail282;
812 7 : {
813 7 : tree _r;
814 7 : _r = captures[3];
815 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 223, __FILE__, __LINE__, true);
816 7 : return _r;
817 : }
818 : next_after_fail282:;
819 : }
820 : else
821 : {
822 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail283;
823 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail283;
824 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail283;
825 0 : {
826 0 : tree _r;
827 0 : _r = captures[0];
828 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 224, __FILE__, __LINE__, true);
829 0 : return _r;
830 : }
831 : next_after_fail283:;
832 : }
833 : }
834 : else
835 : {
836 0 : if ((code1 == GT_EXPR || code1 == GE_EXPR)
837 0 : && (code2 == GT_EXPR || code2 == GE_EXPR)
838 : )
839 : {
840 0 : if ((cmp > 0) || (cmp == 0 && code1 == GT_EXPR)
841 : )
842 : {
843 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail284;
844 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail284;
845 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail284;
846 0 : {
847 0 : tree _r;
848 0 : _r = captures[3];
849 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 225, __FILE__, __LINE__, true);
850 0 : return _r;
851 : }
852 : next_after_fail284:;
853 : }
854 : else
855 : {
856 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail285;
857 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail285;
858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail285;
859 0 : {
860 0 : tree _r;
861 0 : _r = captures[0];
862 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 226, __FILE__, __LINE__, true);
863 0 : return _r;
864 : }
865 : next_after_fail285:;
866 : }
867 : }
868 : else
869 : {
870 0 : if (cmp == 0
871 0 : && ((code1 == LT_EXPR && code2 == GT_EXPR)
872 0 : || (code1 == GT_EXPR && code2 == LT_EXPR))
873 : )
874 : {
875 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail286;
876 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail286;
877 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail286;
878 0 : {
879 0 : tree res_op0;
880 0 : res_op0 = captures[1];
881 0 : tree res_op1;
882 0 : res_op1 = captures[4];
883 0 : tree _r;
884 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
885 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 227, __FILE__, __LINE__, true);
886 0 : return _r;
887 : }
888 : next_after_fail286:;
889 : }
890 : else
891 : {
892 0 : if (cmp >= 0
893 0 : && (code1 == LT_EXPR || code1 == LE_EXPR)
894 0 : && (code2 == GT_EXPR || code2 == GE_EXPR)
895 : )
896 : {
897 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail287;
898 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail287;
899 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail287;
900 0 : {
901 0 : tree _r;
902 0 : _r = constant_boolean_node (true, type);
903 0 : if (TREE_SIDE_EFFECTS (captures[1]))
904 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
905 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 228, __FILE__, __LINE__, true);
906 0 : return _r;
907 : }
908 : next_after_fail287:;
909 : }
910 : else
911 : {
912 0 : if (cmp <= 0
913 0 : && (code1 == GT_EXPR || code1 == GE_EXPR)
914 0 : && (code2 == LT_EXPR || code2 == LE_EXPR)
915 : )
916 : {
917 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail288;
918 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail288;
919 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail288;
920 0 : {
921 0 : tree _r;
922 0 : _r = constant_boolean_node (true, type);
923 0 : if (TREE_SIDE_EFFECTS (captures[1]))
924 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
925 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
926 0 : return _r;
927 : }
928 : next_after_fail288:;
929 : }
930 : }
931 : }
932 : }
933 : }
934 : }
935 : }
936 : return NULL_TREE;
937 : }
938 :
939 : tree
940 0 : generic_simplify_192 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
941 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
942 : {
943 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
944 0 : if (INTEGRAL_TYPE_P (type)
945 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
946 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
947 : )
948 : {
949 0 : if (TYPE_UNSIGNED (type)
950 : )
951 : {
952 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail332;
953 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail332;
954 0 : {
955 0 : tree res_op0;
956 0 : res_op0 = captures[0];
957 0 : tree _r;
958 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
959 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 246, __FILE__, __LINE__, true);
960 0 : return _r;
961 : }
962 : next_after_fail332:;
963 : }
964 : else
965 : {
966 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail333;
967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail333;
968 0 : {
969 0 : tree res_op0;
970 0 : res_op0 = captures[0];
971 0 : tree _r;
972 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 247, __FILE__, __LINE__, true);
974 0 : return _r;
975 : }
976 : next_after_fail333:;
977 : }
978 : }
979 : return NULL_TREE;
980 : }
981 :
982 : tree
983 42260 : generic_simplify_198 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
984 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
985 : {
986 42260 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
987 42260 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail339;
988 42260 : {
989 42260 : tree res_op0;
990 42260 : res_op0 = captures[0];
991 42260 : tree _r;
992 42260 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
993 42260 : if (TREE_SIDE_EFFECTS (captures[2]))
994 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
995 42260 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 252, __FILE__, __LINE__, true);
996 : return _r;
997 : }
998 0 : next_after_fail339:;
999 0 : return NULL_TREE;
1000 : }
1001 :
1002 : tree
1003 6 : generic_simplify_204 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1004 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1005 : const combined_fn ARG_UNUSED (LDEXP))
1006 : {
1007 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1008 6 : if (flag_unsafe_math_optimizations
1009 : )
1010 : {
1011 6 : {
1012 6 : HOST_WIDE_INT tmp = 0;
1013 6 : if (real_isinteger (&TREE_REAL_CST (captures[0]), &tmp)
1014 6 : && tmp > 0 && pow2p_hwi (tmp)
1015 : )
1016 : {
1017 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail346;
1018 3 : {
1019 3 : tree res_op0;
1020 3 : res_op0 = captures[1];
1021 3 : tree res_op1;
1022 3 : {
1023 3 : tree _o1[2], _r1;
1024 3 : _o1[0] = build_int_cst (integer_type_node,
1025 6 : exact_log2 (tmp));
1026 3 : _o1[1] = captures[2];
1027 3 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1028 3 : res_op1 = _r1;
1029 : }
1030 3 : tree _r;
1031 3 : _r = maybe_build_call_expr_loc (loc, LDEXP, type, 2, res_op0, res_op1);
1032 3 : if (!_r)
1033 0 : goto next_after_fail346;
1034 3 : if (TREE_SIDE_EFFECTS (captures[0]))
1035 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1036 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 259, __FILE__, __LINE__, true);
1037 3 : return _r;
1038 : }
1039 3 : next_after_fail346:;
1040 : }
1041 : }
1042 : }
1043 : return NULL_TREE;
1044 : }
1045 :
1046 : tree
1047 99503 : generic_simplify_214 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1048 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1049 : const enum tree_code ARG_UNUSED (op))
1050 : {
1051 99503 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1052 199006 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1053 197356 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
1054 93673 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
1055 : && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0])))
1056 98674 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1057 296855 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
1058 : )
1059 : {
1060 98665 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail359;
1061 98665 : {
1062 98665 : tree res_op0;
1063 98665 : res_op0 = captures[2];
1064 98665 : tree res_op1;
1065 98665 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1066 98665 : tree _r;
1067 98665 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1068 98665 : if (TREE_SIDE_EFFECTS (captures[3]))
1069 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1070 98665 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 267, __FILE__, __LINE__, true);
1071 98665 : return _r;
1072 : }
1073 0 : next_after_fail359:;
1074 : }
1075 : return NULL_TREE;
1076 : }
1077 :
1078 : tree
1079 9885 : generic_simplify_223 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1080 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1081 : const enum tree_code ARG_UNUSED (op))
1082 : {
1083 9885 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1084 9885 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail382;
1085 9885 : {
1086 9885 : tree res_op0;
1087 9885 : res_op0 = captures[1];
1088 9885 : tree res_op1;
1089 9885 : res_op1 = captures[2];
1090 9885 : tree _r;
1091 9885 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1092 9885 : if (TREE_SIDE_EFFECTS (captures[0]))
1093 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1094 9885 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 294, __FILE__, __LINE__, true);
1095 : return _r;
1096 : }
1097 0 : next_after_fail382:;
1098 0 : return NULL_TREE;
1099 : }
1100 :
1101 : tree
1102 64752 : generic_simplify_229 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1103 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1104 : const enum tree_code ARG_UNUSED (neeq))
1105 : {
1106 64752 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1107 64752 : {
1108 64752 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1109 64752 : if (ptr_difference_const (captures[2], captures[0], &diff)
1110 : )
1111 : {
1112 16259 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail388;
1113 16259 : {
1114 16259 : tree res_op0;
1115 16259 : res_op0 = build_int_cst_type (inner_type, diff);
1116 16259 : tree res_op1;
1117 16259 : res_op1 = captures[1];
1118 16259 : tree _r;
1119 16259 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1120 16259 : if (TREE_SIDE_EFFECTS (captures[0]))
1121 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1122 16259 : if (TREE_SIDE_EFFECTS (captures[2]))
1123 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1124 16259 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 299, __FILE__, __LINE__, true);
1125 16259 : return _r;
1126 : }
1127 0 : next_after_fail388:;
1128 : }
1129 : }
1130 48493 : return NULL_TREE;
1131 : }
1132 :
1133 : tree
1134 0 : generic_simplify_238 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1136 : const enum tree_code ARG_UNUSED (cmp))
1137 : {
1138 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1139 0 : {
1140 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1141 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail399;
1142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail399;
1143 0 : {
1144 0 : tree res_op0;
1145 0 : {
1146 0 : tree _o1[2], _r1;
1147 0 : {
1148 0 : tree _o2[1], _r2;
1149 0 : _o2[0] = captures[0];
1150 0 : if (TREE_TYPE (_o2[0]) != utype)
1151 : {
1152 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1153 : }
1154 : else
1155 : _r2 = _o2[0];
1156 0 : _o1[0] = _r2;
1157 : }
1158 0 : {
1159 0 : tree _o2[1], _r2;
1160 0 : _o2[0] = captures[1];
1161 0 : if (TREE_TYPE (_o2[0]) != utype)
1162 : {
1163 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1164 : }
1165 : else
1166 : _r2 = _o2[0];
1167 0 : _o1[1] = _r2;
1168 : }
1169 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1170 0 : res_op0 = _r1;
1171 : }
1172 0 : tree res_op1;
1173 0 : res_op1 = build_zero_cst (utype);
1174 0 : tree _r;
1175 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1176 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 310, __FILE__, __LINE__, true);
1177 : return _r;
1178 : }
1179 : next_after_fail399:;
1180 : }
1181 : return NULL_TREE;
1182 : }
1183 :
1184 : tree
1185 0 : generic_simplify_245 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1186 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1187 : const enum tree_code ARG_UNUSED (rotate),
1188 : const enum tree_code ARG_UNUSED (invrot),
1189 : const enum tree_code ARG_UNUSED (cmp))
1190 : {
1191 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1192 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail416;
1193 0 : {
1194 0 : tree res_op0;
1195 0 : res_op0 = captures[0];
1196 0 : tree res_op1;
1197 0 : res_op1 = captures[2];
1198 0 : tree _r;
1199 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1200 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1201 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1202 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 327, __FILE__, __LINE__, true);
1203 : return _r;
1204 : }
1205 0 : next_after_fail416:;
1206 0 : return NULL_TREE;
1207 : }
1208 :
1209 : tree
1210 27 : generic_simplify_250 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1211 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1212 : const enum tree_code ARG_UNUSED (cmp),
1213 : const combined_fn ARG_UNUSED (bswap))
1214 : {
1215 27 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1216 27 : {
1217 27 : tree ctype = TREE_TYPE (captures[1]);
1218 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail421;
1219 27 : {
1220 27 : tree res_op0;
1221 27 : {
1222 27 : tree _o1[1], _r1;
1223 27 : _o1[0] = captures[0];
1224 27 : if (TREE_TYPE (_o1[0]) != ctype)
1225 : {
1226 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1227 : }
1228 : else
1229 : _r1 = _o1[0];
1230 27 : res_op0 = _r1;
1231 : }
1232 27 : tree res_op1;
1233 27 : {
1234 27 : tree _o1[1], _r1;
1235 27 : _o1[0] = captures[1];
1236 27 : _r1 = maybe_build_call_expr_loc (loc, bswap, TREE_TYPE (_o1[0]), 1, _o1[0]);
1237 27 : if (!_r1)
1238 0 : goto next_after_fail421;
1239 27 : if (EXPR_P (_r1))
1240 27 : goto next_after_fail421;
1241 0 : res_op1 = _r1;
1242 : }
1243 0 : tree _r;
1244 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1245 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 332, __FILE__, __LINE__, true);
1246 : return _r;
1247 : }
1248 : next_after_fail421:;
1249 : }
1250 : return NULL_TREE;
1251 : }
1252 :
1253 : tree
1254 24 : generic_simplify_261 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1255 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1256 : const enum tree_code ARG_UNUSED (cmp))
1257 : {
1258 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1259 24 : if (single_use (captures[1]) && single_use (captures[3])
1260 : )
1261 : {
1262 24 : {
1263 24 : tree otype = TREE_TYPE (captures[0]);
1264 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail438;
1265 24 : {
1266 24 : tree res_op0;
1267 24 : {
1268 24 : tree _o1[1], _r1;
1269 24 : _o1[0] = captures[4];
1270 24 : if (TREE_TYPE (_o1[0]) != otype)
1271 : {
1272 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, otype, _o1[0]);
1273 : }
1274 : else
1275 : _r1 = _o1[0];
1276 24 : res_op0 = _r1;
1277 : }
1278 24 : tree res_op1;
1279 24 : {
1280 24 : tree _o1[1], _r1;
1281 24 : _o1[0] = captures[2];
1282 24 : if (TREE_TYPE (_o1[0]) != otype)
1283 : {
1284 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, otype, _o1[0]);
1285 : }
1286 : else
1287 : _r1 = _o1[0];
1288 24 : res_op1 = _r1;
1289 : }
1290 24 : tree _r;
1291 24 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1292 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 346, __FILE__, __LINE__, true);
1293 24 : return _r;
1294 : }
1295 0 : next_after_fail438:;
1296 : }
1297 : }
1298 0 : return NULL_TREE;
1299 : }
1300 :
1301 : tree
1302 1263 : generic_simplify_267 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1303 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1304 : const enum tree_code ARG_UNUSED (cmp),
1305 : const enum tree_code ARG_UNUSED (icmp))
1306 : {
1307 1263 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1308 1263 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1309 1263 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1310 : )
1311 : {
1312 1263 : {
1313 1263 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[0]))));
1314 1263 : tree type1 = TREE_TYPE (captures[1]);
1315 1263 : bool type1_signed_p = TYPE_SIGN (type1) == SIGNED;
1316 1263 : bool type1_ok = fmt.can_represent_integral_type_p (type1);
1317 1263 : tree type2 = TREE_TYPE (captures[3]);
1318 1263 : bool type2_signed_p = TYPE_SIGN (type2) == SIGNED;
1319 1263 : bool type2_ok = fmt.can_represent_integral_type_p (type2);
1320 1263 : if (type1_ok && type2_ok
1321 : )
1322 : {
1323 229 : if (cmp == ORDERED_EXPR || cmp == UNORDERED_EXPR
1324 : )
1325 : {
1326 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail476;
1327 0 : {
1328 0 : tree _r;
1329 0 : _r = constant_boolean_node (cmp == ORDERED_EXPR, type);
1330 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1331 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1332 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1333 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1334 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 385, __FILE__, __LINE__, true);
1335 183 : return _r;
1336 : }
1337 0 : next_after_fail476:;
1338 : }
1339 : else
1340 : {
1341 229 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (type2)
1342 229 : && type1_signed_p >= type2_signed_p
1343 : )
1344 : {
1345 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail477;
1346 0 : {
1347 0 : tree res_op0;
1348 0 : res_op0 = captures[1];
1349 0 : tree res_op1;
1350 0 : {
1351 0 : tree _o1[1], _r1;
1352 0 : _o1[0] = captures[3];
1353 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1354 : {
1355 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1356 : }
1357 : else
1358 : _r1 = _o1[0];
1359 0 : res_op1 = _r1;
1360 : }
1361 0 : tree _r;
1362 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1363 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 386, __FILE__, __LINE__, true);
1364 0 : return _r;
1365 : }
1366 0 : next_after_fail477:;
1367 : }
1368 : else
1369 : {
1370 229 : if (TYPE_PRECISION (type1) < TYPE_PRECISION (type2)
1371 229 : && type1_signed_p <= type2_signed_p
1372 : )
1373 : {
1374 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail478;
1375 7 : {
1376 7 : tree res_op0;
1377 7 : {
1378 7 : tree _o1[1], _r1;
1379 7 : _o1[0] = captures[1];
1380 7 : if (TREE_TYPE (_o1[0]) != type2)
1381 : {
1382 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type2, _o1[0]);
1383 : }
1384 : else
1385 : _r1 = _o1[0];
1386 7 : res_op0 = _r1;
1387 : }
1388 7 : tree res_op1;
1389 7 : res_op1 = captures[3];
1390 7 : tree _r;
1391 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1392 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 387, __FILE__, __LINE__, true);
1393 7 : return _r;
1394 : }
1395 0 : next_after_fail478:;
1396 : }
1397 : else
1398 : {
1399 222 : if (TYPE_PRECISION (type1) == TYPE_PRECISION (type2)
1400 222 : && type1_signed_p == type2_signed_p
1401 : )
1402 : {
1403 176 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail479;
1404 176 : {
1405 176 : tree res_op0;
1406 176 : res_op0 = captures[1];
1407 176 : tree res_op1;
1408 176 : {
1409 176 : tree _o1[1], _r1;
1410 176 : _o1[0] = captures[3];
1411 176 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1412 : {
1413 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1414 : }
1415 : else
1416 : _r1 = _o1[0];
1417 176 : res_op1 = _r1;
1418 : }
1419 176 : tree _r;
1420 176 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1421 176 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 388, __FILE__, __LINE__, true);
1422 176 : return _r;
1423 : }
1424 0 : next_after_fail479:;
1425 : }
1426 : }
1427 : }
1428 : }
1429 : }
1430 : }
1431 : }
1432 : return NULL_TREE;
1433 : }
1434 :
1435 : tree
1436 451 : generic_simplify_280 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1437 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1438 : const enum tree_code ARG_UNUSED (cmp))
1439 : {
1440 451 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1441 451 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail515;
1442 451 : {
1443 451 : tree res_op0;
1444 451 : {
1445 451 : tree _o1[2], _r1;
1446 451 : _o1[0] = captures[0];
1447 451 : {
1448 451 : tree _o2[1], _r2;
1449 451 : _o2[0] = captures[1];
1450 451 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1451 451 : if (EXPR_P (_r2))
1452 443 : goto next_after_fail515;
1453 8 : _o1[1] = _r2;
1454 : }
1455 8 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1456 8 : res_op0 = _r1;
1457 : }
1458 8 : tree res_op1;
1459 8 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1460 8 : tree _r;
1461 8 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1462 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 416, __FILE__, __LINE__, true);
1463 : return _r;
1464 : }
1465 : next_after_fail515:;
1466 : return NULL_TREE;
1467 : }
1468 :
1469 : tree
1470 38521 : generic_simplify_283 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1471 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1472 : const enum tree_code ARG_UNUSED (cmp))
1473 : {
1474 38521 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1475 38521 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail518;
1476 38521 : {
1477 38521 : tree res_op0;
1478 38521 : {
1479 38521 : tree _o1[2], _r1;
1480 38521 : {
1481 38521 : tree _o2[2], _r2;
1482 38521 : _o2[0] = captures[1];
1483 38521 : _o2[1] = captures[4];
1484 38521 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1485 38521 : _o1[0] = _r2;
1486 : }
1487 38521 : _o1[1] = captures[2];
1488 38521 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1489 38521 : res_op0 = _r1;
1490 : }
1491 38521 : tree res_op1;
1492 38521 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1493 38521 : tree _r;
1494 38521 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1495 38521 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 419, __FILE__, __LINE__, true);
1496 : return _r;
1497 : }
1498 0 : next_after_fail518:;
1499 0 : return NULL_TREE;
1500 : }
1501 :
1502 : tree
1503 0 : generic_simplify_290 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1504 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1505 : const enum tree_code ARG_UNUSED (cmp))
1506 : {
1507 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1508 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail525;
1509 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail525;
1510 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail525;
1511 0 : {
1512 0 : tree res_op0;
1513 0 : res_op0 = captures[0];
1514 0 : tree res_op1;
1515 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1516 0 : tree _r;
1517 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1518 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1519 : return _r;
1520 : }
1521 : next_after_fail525:;
1522 : return NULL_TREE;
1523 : }
1524 :
1525 : tree
1526 54045605 : generic_simplify_293 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1527 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1528 : const enum tree_code ARG_UNUSED (neeq))
1529 : {
1530 54045605 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1531 96458742 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
1532 54056022 : && ptrs_compare_unequal (captures[0], captures[1])
1533 : )
1534 : {
1535 12290 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail542;
1536 12290 : {
1537 12290 : tree _r;
1538 12290 : _r = constant_boolean_node (neeq != EQ_EXPR, type);
1539 12290 : if (TREE_SIDE_EFFECTS (captures[0]))
1540 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1541 12290 : if (TREE_SIDE_EFFECTS (captures[1]))
1542 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1543 12290 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 433, __FILE__, __LINE__, true);
1544 12290 : return _r;
1545 : }
1546 0 : next_after_fail542:;
1547 : }
1548 : return NULL_TREE;
1549 : }
1550 :
1551 : tree
1552 1071681 : generic_simplify_297 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1553 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1554 : const enum tree_code ARG_UNUSED (op),
1555 : const enum tree_code ARG_UNUSED (rop),
1556 : const enum tree_code ARG_UNUSED (cmp))
1557 : {
1558 1071681 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1559 2143362 : if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3])
1560 1071673 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1561 1071358 : && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[1]))
1562 2142891 : && !TYPE_SATURATING (TREE_TYPE (captures[1]))
1563 : )
1564 : {
1565 1071210 : {
1566 1071210 : tree res = int_const_binop (rop, captures[3], captures[2]);
1567 1071210 : if (TREE_OVERFLOW (res)
1568 1071210 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1569 : )
1570 : {
1571 7554 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail550;
1572 7554 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail550;
1573 7554 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail550;
1574 7554 : {
1575 7554 : tree _r;
1576 7554 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1577 7554 : if (TREE_SIDE_EFFECTS (captures[1]))
1578 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1579 7554 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 441, __FILE__, __LINE__, true);
1580 7554 : return _r;
1581 : }
1582 : next_after_fail550:;
1583 : }
1584 : else
1585 : {
1586 1063656 : if (single_use (captures[0]) || wi::to_wide (res) == 0
1587 : )
1588 : {
1589 1063656 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail551;
1590 1063656 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail551;
1591 1063656 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail551;
1592 1063656 : {
1593 1063656 : tree res_op0;
1594 1063656 : res_op0 = captures[1];
1595 1063656 : tree res_op1;
1596 1063656 : res_op1 = TREE_OVERFLOW (res)
1597 1063656 : ? drop_tree_overflow (res) : res;
1598 1063656 : tree _r;
1599 1063656 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1600 1063656 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 442, __FILE__, __LINE__, true);
1601 1063656 : return _r;
1602 : }
1603 : next_after_fail551:;
1604 : }
1605 : }
1606 : }
1607 : }
1608 : return NULL_TREE;
1609 : }
1610 :
1611 : tree
1612 0 : generic_simplify_300 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1613 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1614 : const enum tree_code ARG_UNUSED (op),
1615 : const enum tree_code ARG_UNUSED (cmp))
1616 : {
1617 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1618 0 : if (integer_zerop (captures[3]) && single_use (captures[0])
1619 : )
1620 : {
1621 0 : {
1622 0 : tree type0 = TREE_TYPE (captures[1]);
1623 0 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1624 0 : if (integer_zerop (captures[2]))
1625 : stype = NULL_TREE;
1626 0 : if (stype
1627 : )
1628 : {
1629 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail563;
1630 0 : {
1631 0 : tree res_op0;
1632 0 : {
1633 0 : tree _o1[1], _r1;
1634 0 : _o1[0] = captures[1];
1635 0 : if (TREE_TYPE (_o1[0]) != stype)
1636 : {
1637 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1638 : }
1639 : else
1640 : _r1 = _o1[0];
1641 0 : res_op0 = _r1;
1642 : }
1643 0 : tree res_op1;
1644 0 : res_op1 = build_zero_cst (stype);
1645 0 : tree _r;
1646 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1647 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1648 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1649 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1650 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1651 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 454, __FILE__, __LINE__, true);
1652 0 : return _r;
1653 : }
1654 0 : next_after_fail563:;
1655 : }
1656 : }
1657 : }
1658 : else
1659 : {
1660 0 : {
1661 0 : bool ok = true;
1662 0 : tree type0 = TREE_TYPE (captures[1]);
1663 0 : if (wi::to_widest (captures[2]) == TYPE_PRECISION (type0) - 1)
1664 : ok = false;
1665 0 : if (ok && wi::to_wide (captures[3]) == (TYPE_PRECISION (type0) - 1)
1666 : )
1667 : {
1668 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail564;
1669 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail564;
1670 0 : {
1671 0 : tree res_op0;
1672 0 : res_op0 = captures[1];
1673 0 : tree res_op1;
1674 0 : res_op1 = build_one_cst (type0);
1675 0 : tree _r;
1676 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1677 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1678 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1679 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
1680 0 : return _r;
1681 : }
1682 : next_after_fail564:;
1683 : }
1684 : }
1685 : }
1686 : return NULL_TREE;
1687 : }
1688 :
1689 : tree
1690 0 : generic_simplify_309 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1691 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1692 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1693 : {
1694 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1695 0 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[0]))
1696 : )
1697 : {
1698 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail578;
1699 0 : {
1700 0 : tree res_op0;
1701 0 : {
1702 0 : tree _o1[1], _r1;
1703 0 : _o1[0] = captures[0];
1704 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1705 0 : res_op0 = _r1;
1706 : }
1707 0 : tree res_op1;
1708 0 : res_op1 = captures[1];
1709 0 : tree _r;
1710 0 : _r = maybe_build_call_expr_loc (loc, COPYSIGN_ALL, type, 2, res_op0, res_op1);
1711 0 : if (!_r)
1712 0 : goto next_after_fail578;
1713 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 469, __FILE__, __LINE__, true);
1714 0 : return _r;
1715 : }
1716 : next_after_fail578:;
1717 : }
1718 : return NULL_TREE;
1719 : }
1720 :
1721 : tree
1722 0 : generic_simplify_314 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1723 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1724 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1725 : {
1726 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1727 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail583;
1728 0 : {
1729 0 : tree res_op0;
1730 0 : res_op0 = captures[0];
1731 0 : tree _r;
1732 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1733 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1734 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1735 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 474, __FILE__, __LINE__, true);
1736 : return _r;
1737 : }
1738 0 : next_after_fail583:;
1739 0 : return NULL_TREE;
1740 : }
1741 :
1742 : tree
1743 1 : generic_simplify_322 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1744 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1745 : const enum tree_code ARG_UNUSED (div))
1746 : {
1747 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1748 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
1749 1 : && TYPE_OVERFLOW_UNDEFINED (type)
1750 1 : && !integer_zerop (captures[0])
1751 2 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1752 : )
1753 : {
1754 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail593;
1755 1 : {
1756 1 : tree _r;
1757 1 : _r = build_minus_one_cst (type);
1758 1 : if (TREE_SIDE_EFFECTS (captures[0]))
1759 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1760 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 482, __FILE__, __LINE__, true);
1761 1 : return _r;
1762 : }
1763 0 : next_after_fail593:;
1764 : }
1765 : return NULL_TREE;
1766 : }
1767 :
1768 : tree
1769 3 : generic_simplify_327 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1770 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1771 : const enum tree_code ARG_UNUSED (div))
1772 : {
1773 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1774 3 : if (INTEGRAL_TYPE_P (type)
1775 3 : && wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[3]), SIGNED)
1776 : )
1777 : {
1778 3 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1779 : )
1780 : {
1781 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail599;
1782 3 : {
1783 3 : tree res_op0;
1784 3 : res_op0 = captures[2];
1785 3 : tree res_op1;
1786 3 : res_op1 = captures[3];
1787 3 : tree _r;
1788 3 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1789 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1790 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1791 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 488, __FILE__, __LINE__, true);
1792 3 : return _r;
1793 : }
1794 0 : next_after_fail599:;
1795 : }
1796 : }
1797 : return NULL_TREE;
1798 : }
1799 :
1800 : tree
1801 0 : generic_simplify_337 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1802 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1803 : {
1804 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1805 0 : if (SCALAR_FLOAT_TYPE_P (type)
1806 0 : && ! HONOR_NANS (type)
1807 0 : && ! HONOR_INFINITIES (type)
1808 : )
1809 : {
1810 0 : if (types_match (type, float_type_node)
1811 : )
1812 : {
1813 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail609;
1814 0 : {
1815 0 : tree res_op0;
1816 0 : res_op0 = build_one_cst (type);
1817 0 : tree res_op1;
1818 0 : {
1819 0 : tree _o1[1], _r1;
1820 0 : _o1[0] = captures[0];
1821 0 : if (TREE_TYPE (_o1[0]) != type)
1822 : {
1823 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1824 : }
1825 : else
1826 : _r1 = _o1[0];
1827 0 : res_op1 = _r1;
1828 : }
1829 0 : tree _r;
1830 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNF, type, 2, res_op0, res_op1);
1831 0 : if (!_r)
1832 0 : goto next_after_fail609;
1833 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 498, __FILE__, __LINE__, true);
1834 0 : return _r;
1835 : }
1836 : next_after_fail609:;
1837 : }
1838 : else
1839 : {
1840 0 : if (types_match (type, double_type_node)
1841 : )
1842 : {
1843 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail610;
1844 0 : {
1845 0 : tree res_op0;
1846 0 : res_op0 = build_one_cst (type);
1847 0 : tree res_op1;
1848 0 : {
1849 0 : tree _o1[1], _r1;
1850 0 : _o1[0] = captures[0];
1851 0 : if (TREE_TYPE (_o1[0]) != type)
1852 : {
1853 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1854 : }
1855 : else
1856 : _r1 = _o1[0];
1857 0 : res_op1 = _r1;
1858 : }
1859 0 : tree _r;
1860 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGN, type, 2, res_op0, res_op1);
1861 0 : if (!_r)
1862 0 : goto next_after_fail610;
1863 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 499, __FILE__, __LINE__, true);
1864 0 : return _r;
1865 : }
1866 : next_after_fail610:;
1867 : }
1868 : else
1869 : {
1870 0 : if (types_match (type, long_double_type_node)
1871 : )
1872 : {
1873 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail611;
1874 0 : {
1875 0 : tree res_op0;
1876 0 : res_op0 = build_one_cst (type);
1877 0 : tree res_op1;
1878 0 : {
1879 0 : tree _o1[1], _r1;
1880 0 : _o1[0] = captures[0];
1881 0 : if (TREE_TYPE (_o1[0]) != type)
1882 : {
1883 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1884 : }
1885 : else
1886 : _r1 = _o1[0];
1887 0 : res_op1 = _r1;
1888 : }
1889 0 : tree _r;
1890 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNL, type, 2, res_op0, res_op1);
1891 0 : if (!_r)
1892 0 : goto next_after_fail611;
1893 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 500, __FILE__, __LINE__, true);
1894 0 : return _r;
1895 : }
1896 : next_after_fail611:;
1897 : }
1898 : }
1899 : }
1900 : }
1901 : return NULL_TREE;
1902 : }
1903 :
1904 : tree
1905 0 : generic_simplify_357 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1906 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1907 : const enum tree_code ARG_UNUSED (op))
1908 : {
1909 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1910 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail637;
1911 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail637;
1912 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail637;
1913 0 : {
1914 0 : tree _r;
1915 0 : _r = captures[2];
1916 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 526, __FILE__, __LINE__, true);
1917 : return _r;
1918 : }
1919 : next_after_fail637:;
1920 : return NULL_TREE;
1921 : }
1922 :
1923 : tree
1924 0 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1925 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1926 : const enum tree_code ARG_UNUSED (op))
1927 : {
1928 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1929 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail641;
1930 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail641;
1931 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail641;
1932 0 : {
1933 0 : tree _r;
1934 0 : _r = captures[2];
1935 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 530, __FILE__, __LINE__, true);
1936 : return _r;
1937 : }
1938 : next_after_fail641:;
1939 : return NULL_TREE;
1940 : }
1941 :
1942 : tree
1943 0 : generic_simplify_368 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1944 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1945 : {
1946 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1947 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail648;
1948 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail648;
1949 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail648;
1950 0 : {
1951 0 : tree _r;
1952 0 : _r = captures[2];
1953 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 537, __FILE__, __LINE__, true);
1954 : return _r;
1955 : }
1956 : next_after_fail648:;
1957 : return NULL_TREE;
1958 : }
1959 :
1960 : tree
1961 0 : generic_simplify_374 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1962 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1963 : const combined_fn ARG_UNUSED (func))
1964 : {
1965 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1966 0 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
1967 : )
1968 : {
1969 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail655;
1970 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail655;
1971 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail655;
1972 0 : {
1973 0 : tree _r;
1974 0 : _r = captures[2];
1975 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1976 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1977 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 544, __FILE__, __LINE__, true);
1978 0 : return _r;
1979 : }
1980 : next_after_fail655:;
1981 : }
1982 : return NULL_TREE;
1983 : }
1984 :
1985 : tree
1986 20050 : generic_simplify_382 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1987 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1988 : const enum tree_code ARG_UNUSED (cmp))
1989 : {
1990 20050 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1991 40100 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1992 40039 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1993 : )
1994 : {
1995 16589 : if (tree_expr_nonnegative_p (captures[1]) && tree_expr_nonzero_p (captures[1])
1996 : )
1997 : {
1998 13022 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail666;
1999 13022 : {
2000 13022 : tree res_op0;
2001 13022 : res_op0 = captures[0];
2002 13022 : tree res_op1;
2003 13022 : res_op1 = captures[2];
2004 13022 : tree _r;
2005 13022 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2006 13022 : if (TREE_SIDE_EFFECTS (captures[1]))
2007 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2008 13022 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 553, __FILE__, __LINE__, true);
2009 13022 : return _r;
2010 : }
2011 0 : next_after_fail666:;
2012 : }
2013 : else
2014 : {
2015 3567 : if (TREE_CODE (captures[1]) == INTEGER_CST
2016 3567 : && wi::neg_p (wi::to_wide (captures[1]), TYPE_SIGN (TREE_TYPE (captures[1])))
2017 : )
2018 : {
2019 1107 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail667;
2020 1107 : {
2021 1107 : tree res_op0;
2022 1107 : res_op0 = captures[2];
2023 1107 : tree res_op1;
2024 1107 : res_op1 = captures[0];
2025 1107 : tree _r;
2026 1107 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2027 1107 : if (TREE_SIDE_EFFECTS (captures[1]))
2028 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2029 1107 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 554, __FILE__, __LINE__, true);
2030 1107 : return _r;
2031 : }
2032 0 : next_after_fail667:;
2033 : }
2034 : }
2035 : }
2036 : return NULL_TREE;
2037 : }
2038 :
2039 : tree
2040 9609201 : generic_simplify_395 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2041 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2042 : const enum tree_code ARG_UNUSED (cmp),
2043 : const enum tree_code ARG_UNUSED (acmp))
2044 : {
2045 9609201 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2046 9609201 : {
2047 9609201 : tree cst = uniform_integer_cst_p (captures[1]);
2048 9609201 : if (tree_int_cst_sgn (cst) == 1
2049 : )
2050 : {
2051 3934787 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail681;
2052 3934787 : {
2053 3934787 : tree res_op0;
2054 3934787 : res_op0 = captures[0];
2055 3934787 : tree res_op1;
2056 3934787 : res_op1 = build_uniform_cst (TREE_TYPE (captures[1]),
2057 3934787 : wide_int_to_tree (TREE_TYPE (cst),
2058 3934787 : wi::to_wide (cst) - 1));
2059 3934787 : tree _r;
2060 3934787 : _r = fold_build2_loc (loc, acmp, type, res_op0, res_op1);
2061 3934787 : if (TREE_SIDE_EFFECTS (captures[1]))
2062 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2063 3934787 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 568, __FILE__, __LINE__, true);
2064 3934787 : return _r;
2065 : }
2066 0 : next_after_fail681:;
2067 : }
2068 : }
2069 : return NULL_TREE;
2070 : }
2071 :
2072 : tree
2073 0 : generic_simplify_405 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2074 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2075 : const enum tree_code ARG_UNUSED (cmp),
2076 : const enum tree_code ARG_UNUSED (out))
2077 : {
2078 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2079 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2080 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2081 : )
2082 : {
2083 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail723;
2084 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail723;
2085 0 : {
2086 0 : tree res_op0;
2087 0 : {
2088 0 : tree _o1[1], _r1;
2089 0 : _o1[0] = captures[0];
2090 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2091 0 : res_op0 = _r1;
2092 : }
2093 0 : tree res_op1;
2094 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2095 0 : tree _r;
2096 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2097 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 593, __FILE__, __LINE__, true);
2098 0 : return _r;
2099 : }
2100 : next_after_fail723:;
2101 : }
2102 : return NULL_TREE;
2103 : }
2104 :
2105 : tree
2106 20316733 : generic_simplify_412 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2107 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2108 : const enum tree_code ARG_UNUSED (cmp),
2109 : const enum tree_code ARG_UNUSED (acmp))
2110 : {
2111 20316733 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2112 20316733 : {
2113 20316733 : tree cst = uniform_integer_cst_p (captures[1]);
2114 20316733 : if (tree_int_cst_sgn (cst) == -1
2115 : )
2116 : {
2117 178042 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail737;
2118 178042 : {
2119 178042 : tree res_op0;
2120 178042 : res_op0 = captures[0];
2121 178042 : tree res_op1;
2122 178042 : res_op1 = build_uniform_cst (TREE_TYPE (captures[1]),
2123 178042 : wide_int_to_tree (TREE_TYPE (cst),
2124 178042 : wi::to_wide (cst)
2125 356084 : + 1));
2126 178042 : tree _r;
2127 178042 : _r = fold_build2_loc (loc, acmp, type, res_op0, res_op1);
2128 178042 : if (TREE_SIDE_EFFECTS (captures[1]))
2129 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2130 178042 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 607, __FILE__, __LINE__, true);
2131 178042 : return _r;
2132 : }
2133 0 : next_after_fail737:;
2134 : }
2135 : }
2136 : return NULL_TREE;
2137 : }
2138 :
2139 : tree
2140 0 : generic_simplify_415 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2142 : const enum tree_code ARG_UNUSED (cmp),
2143 : const enum tree_code ARG_UNUSED (out))
2144 : {
2145 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2146 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2147 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2148 : )
2149 : {
2150 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail740;
2151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail740;
2152 0 : {
2153 0 : tree res_op0;
2154 0 : {
2155 0 : tree _o1[1], _r1;
2156 0 : _o1[0] = captures[0];
2157 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2158 0 : res_op0 = _r1;
2159 : }
2160 0 : tree res_op1;
2161 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2162 0 : tree _r;
2163 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2164 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 592, __FILE__, __LINE__, true);
2165 0 : return _r;
2166 : }
2167 : next_after_fail740:;
2168 : }
2169 : return NULL_TREE;
2170 : }
2171 :
2172 : tree
2173 0 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2174 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2175 : const combined_fn ARG_UNUSED (logs),
2176 : const combined_fn ARG_UNUSED (exps),
2177 : const enum tree_code ARG_UNUSED (cmp))
2178 : {
2179 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2180 0 : if (flag_unsafe_math_optimizations
2181 : )
2182 : {
2183 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2184 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
2185 0 : && ! flag_trapping_math
2186 0 : && ! flag_errno_math
2187 : )
2188 : {
2189 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail744;
2190 0 : {
2191 0 : tree res_op0;
2192 0 : res_op0 = captures[1];
2193 0 : tree res_op1;
2194 0 : {
2195 0 : tree _o1[1], _r1;
2196 0 : _o1[0] = captures[2];
2197 0 : _r1 = maybe_build_call_expr_loc (loc, exps, TREE_TYPE (_o1[0]), 1, _o1[0]);
2198 0 : if (!_r1)
2199 0 : goto next_after_fail744;
2200 0 : if (EXPR_P (_r1))
2201 0 : goto next_after_fail744;
2202 0 : res_op1 = _r1;
2203 : }
2204 0 : tree _r;
2205 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2206 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 610, __FILE__, __LINE__, true);
2207 0 : return _r;
2208 : }
2209 : next_after_fail744:;
2210 : }
2211 : }
2212 : return NULL_TREE;
2213 : }
2214 :
2215 : tree
2216 2848 : generic_simplify_426 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2217 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2218 : const enum tree_code ARG_UNUSED (shiftrotate))
2219 : {
2220 2848 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2221 2848 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail755;
2222 2848 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail755;
2223 2848 : {
2224 2848 : tree res_op0;
2225 2848 : res_op0 = captures[0];
2226 2848 : tree _r;
2227 2848 : _r = non_lvalue_loc (loc, res_op0);
2228 2848 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 621, __FILE__, __LINE__, true);
2229 : return _r;
2230 : }
2231 : next_after_fail755:;
2232 : return NULL_TREE;
2233 : }
2234 :
2235 : tree
2236 28071 : generic_simplify_432 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2238 : const enum tree_code ARG_UNUSED (bit_op),
2239 : const enum tree_code ARG_UNUSED (shift))
2240 : {
2241 28071 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2242 28071 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2243 : )
2244 : {
2245 28071 : {
2246 28071 : tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]);
2247 28071 : if (mask
2248 : )
2249 : {
2250 28064 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail764;
2251 28064 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail764;
2252 28064 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail764;
2253 28064 : {
2254 28064 : tree res_op0;
2255 28064 : {
2256 28064 : tree _o1[2], _r1;
2257 28064 : {
2258 28064 : tree _o2[1], _r2;
2259 28064 : _o2[0] = captures[2];
2260 28064 : if (TREE_TYPE (_o2[0]) != type)
2261 : {
2262 70 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2263 : }
2264 : else
2265 : _r2 = _o2[0];
2266 28064 : _o1[0] = _r2;
2267 : }
2268 28064 : _o1[1] = captures[4];
2269 28064 : _r1 = fold_build2_loc (loc, shift, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2270 28064 : res_op0 = _r1;
2271 : }
2272 28064 : tree res_op1;
2273 28064 : res_op1 = mask;
2274 28064 : tree _r;
2275 28064 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
2276 28064 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 628, __FILE__, __LINE__, true);
2277 28064 : return _r;
2278 : }
2279 : next_after_fail764:;
2280 : }
2281 : }
2282 : }
2283 : return NULL_TREE;
2284 : }
2285 :
2286 : tree
2287 94 : generic_simplify_438 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2288 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2289 : const enum tree_code ARG_UNUSED (minmax))
2290 : {
2291 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2292 94 : if (INTEGRAL_TYPE_P (type)
2293 94 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2294 94 : && types_match (type, TREE_TYPE (captures[1]))
2295 8 : && types_match (type, TREE_TYPE (captures[3]))
2296 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
2297 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2298 94 : && TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (type)
2299 : )
2300 : {
2301 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail776;
2302 0 : {
2303 0 : tree res_op0;
2304 0 : res_op0 = captures[1];
2305 0 : tree res_op1;
2306 0 : res_op1 = captures[3];
2307 0 : tree _r;
2308 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
2309 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 640, __FILE__, __LINE__, true);
2310 0 : return _r;
2311 : }
2312 0 : next_after_fail776:;
2313 : }
2314 : return NULL_TREE;
2315 : }
2316 :
2317 : tree
2318 9169665 : generic_simplify_441 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2319 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2320 : const enum tree_code ARG_UNUSED (op))
2321 : {
2322 9169665 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2323 9169665 : if (INTEGRAL_TYPE_P (type)
2324 8308311 : && op != MULT_EXPR
2325 8308311 : && op != RDIV_EXPR
2326 4192344 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2327 3777778 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2328 3777778 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2329 3724483 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2330 3724475 : && type_has_mode_precision_p (type)
2331 3715891 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2332 1249959 : && types_match (captures[2], type)
2333 9182899 : && (types_match (captures[2], captures[4])
2334 13234 : || poly_int_tree_p (captures[3]))
2335 : )
2336 : {
2337 10478 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2338 : )
2339 : {
2340 6004 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2341 6004 : {
2342 6004 : tree res_op0;
2343 6004 : res_op0 = captures[2];
2344 6004 : tree res_op1;
2345 6004 : {
2346 6004 : tree _o1[1], _r1;
2347 6004 : _o1[0] = captures[4];
2348 6004 : if (TREE_TYPE (_o1[0]) != type)
2349 : {
2350 6004 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2351 : }
2352 : else
2353 : _r1 = _o1[0];
2354 6004 : res_op1 = _r1;
2355 : }
2356 6004 : tree _r;
2357 6004 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2358 6004 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 642, __FILE__, __LINE__, true);
2359 6004 : return _r;
2360 : }
2361 0 : next_after_fail782:;
2362 : }
2363 : else
2364 : {
2365 4474 : {
2366 4474 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2367 4474 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail783;
2368 4474 : {
2369 4474 : tree res_op0;
2370 4474 : {
2371 4474 : tree _o1[2], _r1;
2372 4474 : {
2373 4474 : tree _o2[1], _r2;
2374 4474 : _o2[0] = captures[2];
2375 4474 : if (TREE_TYPE (_o2[0]) != utype)
2376 : {
2377 4474 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2378 : }
2379 : else
2380 : _r2 = _o2[0];
2381 4474 : _o1[0] = _r2;
2382 : }
2383 4474 : {
2384 4474 : tree _o2[1], _r2;
2385 4474 : _o2[0] = captures[4];
2386 4474 : if (TREE_TYPE (_o2[0]) != utype)
2387 : {
2388 4474 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2389 : }
2390 : else
2391 : _r2 = _o2[0];
2392 4474 : _o1[1] = _r2;
2393 : }
2394 4474 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2395 4474 : res_op0 = _r1;
2396 : }
2397 4474 : tree _r;
2398 4474 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2399 4474 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
2400 4474 : return _r;
2401 : }
2402 0 : next_after_fail783:;
2403 : }
2404 : }
2405 : }
2406 : else
2407 : {
2408 9124310 : if (FLOAT_TYPE_P (type)
2409 9194064 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2410 34877 : == DECIMAL_FLOAT_TYPE_P (type)
2411 : )
2412 : {
2413 34851 : {
2414 34851 : tree arg0 = strip_float_extensions (captures[2]);
2415 34851 : tree arg1 = strip_float_extensions (captures[4]);
2416 34851 : tree itype = TREE_TYPE (captures[0]);
2417 34851 : tree ty1 = TREE_TYPE (arg0);
2418 34851 : tree ty2 = TREE_TYPE (arg1);
2419 34851 : enum tree_code code = TREE_CODE (itype);
2420 0 : if (FLOAT_TYPE_P (ty1)
2421 34851 : && FLOAT_TYPE_P (ty2)
2422 : )
2423 : {
2424 34851 : {
2425 34851 : tree newtype = type;
2426 34851 : if (TYPE_MODE (ty1) == SDmode
2427 34589 : || TYPE_MODE (ty2) == SDmode
2428 69440 : || TYPE_MODE (type) == SDmode)
2429 262 : newtype = dfloat32_type_node;
2430 34851 : if (TYPE_MODE (ty1) == DDmode
2431 34719 : || TYPE_MODE (ty2) == DDmode
2432 69443 : || TYPE_MODE (type) == DDmode)
2433 259 : newtype = dfloat64_type_node;
2434 34851 : if (TYPE_MODE (ty1) == TDmode
2435 34851 : || TYPE_MODE (ty2) == TDmode
2436 69450 : || TYPE_MODE (type) == TDmode)
2437 267 : newtype = dfloat128_type_node;
2438 34851 : if ((newtype == dfloat32_type_node
2439 34851 : || newtype == dfloat64_type_node
2440 34724 : || newtype == dfloat128_type_node)
2441 394 : && newtype == type
2442 34857 : && types_match (newtype, type)
2443 : )
2444 : {
2445 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail784;
2446 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail784;
2447 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail784;
2448 0 : {
2449 0 : tree res_op0;
2450 0 : {
2451 0 : tree _o1[1], _r1;
2452 0 : _o1[0] = captures[2];
2453 0 : if (TREE_TYPE (_o1[0]) != newtype)
2454 : {
2455 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2456 : }
2457 : else
2458 : _r1 = _o1[0];
2459 0 : res_op0 = _r1;
2460 : }
2461 0 : tree res_op1;
2462 0 : {
2463 0 : tree _o1[1], _r1;
2464 0 : _o1[0] = captures[4];
2465 0 : if (TREE_TYPE (_o1[0]) != newtype)
2466 : {
2467 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2468 : }
2469 : else
2470 : _r1 = _o1[0];
2471 0 : res_op1 = _r1;
2472 : }
2473 0 : tree _r;
2474 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2475 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 644, __FILE__, __LINE__, true);
2476 0 : return _r;
2477 : }
2478 : next_after_fail784:;
2479 : }
2480 : else
2481 : {
2482 34845 : {
2483 34845 : if (element_precision (ty1) > element_precision (newtype))
2484 15 : newtype = ty1;
2485 34845 : if (element_precision (ty2) > element_precision (newtype))
2486 4648 : newtype = ty2;
2487 34845 : if (element_precision (newtype) < element_precision (itype)
2488 17407 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2489 0 : || target_supports_op_p (newtype, op, optab_default))
2490 17407 : && (flag_unsafe_math_optimizations
2491 17382 : || (element_precision (newtype) == element_precision (type)
2492 17358 : && real_can_shorten_arithmetic (element_mode (itype),
2493 : element_mode (type))
2494 7695 : && !excess_precision_type (newtype)))
2495 38122 : && !types_match (itype, newtype)
2496 : )
2497 : {
2498 3277 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail785;
2499 3276 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail785;
2500 3268 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail785;
2501 3268 : {
2502 3268 : tree res_op0;
2503 3268 : {
2504 3268 : tree _o1[2], _r1;
2505 3268 : {
2506 3268 : tree _o2[1], _r2;
2507 3268 : _o2[0] = captures[2];
2508 3268 : if (TREE_TYPE (_o2[0]) != newtype)
2509 : {
2510 3 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2511 : }
2512 : else
2513 : _r2 = _o2[0];
2514 3268 : _o1[0] = _r2;
2515 : }
2516 3268 : {
2517 3268 : tree _o2[1], _r2;
2518 3268 : _o2[0] = captures[4];
2519 3268 : if (TREE_TYPE (_o2[0]) != newtype)
2520 : {
2521 3268 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2522 : }
2523 : else
2524 : _r2 = _o2[0];
2525 3268 : _o1[1] = _r2;
2526 : }
2527 3268 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2528 3268 : res_op0 = _r1;
2529 : }
2530 3268 : tree _r;
2531 3268 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2532 3268 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 645, __FILE__, __LINE__, true);
2533 3268 : return _r;
2534 : }
2535 : next_after_fail785:;
2536 : }
2537 : }
2538 : }
2539 : }
2540 : }
2541 : }
2542 : }
2543 : }
2544 : return NULL_TREE;
2545 : }
2546 :
2547 : tree
2548 2 : generic_simplify_472 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2549 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2550 : {
2551 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2552 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail822;
2553 2 : {
2554 2 : tree res_op0;
2555 2 : {
2556 2 : tree _o1[2], _r1;
2557 2 : _o1[0] = captures[1];
2558 2 : _o1[1] = captures[2];
2559 2 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2560 2 : res_op0 = _r1;
2561 : }
2562 2 : tree _r;
2563 2 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2564 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
2565 : return _r;
2566 : }
2567 0 : next_after_fail822:;
2568 0 : return NULL_TREE;
2569 : }
2570 :
2571 : tree
2572 8 : generic_simplify_478 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2573 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2574 : const enum tree_code ARG_UNUSED (eqne))
2575 : {
2576 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2577 8 : if (eqne == EQ_EXPR
2578 : )
2579 : {
2580 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail828;
2581 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail828;
2582 4 : {
2583 4 : tree _r;
2584 4 : _r = constant_boolean_node (false, type);
2585 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2586 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2587 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2588 4 : return _r;
2589 : }
2590 : next_after_fail828:;
2591 : }
2592 : else
2593 : {
2594 4 : if (eqne == NE_EXPR
2595 : )
2596 : {
2597 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail829;
2598 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail829;
2599 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail829;
2600 4 : {
2601 4 : tree _r;
2602 4 : _r = captures[0];
2603 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2604 4 : return _r;
2605 : }
2606 : next_after_fail829:;
2607 : }
2608 : }
2609 : return NULL_TREE;
2610 : }
2611 :
2612 : tree
2613 3 : generic_simplify_489 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2614 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2615 : {
2616 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2617 6 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2618 6 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2619 : )
2620 : {
2621 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail873;
2622 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail873;
2623 3 : {
2624 3 : tree res_op0;
2625 3 : res_op0 = captures[3];
2626 3 : tree res_op1;
2627 3 : {
2628 3 : tree _o1[2], _r1;
2629 3 : _o1[0] = captures[1];
2630 3 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
2631 3 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2632 3 : res_op1 = _r1;
2633 : }
2634 3 : tree _r;
2635 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2636 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 698, __FILE__, __LINE__, true);
2637 3 : return _r;
2638 : }
2639 : next_after_fail873:;
2640 : }
2641 : return NULL_TREE;
2642 : }
2643 :
2644 : tree
2645 34730 : generic_simplify_496 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2646 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2647 : const enum tree_code ARG_UNUSED (shift))
2648 : {
2649 34730 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2650 34730 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2651 22412 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2652 22412 : && tree_fits_uhwi_p (captures[4])
2653 22412 : && tree_to_uhwi (captures[4]) > 0
2654 57142 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2655 : )
2656 : {
2657 22412 : {
2658 22412 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2659 22412 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2660 22412 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2661 22412 : tree shift_type = TREE_TYPE (captures[2]);
2662 22412 : unsigned int prec;
2663 22412 : if (shift == LSHIFT_EXPR)
2664 0 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2665 22412 : else if (shift == RSHIFT_EXPR
2666 22412 : && type_has_mode_precision_p (shift_type))
2667 : {
2668 22412 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2669 22412 : tree arg00 = captures[3];
2670 22412 : if (captures[2] != captures[3]
2671 22412 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2672 : {
2673 22005 : tree inner_type = TREE_TYPE (captures[3]);
2674 22005 : if (type_has_mode_precision_p (inner_type)
2675 22005 : && TYPE_PRECISION (inner_type) < prec)
2676 : {
2677 34 : prec = TYPE_PRECISION (inner_type);
2678 34 : if (shiftc < prec)
2679 34 : shift_type = inner_type;
2680 : }
2681 : }
2682 22412 : zerobits = HOST_WIDE_INT_M1U;
2683 22412 : if (shiftc < prec)
2684 : {
2685 22412 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2686 22412 : zerobits <<= prec - shiftc;
2687 : }
2688 22412 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2689 22412 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2690 : {
2691 73 : if ((mask & zerobits) == 0)
2692 59 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2693 : else
2694 : zerobits = 0;
2695 : }
2696 : }
2697 22398 : if ((mask & zerobits) == mask
2698 : )
2699 : {
2700 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail884;
2701 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail884;
2702 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail884;
2703 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail884;
2704 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail884;
2705 0 : {
2706 0 : tree _r;
2707 0 : _r = build_int_cst (type, 0);
2708 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 700, __FILE__, __LINE__, true);
2709 0 : return _r;
2710 : }
2711 : next_after_fail884:;
2712 : }
2713 : else
2714 : {
2715 22412 : {
2716 22412 : newmask = mask | zerobits;
2717 22412 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2718 : )
2719 : {
2720 : {
2721 65 : for (prec = BITS_PER_UNIT;
2722 122 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2723 118 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2724 : break;
2725 57 : if (prec < HOST_BITS_PER_WIDE_INT
2726 4 : || newmask == HOST_WIDE_INT_M1U
2727 : )
2728 : {
2729 57 : {
2730 57 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2731 57 : if (!tree_int_cst_equal (newmaskt, captures[5])
2732 : )
2733 : {
2734 57 : if (shift_type != TREE_TYPE (captures[2])
2735 : )
2736 : {
2737 47 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail885;
2738 47 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail885;
2739 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail885;
2740 47 : {
2741 47 : tree res_op0;
2742 47 : {
2743 47 : tree _o1[1], _r1;
2744 47 : {
2745 47 : tree _o2[2], _r2;
2746 47 : {
2747 47 : tree _o3[1], _r3;
2748 47 : _o3[0] = captures[2];
2749 47 : if (TREE_TYPE (_o3[0]) != shift_type)
2750 : {
2751 47 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2752 : }
2753 : else
2754 : _r3 = _o3[0];
2755 47 : _o2[0] = _r3;
2756 : }
2757 47 : _o2[1] = captures[4];
2758 47 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2759 47 : _o1[0] = _r2;
2760 : }
2761 47 : if (TREE_TYPE (_o1[0]) != type)
2762 : {
2763 47 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2764 : }
2765 : else
2766 : _r1 = _o1[0];
2767 47 : res_op0 = _r1;
2768 : }
2769 47 : tree res_op1;
2770 47 : res_op1 = newmaskt;
2771 47 : tree _r;
2772 47 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2773 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 701, __FILE__, __LINE__, true);
2774 47 : return _r;
2775 : }
2776 : next_after_fail885:;
2777 : }
2778 : else
2779 : {
2780 10 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail886;
2781 10 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail886;
2782 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail886;
2783 10 : {
2784 10 : tree res_op0;
2785 10 : res_op0 = captures[0];
2786 10 : tree res_op1;
2787 10 : res_op1 = newmaskt;
2788 10 : tree _r;
2789 10 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2790 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 702, __FILE__, __LINE__, true);
2791 10 : return _r;
2792 : }
2793 : next_after_fail886:;
2794 : }
2795 : }
2796 : }
2797 : }
2798 : }
2799 : }
2800 : }
2801 : }
2802 : }
2803 : }
2804 : return NULL_TREE;
2805 : }
2806 :
2807 : tree
2808 150 : generic_simplify_506 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2809 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2810 : const enum tree_code ARG_UNUSED (iop),
2811 : const enum tree_code ARG_UNUSED (res))
2812 : {
2813 150 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2814 150 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail900;
2815 150 : {
2816 150 : tree res_op0;
2817 150 : res_op0 = captures[1];
2818 150 : tree res_op1;
2819 150 : {
2820 150 : tree _o1[1], _r1;
2821 150 : _o1[0] = captures[2];
2822 150 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2823 150 : res_op1 = _r1;
2824 : }
2825 150 : tree _r;
2826 150 : _r = fold_build2_loc (loc, res, type, res_op0, res_op1);
2827 150 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 712, __FILE__, __LINE__, true);
2828 : return _r;
2829 : }
2830 0 : next_after_fail900:;
2831 0 : return NULL_TREE;
2832 : }
2833 :
2834 : tree
2835 29 : generic_simplify_512 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2836 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2837 : {
2838 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2839 29 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2840 : )
2841 : {
2842 29 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail906;
2843 29 : {
2844 29 : tree res_op0;
2845 29 : {
2846 29 : tree _o1[2], _r1;
2847 29 : _o1[0] = captures[0];
2848 29 : {
2849 29 : tree _o2[1], _r2;
2850 29 : _o2[0] = captures[1];
2851 29 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2852 29 : _o1[1] = _r2;
2853 : }
2854 29 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2855 29 : res_op0 = _r1;
2856 : }
2857 29 : tree _r;
2858 29 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2859 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 718, __FILE__, __LINE__, true);
2860 29 : return _r;
2861 : }
2862 0 : next_after_fail906:;
2863 : }
2864 : return NULL_TREE;
2865 : }
2866 :
2867 : tree
2868 16 : generic_simplify_520 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2869 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2870 : {
2871 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2872 16 : if (ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type)
2873 : )
2874 : {
2875 16 : {
2876 16 : tree ptrdifftype = TREE_TYPE (captures[0]);
2877 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail915;
2878 16 : {
2879 16 : tree res_op0;
2880 16 : {
2881 16 : tree _o1[2], _r1;
2882 16 : _o1[0] = captures[2];
2883 16 : _o1[1] = captures[1];
2884 16 : _r1 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ptrdifftype, _o1[0], _o1[1]);
2885 16 : res_op0 = _r1;
2886 : }
2887 16 : tree _r;
2888 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2889 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 725, __FILE__, __LINE__, true);
2890 16 : return _r;
2891 : }
2892 0 : next_after_fail915:;
2893 : }
2894 : }
2895 : return NULL_TREE;
2896 : }
2897 :
2898 : tree
2899 0 : generic_simplify_528 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2900 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2901 : const enum tree_code ARG_UNUSED (minmax))
2902 : {
2903 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2904 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail924;
2905 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail924;
2906 0 : {
2907 0 : tree _r;
2908 0 : _r = captures[0];
2909 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2910 : return _r;
2911 : }
2912 : next_after_fail924:;
2913 : return NULL_TREE;
2914 : }
2915 :
2916 : tree
2917 0 : generic_simplify_535 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2918 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2919 : const enum tree_code ARG_UNUSED (minmax))
2920 : {
2921 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2922 0 : if (TYPE_UNSIGNED(type)
2923 : )
2924 : {
2925 0 : if (minmax == MIN_EXPR
2926 : )
2927 : {
2928 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail932;
2929 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail932;
2930 0 : {
2931 0 : tree _r;
2932 0 : _r = captures[1];
2933 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
2934 0 : return _r;
2935 : }
2936 : next_after_fail932:;
2937 : }
2938 : else
2939 : {
2940 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail933;
2941 0 : {
2942 0 : tree _r;
2943 0 : _r = captures[0];
2944 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2945 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2946 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 742, __FILE__, __LINE__, true);
2947 0 : return _r;
2948 : }
2949 0 : next_after_fail933:;
2950 : }
2951 : }
2952 : return NULL_TREE;
2953 : }
2954 :
2955 : tree
2956 2 : generic_simplify_543 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2957 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2958 : const combined_fn ARG_UNUSED (func))
2959 : {
2960 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2961 2 : if (types_match (captures[1], captures[4])
2962 4 : && wi::geu_p (wi::to_wide (captures[2]),
2963 2 : TYPE_PRECISION (TREE_TYPE (captures[1])))
2964 : )
2965 : {
2966 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail953;
2967 2 : {
2968 2 : tree res_op0;
2969 2 : {
2970 2 : tree _o1[2], _r1;
2971 2 : _o1[0] = captures[1];
2972 2 : _o1[1] = captures[4];
2973 2 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2974 2 : res_op0 = _r1;
2975 : }
2976 2 : tree res_op1;
2977 2 : res_op1 = captures[2];
2978 2 : tree _r;
2979 2 : _r = maybe_build_call_expr_loc (loc, func, type, 2, res_op0, res_op1);
2980 2 : if (!_r)
2981 0 : goto next_after_fail953;
2982 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 750, __FILE__, __LINE__, true);
2983 2 : return _r;
2984 : }
2985 : next_after_fail953:;
2986 : }
2987 : return NULL_TREE;
2988 : }
2989 :
2990 : tree
2991 6 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2992 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
2993 : {
2994 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2995 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail960;
2996 6 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail960;
2997 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail960;
2998 6 : {
2999 6 : tree _r;
3000 6 : _r = captures[2];
3001 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
3002 : return _r;
3003 : }
3004 : next_after_fail960:;
3005 : return NULL_TREE;
3006 : }
3007 :
3008 : tree
3009 0 : generic_simplify_560 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3010 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3011 : const combined_fn ARG_UNUSED (cond_len_op))
3012 : {
3013 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3014 0 : {
3015 0 : tree op_type = TREE_TYPE (captures[5]);
3016 0 : if (inverse_conditions_p (captures[0], captures[2])
3017 0 : && element_precision (type) == element_precision (op_type)
3018 : )
3019 : {
3020 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail970;
3021 0 : {
3022 0 : tree res_op0;
3023 0 : {
3024 0 : tree _o1[6], _r1;
3025 0 : _o1[0] = captures[2];
3026 0 : _o1[1] = captures[3];
3027 0 : _o1[2] = captures[4];
3028 0 : {
3029 0 : tree _o2[1], _r2;
3030 0 : _o2[0] = captures[1];
3031 0 : if (TREE_TYPE (_o2[0]) != op_type)
3032 : {
3033 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3034 : }
3035 : else
3036 : _r2 = _o2[0];
3037 0 : _o1[3] = _r2;
3038 : }
3039 0 : _o1[4] = captures[6];
3040 0 : _o1[5] = captures[7];
3041 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 6, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5]);
3042 0 : if (!_r1)
3043 0 : goto next_after_fail970;
3044 0 : res_op0 = _r1;
3045 : }
3046 0 : tree _r;
3047 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3048 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3049 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3050 0 : if (TREE_SIDE_EFFECTS (captures[5]))
3051 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
3052 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 762, __FILE__, __LINE__, true);
3053 0 : return _r;
3054 : }
3055 : next_after_fail970:;
3056 : }
3057 : }
3058 : return NULL_TREE;
3059 : }
3060 :
3061 : tree
3062 0 : generic_simplify_573 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3063 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3064 : const enum tree_code ARG_UNUSED (cmp))
3065 : {
3066 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3067 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail986;
3068 0 : {
3069 0 : tree res_op0;
3070 0 : res_op0 = unshare_expr (captures[0]);
3071 0 : tree res_op1;
3072 0 : res_op1 = captures[0];
3073 0 : tree _r;
3074 0 : _r = fold_build2_loc (loc, UNORDERED_EXPR, type, res_op0, res_op1);
3075 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
3076 : return _r;
3077 : }
3078 0 : next_after_fail986:;
3079 0 : return NULL_TREE;
3080 : }
3081 :
3082 : tree
3083 0 : generic_simplify_579 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3084 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3085 : const combined_fn ARG_UNUSED (logs),
3086 : const combined_fn ARG_UNUSED (pows))
3087 : {
3088 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3089 0 : if (flag_unsafe_math_optimizations
3090 : )
3091 : {
3092 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail992;
3093 0 : {
3094 0 : tree res_op0;
3095 0 : res_op0 = captures[1];
3096 0 : tree res_op1;
3097 0 : {
3098 0 : tree _o1[1], _r1;
3099 0 : _o1[0] = captures[0];
3100 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3101 0 : if (!_r1)
3102 0 : goto next_after_fail992;
3103 0 : res_op1 = _r1;
3104 : }
3105 0 : tree _r;
3106 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3107 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 784, __FILE__, __LINE__, true);
3108 0 : return _r;
3109 : }
3110 : next_after_fail992:;
3111 : }
3112 : return NULL_TREE;
3113 : }
3114 :
3115 : tree
3116 0 : generic_simplify_588 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3117 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3118 : {
3119 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3120 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1001;
3121 0 : {
3122 0 : tree _r;
3123 0 : _r = captures[0];
3124 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3125 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3126 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 793, __FILE__, __LINE__, true);
3127 : return _r;
3128 : }
3129 0 : next_after_fail1001:;
3130 0 : return NULL_TREE;
3131 : }
3132 :
3133 : tree
3134 0 : generic_simplify_592 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3135 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3136 : const combined_fn ARG_UNUSED (floors))
3137 : {
3138 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3139 0 : if (canonicalize_math_p ()
3140 : )
3141 : {
3142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1005;
3143 0 : {
3144 0 : tree res_op0;
3145 0 : res_op0 = captures[0];
3146 0 : tree _r;
3147 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 797, __FILE__, __LINE__, true);
3149 0 : return _r;
3150 : }
3151 0 : next_after_fail1005:;
3152 : }
3153 : return NULL_TREE;
3154 : }
3155 :
3156 : tree
3157 0 : generic_simplify_601 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3159 : const combined_fn ARG_UNUSED (fmas))
3160 : {
3161 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3162 0 : if (canonicalize_math_after_vectorization_p ()
3163 : )
3164 : {
3165 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1014;
3166 : {
3167 : tree res_op0;
3168 : res_op0 = captures[0];
3169 : tree res_op1;
3170 : res_op1 = captures[1];
3171 : tree res_op2;
3172 : res_op2 = captures[2];
3173 : tree _r;
3174 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3175 : if (!_r)
3176 : goto next_after_fail1014;
3177 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 806, __FILE__, __LINE__, true);
3178 : return _r;
3179 : }
3180 0 : next_after_fail1014:;
3181 : }
3182 0 : return NULL_TREE;
3183 : }
3184 :
3185 : tree
3186 0 : generic_simplify_610 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3187 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3188 : const combined_fn ARG_UNUSED (fmas))
3189 : {
3190 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3191 0 : if (canonicalize_math_after_vectorization_p ()
3192 : )
3193 : {
3194 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1023;
3195 : {
3196 : tree res_op0;
3197 : res_op0 = captures[0];
3198 : tree res_op1;
3199 : res_op1 = captures[1];
3200 : tree res_op2;
3201 : res_op2 = captures[2];
3202 : tree res_op3;
3203 : res_op3 = captures[3];
3204 : tree res_op4;
3205 : res_op4 = captures[4];
3206 : tree _r;
3207 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3208 : if (!_r)
3209 : goto next_after_fail1023;
3210 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3211 : return _r;
3212 : }
3213 0 : next_after_fail1023:;
3214 : }
3215 0 : return NULL_TREE;
3216 : }
3217 :
3218 : tree
3219 0 : generic_simplify_620 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3220 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3221 : const combined_fn ARG_UNUSED (ctz))
3222 : {
3223 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3224 0 : {
3225 0 : tree t = TREE_TYPE (captures[0]);
3226 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1033;
3227 0 : {
3228 0 : tree res_op0;
3229 0 : {
3230 0 : tree _o1[1], _r1;
3231 0 : _o1[0] = captures[1];
3232 0 : if (TREE_TYPE (_o1[0]) != t)
3233 : {
3234 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3235 : }
3236 : else
3237 : _r1 = _o1[0];
3238 0 : res_op0 = _r1;
3239 : }
3240 0 : tree _r;
3241 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3242 0 : if (!_r)
3243 0 : goto next_after_fail1033;
3244 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3245 : return _r;
3246 : }
3247 : next_after_fail1033:;
3248 : }
3249 : return NULL_TREE;
3250 : }
3251 :
3252 : tree
3253 0 : generic_simplify_630 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3254 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3255 : const combined_fn ARG_UNUSED (bswap),
3256 : const combined_fn ARG_UNUSED (parity))
3257 : {
3258 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3259 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3260 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3261 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3262 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3263 : )
3264 : {
3265 0 : {
3266 0 : tree type0 = TREE_TYPE (captures[0]);
3267 0 : tree type1 = TREE_TYPE (captures[1]);
3268 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
3269 0 : {
3270 0 : tree res_op0;
3271 0 : {
3272 0 : tree _o1[1], _r1;
3273 0 : {
3274 0 : tree _o2[1], _r2;
3275 0 : _o2[0] = captures[2];
3276 0 : if (TREE_TYPE (_o2[0]) != type1)
3277 : {
3278 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3279 : }
3280 : else
3281 : _r2 = _o2[0];
3282 0 : _o1[0] = _r2;
3283 : }
3284 0 : if (TREE_TYPE (_o1[0]) != type0)
3285 : {
3286 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3287 : }
3288 : else
3289 : _r1 = _o1[0];
3290 0 : res_op0 = _r1;
3291 : }
3292 0 : tree _r;
3293 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3294 0 : if (!_r)
3295 0 : goto next_after_fail1045;
3296 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
3297 0 : return _r;
3298 : }
3299 : next_after_fail1045:;
3300 : }
3301 : }
3302 : return NULL_TREE;
3303 : }
3304 :
3305 : tree
3306 4300656 : generic_simplify_NEGATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3307 : {
3308 4300656 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3309 4300656 : switch (TREE_CODE (_p0))
3310 : {
3311 41392 : case PLUS_EXPR:
3312 41392 : {
3313 41392 : tree _q20 = TREE_OPERAND (_p0, 0);
3314 41392 : tree _q21 = TREE_OPERAND (_p0, 1);
3315 41392 : if (tree_negate_expr_p (_q21))
3316 : {
3317 39292 : {
3318 39292 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3319 39292 : tree res = generic_simplify_519 (loc, type, _p0, captures);
3320 39292 : if (res) return res;
3321 : }
3322 : }
3323 2100 : if (tree_negate_expr_p (_q20))
3324 : {
3325 17 : {
3326 17 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
3327 17 : tree res = generic_simplify_519 (loc, type, _p0, captures);
3328 17 : if (res) return res;
3329 : }
3330 : }
3331 : break;
3332 : }
3333 116447 : case MINUS_EXPR:
3334 116447 : {
3335 116447 : tree _q20 = TREE_OPERAND (_p0, 0);
3336 116447 : tree _q21 = TREE_OPERAND (_p0, 1);
3337 116447 : {
3338 116447 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3339 116447 : if ((ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type))
3340 193638 : || (FLOAT_TYPE_P (type)
3341 77191 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
3342 77191 : && !HONOR_SIGNED_ZEROS (type))
3343 : )
3344 : {
3345 39313 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1092;
3346 39313 : {
3347 39313 : tree res_op0;
3348 39313 : res_op0 = captures[1];
3349 39313 : tree res_op1;
3350 39313 : res_op1 = captures[0];
3351 39313 : tree _r;
3352 39313 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3353 39313 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 868, __FILE__, __LINE__, true);
3354 39313 : return _r;
3355 : }
3356 0 : next_after_fail1092:;
3357 : }
3358 : }
3359 77134 : break;
3360 : }
3361 16 : case POINTER_DIFF_EXPR:
3362 16 : {
3363 16 : tree _q20 = TREE_OPERAND (_p0, 0);
3364 16 : tree _q21 = TREE_OPERAND (_p0, 1);
3365 16 : {
3366 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3367 16 : tree res = generic_simplify_520 (loc, type, _p0, captures);
3368 16 : if (res) return res;
3369 : }
3370 0 : break;
3371 : }
3372 5760 : case MULT_EXPR:
3373 5760 : {
3374 5760 : tree _q20 = TREE_OPERAND (_p0, 0);
3375 5760 : tree _q21 = TREE_OPERAND (_p0, 1);
3376 5760 : if (tree_negate_expr_p (_q21))
3377 : {
3378 1802 : {
3379 1802 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3380 1802 : tree res = generic_simplify_523 (loc, type, _p0, captures);
3381 1802 : if (res) return res;
3382 : }
3383 : }
3384 4353 : if (tree_negate_expr_p (_q20))
3385 : {
3386 35 : {
3387 35 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
3388 35 : tree res = generic_simplify_523 (loc, type, _p0, captures);
3389 35 : if (res) return res;
3390 : }
3391 : }
3392 : break;
3393 : }
3394 188 : case RDIV_EXPR:
3395 188 : {
3396 188 : tree _q20 = TREE_OPERAND (_p0, 0);
3397 188 : tree _q21 = TREE_OPERAND (_p0, 1);
3398 188 : if (tree_negate_expr_p (_q21))
3399 : {
3400 60 : {
3401 60 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3402 60 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3403 60 : && single_use (captures[0])
3404 : )
3405 : {
3406 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1093;
3407 60 : {
3408 60 : tree res_op0;
3409 60 : res_op0 = captures[1];
3410 60 : tree res_op1;
3411 60 : {
3412 60 : tree _o1[1], _r1;
3413 60 : _o1[0] = captures[2];
3414 60 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3415 60 : res_op1 = _r1;
3416 : }
3417 60 : tree _r;
3418 60 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3419 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 869, __FILE__, __LINE__, true);
3420 60 : return _r;
3421 : }
3422 0 : next_after_fail1093:;
3423 : }
3424 : }
3425 : }
3426 128 : if (tree_negate_expr_p (_q20))
3427 : {
3428 0 : {
3429 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3430 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3431 0 : && single_use (captures[0])
3432 : )
3433 : {
3434 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1094;
3435 0 : {
3436 0 : tree res_op0;
3437 0 : {
3438 0 : tree _o1[1], _r1;
3439 0 : _o1[0] = captures[1];
3440 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3441 0 : res_op0 = _r1;
3442 : }
3443 0 : tree res_op1;
3444 0 : res_op1 = captures[2];
3445 0 : tree _r;
3446 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3447 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 870, __FILE__, __LINE__, true);
3448 0 : return _r;
3449 : }
3450 0 : next_after_fail1094:;
3451 : }
3452 : }
3453 : }
3454 : break;
3455 : }
3456 1362137 : CASE_CONVERT:
3457 1362137 : {
3458 1362137 : tree _q20 = TREE_OPERAND (_p0, 0);
3459 1362137 : switch (TREE_CODE (_q20))
3460 : {
3461 58 : case RSHIFT_EXPR:
3462 58 : {
3463 58 : tree _q30 = TREE_OPERAND (_q20, 0);
3464 58 : tree _q31 = TREE_OPERAND (_q20, 1);
3465 58 : switch (TREE_CODE (_q31))
3466 : {
3467 43 : case INTEGER_CST:
3468 43 : {
3469 43 : {
3470 43 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
3471 43 : tree res = generic_simplify_524 (loc, type, _p0, captures);
3472 43 : if (res) return res;
3473 : }
3474 36 : break;
3475 : }
3476 : default:;
3477 : }
3478 : break;
3479 : }
3480 213 : case NEGATE_EXPR:
3481 213 : {
3482 213 : tree _q30 = TREE_OPERAND (_q20, 0);
3483 213 : {
3484 213 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3485 213 : if (!TYPE_SATURATING (type)
3486 : )
3487 : {
3488 213 : if (INTEGRAL_TYPE_P (type)
3489 213 : && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3490 23 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3491 44 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
3492 212 : && !TYPE_OVERFLOW_SANITIZED (type)
3493 447 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
3494 : )
3495 : {
3496 212 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1095;
3497 212 : {
3498 212 : tree res_op0;
3499 212 : res_op0 = captures[0];
3500 212 : tree _r;
3501 212 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3502 212 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
3503 212 : return _r;
3504 : }
3505 0 : next_after_fail1095:;
3506 : }
3507 : }
3508 : }
3509 : break;
3510 : }
3511 1361918 : default:;
3512 : }
3513 1361918 : {
3514 1361918 : tree _q20_pops[1];
3515 1361918 : if (tree_logical_inverted_value (_q20, _q20_pops))
3516 : {
3517 1 : tree _q30 = _q20_pops[0];
3518 1 : {
3519 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3520 1 : if (INTEGRAL_TYPE_P (type)
3521 1 : && TREE_CODE (type) != BOOLEAN_TYPE
3522 1 : && TYPE_PRECISION (type) > 1
3523 1 : && TREE_CODE (captures[2]) == SSA_NAME
3524 1 : && ssa_name_has_boolean_range (captures[2])
3525 : )
3526 : {
3527 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
3528 0 : {
3529 0 : tree res_op0;
3530 0 : {
3531 0 : tree _o1[1], _r1;
3532 0 : _o1[0] = captures[2];
3533 0 : if (TREE_TYPE (_o1[0]) != type)
3534 : {
3535 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3536 : }
3537 : else
3538 : _r1 = _o1[0];
3539 0 : res_op0 = _r1;
3540 : }
3541 0 : tree res_op1;
3542 0 : res_op1 = build_all_ones_cst (type);
3543 0 : tree _r;
3544 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3545 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
3546 0 : return _r;
3547 : }
3548 0 : next_after_fail1096:;
3549 : }
3550 : }
3551 : }
3552 : }
3553 1361918 : if (tree_negate_expr_p (_q20))
3554 : {
3555 2573 : {
3556 2573 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3557 2573 : if (!TYPE_SATURATING (type)
3558 : )
3559 : {
3560 2573 : if (SCALAR_FLOAT_TYPE_P (type)
3561 2573 : && ((DECIMAL_FLOAT_TYPE_P (type)
3562 0 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
3563 0 : && TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (captures[0])))
3564 0 : || !HONOR_SIGN_DEPENDENT_ROUNDING (type))
3565 : )
3566 : {
3567 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
3568 0 : {
3569 0 : tree res_op0;
3570 0 : {
3571 0 : tree _o1[1], _r1;
3572 0 : _o1[0] = captures[0];
3573 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3574 0 : res_op0 = _r1;
3575 : }
3576 0 : tree _r;
3577 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3578 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 873, __FILE__, __LINE__, true);
3579 0 : return _r;
3580 : }
3581 0 : next_after_fail1097:;
3582 : }
3583 : }
3584 : }
3585 : }
3586 : break;
3587 : }
3588 385 : case RSHIFT_EXPR:
3589 385 : {
3590 385 : tree _q20 = TREE_OPERAND (_p0, 0);
3591 385 : tree _q21 = TREE_OPERAND (_p0, 1);
3592 385 : switch (TREE_CODE (_q21))
3593 : {
3594 367 : case INTEGER_CST:
3595 367 : {
3596 367 : {
3597 367 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3598 367 : tree res = generic_simplify_524 (loc, type, _p0, captures);
3599 367 : if (res) return res;
3600 : }
3601 330 : break;
3602 : }
3603 : default:;
3604 : }
3605 : break;
3606 : }
3607 147 : case BIT_NOT_EXPR:
3608 147 : {
3609 147 : tree _q20 = TREE_OPERAND (_p0, 0);
3610 147 : {
3611 147 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3612 147 : tree res = generic_simplify_521 (loc, type, _p0, captures);
3613 147 : if (res) return res;
3614 : }
3615 0 : break;
3616 : }
3617 3814 : case NEGATE_EXPR:
3618 3814 : {
3619 3814 : tree _q20 = TREE_OPERAND (_p0, 0);
3620 3814 : {
3621 3814 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3622 3814 : tree res = generic_simplify_522 (loc, type, _p0, captures);
3623 3814 : if (res) return res;
3624 : }
3625 13 : break;
3626 : }
3627 72 : case VEC_COND_EXPR:
3628 72 : {
3629 72 : tree _q20 = TREE_OPERAND (_p0, 0);
3630 72 : tree _q21 = TREE_OPERAND (_p0, 1);
3631 72 : tree _q22 = TREE_OPERAND (_p0, 2);
3632 72 : {
3633 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3634 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
3635 72 : {
3636 72 : tree res_op0;
3637 72 : res_op0 = captures[1];
3638 72 : tree res_op1;
3639 72 : {
3640 72 : tree _o1[1], _r1;
3641 72 : _o1[0] = captures[2];
3642 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, type, _o1[0]);
3643 72 : if (EXPR_P (_r1))
3644 0 : goto next_after_fail1098;
3645 72 : res_op1 = _r1;
3646 : }
3647 72 : tree res_op2;
3648 72 : {
3649 72 : tree _o1[1], _r1;
3650 72 : _o1[0] = captures[3];
3651 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, type, _o1[0]);
3652 72 : if (EXPR_P (_r1))
3653 0 : goto next_after_fail1098;
3654 72 : res_op2 = _r1;
3655 : }
3656 72 : tree _r;
3657 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3658 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
3659 72 : return _r;
3660 : }
3661 0 : next_after_fail1098:;
3662 : }
3663 0 : break;
3664 : }
3665 275270 : case CALL_EXPR:
3666 275270 : switch (get_call_combined_fn (_p0))
3667 : {
3668 12 : case CFN_BUILT_IN_FMA:
3669 12 : if (call_expr_nargs (_p0) == 3)
3670 : {
3671 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3672 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3673 12 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3674 12 : {
3675 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3676 12 : tree res = generic_simplify_525 (loc, type, _p0, captures, CFN_BUILT_IN_FMA);
3677 12 : if (res) return res;
3678 : }
3679 : }
3680 : break;
3681 0 : case CFN_COND_FMA:
3682 0 : if (call_expr_nargs (_p0) == 5)
3683 : {
3684 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3685 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3686 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3687 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3688 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3689 0 : {
3690 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3691 0 : const combined_fn fmas = CFN_COND_FMA;
3692 0 : if (canonicalize_math_after_vectorization_p ()
3693 : )
3694 : {
3695 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3696 : )
3697 : {
3698 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1099;
3699 : {
3700 : tree res_op0;
3701 : res_op0 = captures[1];
3702 : tree res_op1;
3703 : res_op1 = captures[2];
3704 : tree res_op2;
3705 : res_op2 = captures[3];
3706 : tree res_op3;
3707 : res_op3 = captures[4];
3708 : tree res_op4;
3709 : {
3710 : tree _o1[1], _r1;
3711 : _o1[0] = captures[5];
3712 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3713 : res_op4 = _r1;
3714 : }
3715 : tree _r;
3716 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3717 : if (!_r)
3718 : goto next_after_fail1099;
3719 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 874, __FILE__, __LINE__, true);
3720 : return _r;
3721 : }
3722 0 : next_after_fail1099:;
3723 : }
3724 : }
3725 : }
3726 : }
3727 : break;
3728 0 : case CFN_COND_FMS:
3729 0 : if (call_expr_nargs (_p0) == 5)
3730 : {
3731 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3732 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3733 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3734 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3735 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3736 0 : {
3737 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3738 0 : if (canonicalize_math_after_vectorization_p ()
3739 : )
3740 : {
3741 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3742 : )
3743 : {
3744 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1100;
3745 : {
3746 : tree res_op0;
3747 : res_op0 = captures[1];
3748 : tree res_op1;
3749 : res_op1 = captures[2];
3750 : tree res_op2;
3751 : res_op2 = captures[3];
3752 : tree res_op3;
3753 : res_op3 = captures[4];
3754 : tree res_op4;
3755 : {
3756 : tree _o1[1], _r1;
3757 : _o1[0] = captures[5];
3758 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3759 : res_op4 = _r1;
3760 : }
3761 : tree _r;
3762 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3763 : if (!_r)
3764 : goto next_after_fail1100;
3765 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 875, __FILE__, __LINE__, true);
3766 : return _r;
3767 : }
3768 0 : next_after_fail1100:;
3769 : }
3770 : }
3771 : }
3772 : }
3773 : break;
3774 4 : case CFN_BUILT_IN_FMAF:
3775 4 : if (call_expr_nargs (_p0) == 3)
3776 : {
3777 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3778 4 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3779 4 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3780 4 : {
3781 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3782 4 : tree res = generic_simplify_525 (loc, type, _p0, captures, CFN_BUILT_IN_FMAF);
3783 4 : if (res) return res;
3784 : }
3785 : }
3786 : break;
3787 0 : case CFN_BUILT_IN_FMAL:
3788 0 : if (call_expr_nargs (_p0) == 3)
3789 : {
3790 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3791 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3792 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3793 0 : {
3794 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3795 0 : tree res = generic_simplify_525 (loc, type, _p0, captures, CFN_BUILT_IN_FMAL);
3796 0 : if (res) return res;
3797 : }
3798 : }
3799 : break;
3800 0 : case CFN_FMA:
3801 0 : if (call_expr_nargs (_p0) == 3)
3802 : {
3803 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3804 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3805 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3806 0 : {
3807 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3808 0 : tree res = generic_simplify_525 (loc, type, _p0, captures, CFN_FMA);
3809 0 : if (res) return res;
3810 : }
3811 : }
3812 : break;
3813 0 : case CFN_FMS:
3814 0 : if (call_expr_nargs (_p0) == 3)
3815 : {
3816 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3817 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3818 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3819 0 : {
3820 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3821 0 : if (canonicalize_math_after_vectorization_p ()
3822 : )
3823 : {
3824 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3825 : )
3826 : {
3827 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1101;
3828 : {
3829 : tree res_op0;
3830 : res_op0 = captures[1];
3831 : tree res_op1;
3832 : res_op1 = captures[2];
3833 : tree res_op2;
3834 : res_op2 = captures[3];
3835 : tree _r;
3836 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3837 : if (!_r)
3838 : goto next_after_fail1101;
3839 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3840 : return _r;
3841 : }
3842 0 : next_after_fail1101:;
3843 : }
3844 : }
3845 : }
3846 : }
3847 : break;
3848 0 : case CFN_COND_FNMA:
3849 0 : if (call_expr_nargs (_p0) == 5)
3850 : {
3851 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3852 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3853 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3854 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3855 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3856 0 : {
3857 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3858 0 : if (canonicalize_math_after_vectorization_p ()
3859 : )
3860 : {
3861 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3862 : )
3863 : {
3864 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1102;
3865 : {
3866 : tree res_op0;
3867 : res_op0 = captures[1];
3868 : tree res_op1;
3869 : res_op1 = captures[2];
3870 : tree res_op2;
3871 : res_op2 = captures[3];
3872 : tree res_op3;
3873 : res_op3 = captures[4];
3874 : tree res_op4;
3875 : {
3876 : tree _o1[1], _r1;
3877 : _o1[0] = captures[5];
3878 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3879 : res_op4 = _r1;
3880 : }
3881 : tree _r;
3882 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3883 : if (!_r)
3884 : goto next_after_fail1102;
3885 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
3886 : return _r;
3887 : }
3888 0 : next_after_fail1102:;
3889 : }
3890 : }
3891 : }
3892 : }
3893 : break;
3894 0 : case CFN_COND_FNMS:
3895 0 : if (call_expr_nargs (_p0) == 5)
3896 : {
3897 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3898 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3899 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3900 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3901 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3902 0 : {
3903 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3904 0 : if (canonicalize_math_after_vectorization_p ()
3905 : )
3906 : {
3907 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3908 : )
3909 : {
3910 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1103;
3911 : {
3912 : tree res_op0;
3913 : res_op0 = captures[1];
3914 : tree res_op1;
3915 : res_op1 = captures[2];
3916 : tree res_op2;
3917 : res_op2 = captures[3];
3918 : tree res_op3;
3919 : res_op3 = captures[4];
3920 : tree res_op4;
3921 : {
3922 : tree _o1[1], _r1;
3923 : _o1[0] = captures[5];
3924 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3925 : res_op4 = _r1;
3926 : }
3927 : tree _r;
3928 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3929 : if (!_r)
3930 : goto next_after_fail1103;
3931 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
3932 : return _r;
3933 : }
3934 0 : next_after_fail1103:;
3935 : }
3936 : }
3937 : }
3938 : }
3939 : break;
3940 0 : case CFN_FNMA:
3941 0 : if (call_expr_nargs (_p0) == 3)
3942 : {
3943 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3944 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3945 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3946 0 : {
3947 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3948 0 : if (canonicalize_math_after_vectorization_p ()
3949 : )
3950 : {
3951 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3952 : )
3953 : {
3954 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1104;
3955 : {
3956 : tree res_op0;
3957 : res_op0 = captures[1];
3958 : tree res_op1;
3959 : res_op1 = captures[2];
3960 : tree res_op2;
3961 : res_op2 = captures[3];
3962 : tree _r;
3963 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3964 : if (!_r)
3965 : goto next_after_fail1104;
3966 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3967 : return _r;
3968 : }
3969 0 : next_after_fail1104:;
3970 : }
3971 : }
3972 : }
3973 : }
3974 : break;
3975 0 : case CFN_FNMS:
3976 0 : if (call_expr_nargs (_p0) == 3)
3977 : {
3978 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3979 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3980 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3981 0 : {
3982 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3983 0 : if (canonicalize_math_after_vectorization_p ()
3984 : )
3985 : {
3986 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3987 : )
3988 : {
3989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1105;
3990 : {
3991 : tree res_op0;
3992 : res_op0 = captures[1];
3993 : tree res_op1;
3994 : res_op1 = captures[2];
3995 : tree res_op2;
3996 : res_op2 = captures[3];
3997 : tree _r;
3998 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3999 : if (!_r)
4000 : goto next_after_fail1105;
4001 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
4002 : return _r;
4003 : }
4004 0 : next_after_fail1105:;
4005 : }
4006 : }
4007 : }
4008 : }
4009 : break;
4010 : default:;
4011 : }
4012 : break;
4013 4216248 : default:;
4014 : }
4015 4216248 : {
4016 4216248 : tree _p0_pops[1];
4017 4216248 : if (tree_nop_convert (_p0, _p0_pops))
4018 : {
4019 1581875 : tree _q20 = _p0_pops[0];
4020 1581875 : switch (TREE_CODE (_q20))
4021 : {
4022 0 : case POINTER_DIFF_EXPR:
4023 0 : {
4024 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4025 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4026 0 : {
4027 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
4028 0 : tree res = generic_simplify_520 (loc, type, _p0, captures);
4029 0 : if (res) return res;
4030 : }
4031 0 : break;
4032 : }
4033 0 : case BIT_NOT_EXPR:
4034 0 : {
4035 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4036 0 : {
4037 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
4038 0 : tree res = generic_simplify_521 (loc, type, _p0, captures);
4039 0 : if (res) return res;
4040 : }
4041 0 : break;
4042 : }
4043 0 : case NEGATE_EXPR:
4044 0 : {
4045 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4046 0 : {
4047 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
4048 0 : tree res = generic_simplify_522 (loc, type, _p0, captures);
4049 0 : if (res) return res;
4050 : }
4051 0 : break;
4052 : }
4053 : default:;
4054 : }
4055 : }
4056 : }
4057 4216248 : {
4058 4216248 : tree _p0_pops[1];
4059 4216248 : if (tree_logical_inverted_value (_p0, _p0_pops))
4060 : {
4061 70 : tree _q20 = _p0_pops[0];
4062 70 : {
4063 70 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
4064 70 : if (INTEGRAL_TYPE_P (type)
4065 70 : && TREE_CODE (type) != BOOLEAN_TYPE
4066 70 : && TYPE_PRECISION (type) > 1
4067 70 : && TREE_CODE (captures[2]) == SSA_NAME
4068 70 : && ssa_name_has_boolean_range (captures[2])
4069 : )
4070 : {
4071 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1106;
4072 0 : {
4073 0 : tree res_op0;
4074 0 : {
4075 0 : tree _o1[1], _r1;
4076 0 : _o1[0] = captures[2];
4077 0 : if (TREE_TYPE (_o1[0]) != type)
4078 : {
4079 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4080 : }
4081 : else
4082 : _r1 = _o1[0];
4083 0 : res_op0 = _r1;
4084 : }
4085 0 : tree res_op1;
4086 0 : res_op1 = build_all_ones_cst (type);
4087 0 : tree _r;
4088 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
4089 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
4090 0 : return _r;
4091 : }
4092 0 : next_after_fail1106:;
4093 : }
4094 : }
4095 : }
4096 : }
4097 4216248 : {
4098 4216248 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4099 4216248 : tree res = generic_simplify_444 (loc, type, _p0, captures);
4100 4216248 : if (res) return res;
4101 : }
4102 4202469 : return NULL_TREE;
4103 : }
4104 :
4105 : tree
4106 27606290 : generic_simplify_EQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4107 : {
4108 27606290 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4109 27606290 : switch (TREE_CODE (_p1))
4110 : {
4111 101 : case NEGATE_EXPR:
4112 101 : {
4113 101 : tree _q30 = TREE_OPERAND (_p1, 0);
4114 101 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4115 : {
4116 0 : {
4117 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4118 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4119 0 : if (res) return res;
4120 : }
4121 : }
4122 : break;
4123 : }
4124 27606290 : default:;
4125 : }
4126 27606290 : switch (TREE_CODE (_p0))
4127 : {
4128 1333 : case NEGATE_EXPR:
4129 1333 : {
4130 1333 : tree _q20 = TREE_OPERAND (_p0, 0);
4131 1333 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4132 : {
4133 101 : {
4134 101 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4135 101 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4136 101 : if (res) return res;
4137 : }
4138 : }
4139 : break;
4140 : }
4141 0 : case CEIL_MOD_EXPR:
4142 0 : {
4143 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4144 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4145 0 : if (integer_pow2p (_q21))
4146 : {
4147 0 : if (integer_zerop (_p1))
4148 : {
4149 0 : {
4150 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4151 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR, CEIL_MOD_EXPR);
4152 0 : if (res) return res;
4153 : }
4154 : }
4155 : }
4156 : break;
4157 : }
4158 876 : case FLOOR_MOD_EXPR:
4159 876 : {
4160 876 : tree _q20 = TREE_OPERAND (_p0, 0);
4161 876 : tree _q21 = TREE_OPERAND (_p0, 1);
4162 876 : if (integer_pow2p (_q21))
4163 : {
4164 26 : if (integer_zerop (_p1))
4165 : {
4166 26 : {
4167 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4168 26 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR, FLOOR_MOD_EXPR);
4169 26 : if (res) return res;
4170 : }
4171 : }
4172 : }
4173 : break;
4174 : }
4175 0 : case ROUND_MOD_EXPR:
4176 0 : {
4177 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4178 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4179 0 : if (integer_pow2p (_q21))
4180 : {
4181 0 : if (integer_zerop (_p1))
4182 : {
4183 0 : {
4184 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4185 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR, ROUND_MOD_EXPR);
4186 0 : if (res) return res;
4187 : }
4188 : }
4189 : }
4190 : break;
4191 : }
4192 92592 : case TRUNC_MOD_EXPR:
4193 92592 : {
4194 92592 : tree _q20 = TREE_OPERAND (_p0, 0);
4195 92592 : tree _q21 = TREE_OPERAND (_p0, 1);
4196 92592 : if (integer_pow2p (_q21))
4197 : {
4198 39702 : if (integer_zerop (_p1))
4199 : {
4200 562 : {
4201 562 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4202 562 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR, TRUNC_MOD_EXPR);
4203 562 : if (res) return res;
4204 : }
4205 : }
4206 : }
4207 : break;
4208 : }
4209 5204055 : CASE_CONVERT:
4210 5204055 : {
4211 5204055 : tree _q20 = TREE_OPERAND (_p0, 0);
4212 5204055 : switch (TREE_CODE (_p1))
4213 : {
4214 2 : case LSHIFT_EXPR:
4215 2 : {
4216 2 : tree _q40 = TREE_OPERAND (_p1, 0);
4217 2 : tree _q41 = TREE_OPERAND (_p1, 1);
4218 2 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4219 : {
4220 0 : {
4221 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4222 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4223 0 : if (res) return res;
4224 : }
4225 : }
4226 : break;
4227 : }
4228 5204055 : default:;
4229 : }
4230 5204055 : {
4231 5204055 : tree _p1_pops[1];
4232 5204055 : if (tree_nop_convert (_p1, _p1_pops))
4233 : {
4234 1267850 : tree _q40 = _p1_pops[0];
4235 1267850 : switch (TREE_CODE (_q40))
4236 : {
4237 0 : case LSHIFT_EXPR:
4238 0 : {
4239 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4240 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4241 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4242 : {
4243 0 : {
4244 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4245 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4246 0 : if (res) return res;
4247 : }
4248 : }
4249 : break;
4250 : }
4251 : default:;
4252 : }
4253 : }
4254 : }
4255 5204055 : switch (TREE_CODE (_q20))
4256 : {
4257 92 : case EXACT_DIV_EXPR:
4258 92 : {
4259 92 : tree _q30 = TREE_OPERAND (_q20, 0);
4260 92 : tree _q31 = TREE_OPERAND (_q20, 1);
4261 92 : switch (TREE_CODE (_q31))
4262 : {
4263 92 : case INTEGER_CST:
4264 92 : {
4265 92 : switch (TREE_CODE (_p1))
4266 : {
4267 0 : CASE_CONVERT:
4268 0 : {
4269 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4270 0 : switch (TREE_CODE (_q60))
4271 : {
4272 0 : case EXACT_DIV_EXPR:
4273 0 : {
4274 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4275 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4276 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4277 : {
4278 0 : {
4279 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4280 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
4281 0 : if (res) return res;
4282 : }
4283 : }
4284 : break;
4285 : }
4286 : default:;
4287 : }
4288 : break;
4289 : }
4290 : default:;
4291 : }
4292 : break;
4293 : }
4294 : default:;
4295 : }
4296 : break;
4297 : }
4298 5204055 : default:;
4299 : }
4300 5204055 : switch (TREE_CODE (_p1))
4301 : {
4302 29508 : case PLUS_EXPR:
4303 29508 : {
4304 29508 : tree _q40 = TREE_OPERAND (_p1, 0);
4305 29508 : tree _q41 = TREE_OPERAND (_p1, 1);
4306 29508 : switch (TREE_CODE (_q41))
4307 : {
4308 26 : CASE_CONVERT:
4309 26 : {
4310 26 : tree _q60 = TREE_OPERAND (_q41, 0);
4311 26 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4312 : {
4313 0 : {
4314 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4315 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
4316 0 : if (res) return res;
4317 : }
4318 : }
4319 : break;
4320 : }
4321 29508 : default:;
4322 : }
4323 29508 : switch (TREE_CODE (_q40))
4324 : {
4325 3994 : CASE_CONVERT:
4326 3994 : {
4327 3994 : tree _q50 = TREE_OPERAND (_q40, 0);
4328 3994 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4329 : {
4330 0 : {
4331 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4332 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
4333 0 : if (res) return res;
4334 : }
4335 : }
4336 : break;
4337 : }
4338 29508 : default:;
4339 : }
4340 29508 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4341 : {
4342 0 : {
4343 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4344 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
4345 0 : if (res) return res;
4346 : }
4347 : }
4348 29508 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4349 : {
4350 0 : {
4351 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4352 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
4353 0 : if (res) return res;
4354 : }
4355 : }
4356 : break;
4357 : }
4358 5204055 : default:;
4359 : }
4360 5204055 : {
4361 5204055 : tree _p1_pops[1];
4362 5204055 : if (tree_nop_convert (_p1, _p1_pops))
4363 : {
4364 1267850 : tree _q40 = _p1_pops[0];
4365 1267850 : switch (TREE_CODE (_q40))
4366 : {
4367 73 : case PLUS_EXPR:
4368 73 : {
4369 73 : tree _q50 = TREE_OPERAND (_q40, 0);
4370 73 : tree _q51 = TREE_OPERAND (_q40, 1);
4371 73 : switch (TREE_CODE (_q51))
4372 : {
4373 0 : CASE_CONVERT:
4374 0 : {
4375 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4376 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4377 : {
4378 0 : {
4379 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4380 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4381 0 : if (res) return res;
4382 : }
4383 : }
4384 : break;
4385 : }
4386 73 : default:;
4387 : }
4388 73 : switch (TREE_CODE (_q50))
4389 : {
4390 4 : CASE_CONVERT:
4391 4 : {
4392 4 : tree _q60 = TREE_OPERAND (_q50, 0);
4393 4 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4394 : {
4395 0 : {
4396 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4397 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4398 0 : if (res) return res;
4399 : }
4400 : }
4401 : break;
4402 : }
4403 73 : default:;
4404 : }
4405 73 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4406 : {
4407 0 : {
4408 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4409 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4410 0 : if (res) return res;
4411 : }
4412 : }
4413 73 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4414 : {
4415 0 : {
4416 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4417 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4418 0 : if (res) return res;
4419 : }
4420 : }
4421 : break;
4422 : }
4423 : default:;
4424 : }
4425 : }
4426 : }
4427 5204055 : break;
4428 : }
4429 27605699 : default:;
4430 : }
4431 27605699 : {
4432 27605699 : tree _p0_pops[1];
4433 27605699 : if (tree_nop_convert (_p0, _p0_pops))
4434 : {
4435 3029838 : tree _q20 = _p0_pops[0];
4436 3029838 : switch (TREE_CODE (_q20))
4437 : {
4438 1 : case LSHIFT_EXPR:
4439 1 : {
4440 1 : tree _q30 = TREE_OPERAND (_q20, 0);
4441 1 : tree _q31 = TREE_OPERAND (_q20, 1);
4442 1 : switch (TREE_CODE (_p1))
4443 : {
4444 0 : CASE_CONVERT:
4445 0 : {
4446 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4447 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4448 : {
4449 0 : {
4450 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4451 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4452 0 : if (res) return res;
4453 : }
4454 : }
4455 : break;
4456 : }
4457 1 : default:;
4458 : }
4459 1 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4460 : {
4461 1 : {
4462 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4463 1 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4464 1 : if (res) return res;
4465 : }
4466 : }
4467 : break;
4468 : }
4469 2457 : case PLUS_EXPR:
4470 2457 : {
4471 2457 : tree _q30 = TREE_OPERAND (_q20, 0);
4472 2457 : tree _q31 = TREE_OPERAND (_q20, 1);
4473 2457 : switch (TREE_CODE (_q31))
4474 : {
4475 0 : CASE_CONVERT:
4476 0 : {
4477 0 : tree _q50 = TREE_OPERAND (_q31, 0);
4478 0 : switch (TREE_CODE (_p1))
4479 : {
4480 0 : CASE_CONVERT:
4481 0 : {
4482 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4483 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4484 : {
4485 0 : {
4486 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4487 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4488 0 : if (res) return res;
4489 : }
4490 : }
4491 : break;
4492 : }
4493 : default:;
4494 : }
4495 : break;
4496 : }
4497 2457 : default:;
4498 : }
4499 2457 : switch (TREE_CODE (_q30))
4500 : {
4501 1197 : CASE_CONVERT:
4502 1197 : {
4503 1197 : tree _q40 = TREE_OPERAND (_q30, 0);
4504 1197 : switch (TREE_CODE (_p1))
4505 : {
4506 8 : CASE_CONVERT:
4507 8 : {
4508 8 : tree _q70 = TREE_OPERAND (_p1, 0);
4509 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4510 : {
4511 0 : {
4512 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4513 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4514 0 : if (res) return res;
4515 : }
4516 : }
4517 : break;
4518 : }
4519 1197 : default:;
4520 : }
4521 1197 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4522 : {
4523 0 : {
4524 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4525 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4526 0 : if (res) return res;
4527 : }
4528 : }
4529 : break;
4530 : }
4531 2457 : default:;
4532 : }
4533 2457 : switch (TREE_CODE (_q31))
4534 : {
4535 0 : CASE_CONVERT:
4536 0 : {
4537 0 : tree _q50 = TREE_OPERAND (_q31, 0);
4538 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4539 : {
4540 0 : {
4541 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4542 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4543 0 : if (res) return res;
4544 : }
4545 : }
4546 : break;
4547 : }
4548 2457 : default:;
4549 : }
4550 2457 : switch (TREE_CODE (_p1))
4551 : {
4552 77 : CASE_CONVERT:
4553 77 : {
4554 77 : tree _q60 = TREE_OPERAND (_p1, 0);
4555 77 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4556 : {
4557 0 : {
4558 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4559 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4560 0 : if (res) return res;
4561 : }
4562 : }
4563 77 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4564 : {
4565 0 : {
4566 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4567 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4568 0 : if (res) return res;
4569 : }
4570 : }
4571 : break;
4572 : }
4573 2457 : default:;
4574 : }
4575 2457 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4576 : {
4577 0 : {
4578 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4579 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4580 0 : if (res) return res;
4581 : }
4582 : }
4583 2457 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4584 : {
4585 0 : {
4586 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4587 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4588 0 : if (res) return res;
4589 : }
4590 : }
4591 : break;
4592 : }
4593 : default:;
4594 : }
4595 : }
4596 : }
4597 27605698 : {
4598 27605698 : tree _p1_pops[1];
4599 27605698 : if (tree_nop_convert (_p1, _p1_pops))
4600 : {
4601 1507922 : tree _q30 = _p1_pops[0];
4602 1507922 : switch (TREE_CODE (_q30))
4603 : {
4604 0 : case LSHIFT_EXPR:
4605 0 : {
4606 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4607 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4608 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4609 : {
4610 0 : {
4611 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4612 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4613 0 : if (res) return res;
4614 : }
4615 : }
4616 : break;
4617 : }
4618 : default:;
4619 : }
4620 : }
4621 : }
4622 27605698 : switch (TREE_CODE (_p0))
4623 : {
4624 2072 : case LSHIFT_EXPR:
4625 2072 : {
4626 2072 : tree _q20 = TREE_OPERAND (_p0, 0);
4627 2072 : tree _q21 = TREE_OPERAND (_p0, 1);
4628 2072 : switch (TREE_CODE (_p1))
4629 : {
4630 61 : CASE_CONVERT:
4631 61 : {
4632 61 : tree _q50 = TREE_OPERAND (_p1, 0);
4633 61 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4634 : {
4635 4 : {
4636 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4637 4 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4638 4 : if (res) return res;
4639 : }
4640 : }
4641 : break;
4642 : }
4643 2071 : default:;
4644 : }
4645 2071 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4646 : {
4647 27 : {
4648 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4649 27 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4650 27 : if (res) return res;
4651 : }
4652 : }
4653 2067 : if (tree_zero_one_valued_p (_q20))
4654 : {
4655 239 : switch (TREE_CODE (_q21))
4656 : {
4657 10 : case INTEGER_CST:
4658 10 : {
4659 10 : if (integer_zerop (_p1))
4660 : {
4661 2 : {
4662 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4663 2 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, EQ_EXPR);
4664 2 : if (res) return res;
4665 : }
4666 : }
4667 : break;
4668 : }
4669 : default:;
4670 : }
4671 : }
4672 : break;
4673 : }
4674 27605691 : default:;
4675 : }
4676 27605691 : switch (TREE_CODE (_p1))
4677 : {
4678 235 : case LSHIFT_EXPR:
4679 235 : {
4680 235 : tree _q30 = TREE_OPERAND (_p1, 0);
4681 235 : tree _q31 = TREE_OPERAND (_p1, 1);
4682 235 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4683 : {
4684 0 : {
4685 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4686 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4687 0 : if (res) return res;
4688 : }
4689 : }
4690 : break;
4691 : }
4692 27605691 : default:;
4693 : }
4694 27605691 : switch (TREE_CODE (_p0))
4695 : {
4696 46317 : case VIEW_CONVERT_EXPR:
4697 46317 : {
4698 46317 : tree _q20 = TREE_OPERAND (_p0, 0);
4699 46317 : if (tree_zero_one_valued_p (_q20))
4700 : {
4701 0 : if (integer_zerop (_p1))
4702 : {
4703 0 : {
4704 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4705 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR);
4706 0 : if (res) return res;
4707 : }
4708 : }
4709 : }
4710 : break;
4711 : }
4712 15930 : case RSHIFT_EXPR:
4713 15930 : {
4714 15930 : tree _q20 = TREE_OPERAND (_p0, 0);
4715 15930 : tree _q21 = TREE_OPERAND (_p0, 1);
4716 15930 : switch (TREE_CODE (_q21))
4717 : {
4718 14670 : case INTEGER_CST:
4719 14670 : {
4720 14670 : switch (TREE_CODE (_p1))
4721 : {
4722 106 : case RSHIFT_EXPR:
4723 106 : {
4724 106 : tree _q50 = TREE_OPERAND (_p1, 0);
4725 106 : tree _q51 = TREE_OPERAND (_p1, 1);
4726 106 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4727 : {
4728 18 : switch (TREE_CODE (_q51))
4729 : {
4730 18 : case INTEGER_CST:
4731 18 : {
4732 18 : {
4733 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4734 18 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
4735 18 : if (res) return res;
4736 : }
4737 17 : break;
4738 : }
4739 : default:;
4740 : }
4741 : }
4742 : break;
4743 : }
4744 14669 : default:;
4745 : }
4746 14669 : if (integer_zerop (_p1))
4747 : {
4748 1530 : {
4749 1530 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4750 1530 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
4751 1530 : if (res) return res;
4752 : }
4753 : }
4754 : break;
4755 : }
4756 : default:;
4757 : }
4758 : break;
4759 : }
4760 834807 : case BIT_AND_EXPR:
4761 834807 : {
4762 834807 : tree _q20 = TREE_OPERAND (_p0, 0);
4763 834807 : tree _q21 = TREE_OPERAND (_p0, 1);
4764 834807 : if (tree_truth_valued_p (_q20))
4765 : {
4766 159 : if (tree_truth_valued_p (_q21))
4767 : {
4768 158 : switch (TREE_CODE (_p1))
4769 : {
4770 56 : case BIT_XOR_EXPR:
4771 56 : {
4772 56 : tree _q50 = TREE_OPERAND (_p1, 0);
4773 56 : tree _q51 = TREE_OPERAND (_p1, 1);
4774 56 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4775 : {
4776 56 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4777 : {
4778 56 : {
4779 56 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4780 112 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4781 112 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
4782 : )
4783 : {
4784 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1511;
4785 56 : {
4786 56 : tree res_op0;
4787 56 : {
4788 56 : tree _o1[1], _r1;
4789 56 : {
4790 56 : tree _o2[2], _r2;
4791 56 : _o2[0] = captures[0];
4792 56 : _o2[1] = captures[1];
4793 56 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4794 56 : _o1[0] = _r2;
4795 : }
4796 56 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4797 56 : res_op0 = _r1;
4798 : }
4799 56 : tree _r;
4800 56 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4801 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
4802 56 : return _r;
4803 : }
4804 0 : next_after_fail1511:;
4805 : }
4806 : else
4807 : {
4808 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1512;
4809 0 : {
4810 0 : tree res_op0;
4811 0 : {
4812 0 : tree _o1[2], _r1;
4813 0 : {
4814 0 : tree _o2[2], _r2;
4815 0 : _o2[0] = captures[0];
4816 0 : _o2[1] = captures[1];
4817 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4818 0 : _o1[0] = _r2;
4819 : }
4820 0 : _o1[1] = build_one_cst (TREE_TYPE (captures[0]));
4821 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4822 0 : res_op0 = _r1;
4823 : }
4824 0 : tree _r;
4825 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4826 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
4827 0 : return _r;
4828 : }
4829 0 : next_after_fail1512:;
4830 : }
4831 : }
4832 : }
4833 : }
4834 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4835 : {
4836 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4837 : {
4838 0 : {
4839 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
4840 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4841 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
4842 : )
4843 : {
4844 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1513;
4845 0 : {
4846 0 : tree res_op0;
4847 0 : {
4848 0 : tree _o1[1], _r1;
4849 0 : {
4850 0 : tree _o2[2], _r2;
4851 0 : _o2[0] = captures[0];
4852 0 : _o2[1] = captures[1];
4853 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4854 0 : _o1[0] = _r2;
4855 : }
4856 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4857 0 : res_op0 = _r1;
4858 : }
4859 0 : tree _r;
4860 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
4862 0 : return _r;
4863 : }
4864 0 : next_after_fail1513:;
4865 : }
4866 : else
4867 : {
4868 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1514;
4869 0 : {
4870 0 : tree res_op0;
4871 0 : {
4872 0 : tree _o1[2], _r1;
4873 0 : {
4874 0 : tree _o2[2], _r2;
4875 0 : _o2[0] = captures[0];
4876 0 : _o2[1] = captures[1];
4877 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4878 0 : _o1[0] = _r2;
4879 : }
4880 0 : _o1[1] = build_one_cst (TREE_TYPE (captures[0]));
4881 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4882 0 : res_op0 = _r1;
4883 : }
4884 0 : tree _r;
4885 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4886 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
4887 0 : return _r;
4888 : }
4889 0 : next_after_fail1514:;
4890 : }
4891 : }
4892 : }
4893 : }
4894 : break;
4895 : }
4896 : default:;
4897 : }
4898 : }
4899 : }
4900 : break;
4901 : }
4902 635 : case BIT_XOR_EXPR:
4903 635 : {
4904 635 : tree _q20 = TREE_OPERAND (_p0, 0);
4905 635 : tree _q21 = TREE_OPERAND (_p0, 1);
4906 635 : switch (TREE_CODE (_p1))
4907 : {
4908 0 : case BIT_AND_EXPR:
4909 0 : {
4910 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4911 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4912 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4913 : {
4914 0 : if (tree_truth_valued_p (_q50))
4915 : {
4916 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4917 : {
4918 0 : if (tree_truth_valued_p (_q51))
4919 : {
4920 0 : {
4921 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4922 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4923 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
4924 : )
4925 : {
4926 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1515;
4927 0 : {
4928 0 : tree res_op0;
4929 0 : {
4930 0 : tree _o1[1], _r1;
4931 0 : {
4932 0 : tree _o2[2], _r2;
4933 0 : _o2[0] = captures[0];
4934 0 : _o2[1] = captures[1];
4935 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4936 0 : _o1[0] = _r2;
4937 : }
4938 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4939 0 : res_op0 = _r1;
4940 : }
4941 0 : tree _r;
4942 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4943 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
4944 0 : return _r;
4945 : }
4946 0 : next_after_fail1515:;
4947 : }
4948 : else
4949 : {
4950 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1516;
4951 0 : {
4952 0 : tree res_op0;
4953 0 : {
4954 0 : tree _o1[2], _r1;
4955 0 : {
4956 0 : tree _o2[2], _r2;
4957 0 : _o2[0] = captures[0];
4958 0 : _o2[1] = captures[1];
4959 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4960 0 : _o1[0] = _r2;
4961 : }
4962 0 : _o1[1] = build_one_cst (TREE_TYPE (captures[0]));
4963 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4964 0 : res_op0 = _r1;
4965 : }
4966 0 : tree _r;
4967 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4968 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
4969 0 : return _r;
4970 : }
4971 0 : next_after_fail1516:;
4972 : }
4973 : }
4974 : }
4975 : }
4976 : }
4977 : }
4978 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4979 : {
4980 0 : if (tree_truth_valued_p (_q50))
4981 : {
4982 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4983 : {
4984 0 : if (tree_truth_valued_p (_q51))
4985 : {
4986 0 : {
4987 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4988 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4989 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
4990 : )
4991 : {
4992 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1517;
4993 0 : {
4994 0 : tree res_op0;
4995 0 : {
4996 0 : tree _o1[1], _r1;
4997 0 : {
4998 0 : tree _o2[2], _r2;
4999 0 : _o2[0] = captures[0];
5000 0 : _o2[1] = captures[1];
5001 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5002 0 : _o1[0] = _r2;
5003 : }
5004 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5005 0 : res_op0 = _r1;
5006 : }
5007 0 : tree _r;
5008 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
5009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
5010 0 : return _r;
5011 : }
5012 0 : next_after_fail1517:;
5013 : }
5014 : else
5015 : {
5016 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1518;
5017 0 : {
5018 0 : tree res_op0;
5019 0 : {
5020 0 : tree _o1[2], _r1;
5021 0 : {
5022 0 : tree _o2[2], _r2;
5023 0 : _o2[0] = captures[0];
5024 0 : _o2[1] = captures[1];
5025 0 : _r2 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5026 0 : _o1[0] = _r2;
5027 : }
5028 0 : _o1[1] = build_one_cst (TREE_TYPE (captures[0]));
5029 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5030 0 : res_op0 = _r1;
5031 : }
5032 0 : tree _r;
5033 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
5034 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
5035 0 : return _r;
5036 : }
5037 0 : next_after_fail1518:;
5038 : }
5039 : }
5040 : }
5041 : }
5042 : }
5043 : }
5044 : break;
5045 : }
5046 : default:;
5047 : }
5048 : break;
5049 : }
5050 412 : case BIT_NOT_EXPR:
5051 412 : {
5052 412 : tree _q20 = TREE_OPERAND (_p0, 0);
5053 412 : if (tree_truth_valued_p (_q20))
5054 : {
5055 8 : if (tree_truth_valued_p (_p1))
5056 : {
5057 8 : {
5058 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
5059 8 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures);
5060 8 : if (res) return res;
5061 : }
5062 : }
5063 : }
5064 : break;
5065 : }
5066 66518 : case MULT_EXPR:
5067 66518 : {
5068 66518 : tree _q20 = TREE_OPERAND (_p0, 0);
5069 66518 : tree _q21 = TREE_OPERAND (_p0, 1);
5070 66518 : switch (TREE_CODE (_p1))
5071 : {
5072 955 : case MULT_EXPR:
5073 955 : {
5074 955 : tree _q50 = TREE_OPERAND (_p1, 0);
5075 955 : tree _q51 = TREE_OPERAND (_p1, 1);
5076 955 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5077 : {
5078 644 : {
5079 644 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5080 644 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR);
5081 644 : if (res) return res;
5082 : }
5083 : }
5084 947 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5085 : {
5086 0 : {
5087 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5088 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR);
5089 0 : if (res) return res;
5090 : }
5091 : }
5092 947 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5093 : {
5094 0 : {
5095 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5096 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR);
5097 0 : if (res) return res;
5098 : }
5099 : }
5100 947 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5101 : {
5102 24 : {
5103 24 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5104 24 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR);
5105 24 : if (res) return res;
5106 : }
5107 : }
5108 : break;
5109 : }
5110 66510 : default:;
5111 : }
5112 66510 : switch (TREE_CODE (_q21))
5113 : {
5114 58543 : case INTEGER_CST:
5115 58543 : {
5116 58543 : switch (TREE_CODE (_p1))
5117 : {
5118 905 : case MULT_EXPR:
5119 905 : {
5120 905 : tree _q50 = TREE_OPERAND (_p1, 0);
5121 905 : tree _q51 = TREE_OPERAND (_p1, 1);
5122 905 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5123 : {
5124 599 : {
5125 599 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5126 599 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
5127 599 : if (res) return res;
5128 : }
5129 : }
5130 : break;
5131 : }
5132 : default:;
5133 : }
5134 : break;
5135 : }
5136 : default:;
5137 : }
5138 : break;
5139 : }
5140 7246 : case EXACT_DIV_EXPR:
5141 7246 : {
5142 7246 : tree _q20 = TREE_OPERAND (_p0, 0);
5143 7246 : tree _q21 = TREE_OPERAND (_p0, 1);
5144 7246 : switch (TREE_CODE (_q21))
5145 : {
5146 7246 : case INTEGER_CST:
5147 7246 : {
5148 7246 : switch (TREE_CODE (_p1))
5149 : {
5150 0 : case EXACT_DIV_EXPR:
5151 0 : {
5152 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5153 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5154 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5155 : {
5156 0 : {
5157 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5158 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
5159 0 : if (res) return res;
5160 : }
5161 : }
5162 : break;
5163 : }
5164 : default:;
5165 : }
5166 : break;
5167 : }
5168 : default:;
5169 : }
5170 : break;
5171 : }
5172 5373 : case TRUNC_DIV_EXPR:
5173 5373 : {
5174 5373 : tree _q20 = TREE_OPERAND (_p0, 0);
5175 5373 : tree _q21 = TREE_OPERAND (_p0, 1);
5176 5373 : switch (TREE_CODE (_q21))
5177 : {
5178 3882 : case INTEGER_CST:
5179 3882 : {
5180 3882 : switch (TREE_CODE (_p1))
5181 : {
5182 995 : case INTEGER_CST:
5183 995 : {
5184 995 : {
5185 995 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5186 995 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5187 995 : if (res) return res;
5188 : }
5189 21 : break;
5190 : }
5191 : default:;
5192 : }
5193 : break;
5194 : }
5195 : default:;
5196 : }
5197 : break;
5198 : }
5199 673304 : case PLUS_EXPR:
5200 673304 : {
5201 673304 : tree _q20 = TREE_OPERAND (_p0, 0);
5202 673304 : tree _q21 = TREE_OPERAND (_p0, 1);
5203 673304 : switch (TREE_CODE (_p1))
5204 : {
5205 54541 : case PLUS_EXPR:
5206 54541 : {
5207 54541 : tree _q50 = TREE_OPERAND (_p1, 0);
5208 54541 : tree _q51 = TREE_OPERAND (_p1, 1);
5209 54541 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5210 : {
5211 578 : {
5212 578 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5213 1156 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5214 882 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5215 270 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5216 : )
5217 : {
5218 304 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1519;
5219 304 : {
5220 304 : tree res_op0;
5221 304 : res_op0 = captures[0];
5222 304 : tree res_op1;
5223 304 : res_op1 = captures[2];
5224 304 : tree _r;
5225 304 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5226 304 : if (TREE_SIDE_EFFECTS (captures[1]))
5227 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5228 304 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5229 304 : return _r;
5230 : }
5231 0 : next_after_fail1519:;
5232 : }
5233 : }
5234 : }
5235 54237 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5236 : {
5237 4 : {
5238 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5239 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5240 4 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5241 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5242 : )
5243 : {
5244 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1520;
5245 0 : {
5246 0 : tree res_op0;
5247 0 : res_op0 = captures[0];
5248 0 : tree res_op1;
5249 0 : res_op1 = captures[2];
5250 0 : tree _r;
5251 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5252 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5253 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5254 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5255 0 : return _r;
5256 : }
5257 0 : next_after_fail1520:;
5258 : }
5259 : }
5260 : }
5261 54237 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5262 : {
5263 4 : {
5264 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5265 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5266 4 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5267 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5268 : )
5269 : {
5270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1521;
5271 0 : {
5272 0 : tree res_op0;
5273 0 : res_op0 = captures[0];
5274 0 : tree res_op1;
5275 0 : res_op1 = captures[2];
5276 0 : tree _r;
5277 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5278 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5279 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5281 0 : return _r;
5282 : }
5283 0 : next_after_fail1521:;
5284 : }
5285 : }
5286 : }
5287 54237 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5288 : {
5289 249 : {
5290 249 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5291 498 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5292 249 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5293 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5294 : )
5295 : {
5296 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1522;
5297 0 : {
5298 0 : tree res_op0;
5299 0 : res_op0 = captures[0];
5300 0 : tree res_op1;
5301 0 : res_op1 = captures[2];
5302 0 : tree _r;
5303 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5304 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5305 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5306 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5307 0 : return _r;
5308 : }
5309 0 : next_after_fail1522:;
5310 : }
5311 : }
5312 : }
5313 : break;
5314 : }
5315 673000 : default:;
5316 : }
5317 673000 : switch (TREE_CODE (_q21))
5318 : {
5319 2701 : CASE_CONVERT:
5320 2701 : {
5321 2701 : tree _q40 = TREE_OPERAND (_q21, 0);
5322 2701 : switch (TREE_CODE (_p1))
5323 : {
5324 158 : CASE_CONVERT:
5325 158 : {
5326 158 : tree _q60 = TREE_OPERAND (_p1, 0);
5327 158 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5328 : {
5329 0 : {
5330 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5331 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5332 0 : if (res) return res;
5333 : }
5334 : }
5335 : break;
5336 : }
5337 : default:;
5338 : }
5339 : break;
5340 : }
5341 673000 : default:;
5342 : }
5343 673000 : switch (TREE_CODE (_q20))
5344 : {
5345 25698 : CASE_CONVERT:
5346 25698 : {
5347 25698 : tree _q30 = TREE_OPERAND (_q20, 0);
5348 25698 : switch (TREE_CODE (_p1))
5349 : {
5350 355 : CASE_CONVERT:
5351 355 : {
5352 355 : tree _q60 = TREE_OPERAND (_p1, 0);
5353 355 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5354 : {
5355 2 : {
5356 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5357 2 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5358 2 : if (res) return res;
5359 : }
5360 : }
5361 : break;
5362 : }
5363 25697 : default:;
5364 : }
5365 25697 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5366 : {
5367 0 : {
5368 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5369 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5370 0 : if (res) return res;
5371 : }
5372 : }
5373 : break;
5374 : }
5375 672999 : default:;
5376 : }
5377 672999 : switch (TREE_CODE (_q21))
5378 : {
5379 2701 : CASE_CONVERT:
5380 2701 : {
5381 2701 : tree _q40 = TREE_OPERAND (_q21, 0);
5382 2701 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5383 : {
5384 0 : {
5385 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5386 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5387 0 : if (res) return res;
5388 : }
5389 : }
5390 : break;
5391 : }
5392 672999 : default:;
5393 : }
5394 672999 : switch (TREE_CODE (_p1))
5395 : {
5396 13844 : CASE_CONVERT:
5397 13844 : {
5398 13844 : tree _q50 = TREE_OPERAND (_p1, 0);
5399 13844 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5400 : {
5401 0 : {
5402 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5403 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5404 0 : if (res) return res;
5405 : }
5406 : }
5407 13844 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5408 : {
5409 0 : {
5410 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5411 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5412 0 : if (res) return res;
5413 : }
5414 : }
5415 : break;
5416 : }
5417 672999 : default:;
5418 : }
5419 672999 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5420 : {
5421 2425 : {
5422 2425 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5423 2425 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5424 2425 : if (res) return res;
5425 : }
5426 : }
5427 670642 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5428 : {
5429 78 : {
5430 78 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5431 78 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5432 78 : if (res) return res;
5433 : }
5434 : }
5435 : break;
5436 : }
5437 64052 : case POINTER_PLUS_EXPR:
5438 64052 : {
5439 64052 : tree _q20 = TREE_OPERAND (_p0, 0);
5440 64052 : tree _q21 = TREE_OPERAND (_p0, 1);
5441 64052 : switch (TREE_CODE (_p1))
5442 : {
5443 2316 : case POINTER_PLUS_EXPR:
5444 2316 : {
5445 2316 : tree _q50 = TREE_OPERAND (_p1, 0);
5446 2316 : tree _q51 = TREE_OPERAND (_p1, 1);
5447 2316 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5448 : {
5449 14 : {
5450 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5451 14 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, EQ_EXPR);
5452 14 : if (res) return res;
5453 : }
5454 : }
5455 : break;
5456 : }
5457 64038 : default:;
5458 : }
5459 64038 : switch (TREE_CODE (_q20))
5460 : {
5461 1146 : CASE_CONVERT:
5462 1146 : {
5463 1146 : tree _q30 = TREE_OPERAND (_q20, 0);
5464 1146 : switch (TREE_CODE (_p1))
5465 : {
5466 84 : CASE_CONVERT:
5467 84 : {
5468 84 : tree _q60 = TREE_OPERAND (_p1, 0);
5469 84 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5470 : {
5471 54 : {
5472 54 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5473 54 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5474 54 : if (res) return res;
5475 : }
5476 : }
5477 : break;
5478 : }
5479 1092 : default:;
5480 : }
5481 1092 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5482 : {
5483 0 : {
5484 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5485 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5486 0 : if (res) return res;
5487 : }
5488 : }
5489 : break;
5490 : }
5491 63984 : default:;
5492 : }
5493 63984 : switch (TREE_CODE (_p1))
5494 : {
5495 410 : CASE_CONVERT:
5496 410 : {
5497 410 : tree _q50 = TREE_OPERAND (_p1, 0);
5498 410 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5499 : {
5500 0 : {
5501 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5502 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5503 0 : if (res) return res;
5504 : }
5505 : }
5506 : break;
5507 : }
5508 63984 : default:;
5509 : }
5510 63984 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5511 : {
5512 1483 : {
5513 1483 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5514 1483 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5515 1483 : if (res) return res;
5516 : }
5517 : }
5518 : break;
5519 : }
5520 153730 : case MINUS_EXPR:
5521 153730 : {
5522 153730 : tree _q20 = TREE_OPERAND (_p0, 0);
5523 153730 : tree _q21 = TREE_OPERAND (_p0, 1);
5524 153730 : switch (TREE_CODE (_p1))
5525 : {
5526 177 : case MINUS_EXPR:
5527 177 : {
5528 177 : tree _q50 = TREE_OPERAND (_p1, 0);
5529 177 : tree _q51 = TREE_OPERAND (_p1, 1);
5530 177 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5531 : {
5532 40 : {
5533 40 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5534 80 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5535 40 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5536 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5537 : )
5538 : {
5539 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1523;
5540 0 : {
5541 0 : tree res_op0;
5542 0 : res_op0 = captures[0];
5543 0 : tree res_op1;
5544 0 : res_op1 = captures[2];
5545 0 : tree _r;
5546 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5547 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5548 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5549 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
5550 0 : return _r;
5551 : }
5552 0 : next_after_fail1523:;
5553 : }
5554 : }
5555 : }
5556 177 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5557 : {
5558 40 : {
5559 40 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5560 80 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5561 40 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5562 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5563 : )
5564 : {
5565 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1524;
5566 0 : {
5567 0 : tree res_op0;
5568 0 : res_op0 = captures[2];
5569 0 : tree res_op1;
5570 0 : res_op1 = captures[1];
5571 0 : tree _r;
5572 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5573 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5574 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5575 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
5576 0 : return _r;
5577 : }
5578 0 : next_after_fail1524:;
5579 : }
5580 : }
5581 : }
5582 : break;
5583 : }
5584 153730 : default:;
5585 : }
5586 153730 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5587 : {
5588 92 : {
5589 92 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5590 92 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, EQ_EXPR);
5591 92 : if (res) return res;
5592 : }
5593 : }
5594 : break;
5595 : }
5596 32734 : case POINTER_DIFF_EXPR:
5597 32734 : {
5598 32734 : tree _q20 = TREE_OPERAND (_p0, 0);
5599 32734 : tree _q21 = TREE_OPERAND (_p0, 1);
5600 32734 : switch (TREE_CODE (_p1))
5601 : {
5602 1289 : case POINTER_DIFF_EXPR:
5603 1289 : {
5604 1289 : tree _q50 = TREE_OPERAND (_p1, 0);
5605 1289 : tree _q51 = TREE_OPERAND (_p1, 1);
5606 1289 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5607 : {
5608 0 : {
5609 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5610 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5611 0 : if (res) return res;
5612 : }
5613 : }
5614 1289 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5615 : {
5616 0 : {
5617 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5618 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, EQ_EXPR);
5619 0 : if (res) return res;
5620 : }
5621 : }
5622 : break;
5623 : }
5624 : default:;
5625 : }
5626 : break;
5627 : }
5628 27600256 : default:;
5629 : }
5630 27600256 : {
5631 27600256 : tree _p0_pops[1];
5632 27600256 : if (tree_logical_inverted_value (_p0, _p0_pops))
5633 : {
5634 7858 : tree _q20 = _p0_pops[0];
5635 7858 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5636 : {
5637 9 : if (tree_truth_valued_p (_p1))
5638 : {
5639 0 : {
5640 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5641 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1525;
5642 0 : {
5643 0 : tree _r;
5644 0 : _r = constant_boolean_node (EQ_EXPR != EQ_EXPR, type);
5645 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5646 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5647 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
5648 0 : return _r;
5649 : }
5650 0 : next_after_fail1525:;
5651 : }
5652 : }
5653 : }
5654 : }
5655 : }
5656 27600256 : if (tree_truth_valued_p (_p0))
5657 : {
5658 631197 : switch (TREE_CODE (_p1))
5659 : {
5660 24 : case BIT_NOT_EXPR:
5661 24 : {
5662 24 : tree _q30 = TREE_OPERAND (_p1, 0);
5663 24 : if (tree_truth_valued_p (_q30))
5664 : {
5665 4 : {
5666 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5667 4 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures);
5668 4 : if (res) return res;
5669 : }
5670 : }
5671 : break;
5672 : }
5673 631197 : default:;
5674 : }
5675 631197 : {
5676 631197 : tree _p1_pops[1];
5677 631197 : if (tree_logical_inverted_value (_p1, _p1_pops))
5678 : {
5679 103 : tree _q30 = _p1_pops[0];
5680 103 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5681 : {
5682 0 : {
5683 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5684 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1526;
5685 0 : {
5686 0 : tree _r;
5687 0 : _r = constant_boolean_node (EQ_EXPR != EQ_EXPR, type);
5688 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5689 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5690 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
5691 0 : return _r;
5692 : }
5693 0 : next_after_fail1526:;
5694 : }
5695 : }
5696 : }
5697 : }
5698 : }
5699 27600256 : switch (TREE_CODE (_p1))
5700 : {
5701 88306 : case PLUS_EXPR:
5702 88306 : {
5703 88306 : tree _q30 = TREE_OPERAND (_p1, 0);
5704 88306 : tree _q31 = TREE_OPERAND (_p1, 1);
5705 88306 : switch (TREE_CODE (_q31))
5706 : {
5707 26 : CASE_CONVERT:
5708 26 : {
5709 26 : tree _q50 = TREE_OPERAND (_q31, 0);
5710 26 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5711 : {
5712 0 : {
5713 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5714 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5715 0 : if (res) return res;
5716 : }
5717 : }
5718 : break;
5719 : }
5720 88306 : default:;
5721 : }
5722 88306 : switch (TREE_CODE (_q30))
5723 : {
5724 22544 : CASE_CONVERT:
5725 22544 : {
5726 22544 : tree _q40 = TREE_OPERAND (_q30, 0);
5727 22544 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5728 : {
5729 0 : {
5730 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5731 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5732 0 : if (res) return res;
5733 : }
5734 : }
5735 : break;
5736 : }
5737 88306 : default:;
5738 : }
5739 88306 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5740 : {
5741 0 : {
5742 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5743 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5744 0 : if (res) return res;
5745 : }
5746 : }
5747 88306 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5748 : {
5749 0 : {
5750 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5751 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, EQ_EXPR);
5752 0 : if (res) return res;
5753 : }
5754 : }
5755 : break;
5756 : }
5757 27600256 : default:;
5758 : }
5759 27600256 : {
5760 27600256 : tree _p1_pops[1];
5761 27600256 : if (tree_nop_convert (_p1, _p1_pops))
5762 : {
5763 1507865 : tree _q30 = _p1_pops[0];
5764 1507865 : switch (TREE_CODE (_q30))
5765 : {
5766 899 : case PLUS_EXPR:
5767 899 : {
5768 899 : tree _q40 = TREE_OPERAND (_q30, 0);
5769 899 : tree _q41 = TREE_OPERAND (_q30, 1);
5770 899 : switch (TREE_CODE (_q41))
5771 : {
5772 2 : CASE_CONVERT:
5773 2 : {
5774 2 : tree _q60 = TREE_OPERAND (_q41, 0);
5775 2 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5776 : {
5777 0 : {
5778 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5779 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5780 0 : if (res) return res;
5781 : }
5782 : }
5783 : break;
5784 : }
5785 899 : default:;
5786 : }
5787 899 : switch (TREE_CODE (_q40))
5788 : {
5789 764 : CASE_CONVERT:
5790 764 : {
5791 764 : tree _q50 = TREE_OPERAND (_q40, 0);
5792 764 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5793 : {
5794 0 : {
5795 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5796 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5797 0 : if (res) return res;
5798 : }
5799 : }
5800 : break;
5801 : }
5802 899 : default:;
5803 : }
5804 899 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5805 : {
5806 0 : {
5807 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5808 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5809 0 : if (res) return res;
5810 : }
5811 : }
5812 899 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5813 : {
5814 0 : {
5815 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5816 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5817 0 : if (res) return res;
5818 : }
5819 : }
5820 : break;
5821 : }
5822 : default:;
5823 : }
5824 : }
5825 : }
5826 27600256 : switch (TREE_CODE (_p0))
5827 : {
5828 5204054 : CASE_CONVERT:
5829 5204054 : {
5830 5204054 : tree _q20 = TREE_OPERAND (_p0, 0);
5831 5204054 : switch (TREE_CODE (_p1))
5832 : {
5833 159 : case POINTER_PLUS_EXPR:
5834 159 : {
5835 159 : tree _q40 = TREE_OPERAND (_p1, 0);
5836 159 : tree _q41 = TREE_OPERAND (_p1, 1);
5837 159 : switch (TREE_CODE (_q40))
5838 : {
5839 96 : CASE_CONVERT:
5840 96 : {
5841 96 : tree _q50 = TREE_OPERAND (_q40, 0);
5842 96 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5843 : {
5844 3 : {
5845 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5846 3 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5847 3 : if (res) return res;
5848 : }
5849 : }
5850 : break;
5851 : }
5852 156 : default:;
5853 : }
5854 156 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5855 : {
5856 0 : {
5857 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5858 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5859 0 : if (res) return res;
5860 : }
5861 : }
5862 : break;
5863 : }
5864 5204051 : default:;
5865 : }
5866 5204051 : {
5867 5204051 : tree _p1_pops[1];
5868 5204051 : if (tree_nop_convert (_p1, _p1_pops))
5869 : {
5870 1267850 : tree _q40 = _p1_pops[0];
5871 1267850 : switch (TREE_CODE (_q40))
5872 : {
5873 18 : case POINTER_PLUS_EXPR:
5874 18 : {
5875 18 : tree _q50 = TREE_OPERAND (_q40, 0);
5876 18 : tree _q51 = TREE_OPERAND (_q40, 1);
5877 18 : switch (TREE_CODE (_q50))
5878 : {
5879 0 : CASE_CONVERT:
5880 0 : {
5881 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5882 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5883 : {
5884 0 : {
5885 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5886 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5887 0 : if (res) return res;
5888 : }
5889 : }
5890 : break;
5891 : }
5892 18 : default:;
5893 : }
5894 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5895 : {
5896 0 : {
5897 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5898 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5899 0 : if (res) return res;
5900 : }
5901 : }
5902 : break;
5903 : }
5904 : default:;
5905 : }
5906 : }
5907 : }
5908 5204051 : break;
5909 : }
5910 27600253 : default:;
5911 : }
5912 27600253 : {
5913 27600253 : tree _p0_pops[1];
5914 27600253 : if (tree_nop_convert (_p0, _p0_pops))
5915 : {
5916 3029834 : tree _q20 = _p0_pops[0];
5917 3029834 : switch (TREE_CODE (_q20))
5918 : {
5919 97 : case POINTER_PLUS_EXPR:
5920 97 : {
5921 97 : tree _q30 = TREE_OPERAND (_q20, 0);
5922 97 : tree _q31 = TREE_OPERAND (_q20, 1);
5923 97 : switch (TREE_CODE (_q30))
5924 : {
5925 21 : CASE_CONVERT:
5926 21 : {
5927 21 : tree _q40 = TREE_OPERAND (_q30, 0);
5928 21 : switch (TREE_CODE (_p1))
5929 : {
5930 0 : CASE_CONVERT:
5931 0 : {
5932 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5933 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5934 : {
5935 0 : {
5936 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5937 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5938 0 : if (res) return res;
5939 : }
5940 : }
5941 : break;
5942 : }
5943 21 : default:;
5944 : }
5945 21 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5946 : {
5947 0 : {
5948 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5949 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5950 0 : if (res) return res;
5951 : }
5952 : }
5953 : break;
5954 : }
5955 97 : default:;
5956 : }
5957 97 : switch (TREE_CODE (_p1))
5958 : {
5959 27 : CASE_CONVERT:
5960 27 : {
5961 27 : tree _q60 = TREE_OPERAND (_p1, 0);
5962 27 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5963 : {
5964 0 : {
5965 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5966 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5967 0 : if (res) return res;
5968 : }
5969 : }
5970 : break;
5971 : }
5972 97 : default:;
5973 : }
5974 97 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5975 : {
5976 0 : {
5977 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5978 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5979 0 : if (res) return res;
5980 : }
5981 : }
5982 : break;
5983 : }
5984 : default:;
5985 : }
5986 : }
5987 : }
5988 27600253 : switch (TREE_CODE (_p1))
5989 : {
5990 6066 : case POINTER_PLUS_EXPR:
5991 6066 : {
5992 6066 : tree _q30 = TREE_OPERAND (_p1, 0);
5993 6066 : tree _q31 = TREE_OPERAND (_p1, 1);
5994 6066 : switch (TREE_CODE (_q30))
5995 : {
5996 3491 : CASE_CONVERT:
5997 3491 : {
5998 3491 : tree _q40 = TREE_OPERAND (_q30, 0);
5999 3491 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6000 : {
6001 0 : {
6002 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6003 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
6004 0 : if (res) return res;
6005 : }
6006 : }
6007 : break;
6008 : }
6009 6066 : default:;
6010 : }
6011 6066 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6012 : {
6013 0 : {
6014 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6015 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
6016 0 : if (res) return res;
6017 : }
6018 : }
6019 : break;
6020 : }
6021 27600253 : default:;
6022 : }
6023 27600253 : {
6024 27600253 : tree _p1_pops[1];
6025 27600253 : if (tree_nop_convert (_p1, _p1_pops))
6026 : {
6027 1507865 : tree _q30 = _p1_pops[0];
6028 1507865 : switch (TREE_CODE (_q30))
6029 : {
6030 32 : case POINTER_PLUS_EXPR:
6031 32 : {
6032 32 : tree _q40 = TREE_OPERAND (_q30, 0);
6033 32 : tree _q41 = TREE_OPERAND (_q30, 1);
6034 32 : switch (TREE_CODE (_q40))
6035 : {
6036 0 : CASE_CONVERT:
6037 0 : {
6038 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6039 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6040 : {
6041 0 : {
6042 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6043 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
6044 0 : if (res) return res;
6045 : }
6046 : }
6047 : break;
6048 : }
6049 32 : default:;
6050 : }
6051 32 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6052 : {
6053 0 : {
6054 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6055 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
6056 0 : if (res) return res;
6057 : }
6058 : }
6059 : break;
6060 : }
6061 : default:;
6062 : }
6063 : }
6064 : }
6065 27600253 : switch (TREE_CODE (_p0))
6066 : {
6067 62501 : case POINTER_PLUS_EXPR:
6068 62501 : {
6069 62501 : tree _q20 = TREE_OPERAND (_p0, 0);
6070 62501 : tree _q21 = TREE_OPERAND (_p0, 1);
6071 62501 : switch (TREE_CODE (_p1))
6072 : {
6073 12329 : case ADDR_EXPR:
6074 12329 : {
6075 12329 : {
6076 12329 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6077 12329 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, EQ_EXPR);
6078 12329 : if (res) return res;
6079 : }
6080 12328 : break;
6081 : }
6082 62500 : default:;
6083 : }
6084 62500 : switch (TREE_CODE (_q20))
6085 : {
6086 1180 : case ADDR_EXPR:
6087 1180 : {
6088 1180 : switch (TREE_CODE (_p1))
6089 : {
6090 17 : case POINTER_PLUS_EXPR:
6091 17 : {
6092 17 : tree _q50 = TREE_OPERAND (_p1, 0);
6093 17 : tree _q51 = TREE_OPERAND (_p1, 1);
6094 17 : switch (TREE_CODE (_q50))
6095 : {
6096 6 : case ADDR_EXPR:
6097 6 : {
6098 6 : {
6099 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
6100 6 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6101 6 : if (res) return res;
6102 : }
6103 6 : break;
6104 : }
6105 : default:;
6106 : }
6107 : break;
6108 : }
6109 : default:;
6110 : }
6111 : break;
6112 : }
6113 : default:;
6114 : }
6115 : break;
6116 : }
6117 85841 : case ADDR_EXPR:
6118 85841 : {
6119 85841 : switch (TREE_CODE (_p1))
6120 : {
6121 0 : case POINTER_PLUS_EXPR:
6122 0 : {
6123 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6124 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6125 0 : {
6126 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6127 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, EQ_EXPR);
6128 0 : if (res) return res;
6129 : }
6130 0 : break;
6131 : }
6132 : default:;
6133 : }
6134 : break;
6135 : }
6136 27600252 : default:;
6137 : }
6138 27600252 : switch (TREE_CODE (_p1))
6139 : {
6140 3608 : case MINUS_EXPR:
6141 3608 : {
6142 3608 : tree _q30 = TREE_OPERAND (_p1, 0);
6143 3608 : tree _q31 = TREE_OPERAND (_p1, 1);
6144 3608 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6145 : {
6146 0 : {
6147 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6148 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, EQ_EXPR);
6149 0 : if (res) return res;
6150 : }
6151 : }
6152 : break;
6153 : }
6154 27600252 : default:;
6155 : }
6156 27600252 : switch (TREE_CODE (_p0))
6157 : {
6158 4399 : case TRUNC_DIV_EXPR:
6159 4399 : {
6160 4399 : tree _q20 = TREE_OPERAND (_p0, 0);
6161 4399 : tree _q21 = TREE_OPERAND (_p0, 1);
6162 4399 : if (tree_expr_nonnegative_p (_q20))
6163 : {
6164 1124 : if (tree_expr_nonnegative_p (_q21))
6165 : {
6166 1070 : if (integer_zerop (_p1))
6167 : {
6168 256 : {
6169 256 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6170 256 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
6171 256 : if (res) return res;
6172 : }
6173 : }
6174 : }
6175 : }
6176 : break;
6177 : }
6178 5204051 : CASE_CONVERT:
6179 5204051 : {
6180 5204051 : tree _q20 = TREE_OPERAND (_p0, 0);
6181 5204051 : switch (TREE_CODE (_p1))
6182 : {
6183 1671243 : CASE_CONVERT:
6184 1671243 : {
6185 1671243 : tree _q40 = TREE_OPERAND (_p1, 0);
6186 1671243 : switch (TREE_CODE (_q40))
6187 : {
6188 0 : case MINUS_EXPR:
6189 0 : {
6190 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6191 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6192 0 : switch (TREE_CODE (_q50))
6193 : {
6194 0 : case INTEGER_CST:
6195 0 : {
6196 0 : switch (TREE_CODE (_q51))
6197 : {
6198 0 : CASE_CONVERT:
6199 0 : {
6200 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6201 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6202 : {
6203 0 : {
6204 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6205 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6206 0 : if (res) return res;
6207 : }
6208 : }
6209 : break;
6210 : }
6211 : default:;
6212 : }
6213 : break;
6214 : }
6215 : default:;
6216 : }
6217 : break;
6218 : }
6219 : default:;
6220 : }
6221 : break;
6222 : }
6223 5204051 : default:;
6224 : }
6225 5204051 : switch (TREE_CODE (_q20))
6226 : {
6227 244 : case MINUS_EXPR:
6228 244 : {
6229 244 : tree _q30 = TREE_OPERAND (_q20, 0);
6230 244 : tree _q31 = TREE_OPERAND (_q20, 1);
6231 244 : switch (TREE_CODE (_q30))
6232 : {
6233 56 : case INTEGER_CST:
6234 56 : {
6235 56 : switch (TREE_CODE (_q31))
6236 : {
6237 0 : CASE_CONVERT:
6238 0 : {
6239 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6240 0 : switch (TREE_CODE (_p1))
6241 : {
6242 0 : CASE_CONVERT:
6243 0 : {
6244 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6245 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6246 : {
6247 0 : {
6248 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6249 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6250 0 : if (res) return res;
6251 : }
6252 : }
6253 : break;
6254 : }
6255 0 : default:;
6256 : }
6257 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6258 : {
6259 0 : {
6260 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6261 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6262 0 : if (res) return res;
6263 : }
6264 : }
6265 : break;
6266 : }
6267 56 : default:;
6268 : }
6269 56 : switch (TREE_CODE (_p1))
6270 : {
6271 0 : CASE_CONVERT:
6272 0 : {
6273 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6274 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6275 : {
6276 0 : {
6277 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6278 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6279 0 : if (res) return res;
6280 : }
6281 : }
6282 : break;
6283 : }
6284 56 : default:;
6285 : }
6286 56 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6287 : {
6288 0 : {
6289 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6290 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6291 0 : if (res) return res;
6292 : }
6293 : }
6294 : break;
6295 : }
6296 : default:;
6297 : }
6298 : break;
6299 : }
6300 5204051 : default:;
6301 : }
6302 5204051 : switch (TREE_CODE (_p1))
6303 : {
6304 1671243 : CASE_CONVERT:
6305 1671243 : {
6306 1671243 : tree _q40 = TREE_OPERAND (_p1, 0);
6307 1671243 : switch (TREE_CODE (_q40))
6308 : {
6309 0 : case MINUS_EXPR:
6310 0 : {
6311 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6312 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6313 0 : switch (TREE_CODE (_q50))
6314 : {
6315 0 : case INTEGER_CST:
6316 0 : {
6317 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6318 : {
6319 0 : {
6320 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6321 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6322 0 : if (res) return res;
6323 : }
6324 : }
6325 : break;
6326 : }
6327 : default:;
6328 : }
6329 : break;
6330 : }
6331 : default:;
6332 : }
6333 : break;
6334 : }
6335 283 : case MINUS_EXPR:
6336 283 : {
6337 283 : tree _q40 = TREE_OPERAND (_p1, 0);
6338 283 : tree _q41 = TREE_OPERAND (_p1, 1);
6339 283 : switch (TREE_CODE (_q40))
6340 : {
6341 80 : case INTEGER_CST:
6342 80 : {
6343 80 : switch (TREE_CODE (_q41))
6344 : {
6345 12 : CASE_CONVERT:
6346 12 : {
6347 12 : tree _q60 = TREE_OPERAND (_q41, 0);
6348 12 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6349 : {
6350 0 : {
6351 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6352 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6353 0 : if (res) return res;
6354 : }
6355 : }
6356 : break;
6357 : }
6358 80 : default:;
6359 : }
6360 80 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6361 : {
6362 0 : {
6363 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6364 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6365 0 : if (res) return res;
6366 : }
6367 : }
6368 : break;
6369 : }
6370 : default:;
6371 : }
6372 : break;
6373 : }
6374 : default:;
6375 : }
6376 : break;
6377 : }
6378 153648 : case MINUS_EXPR:
6379 153648 : {
6380 153648 : tree _q20 = TREE_OPERAND (_p0, 0);
6381 153648 : tree _q21 = TREE_OPERAND (_p0, 1);
6382 153648 : switch (TREE_CODE (_q20))
6383 : {
6384 40100 : case INTEGER_CST:
6385 40100 : {
6386 40100 : switch (TREE_CODE (_q21))
6387 : {
6388 23537 : CASE_CONVERT:
6389 23537 : {
6390 23537 : tree _q40 = TREE_OPERAND (_q21, 0);
6391 23537 : switch (TREE_CODE (_p1))
6392 : {
6393 0 : CASE_CONVERT:
6394 0 : {
6395 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6396 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6397 : {
6398 0 : {
6399 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6400 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6401 0 : if (res) return res;
6402 : }
6403 : }
6404 : break;
6405 : }
6406 23537 : default:;
6407 : }
6408 23537 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6409 : {
6410 0 : {
6411 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6412 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6413 0 : if (res) return res;
6414 : }
6415 : }
6416 : break;
6417 : }
6418 40100 : default:;
6419 : }
6420 40100 : switch (TREE_CODE (_p1))
6421 : {
6422 45 : CASE_CONVERT:
6423 45 : {
6424 45 : tree _q50 = TREE_OPERAND (_p1, 0);
6425 45 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6426 : {
6427 0 : {
6428 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6429 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6430 0 : if (res) return res;
6431 : }
6432 : }
6433 : break;
6434 : }
6435 40100 : default:;
6436 : }
6437 40100 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6438 : {
6439 2 : {
6440 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6441 2 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6442 2 : if (res) return res;
6443 : }
6444 : }
6445 : break;
6446 : }
6447 : default:;
6448 : }
6449 : break;
6450 : }
6451 27600006 : default:;
6452 : }
6453 27600006 : switch (TREE_CODE (_p1))
6454 : {
6455 1971979 : CASE_CONVERT:
6456 1971979 : {
6457 1971979 : tree _q30 = TREE_OPERAND (_p1, 0);
6458 1971979 : switch (TREE_CODE (_q30))
6459 : {
6460 12 : case MINUS_EXPR:
6461 12 : {
6462 12 : tree _q40 = TREE_OPERAND (_q30, 0);
6463 12 : tree _q41 = TREE_OPERAND (_q30, 1);
6464 12 : switch (TREE_CODE (_q40))
6465 : {
6466 12 : case INTEGER_CST:
6467 12 : {
6468 12 : switch (TREE_CODE (_q41))
6469 : {
6470 12 : CASE_CONVERT:
6471 12 : {
6472 12 : tree _q60 = TREE_OPERAND (_q41, 0);
6473 12 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6474 : {
6475 0 : {
6476 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6477 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6478 0 : if (res) return res;
6479 : }
6480 : }
6481 : break;
6482 : }
6483 12 : default:;
6484 : }
6485 12 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6486 : {
6487 0 : {
6488 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6489 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6490 0 : if (res) return res;
6491 : }
6492 : }
6493 : break;
6494 : }
6495 : default:;
6496 : }
6497 : break;
6498 : }
6499 : default:;
6500 : }
6501 : break;
6502 : }
6503 3608 : case MINUS_EXPR:
6504 3608 : {
6505 3608 : tree _q30 = TREE_OPERAND (_p1, 0);
6506 3608 : tree _q31 = TREE_OPERAND (_p1, 1);
6507 3608 : switch (TREE_CODE (_q30))
6508 : {
6509 286 : case INTEGER_CST:
6510 286 : {
6511 286 : switch (TREE_CODE (_q31))
6512 : {
6513 16 : CASE_CONVERT:
6514 16 : {
6515 16 : tree _q50 = TREE_OPERAND (_q31, 0);
6516 16 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6517 : {
6518 0 : {
6519 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6520 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6521 0 : if (res) return res;
6522 : }
6523 : }
6524 : break;
6525 : }
6526 286 : default:;
6527 : }
6528 286 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6529 : {
6530 0 : {
6531 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6532 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, EQ_EXPR);
6533 0 : if (res) return res;
6534 : }
6535 : }
6536 : break;
6537 : }
6538 : default:;
6539 : }
6540 : break;
6541 : }
6542 27600006 : default:;
6543 : }
6544 27600006 : switch (TREE_CODE (_p0))
6545 : {
6546 1131 : case LT_EXPR:
6547 1131 : {
6548 1131 : tree _q20 = TREE_OPERAND (_p0, 0);
6549 1131 : tree _q21 = TREE_OPERAND (_p0, 1);
6550 1131 : switch (TREE_CODE (_p1))
6551 : {
6552 16 : case GT_EXPR:
6553 16 : {
6554 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6555 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6556 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6557 : {
6558 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6559 : {
6560 0 : {
6561 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6562 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6563 0 : if (res) return res;
6564 : }
6565 : }
6566 : }
6567 : break;
6568 : }
6569 0 : case EQ_EXPR:
6570 0 : {
6571 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6572 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6573 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6574 : {
6575 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6576 : {
6577 0 : {
6578 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6579 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6580 0 : if (res) return res;
6581 : }
6582 : }
6583 : }
6584 : break;
6585 : }
6586 0 : case NE_EXPR:
6587 0 : {
6588 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6589 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6590 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6591 : {
6592 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6593 : {
6594 0 : {
6595 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6596 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6597 0 : if (res) return res;
6598 : }
6599 : }
6600 : }
6601 : break;
6602 : }
6603 : default:;
6604 : }
6605 : break;
6606 : }
6607 1557 : case LE_EXPR:
6608 1557 : {
6609 1557 : tree _q20 = TREE_OPERAND (_p0, 0);
6610 1557 : tree _q21 = TREE_OPERAND (_p0, 1);
6611 1557 : switch (TREE_CODE (_p1))
6612 : {
6613 4 : case GE_EXPR:
6614 4 : {
6615 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6616 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6617 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6618 : {
6619 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6620 : {
6621 0 : {
6622 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6623 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6624 0 : if (res) return res;
6625 : }
6626 : }
6627 : }
6628 : break;
6629 : }
6630 0 : case EQ_EXPR:
6631 0 : {
6632 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6633 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6634 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6635 : {
6636 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6637 : {
6638 0 : {
6639 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6640 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6641 0 : if (res) return res;
6642 : }
6643 : }
6644 : }
6645 : break;
6646 : }
6647 8 : case NE_EXPR:
6648 8 : {
6649 8 : tree _q50 = TREE_OPERAND (_p1, 0);
6650 8 : tree _q51 = TREE_OPERAND (_p1, 1);
6651 8 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6652 : {
6653 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6654 : {
6655 0 : {
6656 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6657 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6658 0 : if (res) return res;
6659 : }
6660 : }
6661 : }
6662 : break;
6663 : }
6664 : default:;
6665 : }
6666 : break;
6667 : }
6668 69169 : case GT_EXPR:
6669 69169 : {
6670 69169 : tree _q20 = TREE_OPERAND (_p0, 0);
6671 69169 : tree _q21 = TREE_OPERAND (_p0, 1);
6672 69169 : switch (TREE_CODE (_p1))
6673 : {
6674 67392 : case GT_EXPR:
6675 67392 : {
6676 67392 : tree _q50 = TREE_OPERAND (_p1, 0);
6677 67392 : tree _q51 = TREE_OPERAND (_p1, 1);
6678 67392 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6679 : {
6680 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6681 : {
6682 0 : {
6683 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6684 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6685 0 : if (res) return res;
6686 : }
6687 0 : {
6688 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6689 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6690 0 : if (res) return res;
6691 : }
6692 : }
6693 : }
6694 : break;
6695 : }
6696 57 : case EQ_EXPR:
6697 57 : {
6698 57 : tree _q50 = TREE_OPERAND (_p1, 0);
6699 57 : tree _q51 = TREE_OPERAND (_p1, 1);
6700 57 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6701 : {
6702 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6703 : {
6704 0 : {
6705 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6706 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6707 0 : if (res) return res;
6708 : }
6709 : }
6710 : }
6711 : break;
6712 : }
6713 37 : case NE_EXPR:
6714 37 : {
6715 37 : tree _q50 = TREE_OPERAND (_p1, 0);
6716 37 : tree _q51 = TREE_OPERAND (_p1, 1);
6717 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6718 : {
6719 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6720 : {
6721 0 : {
6722 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6723 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6724 0 : if (res) return res;
6725 : }
6726 : }
6727 : }
6728 : break;
6729 : }
6730 41 : case LT_EXPR:
6731 41 : {
6732 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6733 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6734 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6735 : {
6736 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6737 : {
6738 0 : {
6739 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6740 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6741 0 : if (res) return res;
6742 : }
6743 : }
6744 : }
6745 : break;
6746 : }
6747 : default:;
6748 : }
6749 : break;
6750 : }
6751 6717 : case GE_EXPR:
6752 6717 : {
6753 6717 : tree _q20 = TREE_OPERAND (_p0, 0);
6754 6717 : tree _q21 = TREE_OPERAND (_p0, 1);
6755 6717 : switch (TREE_CODE (_p1))
6756 : {
6757 27 : case GE_EXPR:
6758 27 : {
6759 27 : tree _q50 = TREE_OPERAND (_p1, 0);
6760 27 : tree _q51 = TREE_OPERAND (_p1, 1);
6761 27 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6762 : {
6763 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6764 : {
6765 0 : {
6766 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6767 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6768 0 : if (res) return res;
6769 : }
6770 0 : {
6771 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6772 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6773 0 : if (res) return res;
6774 : }
6775 : }
6776 : }
6777 : break;
6778 : }
6779 90 : case EQ_EXPR:
6780 90 : {
6781 90 : tree _q50 = TREE_OPERAND (_p1, 0);
6782 90 : tree _q51 = TREE_OPERAND (_p1, 1);
6783 90 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6784 : {
6785 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6786 : {
6787 0 : {
6788 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6789 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6790 0 : if (res) return res;
6791 : }
6792 : }
6793 : }
6794 : break;
6795 : }
6796 56 : case NE_EXPR:
6797 56 : {
6798 56 : tree _q50 = TREE_OPERAND (_p1, 0);
6799 56 : tree _q51 = TREE_OPERAND (_p1, 1);
6800 56 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6801 : {
6802 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6803 : {
6804 0 : {
6805 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6806 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6807 0 : if (res) return res;
6808 : }
6809 : }
6810 : }
6811 : break;
6812 : }
6813 8 : case LE_EXPR:
6814 8 : {
6815 8 : tree _q50 = TREE_OPERAND (_p1, 0);
6816 8 : tree _q51 = TREE_OPERAND (_p1, 1);
6817 8 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6818 : {
6819 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6820 : {
6821 0 : {
6822 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6823 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6824 0 : if (res) return res;
6825 : }
6826 : }
6827 : }
6828 : break;
6829 : }
6830 : default:;
6831 : }
6832 : break;
6833 : }
6834 32634 : case EQ_EXPR:
6835 32634 : {
6836 32634 : tree _q20 = TREE_OPERAND (_p0, 0);
6837 32634 : tree _q21 = TREE_OPERAND (_p0, 1);
6838 32634 : switch (TREE_CODE (_p1))
6839 : {
6840 5 : case LT_EXPR:
6841 5 : {
6842 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6843 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6844 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6845 : {
6846 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6847 : {
6848 0 : {
6849 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6850 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6851 0 : if (res) return res;
6852 : }
6853 : }
6854 : }
6855 : break;
6856 : }
6857 4 : case LE_EXPR:
6858 4 : {
6859 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6860 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6861 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6862 : {
6863 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6864 : {
6865 0 : {
6866 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6867 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6868 0 : if (res) return res;
6869 : }
6870 : }
6871 : }
6872 : break;
6873 : }
6874 75 : case GT_EXPR:
6875 75 : {
6876 75 : tree _q50 = TREE_OPERAND (_p1, 0);
6877 75 : tree _q51 = TREE_OPERAND (_p1, 1);
6878 75 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6879 : {
6880 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6881 : {
6882 0 : {
6883 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6884 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6885 0 : if (res) return res;
6886 : }
6887 : }
6888 : }
6889 : break;
6890 : }
6891 112 : case GE_EXPR:
6892 112 : {
6893 112 : tree _q50 = TREE_OPERAND (_p1, 0);
6894 112 : tree _q51 = TREE_OPERAND (_p1, 1);
6895 112 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6896 : {
6897 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6898 : {
6899 0 : {
6900 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6901 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6902 0 : if (res) return res;
6903 : }
6904 : }
6905 : }
6906 : break;
6907 : }
6908 : default:;
6909 : }
6910 : break;
6911 : }
6912 12093 : case NE_EXPR:
6913 12093 : {
6914 12093 : tree _q20 = TREE_OPERAND (_p0, 0);
6915 12093 : tree _q21 = TREE_OPERAND (_p0, 1);
6916 12093 : switch (TREE_CODE (_p1))
6917 : {
6918 6 : case LT_EXPR:
6919 6 : {
6920 6 : tree _q50 = TREE_OPERAND (_p1, 0);
6921 6 : tree _q51 = TREE_OPERAND (_p1, 1);
6922 6 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6923 : {
6924 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6925 : {
6926 0 : {
6927 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6928 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6929 0 : if (res) return res;
6930 : }
6931 : }
6932 : }
6933 : break;
6934 : }
6935 0 : case LE_EXPR:
6936 0 : {
6937 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6938 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6939 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6940 : {
6941 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6942 : {
6943 0 : {
6944 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6945 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6946 0 : if (res) return res;
6947 : }
6948 : }
6949 : }
6950 : break;
6951 : }
6952 21 : case GT_EXPR:
6953 21 : {
6954 21 : tree _q50 = TREE_OPERAND (_p1, 0);
6955 21 : tree _q51 = TREE_OPERAND (_p1, 1);
6956 21 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6957 : {
6958 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6959 : {
6960 0 : {
6961 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6962 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6963 0 : if (res) return res;
6964 : }
6965 : }
6966 : }
6967 : break;
6968 : }
6969 3 : case GE_EXPR:
6970 3 : {
6971 3 : tree _q50 = TREE_OPERAND (_p1, 0);
6972 3 : tree _q51 = TREE_OPERAND (_p1, 1);
6973 3 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6974 : {
6975 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6976 : {
6977 0 : {
6978 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6979 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6980 0 : if (res) return res;
6981 : }
6982 : }
6983 : }
6984 : break;
6985 : }
6986 : default:;
6987 : }
6988 : break;
6989 : }
6990 11432 : case MIN_EXPR:
6991 11432 : {
6992 11432 : tree _q20 = TREE_OPERAND (_p0, 0);
6993 11432 : tree _q21 = TREE_OPERAND (_p0, 1);
6994 11432 : switch (TREE_CODE (_p1))
6995 : {
6996 0 : case MAX_EXPR:
6997 0 : {
6998 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6999 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7000 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7001 : {
7002 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7003 : {
7004 0 : {
7005 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7006 0 : if (!HONOR_NANS (captures[0])
7007 : )
7008 : {
7009 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
7010 0 : {
7011 0 : tree res_op0;
7012 0 : res_op0 = captures[0];
7013 0 : tree res_op1;
7014 0 : res_op1 = captures[1];
7015 0 : tree _r;
7016 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7017 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7018 0 : return _r;
7019 : }
7020 0 : next_after_fail1527:;
7021 : }
7022 : }
7023 : }
7024 : }
7025 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7026 : {
7027 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7028 : {
7029 0 : {
7030 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7031 0 : if (!HONOR_NANS (captures[0])
7032 : )
7033 : {
7034 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
7035 0 : {
7036 0 : tree res_op0;
7037 0 : res_op0 = captures[0];
7038 0 : tree res_op1;
7039 0 : res_op1 = captures[1];
7040 0 : tree _r;
7041 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7042 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7043 0 : return _r;
7044 : }
7045 0 : next_after_fail1528:;
7046 : }
7047 : }
7048 : }
7049 : }
7050 : break;
7051 : }
7052 11432 : default:;
7053 : }
7054 11432 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7055 : {
7056 0 : {
7057 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7058 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7059 0 : if (res) return res;
7060 : }
7061 : }
7062 11432 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7063 : {
7064 0 : {
7065 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7066 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7067 0 : if (res) return res;
7068 : }
7069 : }
7070 : break;
7071 : }
7072 710 : case MAX_EXPR:
7073 710 : {
7074 710 : tree _q20 = TREE_OPERAND (_p0, 0);
7075 710 : tree _q21 = TREE_OPERAND (_p0, 1);
7076 710 : switch (TREE_CODE (_p1))
7077 : {
7078 0 : case MIN_EXPR:
7079 0 : {
7080 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7081 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7082 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7083 : {
7084 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7085 : {
7086 0 : {
7087 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7088 0 : if (!HONOR_NANS (captures[0])
7089 : )
7090 : {
7091 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
7092 0 : {
7093 0 : tree res_op0;
7094 0 : res_op0 = captures[0];
7095 0 : tree res_op1;
7096 0 : res_op1 = captures[1];
7097 0 : tree _r;
7098 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7099 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7100 0 : return _r;
7101 : }
7102 0 : next_after_fail1529:;
7103 : }
7104 : }
7105 : }
7106 : }
7107 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7108 : {
7109 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7110 : {
7111 0 : {
7112 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7113 0 : if (!HONOR_NANS (captures[0])
7114 : )
7115 : {
7116 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1530;
7117 0 : {
7118 0 : tree res_op0;
7119 0 : res_op0 = captures[0];
7120 0 : tree res_op1;
7121 0 : res_op1 = captures[1];
7122 0 : tree _r;
7123 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
7124 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7125 0 : return _r;
7126 : }
7127 0 : next_after_fail1530:;
7128 : }
7129 : }
7130 : }
7131 : }
7132 : break;
7133 : }
7134 710 : default:;
7135 : }
7136 710 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7137 : {
7138 0 : {
7139 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7140 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7141 0 : if (res) return res;
7142 : }
7143 : }
7144 710 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7145 : {
7146 1 : {
7147 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7148 1 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7149 1 : if (res) return res;
7150 : }
7151 : }
7152 : break;
7153 : }
7154 27600006 : default:;
7155 : }
7156 27600006 : if (tree_with_possible_nonzero_bits (_p0))
7157 : {
7158 9660159 : if (tree_with_known_nonzero_bits (_p1))
7159 : {
7160 8219940 : {
7161 8219940 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7162 8219940 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, EQ_EXPR);
7163 8219940 : if (res) return res;
7164 : }
7165 : }
7166 : }
7167 27583620 : if (tree_with_known_nonzero_bits (_p0))
7168 : {
7169 6260680 : if (tree_with_possible_nonzero_bits (_p1))
7170 : {
7171 6228860 : {
7172 6228860 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7173 6228860 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, EQ_EXPR);
7174 6228860 : if (res) return res;
7175 : }
7176 : }
7177 : }
7178 27583265 : switch (TREE_CODE (_p1))
7179 : {
7180 157 : case MIN_EXPR:
7181 157 : {
7182 157 : tree _q30 = TREE_OPERAND (_p1, 0);
7183 157 : tree _q31 = TREE_OPERAND (_p1, 1);
7184 157 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7185 : {
7186 0 : {
7187 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7188 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7189 0 : if (res) return res;
7190 : }
7191 : }
7192 157 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7193 : {
7194 0 : {
7195 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7196 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7197 0 : if (res) return res;
7198 : }
7199 : }
7200 : break;
7201 : }
7202 58 : case MAX_EXPR:
7203 58 : {
7204 58 : tree _q30 = TREE_OPERAND (_p1, 0);
7205 58 : tree _q31 = TREE_OPERAND (_p1, 1);
7206 58 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7207 : {
7208 0 : {
7209 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7210 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7211 0 : if (res) return res;
7212 : }
7213 : }
7214 58 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7215 : {
7216 0 : {
7217 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7218 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7219 0 : if (res) return res;
7220 : }
7221 : }
7222 : break;
7223 : }
7224 27583265 : default:;
7225 : }
7226 27583265 : switch (TREE_CODE (_p0))
7227 : {
7228 11432 : case MIN_EXPR:
7229 11432 : {
7230 11432 : tree _q20 = TREE_OPERAND (_p0, 0);
7231 11432 : tree _q21 = TREE_OPERAND (_p0, 1);
7232 11432 : switch (TREE_CODE (_q21))
7233 : {
7234 222 : case INTEGER_CST:
7235 222 : {
7236 222 : switch (TREE_CODE (_p1))
7237 : {
7238 0 : case INTEGER_CST:
7239 0 : {
7240 0 : {
7241 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7242 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, EQ_EXPR);
7243 0 : if (res) return res;
7244 : }
7245 0 : break;
7246 : }
7247 : default:;
7248 : }
7249 : break;
7250 : }
7251 : default:;
7252 : }
7253 : break;
7254 : }
7255 710 : case MAX_EXPR:
7256 710 : {
7257 710 : tree _q20 = TREE_OPERAND (_p0, 0);
7258 710 : tree _q21 = TREE_OPERAND (_p0, 1);
7259 710 : switch (TREE_CODE (_q21))
7260 : {
7261 453 : case INTEGER_CST:
7262 453 : {
7263 453 : switch (TREE_CODE (_p1))
7264 : {
7265 42 : case INTEGER_CST:
7266 42 : {
7267 42 : {
7268 42 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7269 42 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, EQ_EXPR);
7270 42 : if (res) return res;
7271 : }
7272 0 : break;
7273 : }
7274 : default:;
7275 : }
7276 : break;
7277 : }
7278 668 : default:;
7279 : }
7280 668 : if (tree_expr_nonnegative_p (_q20))
7281 : {
7282 162 : if (tree_expr_nonnegative_p (_q21))
7283 : {
7284 162 : if (integer_zerop (_p1))
7285 : {
7286 0 : {
7287 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7288 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR);
7289 0 : if (res) return res;
7290 : }
7291 : }
7292 : }
7293 : }
7294 : break;
7295 : }
7296 834607 : case BIT_AND_EXPR:
7297 834607 : {
7298 834607 : tree _q20 = TREE_OPERAND (_p0, 0);
7299 834607 : tree _q21 = TREE_OPERAND (_p0, 1);
7300 834607 : switch (TREE_CODE (_q20))
7301 : {
7302 784 : case LSHIFT_EXPR:
7303 784 : {
7304 784 : tree _q30 = TREE_OPERAND (_q20, 0);
7305 784 : tree _q31 = TREE_OPERAND (_q20, 1);
7306 784 : if (integer_pow2p (_q30))
7307 : {
7308 776 : if (integer_pow2p (_q21))
7309 : {
7310 1 : if (integer_zerop (_p1))
7311 : {
7312 1 : {
7313 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7314 1 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7315 1 : if (res) return res;
7316 : }
7317 : }
7318 : }
7319 : }
7320 783 : switch (TREE_CODE (_q31))
7321 : {
7322 0 : case INTEGER_CST:
7323 0 : {
7324 0 : switch (TREE_CODE (_q21))
7325 : {
7326 0 : case INTEGER_CST:
7327 0 : {
7328 0 : switch (TREE_CODE (_p1))
7329 : {
7330 0 : case INTEGER_CST:
7331 0 : {
7332 0 : {
7333 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7334 0 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, EQ_EXPR);
7335 0 : if (res) return res;
7336 : }
7337 0 : break;
7338 : }
7339 : default:;
7340 : }
7341 : break;
7342 : }
7343 : default:;
7344 : }
7345 : break;
7346 : }
7347 783 : default:;
7348 : }
7349 783 : if (integer_onep (_q30))
7350 : {
7351 775 : if (integer_pow2p (_q21))
7352 : {
7353 0 : if (integer_zerop (_p1))
7354 : {
7355 0 : {
7356 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7357 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7358 0 : if (res) return res;
7359 : }
7360 : }
7361 : }
7362 : }
7363 : break;
7364 : }
7365 2872 : case RSHIFT_EXPR:
7366 2872 : {
7367 2872 : tree _q30 = TREE_OPERAND (_q20, 0);
7368 2872 : tree _q31 = TREE_OPERAND (_q20, 1);
7369 2872 : if (integer_pow2p (_q30))
7370 : {
7371 1 : if (integer_pow2p (_q21))
7372 : {
7373 1 : if (integer_zerop (_p1))
7374 : {
7375 1 : {
7376 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7377 1 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7378 1 : if (res) return res;
7379 : }
7380 : }
7381 : }
7382 : }
7383 2871 : switch (TREE_CODE (_q31))
7384 : {
7385 417 : case INTEGER_CST:
7386 417 : {
7387 417 : switch (TREE_CODE (_q21))
7388 : {
7389 417 : case INTEGER_CST:
7390 417 : {
7391 417 : switch (TREE_CODE (_p1))
7392 : {
7393 417 : case INTEGER_CST:
7394 417 : {
7395 417 : {
7396 417 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7397 417 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, EQ_EXPR);
7398 417 : if (res) return res;
7399 : }
7400 0 : break;
7401 : }
7402 : default:;
7403 : }
7404 : break;
7405 : }
7406 : default:;
7407 : }
7408 : break;
7409 : }
7410 : default:;
7411 : }
7412 : break;
7413 : }
7414 834188 : default:;
7415 : }
7416 834188 : {
7417 834188 : tree _q20_pops[1];
7418 834188 : if (tree_nop_convert (_q20, _q20_pops))
7419 : {
7420 21612 : tree _q30 = _q20_pops[0];
7421 21612 : switch (TREE_CODE (_q30))
7422 : {
7423 0 : case LSHIFT_EXPR:
7424 0 : {
7425 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7426 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7427 0 : if (integer_onep (_q40))
7428 : {
7429 0 : if (integer_pow2p (_q21))
7430 : {
7431 0 : if (integer_zerop (_p1))
7432 : {
7433 0 : {
7434 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7435 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7436 0 : if (res) return res;
7437 : }
7438 : }
7439 : }
7440 : }
7441 : break;
7442 : }
7443 : default:;
7444 : }
7445 : }
7446 : }
7447 834188 : break;
7448 : }
7449 2065 : case LSHIFT_EXPR:
7450 2065 : {
7451 2065 : tree _q20 = TREE_OPERAND (_p0, 0);
7452 2065 : tree _q21 = TREE_OPERAND (_p0, 1);
7453 2065 : switch (TREE_CODE (_q20))
7454 : {
7455 336 : case INTEGER_CST:
7456 336 : {
7457 336 : switch (TREE_CODE (_p1))
7458 : {
7459 20 : case INTEGER_CST:
7460 20 : {
7461 20 : {
7462 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7463 20 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, EQ_EXPR);
7464 20 : if (res) return res;
7465 : }
7466 3 : break;
7467 : }
7468 : default:;
7469 : }
7470 : break;
7471 : }
7472 : default:;
7473 : }
7474 : break;
7475 : }
7476 0 : case LROTATE_EXPR:
7477 0 : {
7478 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7479 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7480 0 : switch (TREE_CODE (_p1))
7481 : {
7482 0 : case LROTATE_EXPR:
7483 0 : {
7484 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7485 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7486 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7487 : {
7488 0 : {
7489 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7490 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7491 0 : if (res) return res;
7492 : }
7493 : }
7494 : break;
7495 : }
7496 0 : default:;
7497 : }
7498 0 : switch (TREE_CODE (_q21))
7499 : {
7500 0 : case INTEGER_CST:
7501 0 : {
7502 0 : switch (TREE_CODE (_p1))
7503 : {
7504 0 : case INTEGER_CST:
7505 0 : {
7506 0 : {
7507 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7508 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7509 0 : if (res) return res;
7510 : }
7511 0 : break;
7512 : }
7513 : default:;
7514 : }
7515 : break;
7516 : }
7517 0 : default:;
7518 : }
7519 0 : switch (TREE_CODE (_p1))
7520 : {
7521 0 : case INTEGER_CST:
7522 0 : {
7523 0 : {
7524 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7525 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7526 0 : if (res) return res;
7527 : }
7528 0 : break;
7529 : }
7530 : default:;
7531 : }
7532 : break;
7533 : }
7534 42 : case RROTATE_EXPR:
7535 42 : {
7536 42 : tree _q20 = TREE_OPERAND (_p0, 0);
7537 42 : tree _q21 = TREE_OPERAND (_p0, 1);
7538 42 : switch (TREE_CODE (_p1))
7539 : {
7540 0 : case RROTATE_EXPR:
7541 0 : {
7542 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7543 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7544 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7545 : {
7546 0 : {
7547 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7548 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7549 0 : if (res) return res;
7550 : }
7551 : }
7552 : break;
7553 : }
7554 42 : default:;
7555 : }
7556 42 : switch (TREE_CODE (_q21))
7557 : {
7558 42 : case INTEGER_CST:
7559 42 : {
7560 42 : switch (TREE_CODE (_p1))
7561 : {
7562 0 : case INTEGER_CST:
7563 0 : {
7564 0 : {
7565 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7566 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7567 0 : if (res) return res;
7568 : }
7569 0 : break;
7570 : }
7571 : default:;
7572 : }
7573 : break;
7574 : }
7575 42 : default:;
7576 : }
7577 42 : switch (TREE_CODE (_p1))
7578 : {
7579 0 : case INTEGER_CST:
7580 0 : {
7581 0 : {
7582 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7583 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7584 0 : if (res) return res;
7585 : }
7586 0 : break;
7587 : }
7588 : default:;
7589 : }
7590 : break;
7591 : }
7592 66510 : case MULT_EXPR:
7593 66510 : {
7594 66510 : tree _q20 = TREE_OPERAND (_p0, 0);
7595 66510 : tree _q21 = TREE_OPERAND (_p0, 1);
7596 66510 : switch (TREE_CODE (_q20))
7597 : {
7598 66 : case TRUNC_DIV_EXPR:
7599 66 : {
7600 66 : tree _q30 = TREE_OPERAND (_q20, 0);
7601 66 : tree _q31 = TREE_OPERAND (_q20, 1);
7602 66 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7603 : {
7604 47 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7605 : {
7606 47 : {
7607 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7608 47 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures);
7609 47 : if (res) return res;
7610 : }
7611 : }
7612 : }
7613 : break;
7614 : }
7615 66463 : default:;
7616 : }
7617 66463 : switch (TREE_CODE (_q21))
7618 : {
7619 0 : case TRUNC_DIV_EXPR:
7620 0 : {
7621 0 : tree _q40 = TREE_OPERAND (_q21, 0);
7622 0 : tree _q41 = TREE_OPERAND (_q21, 1);
7623 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7624 : {
7625 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7626 : {
7627 0 : {
7628 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
7629 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures);
7630 0 : if (res) return res;
7631 : }
7632 : }
7633 : }
7634 : break;
7635 : }
7636 : default:;
7637 : }
7638 : break;
7639 : }
7640 27582740 : default:;
7641 : }
7642 27582740 : switch (TREE_CODE (_p1))
7643 : {
7644 13233 : case MULT_EXPR:
7645 13233 : {
7646 13233 : tree _q30 = TREE_OPERAND (_p1, 0);
7647 13233 : tree _q31 = TREE_OPERAND (_p1, 1);
7648 13233 : switch (TREE_CODE (_q30))
7649 : {
7650 0 : case TRUNC_DIV_EXPR:
7651 0 : {
7652 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7653 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7654 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7655 : {
7656 0 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q41, 0) && types_match (_q31, _q41)))
7657 : {
7658 0 : {
7659 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7660 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures);
7661 0 : if (res) return res;
7662 : }
7663 : }
7664 : }
7665 : break;
7666 : }
7667 13233 : default:;
7668 : }
7669 13233 : switch (TREE_CODE (_q31))
7670 : {
7671 0 : case TRUNC_DIV_EXPR:
7672 0 : {
7673 0 : tree _q50 = TREE_OPERAND (_q31, 0);
7674 0 : tree _q51 = TREE_OPERAND (_q31, 1);
7675 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7676 : {
7677 0 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q30, 0) && types_match (_q51, _q30)))
7678 : {
7679 0 : {
7680 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _p0, _q30 };
7681 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures);
7682 0 : if (res) return res;
7683 : }
7684 : }
7685 : }
7686 : break;
7687 : }
7688 : default:;
7689 : }
7690 : break;
7691 : }
7692 27582740 : default:;
7693 : }
7694 27582740 : switch (TREE_CODE (_p0))
7695 : {
7696 1056 : case VEC_COND_EXPR:
7697 1056 : {
7698 1056 : tree _q20 = TREE_OPERAND (_p0, 0);
7699 1056 : tree _q21 = TREE_OPERAND (_p0, 1);
7700 1056 : tree _q22 = TREE_OPERAND (_p0, 2);
7701 1056 : switch (TREE_CODE (_p1))
7702 : {
7703 187 : case VEC_COND_EXPR:
7704 187 : {
7705 187 : tree _q60 = TREE_OPERAND (_p1, 0);
7706 187 : tree _q61 = TREE_OPERAND (_p1, 1);
7707 187 : tree _q62 = TREE_OPERAND (_p1, 2);
7708 187 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7709 : {
7710 120 : {
7711 120 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7712 120 : if (VECTOR_TYPE_P (type)
7713 120 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
7714 120 : || types_match (type, TREE_TYPE (captures[2]))
7715 120 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7716 : || (optimize_vectors_before_lowering_p ()
7717 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7718 : )
7719 : {
7720 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1531;
7721 120 : {
7722 120 : tree res_op0;
7723 120 : res_op0 = captures[1];
7724 120 : tree res_op1;
7725 120 : {
7726 120 : tree _o1[2], _r1;
7727 120 : _o1[0] = captures[2];
7728 120 : _o1[1] = captures[5];
7729 120 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7730 120 : if (EXPR_P (_r1))
7731 120 : goto next_after_fail1531;
7732 0 : res_op1 = _r1;
7733 : }
7734 0 : tree res_op2;
7735 0 : {
7736 0 : tree _o1[2], _r1;
7737 0 : _o1[0] = captures[3];
7738 0 : _o1[1] = captures[6];
7739 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7740 0 : if (EXPR_P (_r1))
7741 0 : goto next_after_fail1531;
7742 0 : res_op2 = _r1;
7743 : }
7744 0 : tree _r;
7745 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7746 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
7747 0 : return _r;
7748 : }
7749 120 : next_after_fail1531:;
7750 : }
7751 : }
7752 : }
7753 : break;
7754 : }
7755 1056 : default:;
7756 : }
7757 1056 : {
7758 1056 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7759 1056 : if (VECTOR_TYPE_P (type)
7760 1056 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
7761 1056 : || types_match (type, TREE_TYPE (captures[2]))
7762 1056 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7763 : || (optimize_vectors_before_lowering_p ()
7764 79 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7765 : )
7766 : {
7767 1056 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1532;
7768 1056 : {
7769 1056 : if (! tree_invariant_p (captures[4])) goto next_after_fail1532;
7770 126 : tree res_op0;
7771 126 : res_op0 = captures[1];
7772 126 : tree res_op1;
7773 126 : {
7774 126 : tree _o1[2], _r1;
7775 126 : _o1[0] = captures[2];
7776 126 : _o1[1] = unshare_expr (captures[4]);
7777 126 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7778 126 : if (EXPR_P (_r1))
7779 96 : goto next_after_fail1532;
7780 30 : res_op1 = _r1;
7781 : }
7782 30 : tree res_op2;
7783 30 : {
7784 30 : tree _o1[2], _r1;
7785 30 : _o1[0] = captures[3];
7786 30 : _o1[1] = captures[4];
7787 30 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7788 30 : if (EXPR_P (_r1))
7789 9 : goto next_after_fail1532;
7790 21 : res_op2 = _r1;
7791 : }
7792 21 : tree _r;
7793 21 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7794 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
7795 21 : return _r;
7796 : }
7797 1035 : next_after_fail1532:;
7798 : }
7799 : }
7800 1035 : break;
7801 : }
7802 2002815 : case CALL_EXPR:
7803 2002815 : switch (get_call_combined_fn (_p0))
7804 : {
7805 1 : case CFN_BUILT_IN_BITREVERSE128:
7806 1 : if (call_expr_nargs (_p0) == 1)
7807 : {
7808 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7809 1 : switch (TREE_CODE (_p1))
7810 : {
7811 1 : case INTEGER_CST:
7812 1 : {
7813 1 : {
7814 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7815 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE128);
7816 1 : if (res) return res;
7817 : }
7818 1 : break;
7819 : }
7820 0 : case CALL_EXPR:
7821 0 : switch (get_call_combined_fn (_p1))
7822 : {
7823 0 : case CFN_BUILT_IN_BITREVERSE128:
7824 0 : if (call_expr_nargs (_p1) == 1)
7825 : {
7826 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7827 0 : {
7828 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7829 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE128);
7830 0 : if (res) return res;
7831 : }
7832 : }
7833 : break;
7834 : default:;
7835 : }
7836 : break;
7837 : default:;
7838 : }
7839 : }
7840 : break;
7841 1 : case CFN_BUILT_IN_BITREVERSE16:
7842 1 : if (call_expr_nargs (_p0) == 1)
7843 : {
7844 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7845 1 : switch (TREE_CODE (_p1))
7846 : {
7847 1 : case INTEGER_CST:
7848 1 : {
7849 1 : {
7850 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7851 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE16);
7852 1 : if (res) return res;
7853 : }
7854 1 : break;
7855 : }
7856 0 : case CALL_EXPR:
7857 0 : switch (get_call_combined_fn (_p1))
7858 : {
7859 0 : case CFN_BUILT_IN_BITREVERSE16:
7860 0 : if (call_expr_nargs (_p1) == 1)
7861 : {
7862 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7863 0 : {
7864 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7865 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE16);
7866 0 : if (res) return res;
7867 : }
7868 : }
7869 : break;
7870 : default:;
7871 : }
7872 : break;
7873 : default:;
7874 : }
7875 : }
7876 : break;
7877 1 : case CFN_BUILT_IN_BITREVERSE32:
7878 1 : if (call_expr_nargs (_p0) == 1)
7879 : {
7880 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7881 1 : switch (TREE_CODE (_p1))
7882 : {
7883 1 : case INTEGER_CST:
7884 1 : {
7885 1 : {
7886 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7887 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE32);
7888 1 : if (res) return res;
7889 : }
7890 1 : break;
7891 : }
7892 0 : case CALL_EXPR:
7893 0 : switch (get_call_combined_fn (_p1))
7894 : {
7895 0 : case CFN_BUILT_IN_BITREVERSE32:
7896 0 : if (call_expr_nargs (_p1) == 1)
7897 : {
7898 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7899 0 : {
7900 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7901 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE32);
7902 0 : if (res) return res;
7903 : }
7904 : }
7905 : break;
7906 : default:;
7907 : }
7908 : break;
7909 : default:;
7910 : }
7911 : }
7912 : break;
7913 1 : case CFN_BUILT_IN_BITREVERSE64:
7914 1 : if (call_expr_nargs (_p0) == 1)
7915 : {
7916 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7917 1 : switch (TREE_CODE (_p1))
7918 : {
7919 1 : case INTEGER_CST:
7920 1 : {
7921 1 : {
7922 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7923 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE64);
7924 1 : if (res) return res;
7925 : }
7926 1 : break;
7927 : }
7928 0 : case CALL_EXPR:
7929 0 : switch (get_call_combined_fn (_p1))
7930 : {
7931 0 : case CFN_BUILT_IN_BITREVERSE64:
7932 0 : if (call_expr_nargs (_p1) == 1)
7933 : {
7934 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7935 0 : {
7936 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7937 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE64);
7938 0 : if (res) return res;
7939 : }
7940 : }
7941 : break;
7942 : default:;
7943 : }
7944 : break;
7945 : default:;
7946 : }
7947 : }
7948 : break;
7949 0 : case CFN_BITREVERSE:
7950 0 : if (call_expr_nargs (_p0) == 1)
7951 : {
7952 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7953 0 : switch (TREE_CODE (_p1))
7954 : {
7955 0 : case INTEGER_CST:
7956 0 : {
7957 0 : {
7958 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7959 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BITREVERSE);
7960 0 : if (res) return res;
7961 : }
7962 0 : break;
7963 : }
7964 0 : case CALL_EXPR:
7965 0 : switch (get_call_combined_fn (_p1))
7966 : {
7967 0 : case CFN_BITREVERSE:
7968 0 : if (call_expr_nargs (_p1) == 1)
7969 : {
7970 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7971 0 : {
7972 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7973 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BITREVERSE);
7974 0 : if (res) return res;
7975 : }
7976 : }
7977 : break;
7978 : default:;
7979 : }
7980 : break;
7981 : default:;
7982 : }
7983 : }
7984 : break;
7985 0 : case CFN_BSWAP:
7986 0 : if (call_expr_nargs (_p0) == 1)
7987 : {
7988 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7989 0 : switch (TREE_CODE (_p1))
7990 : {
7991 0 : case INTEGER_CST:
7992 0 : {
7993 0 : {
7994 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7995 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BSWAP);
7996 0 : if (res) return res;
7997 : }
7998 0 : break;
7999 : }
8000 0 : case CALL_EXPR:
8001 0 : switch (get_call_combined_fn (_p1))
8002 : {
8003 0 : case CFN_BSWAP:
8004 0 : if (call_expr_nargs (_p1) == 1)
8005 : {
8006 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8007 0 : {
8008 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8009 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BSWAP);
8010 0 : if (res) return res;
8011 : }
8012 : }
8013 : break;
8014 : default:;
8015 : }
8016 : break;
8017 : default:;
8018 : }
8019 : }
8020 : break;
8021 0 : case CFN_BUILT_IN_BSWAP128:
8022 0 : if (call_expr_nargs (_p0) == 1)
8023 : {
8024 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8025 0 : switch (TREE_CODE (_p1))
8026 : {
8027 0 : case INTEGER_CST:
8028 0 : {
8029 0 : {
8030 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8031 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
8032 0 : if (res) return res;
8033 : }
8034 0 : break;
8035 : }
8036 0 : case CALL_EXPR:
8037 0 : switch (get_call_combined_fn (_p1))
8038 : {
8039 0 : case CFN_BUILT_IN_BSWAP128:
8040 0 : if (call_expr_nargs (_p1) == 1)
8041 : {
8042 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8043 0 : {
8044 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8045 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
8046 0 : if (res) return res;
8047 : }
8048 : }
8049 : break;
8050 : default:;
8051 : }
8052 : break;
8053 : default:;
8054 : }
8055 : }
8056 : break;
8057 1 : case CFN_BUILT_IN_BITREVERSE8:
8058 1 : if (call_expr_nargs (_p0) == 1)
8059 : {
8060 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8061 1 : switch (TREE_CODE (_p1))
8062 : {
8063 1 : case INTEGER_CST:
8064 1 : {
8065 1 : {
8066 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8067 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE8);
8068 1 : if (res) return res;
8069 : }
8070 1 : break;
8071 : }
8072 0 : case CALL_EXPR:
8073 0 : switch (get_call_combined_fn (_p1))
8074 : {
8075 0 : case CFN_BUILT_IN_BITREVERSE8:
8076 0 : if (call_expr_nargs (_p1) == 1)
8077 : {
8078 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8079 0 : {
8080 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8081 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE8);
8082 0 : if (res) return res;
8083 : }
8084 : }
8085 : break;
8086 : default:;
8087 : }
8088 : break;
8089 : default:;
8090 : }
8091 : }
8092 : break;
8093 2 : case CFN_BUILT_IN_BSWAP16:
8094 2 : if (call_expr_nargs (_p0) == 1)
8095 : {
8096 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8097 2 : switch (TREE_CODE (_p1))
8098 : {
8099 1 : case INTEGER_CST:
8100 1 : {
8101 1 : {
8102 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8103 1 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
8104 1 : if (res) return res;
8105 : }
8106 1 : break;
8107 : }
8108 1 : case CALL_EXPR:
8109 1 : switch (get_call_combined_fn (_p1))
8110 : {
8111 1 : case CFN_BUILT_IN_BSWAP16:
8112 1 : if (call_expr_nargs (_p1) == 1)
8113 : {
8114 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8115 1 : {
8116 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8117 1 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
8118 1 : if (res) return res;
8119 : }
8120 : }
8121 : break;
8122 : default:;
8123 : }
8124 : break;
8125 : default:;
8126 : }
8127 : }
8128 : break;
8129 6 : case CFN_BUILT_IN_BSWAP32:
8130 6 : if (call_expr_nargs (_p0) == 1)
8131 : {
8132 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8133 6 : switch (TREE_CODE (_p1))
8134 : {
8135 3 : case INTEGER_CST:
8136 3 : {
8137 3 : {
8138 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8139 3 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
8140 3 : if (res) return res;
8141 : }
8142 3 : break;
8143 : }
8144 3 : case CALL_EXPR:
8145 3 : switch (get_call_combined_fn (_p1))
8146 : {
8147 3 : case CFN_BUILT_IN_BSWAP32:
8148 3 : if (call_expr_nargs (_p1) == 1)
8149 : {
8150 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8151 3 : {
8152 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8153 3 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
8154 3 : if (res) return res;
8155 : }
8156 : }
8157 : break;
8158 : default:;
8159 : }
8160 : break;
8161 : default:;
8162 : }
8163 : }
8164 : break;
8165 6 : case CFN_BUILT_IN_BSWAP64:
8166 6 : if (call_expr_nargs (_p0) == 1)
8167 : {
8168 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8169 6 : switch (TREE_CODE (_p1))
8170 : {
8171 3 : case INTEGER_CST:
8172 3 : {
8173 3 : {
8174 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8175 3 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
8176 3 : if (res) return res;
8177 : }
8178 3 : break;
8179 : }
8180 3 : case CALL_EXPR:
8181 3 : switch (get_call_combined_fn (_p1))
8182 : {
8183 3 : case CFN_BUILT_IN_BSWAP64:
8184 3 : if (call_expr_nargs (_p1) == 1)
8185 : {
8186 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8187 3 : {
8188 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8189 3 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
8190 3 : if (res) return res;
8191 : }
8192 : }
8193 : break;
8194 : default:;
8195 : }
8196 : break;
8197 : default:;
8198 : }
8199 : }
8200 : break;
8201 : default:;
8202 : }
8203 : break;
8204 27582712 : default:;
8205 : }
8206 27582712 : switch (TREE_CODE (_p1))
8207 : {
8208 215 : case VEC_COND_EXPR:
8209 215 : {
8210 215 : tree _q30 = TREE_OPERAND (_p1, 0);
8211 215 : tree _q31 = TREE_OPERAND (_p1, 1);
8212 215 : tree _q32 = TREE_OPERAND (_p1, 2);
8213 215 : {
8214 215 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8215 215 : if (VECTOR_TYPE_P (type)
8216 215 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
8217 215 : || types_match (type, TREE_TYPE (captures[3]))
8218 215 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8219 : || (optimize_vectors_before_lowering_p ()
8220 21 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8221 : )
8222 : {
8223 215 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1533;
8224 215 : {
8225 215 : if (! tree_invariant_p (captures[0])) goto next_after_fail1533;
8226 0 : tree res_op0;
8227 0 : res_op0 = captures[2];
8228 0 : tree res_op1;
8229 0 : {
8230 0 : tree _o1[2], _r1;
8231 0 : _o1[0] = unshare_expr (captures[0]);
8232 0 : _o1[1] = captures[3];
8233 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8234 0 : if (EXPR_P (_r1))
8235 0 : goto next_after_fail1533;
8236 0 : res_op1 = _r1;
8237 : }
8238 0 : tree res_op2;
8239 0 : {
8240 0 : tree _o1[2], _r1;
8241 0 : _o1[0] = captures[0];
8242 0 : _o1[1] = captures[4];
8243 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8244 0 : if (EXPR_P (_r1))
8245 0 : goto next_after_fail1533;
8246 0 : res_op2 = _r1;
8247 : }
8248 0 : tree _r;
8249 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8250 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8251 0 : return _r;
8252 : }
8253 215 : next_after_fail1533:;
8254 : }
8255 : }
8256 215 : break;
8257 : }
8258 27582712 : default:;
8259 : }
8260 27582712 : switch (TREE_CODE (_p0))
8261 : {
8262 41347 : case COND_EXPR:
8263 41347 : {
8264 41347 : tree _q20 = TREE_OPERAND (_p0, 0);
8265 41347 : tree _q21 = TREE_OPERAND (_p0, 1);
8266 41347 : tree _q22 = TREE_OPERAND (_p0, 2);
8267 41347 : switch (TREE_CODE (_p1))
8268 : {
8269 49 : case COND_EXPR:
8270 49 : {
8271 49 : tree _q60 = TREE_OPERAND (_p1, 0);
8272 49 : tree _q61 = TREE_OPERAND (_p1, 1);
8273 49 : tree _q62 = TREE_OPERAND (_p1, 2);
8274 49 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8275 : {
8276 3 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8277 : {
8278 3 : {
8279 3 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8280 3 : const enum tree_code eqne = EQ_EXPR;
8281 3 : if (!HONOR_NANS (captures[1])
8282 3 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8283 3 : && types_match (type, TREE_TYPE (captures[0]))
8284 3 : && expr_no_side_effects_p (captures[1])
8285 4 : && expr_no_side_effects_p (captures[2])
8286 : )
8287 : {
8288 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1534;
8289 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1534;
8290 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1534;
8291 1 : {
8292 1 : tree res_op0;
8293 1 : {
8294 1 : tree _o1[2], _r1;
8295 1 : {
8296 1 : tree _o2[2], _r2;
8297 1 : _o2[0] = captures[0];
8298 1 : _o2[1] = captures[3];
8299 1 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8300 1 : _o1[0] = _r2;
8301 : }
8302 1 : {
8303 1 : tree _o2[2], _r2;
8304 1 : _o2[0] = captures[1];
8305 1 : _o2[1] = captures[2];
8306 1 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8307 1 : _o1[1] = _r2;
8308 : }
8309 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8310 1 : res_op0 = _r1;
8311 : }
8312 1 : tree res_op1;
8313 1 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8314 1 : tree res_op2;
8315 1 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8316 1 : tree _r;
8317 1 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8318 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
8319 1 : return _r;
8320 : }
8321 2 : next_after_fail1534:;
8322 : }
8323 : }
8324 : }
8325 : }
8326 48 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8327 : {
8328 19 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8329 : {
8330 19 : {
8331 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8332 19 : const enum tree_code eqne = EQ_EXPR;
8333 19 : if (!HONOR_NANS (captures[1])
8334 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8335 0 : && types_match (type, TREE_TYPE (captures[0]))
8336 0 : && expr_no_side_effects_p (captures[1])
8337 19 : && expr_no_side_effects_p (captures[2])
8338 : )
8339 : {
8340 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1535;
8341 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1535;
8342 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1535;
8343 0 : {
8344 0 : tree res_op0;
8345 0 : {
8346 0 : tree _o1[2], _r1;
8347 0 : {
8348 0 : tree _o2[2], _r2;
8349 0 : _o2[0] = captures[0];
8350 0 : _o2[1] = captures[3];
8351 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8352 0 : _o1[0] = _r2;
8353 : }
8354 0 : {
8355 0 : tree _o2[2], _r2;
8356 0 : _o2[0] = captures[1];
8357 0 : _o2[1] = captures[2];
8358 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8359 0 : _o1[1] = _r2;
8360 : }
8361 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8362 0 : res_op0 = _r1;
8363 : }
8364 0 : tree res_op1;
8365 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8366 0 : tree res_op2;
8367 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8368 0 : tree _r;
8369 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8370 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
8371 0 : return _r;
8372 : }
8373 19 : next_after_fail1535:;
8374 : }
8375 : }
8376 : }
8377 : }
8378 : break;
8379 : }
8380 : default:;
8381 : }
8382 : break;
8383 : }
8384 1035 : case VEC_COND_EXPR:
8385 1035 : {
8386 1035 : tree _q20 = TREE_OPERAND (_p0, 0);
8387 1035 : tree _q21 = TREE_OPERAND (_p0, 1);
8388 1035 : tree _q22 = TREE_OPERAND (_p0, 2);
8389 1035 : switch (TREE_CODE (_p1))
8390 : {
8391 187 : case VEC_COND_EXPR:
8392 187 : {
8393 187 : tree _q60 = TREE_OPERAND (_p1, 0);
8394 187 : tree _q61 = TREE_OPERAND (_p1, 1);
8395 187 : tree _q62 = TREE_OPERAND (_p1, 2);
8396 187 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8397 : {
8398 126 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8399 : {
8400 126 : {
8401 126 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8402 126 : const enum tree_code eqne = EQ_EXPR;
8403 126 : if (!HONOR_NANS (captures[1])
8404 6 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8405 6 : && types_match (type, TREE_TYPE (captures[0]))
8406 6 : && expr_no_side_effects_p (captures[1])
8407 132 : && expr_no_side_effects_p (captures[2])
8408 : )
8409 : {
8410 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
8411 6 : {
8412 6 : tree res_op0;
8413 6 : {
8414 6 : tree _o1[2], _r1;
8415 6 : {
8416 6 : tree _o2[2], _r2;
8417 6 : _o2[0] = captures[0];
8418 6 : _o2[1] = captures[3];
8419 6 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8420 6 : _o1[0] = _r2;
8421 : }
8422 6 : {
8423 6 : tree _o2[2], _r2;
8424 6 : _o2[0] = captures[1];
8425 6 : _o2[1] = captures[2];
8426 6 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8427 6 : _o1[1] = _r2;
8428 : }
8429 6 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8430 6 : res_op0 = _r1;
8431 : }
8432 6 : tree res_op1;
8433 6 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8434 6 : tree res_op2;
8435 6 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8436 6 : tree _r;
8437 6 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8438 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
8439 6 : return _r;
8440 : }
8441 0 : next_after_fail1536:;
8442 : }
8443 : }
8444 : }
8445 : }
8446 181 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8447 : {
8448 53 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8449 : {
8450 53 : {
8451 53 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8452 53 : const enum tree_code eqne = EQ_EXPR;
8453 53 : if (!HONOR_NANS (captures[1])
8454 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8455 0 : && types_match (type, TREE_TYPE (captures[0]))
8456 0 : && expr_no_side_effects_p (captures[1])
8457 53 : && expr_no_side_effects_p (captures[2])
8458 : )
8459 : {
8460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
8461 0 : {
8462 0 : tree res_op0;
8463 0 : {
8464 0 : tree _o1[2], _r1;
8465 0 : {
8466 0 : tree _o2[2], _r2;
8467 0 : _o2[0] = captures[0];
8468 0 : _o2[1] = captures[3];
8469 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8470 0 : _o1[0] = _r2;
8471 : }
8472 0 : {
8473 0 : tree _o2[2], _r2;
8474 0 : _o2[0] = captures[1];
8475 0 : _o2[1] = captures[2];
8476 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8477 0 : _o1[1] = _r2;
8478 : }
8479 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8480 0 : res_op0 = _r1;
8481 : }
8482 0 : tree res_op1;
8483 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8484 0 : tree res_op2;
8485 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8486 0 : tree _r;
8487 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8488 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
8489 0 : return _r;
8490 : }
8491 0 : next_after_fail1537:;
8492 : }
8493 : }
8494 : }
8495 : }
8496 : break;
8497 : }
8498 : default:;
8499 : }
8500 : break;
8501 : }
8502 1131 : case LT_EXPR:
8503 1131 : {
8504 1131 : tree _q20 = TREE_OPERAND (_p0, 0);
8505 1131 : tree _q21 = TREE_OPERAND (_p0, 1);
8506 1131 : if (integer_truep (_p1))
8507 : {
8508 5 : {
8509 5 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8510 5 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8511 5 : if (res) return res;
8512 : }
8513 : }
8514 1131 : if (integer_zerop (_p1))
8515 : {
8516 414 : {
8517 414 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8518 414 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8519 414 : if (res) return res;
8520 : }
8521 : }
8522 : break;
8523 : }
8524 1557 : case LE_EXPR:
8525 1557 : {
8526 1557 : tree _q20 = TREE_OPERAND (_p0, 0);
8527 1557 : tree _q21 = TREE_OPERAND (_p0, 1);
8528 1557 : if (integer_truep (_p1))
8529 : {
8530 0 : {
8531 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8532 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8533 0 : if (res) return res;
8534 : }
8535 : }
8536 1557 : if (integer_zerop (_p1))
8537 : {
8538 693 : {
8539 693 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8540 693 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8541 693 : if (res) return res;
8542 : }
8543 : }
8544 : break;
8545 : }
8546 32634 : case EQ_EXPR:
8547 32634 : {
8548 32634 : tree _q20 = TREE_OPERAND (_p0, 0);
8549 32634 : tree _q21 = TREE_OPERAND (_p0, 1);
8550 32634 : if (integer_truep (_p1))
8551 : {
8552 48 : {
8553 48 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8554 48 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8555 48 : if (res) return res;
8556 : }
8557 : }
8558 32629 : if (integer_zerop (_p1))
8559 : {
8560 7681 : {
8561 7681 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8562 7681 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8563 7681 : if (res) return res;
8564 : }
8565 : }
8566 : break;
8567 : }
8568 12093 : case NE_EXPR:
8569 12093 : {
8570 12093 : tree _q20 = TREE_OPERAND (_p0, 0);
8571 12093 : tree _q21 = TREE_OPERAND (_p0, 1);
8572 12093 : if (integer_truep (_p1))
8573 : {
8574 126 : {
8575 126 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8576 126 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8577 126 : if (res) return res;
8578 : }
8579 : }
8580 11973 : if (integer_zerop (_p1))
8581 : {
8582 9911 : {
8583 9911 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8584 9911 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8585 9911 : if (res) return res;
8586 : }
8587 : }
8588 : break;
8589 : }
8590 6717 : case GE_EXPR:
8591 6717 : {
8592 6717 : tree _q20 = TREE_OPERAND (_p0, 0);
8593 6717 : tree _q21 = TREE_OPERAND (_p0, 1);
8594 6717 : if (integer_truep (_p1))
8595 : {
8596 0 : {
8597 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8598 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8599 0 : if (res) return res;
8600 : }
8601 : }
8602 6717 : if (integer_zerop (_p1))
8603 : {
8604 5597 : {
8605 5597 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8606 5597 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8607 5597 : if (res) return res;
8608 : }
8609 : }
8610 : break;
8611 : }
8612 69169 : case GT_EXPR:
8613 69169 : {
8614 69169 : tree _q20 = TREE_OPERAND (_p0, 0);
8615 69169 : tree _q21 = TREE_OPERAND (_p0, 1);
8616 69169 : if (integer_truep (_p1))
8617 : {
8618 0 : {
8619 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8620 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8621 0 : if (res) return res;
8622 : }
8623 : }
8624 69169 : if (integer_zerop (_p1))
8625 : {
8626 475 : {
8627 475 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8628 475 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8629 475 : if (res) return res;
8630 : }
8631 : }
8632 : break;
8633 : }
8634 1023 : case UNORDERED_EXPR:
8635 1023 : {
8636 1023 : tree _q20 = TREE_OPERAND (_p0, 0);
8637 1023 : tree _q21 = TREE_OPERAND (_p0, 1);
8638 1023 : if (integer_truep (_p1))
8639 : {
8640 0 : {
8641 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8642 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8643 0 : if (res) return res;
8644 : }
8645 : }
8646 1023 : if (integer_zerop (_p1))
8647 : {
8648 1017 : {
8649 1017 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8650 1017 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8651 1017 : if (res) return res;
8652 : }
8653 : }
8654 : break;
8655 : }
8656 0 : case ORDERED_EXPR:
8657 0 : {
8658 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8659 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8660 0 : if (integer_truep (_p1))
8661 : {
8662 0 : {
8663 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8664 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8665 0 : if (res) return res;
8666 : }
8667 : }
8668 0 : if (integer_zerop (_p1))
8669 : {
8670 0 : {
8671 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8672 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8673 0 : if (res) return res;
8674 : }
8675 : }
8676 : break;
8677 : }
8678 0 : case UNLT_EXPR:
8679 0 : {
8680 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8681 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8682 0 : if (integer_truep (_p1))
8683 : {
8684 0 : {
8685 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8686 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8687 0 : if (res) return res;
8688 : }
8689 : }
8690 0 : if (integer_zerop (_p1))
8691 : {
8692 0 : {
8693 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8694 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8695 0 : if (res) return res;
8696 : }
8697 : }
8698 : break;
8699 : }
8700 0 : case UNLE_EXPR:
8701 0 : {
8702 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8703 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8704 0 : if (integer_truep (_p1))
8705 : {
8706 0 : {
8707 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8708 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8709 0 : if (res) return res;
8710 : }
8711 : }
8712 0 : if (integer_zerop (_p1))
8713 : {
8714 0 : {
8715 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8716 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8717 0 : if (res) return res;
8718 : }
8719 : }
8720 : break;
8721 : }
8722 0 : case UNGT_EXPR:
8723 0 : {
8724 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8725 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8726 0 : if (integer_truep (_p1))
8727 : {
8728 0 : {
8729 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8730 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8731 0 : if (res) return res;
8732 : }
8733 : }
8734 0 : if (integer_zerop (_p1))
8735 : {
8736 0 : {
8737 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8738 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8739 0 : if (res) return res;
8740 : }
8741 : }
8742 : break;
8743 : }
8744 0 : case UNGE_EXPR:
8745 0 : {
8746 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8747 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8748 0 : if (integer_truep (_p1))
8749 : {
8750 0 : {
8751 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8752 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8753 0 : if (res) return res;
8754 : }
8755 : }
8756 0 : if (integer_zerop (_p1))
8757 : {
8758 0 : {
8759 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8760 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8761 0 : if (res) return res;
8762 : }
8763 : }
8764 : break;
8765 : }
8766 0 : case UNEQ_EXPR:
8767 0 : {
8768 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8769 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8770 0 : if (integer_truep (_p1))
8771 : {
8772 0 : {
8773 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8774 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8775 0 : if (res) return res;
8776 : }
8777 : }
8778 0 : if (integer_zerop (_p1))
8779 : {
8780 0 : {
8781 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8782 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8783 0 : if (res) return res;
8784 : }
8785 : }
8786 : break;
8787 : }
8788 0 : case LTGT_EXPR:
8789 0 : {
8790 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8791 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8792 0 : if (integer_truep (_p1))
8793 : {
8794 0 : {
8795 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8796 0 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8797 0 : if (res) return res;
8798 : }
8799 : }
8800 0 : if (integer_zerop (_p1))
8801 : {
8802 0 : {
8803 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8804 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8805 0 : if (res) return res;
8806 : }
8807 : }
8808 : break;
8809 : }
8810 153647 : case MINUS_EXPR:
8811 153647 : {
8812 153647 : tree _q20 = TREE_OPERAND (_p0, 0);
8813 153647 : tree _q21 = TREE_OPERAND (_p0, 1);
8814 153647 : if (integer_zerop (_p1))
8815 : {
8816 57614 : {
8817 57614 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8818 57614 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, EQ_EXPR);
8819 57614 : if (res) return res;
8820 : }
8821 : }
8822 : break;
8823 : }
8824 32734 : case POINTER_DIFF_EXPR:
8825 32734 : {
8826 32734 : tree _q20 = TREE_OPERAND (_p0, 0);
8827 32734 : tree _q21 = TREE_OPERAND (_p0, 1);
8828 32734 : if (integer_zerop (_p1))
8829 : {
8830 1481 : {
8831 1481 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8832 1481 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, EQ_EXPR);
8833 1481 : if (res) return res;
8834 : }
8835 : }
8836 : break;
8837 : }
8838 66463 : case MULT_EXPR:
8839 66463 : {
8840 66463 : tree _q20 = TREE_OPERAND (_p0, 0);
8841 66463 : tree _q21 = TREE_OPERAND (_p0, 1);
8842 66463 : switch (TREE_CODE (_q21))
8843 : {
8844 58543 : case INTEGER_CST:
8845 58543 : {
8846 58543 : switch (TREE_CODE (_p1))
8847 : {
8848 9711 : case INTEGER_CST:
8849 9711 : {
8850 9711 : {
8851 9711 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8852 9711 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR);
8853 9711 : if (res) return res;
8854 : }
8855 8793 : break;
8856 : }
8857 57625 : default:;
8858 : }
8859 57625 : if (integer_zerop (_p1))
8860 : {
8861 4250 : {
8862 4250 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8863 4250 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8864 4250 : if (res) return res;
8865 : }
8866 : }
8867 : break;
8868 : }
8869 : default:;
8870 : }
8871 : break;
8872 : }
8873 27497688 : default:;
8874 : }
8875 27497688 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8876 : {
8877 119380 : {
8878 119380 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8879 119380 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, EQ_EXPR);
8880 119380 : if (res) return res;
8881 : }
8882 : }
8883 27383884 : switch (TREE_CODE (_p0))
8884 : {
8885 5116407 : CASE_CONVERT:
8886 5116407 : {
8887 5116407 : tree _q20 = TREE_OPERAND (_p0, 0);
8888 5116407 : switch (TREE_CODE (_p1))
8889 : {
8890 1583690 : CASE_CONVERT:
8891 1583690 : {
8892 1583690 : tree _q40 = TREE_OPERAND (_p1, 0);
8893 1583690 : {
8894 1583690 : tree _q40_pops[1];
8895 1583690 : if (tree_maybe_bit_not (_q40, _q40_pops))
8896 : {
8897 0 : tree _q50 = _q40_pops[0];
8898 0 : {
8899 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8900 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR);
8901 0 : if (res) return res;
8902 : }
8903 : }
8904 : }
8905 1583690 : break;
8906 : }
8907 5116407 : default:;
8908 : }
8909 5116407 : {
8910 5116407 : tree _q20_pops[1];
8911 5116407 : if (tree_maybe_bit_not (_q20, _q20_pops))
8912 : {
8913 240 : tree _q30 = _q20_pops[0];
8914 240 : switch (TREE_CODE (_p1))
8915 : {
8916 74 : CASE_CONVERT:
8917 74 : {
8918 74 : tree _q50 = TREE_OPERAND (_p1, 0);
8919 74 : {
8920 74 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
8921 74 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR);
8922 74 : if (res) return res;
8923 : }
8924 74 : break;
8925 : }
8926 : default:;
8927 : }
8928 : }
8929 : }
8930 5116407 : break;
8931 : }
8932 27383884 : default:;
8933 : }
8934 27383884 : {
8935 27383884 : tree _p1_pops[1];
8936 27383884 : if (tree_maybe_bit_not (_p1, _p1_pops))
8937 : {
8938 19374371 : tree _q30 = _p1_pops[0];
8939 19374371 : {
8940 19374371 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8941 19374371 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR);
8942 19374371 : if (res) return res;
8943 : }
8944 : }
8945 : }
8946 27383882 : switch (TREE_CODE (_p0))
8947 : {
8948 404 : case BIT_NOT_EXPR:
8949 404 : {
8950 404 : tree _q20 = TREE_OPERAND (_p0, 0);
8951 404 : switch (TREE_CODE (_p1))
8952 : {
8953 1 : case BIT_NOT_EXPR:
8954 1 : {
8955 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8956 1 : {
8957 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8958 1 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, EQ_EXPR);
8959 1 : if (res) return res;
8960 : }
8961 0 : break;
8962 : }
8963 403 : default:;
8964 : }
8965 403 : {
8966 403 : tree _p1_pops[1];
8967 403 : if (tree_nop_convert (_p1, _p1_pops))
8968 : {
8969 3 : tree _q40 = _p1_pops[0];
8970 3 : switch (TREE_CODE (_q40))
8971 : {
8972 0 : case BIT_NOT_EXPR:
8973 0 : {
8974 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8975 0 : {
8976 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8977 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, EQ_EXPR);
8978 0 : if (res) return res;
8979 : }
8980 0 : break;
8981 : }
8982 : default:;
8983 : }
8984 : }
8985 : }
8986 403 : if (CONSTANT_CLASS_P (_p1))
8987 : {
8988 189 : {
8989 189 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8990 189 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8991 189 : if (res) return res;
8992 : }
8993 : }
8994 : break;
8995 : }
8996 27383692 : default:;
8997 : }
8998 27383692 : {
8999 27383692 : tree _p0_pops[1];
9000 27383692 : if (tree_maybe_bit_not (_p0, _p0_pops))
9001 : {
9002 99177 : tree _q20 = _p0_pops[0];
9003 99177 : {
9004 99177 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9005 99177 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR);
9006 99177 : if (res) return res;
9007 : }
9008 : }
9009 : }
9010 27383690 : {
9011 27383690 : tree _p0_pops[1];
9012 27383690 : if (tree_nop_convert (_p0, _p0_pops))
9013 : {
9014 2942205 : tree _q20 = _p0_pops[0];
9015 2942205 : switch (TREE_CODE (_q20))
9016 : {
9017 41 : case BIT_NOT_EXPR:
9018 41 : {
9019 41 : tree _q30 = TREE_OPERAND (_q20, 0);
9020 41 : switch (TREE_CODE (_p1))
9021 : {
9022 0 : case BIT_NOT_EXPR:
9023 0 : {
9024 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9025 0 : {
9026 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9027 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, EQ_EXPR);
9028 0 : if (res) return res;
9029 : }
9030 0 : break;
9031 : }
9032 41 : default:;
9033 : }
9034 41 : {
9035 41 : tree _p1_pops[1];
9036 41 : if (tree_nop_convert (_p1, _p1_pops))
9037 : {
9038 0 : tree _q50 = _p1_pops[0];
9039 0 : switch (TREE_CODE (_q50))
9040 : {
9041 0 : case BIT_NOT_EXPR:
9042 0 : {
9043 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9044 0 : {
9045 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9046 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, EQ_EXPR);
9047 0 : if (res) return res;
9048 : }
9049 0 : break;
9050 : }
9051 : default:;
9052 : }
9053 : }
9054 : }
9055 41 : if (CONSTANT_CLASS_P (_p1))
9056 : {
9057 41 : {
9058 41 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9059 41 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9060 41 : if (res) return res;
9061 : }
9062 : }
9063 : break;
9064 : }
9065 : default:;
9066 : }
9067 : }
9068 : }
9069 27383649 : switch (TREE_CODE (_p1))
9070 : {
9071 966300 : case REAL_CST:
9072 966300 : {
9073 966300 : {
9074 966300 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9075 966300 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, EQ_EXPR);
9076 966300 : if (res) return res;
9077 : }
9078 965284 : break;
9079 : }
9080 27382633 : default:;
9081 : }
9082 27382633 : switch (TREE_CODE (_p0))
9083 : {
9084 670588 : case PLUS_EXPR:
9085 670588 : {
9086 670588 : tree _q20 = TREE_OPERAND (_p0, 0);
9087 670588 : tree _q21 = TREE_OPERAND (_p0, 1);
9088 670588 : switch (TREE_CODE (_q21))
9089 : {
9090 580 : case REAL_CST:
9091 580 : {
9092 580 : switch (TREE_CODE (_p1))
9093 : {
9094 409 : case REAL_CST:
9095 409 : {
9096 409 : {
9097 409 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9098 409 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR);
9099 409 : if (res) return res;
9100 : }
9101 409 : break;
9102 : }
9103 : default:;
9104 : }
9105 : break;
9106 : }
9107 : default:;
9108 : }
9109 : break;
9110 : }
9111 96033 : case MINUS_EXPR:
9112 96033 : {
9113 96033 : tree _q20 = TREE_OPERAND (_p0, 0);
9114 96033 : tree _q21 = TREE_OPERAND (_p0, 1);
9115 96033 : switch (TREE_CODE (_q21))
9116 : {
9117 62 : case REAL_CST:
9118 62 : {
9119 62 : switch (TREE_CODE (_p1))
9120 : {
9121 62 : case REAL_CST:
9122 62 : {
9123 62 : {
9124 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9125 62 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, MINUS_EXPR, EQ_EXPR);
9126 62 : if (res) return res;
9127 : }
9128 62 : break;
9129 : }
9130 : default:;
9131 : }
9132 : break;
9133 : }
9134 96033 : default:;
9135 : }
9136 96033 : switch (TREE_CODE (_q20))
9137 : {
9138 275 : case REAL_CST:
9139 275 : {
9140 275 : switch (TREE_CODE (_p1))
9141 : {
9142 245 : case REAL_CST:
9143 245 : {
9144 245 : {
9145 245 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9146 245 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, EQ_EXPR);
9147 245 : if (res) return res;
9148 : }
9149 244 : break;
9150 : }
9151 : default:;
9152 : }
9153 : break;
9154 : }
9155 : default:;
9156 : }
9157 : break;
9158 : }
9159 2775 : case FLOAT_EXPR:
9160 2775 : {
9161 2775 : tree _q20 = TREE_OPERAND (_p0, 0);
9162 2775 : switch (TREE_CODE (_p1))
9163 : {
9164 2 : case FLOAT_EXPR:
9165 2 : {
9166 2 : tree _q40 = TREE_OPERAND (_p1, 0);
9167 2 : {
9168 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9169 2 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9170 2 : if (res) return res;
9171 : }
9172 1 : break;
9173 : }
9174 278 : case REAL_CST:
9175 278 : {
9176 278 : {
9177 278 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9178 278 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9179 278 : if (res) return res;
9180 : }
9181 226 : break;
9182 : }
9183 : default:;
9184 : }
9185 : break;
9186 : }
9187 7246 : case EXACT_DIV_EXPR:
9188 7246 : {
9189 7246 : tree _q20 = TREE_OPERAND (_p0, 0);
9190 7246 : tree _q21 = TREE_OPERAND (_p0, 1);
9191 7246 : switch (TREE_CODE (_p1))
9192 : {
9193 33 : case INTEGER_CST:
9194 33 : {
9195 33 : {
9196 33 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9197 33 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR);
9198 33 : if (res) return res;
9199 : }
9200 0 : break;
9201 : }
9202 : default:;
9203 : }
9204 : break;
9205 : }
9206 1330 : case NEGATE_EXPR:
9207 1330 : {
9208 1330 : tree _q20 = TREE_OPERAND (_p0, 0);
9209 1330 : switch (TREE_CODE (_p1))
9210 : {
9211 1 : case NEGATE_EXPR:
9212 1 : {
9213 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9214 1 : {
9215 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9216 1 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9217 1 : if (res) return res;
9218 : }
9219 0 : break;
9220 : }
9221 1329 : default:;
9222 : }
9223 1329 : if (CONSTANT_CLASS_P (_p1))
9224 : {
9225 210 : {
9226 210 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9227 210 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9228 210 : if (res) return res;
9229 : }
9230 : }
9231 : break;
9232 : }
9233 1439 : case ABS_EXPR:
9234 1439 : {
9235 1439 : tree _q20 = TREE_OPERAND (_p0, 0);
9236 1439 : if (zerop (_p1))
9237 : {
9238 66 : {
9239 66 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9240 66 : const enum tree_code eqne = EQ_EXPR;
9241 66 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
9242 66 : {
9243 66 : tree res_op0;
9244 66 : res_op0 = captures[0];
9245 66 : tree res_op1;
9246 66 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9247 66 : tree _r;
9248 66 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9249 66 : if (TREE_SIDE_EFFECTS (captures[1]))
9250 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9251 66 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
9252 66 : return _r;
9253 : }
9254 0 : next_after_fail1538:;
9255 : }
9256 : }
9257 : break;
9258 : }
9259 1 : case ABSU_EXPR:
9260 1 : {
9261 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9262 1 : if (zerop (_p1))
9263 : {
9264 0 : {
9265 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9266 0 : const enum tree_code eqne = EQ_EXPR;
9267 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
9268 0 : {
9269 0 : tree res_op0;
9270 0 : res_op0 = captures[0];
9271 0 : tree res_op1;
9272 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9273 0 : tree _r;
9274 0 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9275 0 : if (TREE_SIDE_EFFECTS (captures[1]))
9276 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9277 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
9278 0 : return _r;
9279 : }
9280 0 : next_after_fail1539:;
9281 : }
9282 : }
9283 : break;
9284 : }
9285 5116330 : CASE_CONVERT:
9286 5116330 : {
9287 5116330 : tree _q20 = TREE_OPERAND (_p0, 0);
9288 5116330 : switch (TREE_CODE (_p1))
9289 : {
9290 1583690 : CASE_CONVERT:
9291 1583690 : {
9292 1583690 : tree _q40 = TREE_OPERAND (_p1, 0);
9293 1583690 : {
9294 1583690 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9295 1583690 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
9296 1583690 : if (res) return res;
9297 : }
9298 919222 : break;
9299 : }
9300 4451862 : default:;
9301 : }
9302 4451862 : {
9303 4451862 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9304 4451862 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, EQ_EXPR);
9305 4451862 : if (res) return res;
9306 : }
9307 2284845 : switch (TREE_CODE (_q20))
9308 : {
9309 3 : case BIT_IOR_EXPR:
9310 3 : {
9311 3 : tree _q30 = TREE_OPERAND (_q20, 0);
9312 3 : tree _q31 = TREE_OPERAND (_q20, 1);
9313 3 : switch (TREE_CODE (_q31))
9314 : {
9315 0 : case INTEGER_CST:
9316 0 : {
9317 0 : switch (TREE_CODE (_p1))
9318 : {
9319 0 : case INTEGER_CST:
9320 0 : {
9321 0 : {
9322 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9323 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, EQ_EXPR);
9324 0 : if (res) return res;
9325 : }
9326 0 : break;
9327 : }
9328 : default:;
9329 : }
9330 : break;
9331 : }
9332 : default:;
9333 : }
9334 : break;
9335 : }
9336 : default:;
9337 : }
9338 : break;
9339 : }
9340 8925240 : case SSA_NAME:
9341 8925240 : {
9342 8925240 : switch (TREE_CODE (_p1))
9343 : {
9344 787286 : case ADDR_EXPR:
9345 787286 : {
9346 787286 : {
9347 787286 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9348 787286 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR);
9349 787286 : if (res) return res;
9350 : }
9351 787286 : break;
9352 : }
9353 : default:;
9354 : }
9355 : break;
9356 : }
9357 33522 : case BIT_IOR_EXPR:
9358 33522 : {
9359 33522 : tree _q20 = TREE_OPERAND (_p0, 0);
9360 33522 : tree _q21 = TREE_OPERAND (_p0, 1);
9361 33522 : switch (TREE_CODE (_q21))
9362 : {
9363 1525 : case INTEGER_CST:
9364 1525 : {
9365 1525 : switch (TREE_CODE (_p1))
9366 : {
9367 482 : case INTEGER_CST:
9368 482 : {
9369 482 : {
9370 482 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9371 482 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, EQ_EXPR);
9372 482 : if (res) return res;
9373 : }
9374 482 : break;
9375 : }
9376 : default:;
9377 : }
9378 : break;
9379 : }
9380 : default:;
9381 : }
9382 : break;
9383 : }
9384 631 : case BIT_XOR_EXPR:
9385 631 : {
9386 631 : tree _q20 = TREE_OPERAND (_p0, 0);
9387 631 : tree _q21 = TREE_OPERAND (_p0, 1);
9388 631 : if (integer_zerop (_p1))
9389 : {
9390 171 : {
9391 171 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9392 171 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, EQ_EXPR);
9393 171 : if (res) return res;
9394 : }
9395 : }
9396 460 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9397 : {
9398 29 : {
9399 29 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9400 29 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9401 29 : if (res) return res;
9402 : }
9403 : }
9404 431 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9405 : {
9406 30 : {
9407 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9408 30 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9409 30 : if (res) return res;
9410 : }
9411 : }
9412 : break;
9413 : }
9414 2002805 : case CALL_EXPR:
9415 2002805 : switch (get_call_combined_fn (_p0))
9416 : {
9417 3 : case CFN_BUILT_IN_SQRTF:
9418 3 : if (call_expr_nargs (_p0) == 1)
9419 : {
9420 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9421 3 : switch (TREE_CODE (_p1))
9422 : {
9423 0 : case REAL_CST:
9424 0 : {
9425 0 : {
9426 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9427 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9428 0 : if (res) return res;
9429 : }
9430 0 : break;
9431 : }
9432 3 : case CALL_EXPR:
9433 3 : switch (get_call_combined_fn (_p1))
9434 : {
9435 3 : case CFN_BUILT_IN_SQRTF:
9436 3 : if (call_expr_nargs (_p1) == 1)
9437 : {
9438 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9439 3 : {
9440 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9441 3 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9442 3 : if (res) return res;
9443 : }
9444 : }
9445 : break;
9446 : default:;
9447 : }
9448 : break;
9449 : default:;
9450 : }
9451 : }
9452 : break;
9453 3 : case CFN_BUILT_IN_SQRTL:
9454 3 : if (call_expr_nargs (_p0) == 1)
9455 : {
9456 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9457 3 : switch (TREE_CODE (_p1))
9458 : {
9459 0 : case REAL_CST:
9460 0 : {
9461 0 : {
9462 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9463 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9464 0 : if (res) return res;
9465 : }
9466 0 : break;
9467 : }
9468 3 : case CALL_EXPR:
9469 3 : switch (get_call_combined_fn (_p1))
9470 : {
9471 3 : case CFN_BUILT_IN_SQRTL:
9472 3 : if (call_expr_nargs (_p1) == 1)
9473 : {
9474 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9475 3 : {
9476 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9477 3 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9478 3 : if (res) return res;
9479 : }
9480 : }
9481 : break;
9482 : default:;
9483 : }
9484 : break;
9485 : default:;
9486 : }
9487 : }
9488 : break;
9489 0 : case CFN_BUILT_IN_SQRT:
9490 0 : if (call_expr_nargs (_p0) == 1)
9491 : {
9492 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9493 0 : switch (TREE_CODE (_p1))
9494 : {
9495 0 : case REAL_CST:
9496 0 : {
9497 0 : {
9498 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9499 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9500 0 : if (res) return res;
9501 : }
9502 0 : break;
9503 : }
9504 0 : case CALL_EXPR:
9505 0 : switch (get_call_combined_fn (_p1))
9506 : {
9507 0 : case CFN_BUILT_IN_SQRT:
9508 0 : if (call_expr_nargs (_p1) == 1)
9509 : {
9510 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9511 0 : {
9512 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9513 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9514 0 : if (res) return res;
9515 : }
9516 : }
9517 : break;
9518 : default:;
9519 : }
9520 : break;
9521 : default:;
9522 : }
9523 : }
9524 : break;
9525 0 : case CFN_SQRT:
9526 0 : if (call_expr_nargs (_p0) == 1)
9527 : {
9528 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9529 0 : switch (TREE_CODE (_p1))
9530 : {
9531 0 : case REAL_CST:
9532 0 : {
9533 0 : {
9534 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9535 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9536 0 : if (res) return res;
9537 : }
9538 0 : break;
9539 : }
9540 0 : case CALL_EXPR:
9541 0 : switch (get_call_combined_fn (_p1))
9542 : {
9543 0 : case CFN_SQRT:
9544 0 : if (call_expr_nargs (_p1) == 1)
9545 : {
9546 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9547 0 : {
9548 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9549 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9550 0 : if (res) return res;
9551 : }
9552 : }
9553 : break;
9554 : default:;
9555 : }
9556 : break;
9557 : default:;
9558 : }
9559 : }
9560 : break;
9561 : default:;
9562 : }
9563 : break;
9564 24550564 : default:;
9565 : }
9566 24550564 : switch (TREE_CODE (_p1))
9567 : {
9568 62 : case BIT_XOR_EXPR:
9569 62 : {
9570 62 : tree _q30 = TREE_OPERAND (_p1, 0);
9571 62 : tree _q31 = TREE_OPERAND (_p1, 1);
9572 62 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9573 : {
9574 0 : {
9575 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9576 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9577 0 : if (res) return res;
9578 : }
9579 : }
9580 62 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9581 : {
9582 0 : {
9583 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9584 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9585 0 : if (res) return res;
9586 : }
9587 : }
9588 : break;
9589 : }
9590 24550564 : default:;
9591 : }
9592 24550564 : switch (TREE_CODE (_p0))
9593 : {
9594 834188 : case BIT_AND_EXPR:
9595 834188 : {
9596 834188 : tree _q20 = TREE_OPERAND (_p0, 0);
9597 834188 : tree _q21 = TREE_OPERAND (_p0, 1);
9598 834188 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9599 : {
9600 139 : {
9601 139 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9602 139 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9603 139 : if (res) return res;
9604 : }
9605 : }
9606 834187 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9607 : {
9608 144205 : {
9609 144205 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9610 144205 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9611 144205 : if (res) return res;
9612 : }
9613 : }
9614 : break;
9615 : }
9616 24550563 : default:;
9617 : }
9618 24550563 : switch (TREE_CODE (_p1))
9619 : {
9620 24873 : case BIT_AND_EXPR:
9621 24873 : {
9622 24873 : tree _q30 = TREE_OPERAND (_p1, 0);
9623 24873 : tree _q31 = TREE_OPERAND (_p1, 1);
9624 24873 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9625 : {
9626 0 : {
9627 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9628 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9629 0 : if (res) return res;
9630 : }
9631 : }
9632 24873 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9633 : {
9634 0 : {
9635 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9636 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9637 0 : if (res) return res;
9638 : }
9639 : }
9640 : break;
9641 : }
9642 24550563 : default:;
9643 : }
9644 24550563 : switch (TREE_CODE (_p0))
9645 : {
9646 2284845 : CASE_CONVERT:
9647 2284845 : {
9648 2284845 : tree _q20 = TREE_OPERAND (_p0, 0);
9649 2284845 : switch (TREE_CODE (_q20))
9650 : {
9651 10 : case BIT_AND_EXPR:
9652 10 : {
9653 10 : tree _q30 = TREE_OPERAND (_q20, 0);
9654 10 : tree _q31 = TREE_OPERAND (_q20, 1);
9655 10 : switch (TREE_CODE (_q30))
9656 : {
9657 0 : CASE_CONVERT:
9658 0 : {
9659 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9660 0 : switch (TREE_CODE (_q31))
9661 : {
9662 0 : case INTEGER_CST:
9663 0 : {
9664 0 : switch (TREE_CODE (_p1))
9665 : {
9666 0 : CASE_CONVERT:
9667 0 : {
9668 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9669 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9670 : {
9671 0 : {
9672 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9673 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
9674 0 : if (res) return res;
9675 : }
9676 : }
9677 : break;
9678 : }
9679 : default:;
9680 : }
9681 : break;
9682 : }
9683 : default:;
9684 : }
9685 : break;
9686 : }
9687 : default:;
9688 : }
9689 : break;
9690 : }
9691 2284845 : default:;
9692 : }
9693 2284845 : switch (TREE_CODE (_p1))
9694 : {
9695 919222 : CASE_CONVERT:
9696 919222 : {
9697 919222 : tree _q40 = TREE_OPERAND (_p1, 0);
9698 919222 : switch (TREE_CODE (_q40))
9699 : {
9700 7 : case BIT_AND_EXPR:
9701 7 : {
9702 7 : tree _q50 = TREE_OPERAND (_q40, 0);
9703 7 : tree _q51 = TREE_OPERAND (_q40, 1);
9704 7 : switch (TREE_CODE (_q50))
9705 : {
9706 7 : CASE_CONVERT:
9707 7 : {
9708 7 : tree _q60 = TREE_OPERAND (_q50, 0);
9709 7 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9710 : {
9711 0 : switch (TREE_CODE (_q51))
9712 : {
9713 0 : case INTEGER_CST:
9714 0 : {
9715 0 : {
9716 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9717 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
9718 0 : if (res) return res;
9719 : }
9720 0 : break;
9721 : }
9722 : default:;
9723 : }
9724 : }
9725 : break;
9726 : }
9727 : default:;
9728 : }
9729 : break;
9730 : }
9731 : default:;
9732 : }
9733 : break;
9734 : }
9735 : default:;
9736 : }
9737 : break;
9738 : }
9739 33522 : case BIT_IOR_EXPR:
9740 33522 : {
9741 33522 : tree _q20 = TREE_OPERAND (_p0, 0);
9742 33522 : tree _q21 = TREE_OPERAND (_p0, 1);
9743 33522 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9744 : {
9745 24 : {
9746 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9747 24 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9748 24 : if (res) return res;
9749 : }
9750 : }
9751 33522 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9752 : {
9753 46 : {
9754 46 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9755 46 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9756 46 : if (res) return res;
9757 : }
9758 : }
9759 : break;
9760 : }
9761 24550563 : default:;
9762 : }
9763 24550563 : switch (TREE_CODE (_p1))
9764 : {
9765 618 : case BIT_IOR_EXPR:
9766 618 : {
9767 618 : tree _q30 = TREE_OPERAND (_p1, 0);
9768 618 : tree _q31 = TREE_OPERAND (_p1, 1);
9769 618 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9770 : {
9771 0 : {
9772 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9773 0 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9774 0 : if (res) return res;
9775 : }
9776 : }
9777 618 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9778 : {
9779 0 : {
9780 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9781 0 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9782 0 : if (res) return res;
9783 : }
9784 : }
9785 : break;
9786 : }
9787 24550563 : default:;
9788 : }
9789 24550563 : switch (TREE_CODE (_p0))
9790 : {
9791 2284845 : CASE_CONVERT:
9792 2284845 : {
9793 2284845 : tree _q20 = TREE_OPERAND (_p0, 0);
9794 2284845 : switch (TREE_CODE (_q20))
9795 : {
9796 984 : case BIT_XOR_EXPR:
9797 984 : {
9798 984 : tree _q30 = TREE_OPERAND (_q20, 0);
9799 984 : tree _q31 = TREE_OPERAND (_q20, 1);
9800 984 : switch (TREE_CODE (_q31))
9801 : {
9802 7 : case INTEGER_CST:
9803 7 : {
9804 7 : switch (TREE_CODE (_p1))
9805 : {
9806 0 : case INTEGER_CST:
9807 0 : {
9808 0 : {
9809 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9810 0 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9811 0 : if (res) return res;
9812 : }
9813 0 : break;
9814 : }
9815 : default:;
9816 : }
9817 : break;
9818 : }
9819 : default:;
9820 : }
9821 : break;
9822 : }
9823 : default:;
9824 : }
9825 : break;
9826 : }
9827 401 : case BIT_XOR_EXPR:
9828 401 : {
9829 401 : tree _q20 = TREE_OPERAND (_p0, 0);
9830 401 : tree _q21 = TREE_OPERAND (_p0, 1);
9831 401 : switch (TREE_CODE (_q21))
9832 : {
9833 103 : case INTEGER_CST:
9834 103 : {
9835 103 : switch (TREE_CODE (_p1))
9836 : {
9837 16 : case INTEGER_CST:
9838 16 : {
9839 16 : {
9840 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9841 16 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9842 16 : if (res) return res;
9843 : }
9844 0 : break;
9845 : }
9846 : default:;
9847 : }
9848 : break;
9849 : }
9850 : default:;
9851 : }
9852 : break;
9853 : }
9854 24550547 : default:;
9855 : }
9856 24550547 : {
9857 24550547 : tree _p0_pops[1];
9858 24550547 : if (tree_nop_convert (_p0, _p0_pops))
9859 : {
9860 1924109 : tree _q20 = _p0_pops[0];
9861 1924109 : if (integer_zerop (_p1))
9862 : {
9863 428492 : {
9864 428492 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9865 428492 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, EQ_EXPR);
9866 428492 : if (res) return res;
9867 : }
9868 : }
9869 : }
9870 : }
9871 24268761 : if (integer_zerop (_p1))
9872 : {
9873 9745770 : {
9874 9745770 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9875 9745770 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, EQ_EXPR);
9876 9745770 : if (res) return res;
9877 : }
9878 : }
9879 24195085 : switch (TREE_CODE (_p0))
9880 : {
9881 834187 : case BIT_AND_EXPR:
9882 834187 : {
9883 834187 : tree _q20 = TREE_OPERAND (_p0, 0);
9884 834187 : tree _q21 = TREE_OPERAND (_p0, 1);
9885 834187 : switch (TREE_CODE (_p1))
9886 : {
9887 24569 : case BIT_AND_EXPR:
9888 24569 : {
9889 24569 : tree _q50 = TREE_OPERAND (_p1, 0);
9890 24569 : tree _q51 = TREE_OPERAND (_p1, 1);
9891 24569 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9892 : {
9893 24044 : {
9894 24044 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9895 24044 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR);
9896 24044 : if (res) return res;
9897 : }
9898 : }
9899 525 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9900 : {
9901 28 : {
9902 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9903 28 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR);
9904 28 : if (res) return res;
9905 : }
9906 : }
9907 497 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9908 : {
9909 28 : {
9910 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9911 28 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR);
9912 28 : if (res) return res;
9913 : }
9914 : }
9915 469 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9916 : {
9917 28 : {
9918 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
9919 28 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR);
9920 28 : if (res) return res;
9921 : }
9922 : }
9923 : break;
9924 : }
9925 810059 : default:;
9926 : }
9927 810059 : if (integer_pow2p (_q21))
9928 : {
9929 283105 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9930 : {
9931 111305 : {
9932 111305 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9933 111305 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
9934 111305 : if (res) return res;
9935 : }
9936 : }
9937 : }
9938 698774 : switch (TREE_CODE (_q20))
9939 : {
9940 48717 : CASE_CONVERT:
9941 48717 : {
9942 48717 : tree _q30 = TREE_OPERAND (_q20, 0);
9943 48717 : if (integer_pow2p (_q21))
9944 : {
9945 10775 : if (integer_zerop (_p1))
9946 : {
9947 10773 : {
9948 10773 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
9949 10773 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
9950 10773 : if (res) return res;
9951 : }
9952 : }
9953 : }
9954 : break;
9955 : }
9956 697817 : default:;
9957 : }
9958 697817 : if (integer_pow2p (_q21))
9959 : {
9960 170863 : if (integer_zerop (_p1))
9961 : {
9962 170706 : {
9963 170706 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
9964 170706 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
9965 170706 : if (res) return res;
9966 : }
9967 : }
9968 : }
9969 : break;
9970 : }
9971 1216 : case GE_EXPR:
9972 1216 : {
9973 1216 : tree _q20 = TREE_OPERAND (_p0, 0);
9974 1216 : tree _q21 = TREE_OPERAND (_p0, 1);
9975 1216 : if (integer_zerop (_q21))
9976 : {
9977 98 : switch (TREE_CODE (_p1))
9978 : {
9979 5 : case GE_EXPR:
9980 5 : {
9981 5 : tree _q50 = TREE_OPERAND (_p1, 0);
9982 5 : tree _q51 = TREE_OPERAND (_p1, 1);
9983 5 : if (integer_zerop (_q51))
9984 : {
9985 5 : {
9986 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9987 5 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, GE_EXPR);
9988 5 : if (res) return res;
9989 : }
9990 : }
9991 : break;
9992 : }
9993 1 : case LT_EXPR:
9994 1 : {
9995 1 : tree _q50 = TREE_OPERAND (_p1, 0);
9996 1 : tree _q51 = TREE_OPERAND (_p1, 1);
9997 1 : if (integer_zerop (_q51))
9998 : {
9999 1 : {
10000 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10001 1 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
10002 1 : if (res) return res;
10003 : }
10004 : }
10005 : break;
10006 : }
10007 : default:;
10008 : }
10009 : }
10010 : break;
10011 : }
10012 836 : case LT_EXPR:
10013 836 : {
10014 836 : tree _q20 = TREE_OPERAND (_p0, 0);
10015 836 : tree _q21 = TREE_OPERAND (_p0, 1);
10016 836 : if (integer_zerop (_q21))
10017 : {
10018 139 : switch (TREE_CODE (_p1))
10019 : {
10020 11 : case LT_EXPR:
10021 11 : {
10022 11 : tree _q50 = TREE_OPERAND (_p1, 0);
10023 11 : tree _q51 = TREE_OPERAND (_p1, 1);
10024 11 : if (integer_zerop (_q51))
10025 : {
10026 9 : {
10027 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10028 9 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GE_EXPR);
10029 9 : if (res) return res;
10030 : }
10031 : }
10032 : break;
10033 : }
10034 1 : case GE_EXPR:
10035 1 : {
10036 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10037 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10038 1 : if (integer_zerop (_q51))
10039 : {
10040 1 : {
10041 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10042 1 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
10043 1 : if (res) return res;
10044 : }
10045 : }
10046 : break;
10047 : }
10048 : default:;
10049 : }
10050 : }
10051 : break;
10052 : }
10053 33522 : case BIT_IOR_EXPR:
10054 33522 : {
10055 33522 : tree _q20 = TREE_OPERAND (_p0, 0);
10056 33522 : tree _q21 = TREE_OPERAND (_p0, 1);
10057 33522 : switch (TREE_CODE (_q21))
10058 : {
10059 658 : CASE_CONVERT:
10060 658 : {
10061 658 : tree _q40 = TREE_OPERAND (_q21, 0);
10062 658 : switch (TREE_CODE (_q40))
10063 : {
10064 0 : case NE_EXPR:
10065 0 : {
10066 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10067 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10068 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10069 : {
10070 0 : if (integer_zerop (_q51))
10071 : {
10072 0 : if (integer_zerop (_p1))
10073 : {
10074 0 : {
10075 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10076 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10077 0 : if (res) return res;
10078 : }
10079 : }
10080 : }
10081 : }
10082 : break;
10083 : }
10084 : default:;
10085 : }
10086 : break;
10087 : }
10088 33522 : default:;
10089 : }
10090 33522 : switch (TREE_CODE (_q20))
10091 : {
10092 643 : CASE_CONVERT:
10093 643 : {
10094 643 : tree _q30 = TREE_OPERAND (_q20, 0);
10095 643 : switch (TREE_CODE (_q30))
10096 : {
10097 0 : case NE_EXPR:
10098 0 : {
10099 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10100 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10101 0 : if (integer_zerop (_q41))
10102 : {
10103 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
10104 : {
10105 0 : if (integer_zerop (_p1))
10106 : {
10107 0 : {
10108 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
10109 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10110 0 : if (res) return res;
10111 : }
10112 : }
10113 : }
10114 : }
10115 : break;
10116 : }
10117 : default:;
10118 : }
10119 : break;
10120 : }
10121 33522 : default:;
10122 : }
10123 33522 : switch (TREE_CODE (_q21))
10124 : {
10125 1 : case NE_EXPR:
10126 1 : {
10127 1 : tree _q40 = TREE_OPERAND (_q21, 0);
10128 1 : tree _q41 = TREE_OPERAND (_q21, 1);
10129 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10130 : {
10131 0 : if (integer_zerop (_q41))
10132 : {
10133 0 : if (integer_zerop (_p1))
10134 : {
10135 0 : {
10136 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10137 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10138 0 : if (res) return res;
10139 : }
10140 : }
10141 : }
10142 : }
10143 : break;
10144 : }
10145 33522 : default:;
10146 : }
10147 33522 : switch (TREE_CODE (_q20))
10148 : {
10149 8 : case NE_EXPR:
10150 8 : {
10151 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10152 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10153 8 : if (integer_zerop (_q31))
10154 : {
10155 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
10156 : {
10157 0 : if (integer_zerop (_p1))
10158 : {
10159 0 : {
10160 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10161 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10162 0 : if (res) return res;
10163 : }
10164 : }
10165 : }
10166 : }
10167 : break;
10168 : }
10169 : default:;
10170 : }
10171 : break;
10172 : }
10173 2003056 : CASE_CONVERT:
10174 2003056 : {
10175 2003056 : tree _q20 = TREE_OPERAND (_p0, 0);
10176 2003056 : switch (TREE_CODE (_q20))
10177 : {
10178 573703 : case ADDR_EXPR:
10179 573703 : {
10180 573703 : switch (TREE_CODE (_p1))
10181 : {
10182 545582 : CASE_CONVERT:
10183 545582 : {
10184 545582 : tree _q40 = TREE_OPERAND (_p1, 0);
10185 545582 : switch (TREE_CODE (_q40))
10186 : {
10187 545582 : case ADDR_EXPR:
10188 545582 : {
10189 545582 : {
10190 545582 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10191 545582 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR);
10192 545582 : if (res) return res;
10193 : }
10194 30 : break;
10195 : }
10196 : default:;
10197 : }
10198 : break;
10199 : }
10200 20893 : case ADDR_EXPR:
10201 20893 : {
10202 20893 : {
10203 20893 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10204 20893 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR);
10205 20893 : if (res) return res;
10206 : }
10207 7896 : break;
10208 : }
10209 : default:;
10210 : }
10211 : break;
10212 : }
10213 : default:;
10214 : }
10215 : break;
10216 : }
10217 18954 : case ADDR_EXPR:
10218 18954 : {
10219 18954 : switch (TREE_CODE (_p1))
10220 : {
10221 165 : CASE_CONVERT:
10222 165 : {
10223 165 : tree _q30 = TREE_OPERAND (_p1, 0);
10224 165 : switch (TREE_CODE (_q30))
10225 : {
10226 165 : case ADDR_EXPR:
10227 165 : {
10228 165 : {
10229 165 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10230 165 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR);
10231 165 : if (res) return res;
10232 : }
10233 0 : break;
10234 : }
10235 : default:;
10236 : }
10237 : break;
10238 : }
10239 16373 : case ADDR_EXPR:
10240 16373 : {
10241 16373 : {
10242 16373 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10243 16373 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR);
10244 16373 : if (res) return res;
10245 : }
10246 7261 : break;
10247 : }
10248 : default:;
10249 : }
10250 : break;
10251 : }
10252 23490581 : default:;
10253 : }
10254 23490581 : {
10255 23490581 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10256 23490581 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR);
10257 23490581 : if (res) return res;
10258 : }
10259 23487396 : switch (TREE_CODE (_p0))
10260 : {
10261 1444507 : CASE_CONVERT:
10262 1444507 : {
10263 1444507 : tree _q20 = TREE_OPERAND (_p0, 0);
10264 1444507 : switch (TREE_CODE (_p1))
10265 : {
10266 255798 : case INTEGER_CST:
10267 255798 : {
10268 255798 : {
10269 255798 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10270 255798 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, EQ_EXPR);
10271 255798 : if (res) return res;
10272 : }
10273 254405 : break;
10274 : }
10275 1443114 : default:;
10276 : }
10277 1443114 : switch (TREE_CODE (_q20))
10278 : {
10279 0 : case NE_EXPR:
10280 0 : {
10281 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10282 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10283 0 : switch (TREE_CODE (_q31))
10284 : {
10285 0 : case INTEGER_CST:
10286 0 : {
10287 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10288 : {
10289 0 : {
10290 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10291 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10292 0 : if (res) return res;
10293 : }
10294 : }
10295 : break;
10296 : }
10297 : default:;
10298 : }
10299 : break;
10300 : }
10301 0 : case EQ_EXPR:
10302 0 : {
10303 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10304 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10305 0 : switch (TREE_CODE (_q31))
10306 : {
10307 0 : case INTEGER_CST:
10308 0 : {
10309 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10310 : {
10311 0 : {
10312 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10313 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10314 0 : if (res) return res;
10315 : }
10316 : }
10317 : break;
10318 : }
10319 : default:;
10320 : }
10321 : break;
10322 : }
10323 : default:;
10324 : }
10325 : break;
10326 : }
10327 23486003 : default:;
10328 : }
10329 23486003 : switch (TREE_CODE (_p1))
10330 : {
10331 674226 : CASE_CONVERT:
10332 674226 : {
10333 674226 : tree _q30 = TREE_OPERAND (_p1, 0);
10334 674226 : switch (TREE_CODE (_q30))
10335 : {
10336 0 : case NE_EXPR:
10337 0 : {
10338 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10339 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10340 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10341 : {
10342 0 : switch (TREE_CODE (_q41))
10343 : {
10344 0 : case INTEGER_CST:
10345 0 : {
10346 0 : {
10347 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10348 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10349 0 : if (res) return res;
10350 : }
10351 0 : break;
10352 : }
10353 : default:;
10354 : }
10355 : }
10356 : break;
10357 : }
10358 0 : case EQ_EXPR:
10359 0 : {
10360 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10361 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10362 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10363 : {
10364 0 : switch (TREE_CODE (_q41))
10365 : {
10366 0 : case INTEGER_CST:
10367 0 : {
10368 0 : {
10369 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10370 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10371 0 : if (res) return res;
10372 : }
10373 0 : break;
10374 : }
10375 : default:;
10376 : }
10377 : }
10378 : break;
10379 : }
10380 : default:;
10381 : }
10382 : break;
10383 : }
10384 23486003 : default:;
10385 : }
10386 23486003 : if (integer_onep (_p1))
10387 : {
10388 1789962 : {
10389 1789962 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10390 1789962 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10391 1789962 : && types_match (type, TREE_TYPE (captures[0]))
10392 : )
10393 : {
10394 115517 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1540;
10395 115517 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
10396 115517 : {
10397 115517 : tree res_op0;
10398 115517 : res_op0 = captures[0];
10399 115517 : tree _r;
10400 115517 : _r = non_lvalue_loc (loc, res_op0);
10401 115517 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 996, __FILE__, __LINE__, true);
10402 115517 : return _r;
10403 : }
10404 : next_after_fail1540:;
10405 : }
10406 : }
10407 : }
10408 23370486 : switch (TREE_CODE (_p0))
10409 : {
10410 697525 : case BIT_AND_EXPR:
10411 697525 : {
10412 697525 : tree _q20 = TREE_OPERAND (_p0, 0);
10413 697525 : tree _q21 = TREE_OPERAND (_p0, 1);
10414 697525 : switch (TREE_CODE (_q21))
10415 : {
10416 688 : case VECTOR_CST:
10417 688 : {
10418 688 : if (integer_zerop (_p1))
10419 : {
10420 398 : {
10421 398 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10422 398 : const enum tree_code cmp = EQ_EXPR;
10423 398 : const enum tree_code icmp = LE_EXPR;
10424 398 : {
10425 398 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10426 398 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10427 : )
10428 : {
10429 2 : {
10430 2 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10431 2 : ? optab_vector : optab_default;
10432 2 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10433 2 : if (target_supports_op_p (utype, icmp, optab)
10434 2 : || (optimize_vectors_before_lowering_p ()
10435 2 : && (!target_supports_op_p (type, cmp, optab)
10436 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10437 : )
10438 : {
10439 2 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10440 : )
10441 : {
10442 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1541;
10443 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1541;
10444 2 : {
10445 2 : tree res_op0;
10446 2 : res_op0 = captures[1];
10447 2 : tree res_op1;
10448 2 : res_op1 = csts;
10449 2 : tree _r;
10450 2 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10451 2 : if (TREE_SIDE_EFFECTS (captures[2]))
10452 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10453 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10454 2 : return _r;
10455 : }
10456 396 : next_after_fail1541:;
10457 : }
10458 : else
10459 : {
10460 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1542;
10461 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1542;
10462 0 : {
10463 0 : tree res_op0;
10464 0 : {
10465 0 : tree _o1[1], _r1;
10466 0 : _o1[0] = captures[1];
10467 0 : if (TREE_TYPE (_o1[0]) != utype)
10468 : {
10469 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10470 : }
10471 : else
10472 : _r1 = _o1[0];
10473 0 : res_op0 = _r1;
10474 : }
10475 0 : tree res_op1;
10476 0 : res_op1 = csts;
10477 0 : tree _r;
10478 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10479 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10480 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10481 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10482 0 : return _r;
10483 : }
10484 396 : next_after_fail1542:;
10485 : }
10486 : }
10487 : }
10488 : }
10489 : }
10490 : }
10491 : }
10492 : break;
10493 : }
10494 634509 : case INTEGER_CST:
10495 634509 : {
10496 634509 : if (integer_zerop (_p1))
10497 : {
10498 522473 : {
10499 522473 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10500 522473 : const enum tree_code cmp = EQ_EXPR;
10501 522473 : const enum tree_code icmp = LE_EXPR;
10502 522473 : {
10503 522473 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10504 522473 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10505 : )
10506 : {
10507 1049 : {
10508 1049 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10509 1049 : ? optab_vector : optab_default;
10510 1049 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10511 1049 : if (target_supports_op_p (utype, icmp, optab)
10512 1049 : || (optimize_vectors_before_lowering_p ()
10513 905 : && (!target_supports_op_p (type, cmp, optab)
10514 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10515 : )
10516 : {
10517 905 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10518 : )
10519 : {
10520 616 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1543;
10521 616 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1543;
10522 616 : {
10523 616 : tree res_op0;
10524 616 : res_op0 = captures[1];
10525 616 : tree res_op1;
10526 616 : res_op1 = csts;
10527 616 : tree _r;
10528 616 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10529 616 : if (TREE_SIDE_EFFECTS (captures[2]))
10530 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10531 616 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10532 616 : return _r;
10533 : }
10534 521568 : next_after_fail1543:;
10535 : }
10536 : else
10537 : {
10538 289 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1544;
10539 289 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1544;
10540 289 : {
10541 289 : tree res_op0;
10542 289 : {
10543 289 : tree _o1[1], _r1;
10544 289 : _o1[0] = captures[1];
10545 289 : if (TREE_TYPE (_o1[0]) != utype)
10546 : {
10547 289 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10548 : }
10549 : else
10550 : _r1 = _o1[0];
10551 289 : res_op0 = _r1;
10552 : }
10553 289 : tree res_op1;
10554 289 : res_op1 = csts;
10555 289 : tree _r;
10556 289 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10557 289 : if (TREE_SIDE_EFFECTS (captures[2]))
10558 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10559 289 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10560 289 : return _r;
10561 : }
10562 521568 : next_after_fail1544:;
10563 : }
10564 : }
10565 : }
10566 : }
10567 : }
10568 : }
10569 : }
10570 : break;
10571 : }
10572 696618 : default:;
10573 : }
10574 696618 : switch (TREE_CODE (_q20))
10575 : {
10576 0 : case VECTOR_CST:
10577 0 : {
10578 0 : if (integer_zerop (_p1))
10579 : {
10580 0 : {
10581 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10582 0 : const enum tree_code cmp = EQ_EXPR;
10583 0 : const enum tree_code icmp = LE_EXPR;
10584 0 : {
10585 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10586 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10587 : )
10588 : {
10589 0 : {
10590 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10591 0 : ? optab_vector : optab_default;
10592 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10593 0 : if (target_supports_op_p (utype, icmp, optab)
10594 0 : || (optimize_vectors_before_lowering_p ()
10595 0 : && (!target_supports_op_p (type, cmp, optab)
10596 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10597 : )
10598 : {
10599 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10600 : )
10601 : {
10602 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1545;
10603 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1545;
10604 0 : {
10605 0 : tree res_op0;
10606 0 : res_op0 = captures[1];
10607 0 : tree res_op1;
10608 0 : res_op1 = csts;
10609 0 : tree _r;
10610 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10611 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10612 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10613 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10614 0 : return _r;
10615 : }
10616 0 : next_after_fail1545:;
10617 : }
10618 : else
10619 : {
10620 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1546;
10621 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1546;
10622 0 : {
10623 0 : tree res_op0;
10624 0 : {
10625 0 : tree _o1[1], _r1;
10626 0 : _o1[0] = captures[1];
10627 0 : if (TREE_TYPE (_o1[0]) != utype)
10628 : {
10629 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10630 : }
10631 : else
10632 : _r1 = _o1[0];
10633 0 : res_op0 = _r1;
10634 : }
10635 0 : tree res_op1;
10636 0 : res_op1 = csts;
10637 0 : tree _r;
10638 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10639 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10640 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10641 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10642 0 : return _r;
10643 : }
10644 0 : next_after_fail1546:;
10645 : }
10646 : }
10647 : }
10648 : }
10649 : }
10650 : }
10651 : }
10652 : break;
10653 : }
10654 0 : case INTEGER_CST:
10655 0 : {
10656 0 : if (integer_zerop (_p1))
10657 : {
10658 0 : {
10659 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10660 0 : const enum tree_code cmp = EQ_EXPR;
10661 0 : const enum tree_code icmp = LE_EXPR;
10662 0 : {
10663 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10664 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10665 : )
10666 : {
10667 0 : {
10668 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10669 0 : ? optab_vector : optab_default;
10670 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10671 0 : if (target_supports_op_p (utype, icmp, optab)
10672 0 : || (optimize_vectors_before_lowering_p ()
10673 0 : && (!target_supports_op_p (type, cmp, optab)
10674 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10675 : )
10676 : {
10677 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10678 : )
10679 : {
10680 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1547;
10681 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1547;
10682 0 : {
10683 0 : tree res_op0;
10684 0 : res_op0 = captures[1];
10685 0 : tree res_op1;
10686 0 : res_op1 = csts;
10687 0 : tree _r;
10688 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10689 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10690 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10691 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10692 0 : return _r;
10693 : }
10694 0 : next_after_fail1547:;
10695 : }
10696 : else
10697 : {
10698 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1548;
10699 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1548;
10700 0 : {
10701 0 : tree res_op0;
10702 0 : {
10703 0 : tree _o1[1], _r1;
10704 0 : _o1[0] = captures[1];
10705 0 : if (TREE_TYPE (_o1[0]) != utype)
10706 : {
10707 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10708 : }
10709 : else
10710 : _r1 = _o1[0];
10711 0 : res_op0 = _r1;
10712 : }
10713 0 : tree res_op1;
10714 0 : res_op1 = csts;
10715 0 : tree _r;
10716 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10717 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10718 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10719 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10720 0 : return _r;
10721 : }
10722 0 : next_after_fail1548:;
10723 : }
10724 : }
10725 : }
10726 : }
10727 : }
10728 : }
10729 : }
10730 : break;
10731 : }
10732 : default:;
10733 : }
10734 : break;
10735 : }
10736 15890 : case RSHIFT_EXPR:
10737 15890 : {
10738 15890 : tree _q20 = TREE_OPERAND (_p0, 0);
10739 15890 : tree _q21 = TREE_OPERAND (_p0, 1);
10740 15890 : switch (TREE_CODE (_q20))
10741 : {
10742 1 : case MULT_EXPR:
10743 1 : {
10744 1 : tree _q30 = TREE_OPERAND (_q20, 0);
10745 1 : tree _q31 = TREE_OPERAND (_q20, 1);
10746 1 : switch (TREE_CODE (_q30))
10747 : {
10748 1 : CASE_CONVERT:
10749 1 : {
10750 1 : tree _q40 = TREE_OPERAND (_q30, 0);
10751 1 : switch (TREE_CODE (_q31))
10752 : {
10753 1 : CASE_CONVERT:
10754 1 : {
10755 1 : tree _q60 = TREE_OPERAND (_q31, 0);
10756 1 : switch (TREE_CODE (_q21))
10757 : {
10758 1 : case INTEGER_CST:
10759 1 : {
10760 1 : if (integer_zerop (_p1))
10761 : {
10762 1 : {
10763 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10764 1 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, EQ_EXPR, LE_EXPR);
10765 1 : if (res) return res;
10766 : }
10767 : }
10768 : break;
10769 : }
10770 : default:;
10771 : }
10772 : break;
10773 : }
10774 : default:;
10775 : }
10776 : break;
10777 : }
10778 : default:;
10779 : }
10780 : break;
10781 : }
10782 : default:;
10783 : }
10784 : break;
10785 : }
10786 670576 : case PLUS_EXPR:
10787 670576 : {
10788 670576 : tree _q20 = TREE_OPERAND (_p0, 0);
10789 670576 : tree _q21 = TREE_OPERAND (_p0, 1);
10790 670576 : switch (TREE_CODE (_q21))
10791 : {
10792 623511 : case INTEGER_CST:
10793 623511 : {
10794 623511 : switch (TREE_CODE (_p1))
10795 : {
10796 351776 : case INTEGER_CST:
10797 351776 : {
10798 351776 : {
10799 351776 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10800 351776 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, EQ_EXPR);
10801 351776 : if (res) return res;
10802 : }
10803 22 : break;
10804 : }
10805 : default:;
10806 : }
10807 : break;
10808 : }
10809 : default:;
10810 : }
10811 : break;
10812 : }
10813 96032 : case MINUS_EXPR:
10814 96032 : {
10815 96032 : tree _q20 = TREE_OPERAND (_p0, 0);
10816 96032 : tree _q21 = TREE_OPERAND (_p0, 1);
10817 96032 : switch (TREE_CODE (_q21))
10818 : {
10819 19 : case INTEGER_CST:
10820 19 : {
10821 19 : switch (TREE_CODE (_p1))
10822 : {
10823 16 : case INTEGER_CST:
10824 16 : {
10825 16 : {
10826 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10827 16 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, EQ_EXPR);
10828 16 : if (res) return res;
10829 : }
10830 16 : break;
10831 : }
10832 : default:;
10833 : }
10834 : break;
10835 : }
10836 96032 : default:;
10837 : }
10838 96032 : switch (TREE_CODE (_q20))
10839 : {
10840 37623 : case INTEGER_CST:
10841 37623 : {
10842 37623 : switch (TREE_CODE (_p1))
10843 : {
10844 36286 : case INTEGER_CST:
10845 36286 : {
10846 36286 : {
10847 36286 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10848 36286 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10849 36286 : if (res) return res;
10850 : }
10851 0 : break;
10852 : }
10853 : default:;
10854 : }
10855 : break;
10856 : }
10857 : default:;
10858 : }
10859 : break;
10860 : }
10861 1998526 : case CALL_EXPR:
10862 1998526 : switch (get_call_combined_fn (_p0))
10863 : {
10864 19 : case CFN_BUILT_IN_CLZ:
10865 19 : if (call_expr_nargs (_p0) == 1)
10866 : {
10867 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10868 19 : switch (TREE_CODE (_p1))
10869 : {
10870 19 : case INTEGER_CST:
10871 19 : {
10872 19 : {
10873 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10874 19 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZ);
10875 19 : if (res) return res;
10876 : }
10877 16 : break;
10878 : }
10879 : default:;
10880 : }
10881 : }
10882 : break;
10883 17 : case CFN_BUILT_IN_CTZ:
10884 17 : if (call_expr_nargs (_p0) == 1)
10885 : {
10886 17 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10887 17 : switch (TREE_CODE (_p1))
10888 : {
10889 17 : case INTEGER_CST:
10890 17 : {
10891 17 : {
10892 17 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10893 17 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZ);
10894 17 : if (res) return res;
10895 : }
10896 16 : break;
10897 : }
10898 : default:;
10899 : }
10900 : }
10901 : break;
10902 4 : case CFN_BUILT_IN_FFS:
10903 4 : if (call_expr_nargs (_p0) == 1)
10904 : {
10905 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10906 4 : switch (TREE_CODE (_p1))
10907 : {
10908 4 : case INTEGER_CST:
10909 4 : {
10910 4 : {
10911 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10912 4 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFS);
10913 4 : if (res) return res;
10914 : }
10915 0 : break;
10916 : }
10917 : default:;
10918 : }
10919 : }
10920 : break;
10921 0 : case CFN_REDUC_IOR:
10922 0 : if (call_expr_nargs (_p0) == 1)
10923 : {
10924 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10925 0 : if (integer_zerop (_p1))
10926 : {
10927 0 : {
10928 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10929 0 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, EQ_EXPR);
10930 0 : if (res) return res;
10931 : }
10932 : }
10933 : }
10934 : break;
10935 0 : case CFN_BUILT_IN_FFSIMAX:
10936 0 : if (call_expr_nargs (_p0) == 1)
10937 : {
10938 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10939 0 : switch (TREE_CODE (_p1))
10940 : {
10941 0 : case INTEGER_CST:
10942 0 : {
10943 0 : {
10944 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10945 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSIMAX);
10946 0 : if (res) return res;
10947 : }
10948 0 : break;
10949 : }
10950 : default:;
10951 : }
10952 : }
10953 : break;
10954 15 : case CFN_BUILT_IN_POPCOUNT:
10955 15 : if (call_expr_nargs (_p0) == 1)
10956 : {
10957 15 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10958 15 : if (integer_zerop (_p1))
10959 : {
10960 1 : {
10961 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10962 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
10963 1 : if (res) return res;
10964 : }
10965 : }
10966 : }
10967 : break;
10968 0 : case CFN_BUILT_IN_CLZL:
10969 0 : if (call_expr_nargs (_p0) == 1)
10970 : {
10971 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10972 0 : switch (TREE_CODE (_p1))
10973 : {
10974 0 : case INTEGER_CST:
10975 0 : {
10976 0 : {
10977 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10978 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZL);
10979 0 : if (res) return res;
10980 : }
10981 0 : break;
10982 : }
10983 : default:;
10984 : }
10985 : }
10986 : break;
10987 16 : case CFN_BUILT_IN_CTZL:
10988 16 : if (call_expr_nargs (_p0) == 1)
10989 : {
10990 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10991 16 : switch (TREE_CODE (_p1))
10992 : {
10993 16 : case INTEGER_CST:
10994 16 : {
10995 16 : {
10996 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10997 16 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZL);
10998 16 : if (res) return res;
10999 : }
11000 16 : break;
11001 : }
11002 : default:;
11003 : }
11004 : }
11005 : break;
11006 1 : case CFN_BUILT_IN_FFSL:
11007 1 : if (call_expr_nargs (_p0) == 1)
11008 : {
11009 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11010 1 : switch (TREE_CODE (_p1))
11011 : {
11012 1 : case INTEGER_CST:
11013 1 : {
11014 1 : {
11015 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11016 1 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSL);
11017 1 : if (res) return res;
11018 : }
11019 0 : break;
11020 : }
11021 : default:;
11022 : }
11023 : }
11024 : break;
11025 7 : case CFN_BUILT_IN_POPCOUNTLL:
11026 7 : if (call_expr_nargs (_p0) == 1)
11027 : {
11028 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11029 7 : if (integer_zerop (_p1))
11030 : {
11031 1 : {
11032 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11033 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11034 1 : if (res) return res;
11035 : }
11036 : }
11037 : }
11038 : break;
11039 0 : case CFN_BUILT_IN_CTZIMAX:
11040 0 : if (call_expr_nargs (_p0) == 1)
11041 : {
11042 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11043 0 : switch (TREE_CODE (_p1))
11044 : {
11045 0 : case INTEGER_CST:
11046 0 : {
11047 0 : {
11048 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11049 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZIMAX);
11050 0 : if (res) return res;
11051 : }
11052 0 : break;
11053 : }
11054 : default:;
11055 : }
11056 : }
11057 : break;
11058 0 : case CFN_POPCOUNT:
11059 0 : if (call_expr_nargs (_p0) == 1)
11060 : {
11061 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11062 0 : if (integer_zerop (_p1))
11063 : {
11064 0 : {
11065 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11066 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_POPCOUNT);
11067 0 : if (res) return res;
11068 : }
11069 : }
11070 : }
11071 : break;
11072 0 : case CFN_CLZ:
11073 0 : if (call_expr_nargs (_p0) == 1)
11074 : {
11075 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11076 0 : switch (TREE_CODE (_p1))
11077 : {
11078 0 : case INTEGER_CST:
11079 0 : {
11080 0 : {
11081 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11082 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_CLZ);
11083 0 : if (res) return res;
11084 : }
11085 0 : break;
11086 : }
11087 : default:;
11088 : }
11089 : }
11090 0 : if (call_expr_nargs (_p0) == 2)
11091 : {
11092 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11093 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11094 0 : switch (TREE_CODE (_p1))
11095 : {
11096 0 : case INTEGER_CST:
11097 0 : {
11098 0 : {
11099 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11100 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
11101 0 : if (res) return res;
11102 : }
11103 0 : break;
11104 : }
11105 : default:;
11106 : }
11107 : }
11108 : break;
11109 0 : case CFN_CTZ:
11110 0 : if (call_expr_nargs (_p0) == 1)
11111 : {
11112 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11113 0 : switch (TREE_CODE (_p1))
11114 : {
11115 0 : case INTEGER_CST:
11116 0 : {
11117 0 : {
11118 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11119 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_CTZ);
11120 0 : if (res) return res;
11121 : }
11122 0 : break;
11123 : }
11124 : default:;
11125 : }
11126 : }
11127 0 : if (call_expr_nargs (_p0) == 2)
11128 : {
11129 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11130 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11131 0 : switch (TREE_CODE (_p1))
11132 : {
11133 0 : case INTEGER_CST:
11134 0 : {
11135 0 : {
11136 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11137 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR);
11138 0 : if (res) return res;
11139 : }
11140 0 : break;
11141 : }
11142 : default:;
11143 : }
11144 : }
11145 : break;
11146 0 : case CFN_FFS:
11147 0 : if (call_expr_nargs (_p0) == 1)
11148 : {
11149 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11150 0 : switch (TREE_CODE (_p1))
11151 : {
11152 0 : case INTEGER_CST:
11153 0 : {
11154 0 : {
11155 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11156 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_FFS);
11157 0 : if (res) return res;
11158 : }
11159 0 : break;
11160 : }
11161 : default:;
11162 : }
11163 : }
11164 : break;
11165 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11166 0 : if (call_expr_nargs (_p0) == 1)
11167 : {
11168 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11169 0 : if (integer_zerop (_p1))
11170 : {
11171 0 : {
11172 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11173 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11174 0 : if (res) return res;
11175 : }
11176 : }
11177 : }
11178 : break;
11179 0 : case CFN_BUILT_IN_CLZIMAX:
11180 0 : if (call_expr_nargs (_p0) == 1)
11181 : {
11182 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11183 0 : switch (TREE_CODE (_p1))
11184 : {
11185 0 : case INTEGER_CST:
11186 0 : {
11187 0 : {
11188 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11189 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZIMAX);
11190 0 : if (res) return res;
11191 : }
11192 0 : break;
11193 : }
11194 : default:;
11195 : }
11196 : }
11197 : break;
11198 7 : case CFN_BUILT_IN_POPCOUNTL:
11199 7 : if (call_expr_nargs (_p0) == 1)
11200 : {
11201 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11202 7 : if (integer_zerop (_p1))
11203 : {
11204 1 : {
11205 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11206 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
11207 1 : if (res) return res;
11208 : }
11209 : }
11210 : }
11211 : break;
11212 16 : case CFN_BUILT_IN_CLZLL:
11213 16 : if (call_expr_nargs (_p0) == 1)
11214 : {
11215 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11216 16 : switch (TREE_CODE (_p1))
11217 : {
11218 16 : case INTEGER_CST:
11219 16 : {
11220 16 : {
11221 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11222 16 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZLL);
11223 16 : if (res) return res;
11224 : }
11225 16 : break;
11226 : }
11227 : default:;
11228 : }
11229 : }
11230 : break;
11231 0 : case CFN_BUILT_IN_CTZLL:
11232 0 : if (call_expr_nargs (_p0) == 1)
11233 : {
11234 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11235 0 : switch (TREE_CODE (_p1))
11236 : {
11237 0 : case INTEGER_CST:
11238 0 : {
11239 0 : {
11240 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11241 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZLL);
11242 0 : if (res) return res;
11243 : }
11244 0 : break;
11245 : }
11246 : default:;
11247 : }
11248 : }
11249 : break;
11250 0 : case CFN_BUILT_IN_FFSLL:
11251 0 : if (call_expr_nargs (_p0) == 1)
11252 : {
11253 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11254 0 : switch (TREE_CODE (_p1))
11255 : {
11256 0 : case INTEGER_CST:
11257 0 : {
11258 0 : {
11259 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11260 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSLL);
11261 0 : if (res) return res;
11262 : }
11263 0 : break;
11264 : }
11265 : default:;
11266 : }
11267 : }
11268 : break;
11269 : default:;
11270 : }
11271 : break;
11272 : default:;
11273 : }
11274 : return NULL_TREE;
11275 : }
11276 :
11277 : tree
11278 786765 : generic_simplify_UNORDERED_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11279 : {
11280 786765 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11281 786765 : switch (TREE_CODE (_p0))
11282 : {
11283 0 : case VEC_COND_EXPR:
11284 0 : {
11285 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11286 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11287 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11288 0 : switch (TREE_CODE (_p1))
11289 : {
11290 0 : case VEC_COND_EXPR:
11291 0 : {
11292 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11293 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11294 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11295 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11296 : {
11297 0 : {
11298 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11299 0 : if (VECTOR_TYPE_P (type)
11300 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11301 0 : || types_match (type, TREE_TYPE (captures[2]))
11302 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11303 : || (optimize_vectors_before_lowering_p ()
11304 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11305 : )
11306 : {
11307 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1814;
11308 0 : {
11309 0 : tree res_op0;
11310 0 : res_op0 = captures[1];
11311 0 : tree res_op1;
11312 0 : {
11313 0 : tree _o1[2], _r1;
11314 0 : _o1[0] = captures[2];
11315 0 : _o1[1] = captures[5];
11316 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11317 0 : if (EXPR_P (_r1))
11318 0 : goto next_after_fail1814;
11319 0 : res_op1 = _r1;
11320 : }
11321 0 : tree res_op2;
11322 0 : {
11323 0 : tree _o1[2], _r1;
11324 0 : _o1[0] = captures[3];
11325 0 : _o1[1] = captures[6];
11326 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11327 0 : if (EXPR_P (_r1))
11328 0 : goto next_after_fail1814;
11329 0 : res_op2 = _r1;
11330 : }
11331 0 : tree _r;
11332 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11333 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11334 0 : return _r;
11335 : }
11336 0 : next_after_fail1814:;
11337 : }
11338 : }
11339 : }
11340 : break;
11341 : }
11342 0 : default:;
11343 : }
11344 0 : {
11345 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11346 0 : if (VECTOR_TYPE_P (type)
11347 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11348 0 : || types_match (type, TREE_TYPE (captures[2]))
11349 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11350 : || (optimize_vectors_before_lowering_p ()
11351 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11352 : )
11353 : {
11354 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1815;
11355 0 : {
11356 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1815;
11357 0 : tree res_op0;
11358 0 : res_op0 = captures[1];
11359 0 : tree res_op1;
11360 0 : {
11361 0 : tree _o1[2], _r1;
11362 0 : _o1[0] = captures[2];
11363 0 : _o1[1] = unshare_expr (captures[4]);
11364 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11365 0 : if (EXPR_P (_r1))
11366 0 : goto next_after_fail1815;
11367 0 : res_op1 = _r1;
11368 : }
11369 0 : tree res_op2;
11370 0 : {
11371 0 : tree _o1[2], _r1;
11372 0 : _o1[0] = captures[3];
11373 0 : _o1[1] = captures[4];
11374 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11375 0 : if (EXPR_P (_r1))
11376 0 : goto next_after_fail1815;
11377 0 : res_op2 = _r1;
11378 : }
11379 0 : tree _r;
11380 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11381 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11382 0 : return _r;
11383 : }
11384 0 : next_after_fail1815:;
11385 : }
11386 : }
11387 0 : break;
11388 : }
11389 786765 : default:;
11390 : }
11391 786765 : switch (TREE_CODE (_p1))
11392 : {
11393 0 : case VEC_COND_EXPR:
11394 0 : {
11395 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11396 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11397 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11398 0 : {
11399 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11400 0 : if (VECTOR_TYPE_P (type)
11401 0 : && (TREE_CODE_CLASS (UNORDERED_EXPR) != tcc_comparison
11402 0 : || types_match (type, TREE_TYPE (captures[3]))
11403 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11404 : || (optimize_vectors_before_lowering_p ()
11405 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11406 : )
11407 : {
11408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1816;
11409 0 : {
11410 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1816;
11411 0 : tree res_op0;
11412 0 : res_op0 = captures[2];
11413 0 : tree res_op1;
11414 0 : {
11415 0 : tree _o1[2], _r1;
11416 0 : _o1[0] = unshare_expr (captures[0]);
11417 0 : _o1[1] = captures[3];
11418 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11419 0 : if (EXPR_P (_r1))
11420 0 : goto next_after_fail1816;
11421 0 : res_op1 = _r1;
11422 : }
11423 0 : tree res_op2;
11424 0 : {
11425 0 : tree _o1[2], _r1;
11426 0 : _o1[0] = captures[0];
11427 0 : _o1[1] = captures[4];
11428 0 : _r1 = fold_build2_loc (loc, UNORDERED_EXPR, type, _o1[0], _o1[1]);
11429 0 : if (EXPR_P (_r1))
11430 0 : goto next_after_fail1816;
11431 0 : res_op2 = _r1;
11432 : }
11433 0 : tree _r;
11434 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11435 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11436 0 : return _r;
11437 : }
11438 0 : next_after_fail1816:;
11439 : }
11440 : }
11441 0 : break;
11442 : }
11443 786765 : default:;
11444 : }
11445 786765 : switch (TREE_CODE (_p0))
11446 : {
11447 0 : case FLOAT_EXPR:
11448 0 : {
11449 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11450 0 : switch (TREE_CODE (_p1))
11451 : {
11452 0 : case FLOAT_EXPR:
11453 0 : {
11454 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11455 0 : {
11456 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11457 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11458 0 : if (res) return res;
11459 : }
11460 0 : break;
11461 : }
11462 : default:;
11463 : }
11464 : break;
11465 : }
11466 18 : case NEGATE_EXPR:
11467 18 : {
11468 18 : tree _q20 = TREE_OPERAND (_p0, 0);
11469 18 : switch (TREE_CODE (_p1))
11470 : {
11471 18 : case NEGATE_EXPR:
11472 18 : {
11473 18 : tree _q40 = TREE_OPERAND (_p1, 0);
11474 18 : {
11475 18 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11476 18 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11477 18 : if (res) return res;
11478 : }
11479 0 : break;
11480 : }
11481 0 : default:;
11482 : }
11483 0 : if (CONSTANT_CLASS_P (_p1))
11484 : {
11485 0 : {
11486 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11487 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, UNORDERED_EXPR);
11488 0 : if (res) return res;
11489 : }
11490 : }
11491 : break;
11492 : }
11493 786747 : default:;
11494 : }
11495 786747 : switch (TREE_CODE (_p1))
11496 : {
11497 519 : case REAL_CST:
11498 519 : {
11499 519 : {
11500 519 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11501 519 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
11502 519 : if (res) return res;
11503 : }
11504 519 : break;
11505 : }
11506 786747 : default:;
11507 : }
11508 786747 : {
11509 786747 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11510 786747 : if (tree_expr_nan_p (captures[0]) || tree_expr_nan_p (captures[1])
11511 : )
11512 : {
11513 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1817;
11514 0 : {
11515 0 : tree _r;
11516 0 : _r = constant_boolean_node (true, type);
11517 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11518 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11519 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11520 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11521 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1044, __FILE__, __LINE__, true);
11522 0 : return _r;
11523 : }
11524 0 : next_after_fail1817:;
11525 : }
11526 : else
11527 : {
11528 786747 : if (!tree_expr_maybe_nan_p (captures[0]) && !tree_expr_maybe_nan_p (captures[1])
11529 : )
11530 : {
11531 35 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1818;
11532 35 : {
11533 35 : tree _r;
11534 35 : _r = constant_boolean_node (false, type);
11535 35 : if (TREE_SIDE_EFFECTS (captures[0]))
11536 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11537 35 : if (TREE_SIDE_EFFECTS (captures[1]))
11538 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11539 35 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1045, __FILE__, __LINE__, true);
11540 35 : return _r;
11541 : }
11542 0 : next_after_fail1818:;
11543 : }
11544 : }
11545 : }
11546 786712 : return NULL_TREE;
11547 : }
11548 :
11549 : tree
11550 373827 : generic_simplify_UNEQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11551 : {
11552 373827 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11553 373827 : switch (TREE_CODE (_p0))
11554 : {
11555 0 : case VEC_COND_EXPR:
11556 0 : {
11557 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11558 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11559 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11560 0 : switch (TREE_CODE (_p1))
11561 : {
11562 0 : case VEC_COND_EXPR:
11563 0 : {
11564 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11565 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11566 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11567 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11568 : {
11569 0 : {
11570 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11571 0 : if (VECTOR_TYPE_P (type)
11572 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11573 0 : || types_match (type, TREE_TYPE (captures[2]))
11574 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11575 : || (optimize_vectors_before_lowering_p ()
11576 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11577 : )
11578 : {
11579 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
11580 0 : {
11581 0 : tree res_op0;
11582 0 : res_op0 = captures[1];
11583 0 : tree res_op1;
11584 0 : {
11585 0 : tree _o1[2], _r1;
11586 0 : _o1[0] = captures[2];
11587 0 : _o1[1] = captures[5];
11588 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11589 0 : if (EXPR_P (_r1))
11590 0 : goto next_after_fail1836;
11591 0 : res_op1 = _r1;
11592 : }
11593 0 : tree res_op2;
11594 0 : {
11595 0 : tree _o1[2], _r1;
11596 0 : _o1[0] = captures[3];
11597 0 : _o1[1] = captures[6];
11598 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11599 0 : if (EXPR_P (_r1))
11600 0 : goto next_after_fail1836;
11601 0 : res_op2 = _r1;
11602 : }
11603 0 : tree _r;
11604 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11605 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11606 0 : return _r;
11607 : }
11608 0 : next_after_fail1836:;
11609 : }
11610 : }
11611 : }
11612 : break;
11613 : }
11614 0 : default:;
11615 : }
11616 0 : {
11617 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11618 0 : if (VECTOR_TYPE_P (type)
11619 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11620 0 : || types_match (type, TREE_TYPE (captures[2]))
11621 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11622 : || (optimize_vectors_before_lowering_p ()
11623 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11624 : )
11625 : {
11626 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
11627 0 : {
11628 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1837;
11629 0 : tree res_op0;
11630 0 : res_op0 = captures[1];
11631 0 : tree res_op1;
11632 0 : {
11633 0 : tree _o1[2], _r1;
11634 0 : _o1[0] = captures[2];
11635 0 : _o1[1] = unshare_expr (captures[4]);
11636 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11637 0 : if (EXPR_P (_r1))
11638 0 : goto next_after_fail1837;
11639 0 : res_op1 = _r1;
11640 : }
11641 0 : tree res_op2;
11642 0 : {
11643 0 : tree _o1[2], _r1;
11644 0 : _o1[0] = captures[3];
11645 0 : _o1[1] = captures[4];
11646 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11647 0 : if (EXPR_P (_r1))
11648 0 : goto next_after_fail1837;
11649 0 : res_op2 = _r1;
11650 : }
11651 0 : tree _r;
11652 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11653 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11654 0 : return _r;
11655 : }
11656 0 : next_after_fail1837:;
11657 : }
11658 : }
11659 0 : break;
11660 : }
11661 373827 : default:;
11662 : }
11663 373827 : switch (TREE_CODE (_p1))
11664 : {
11665 0 : case VEC_COND_EXPR:
11666 0 : {
11667 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11668 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11669 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11670 0 : {
11671 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11672 0 : if (VECTOR_TYPE_P (type)
11673 0 : && (TREE_CODE_CLASS (UNEQ_EXPR) != tcc_comparison
11674 0 : || types_match (type, TREE_TYPE (captures[3]))
11675 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11676 : || (optimize_vectors_before_lowering_p ()
11677 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11678 : )
11679 : {
11680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
11681 0 : {
11682 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1838;
11683 0 : tree res_op0;
11684 0 : res_op0 = captures[2];
11685 0 : tree res_op1;
11686 0 : {
11687 0 : tree _o1[2], _r1;
11688 0 : _o1[0] = unshare_expr (captures[0]);
11689 0 : _o1[1] = captures[3];
11690 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11691 0 : if (EXPR_P (_r1))
11692 0 : goto next_after_fail1838;
11693 0 : res_op1 = _r1;
11694 : }
11695 0 : tree res_op2;
11696 0 : {
11697 0 : tree _o1[2], _r1;
11698 0 : _o1[0] = captures[0];
11699 0 : _o1[1] = captures[4];
11700 0 : _r1 = fold_build2_loc (loc, UNEQ_EXPR, type, _o1[0], _o1[1]);
11701 0 : if (EXPR_P (_r1))
11702 0 : goto next_after_fail1838;
11703 0 : res_op2 = _r1;
11704 : }
11705 0 : tree _r;
11706 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11707 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11708 0 : return _r;
11709 : }
11710 0 : next_after_fail1838:;
11711 : }
11712 : }
11713 0 : break;
11714 : }
11715 373827 : default:;
11716 : }
11717 373827 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11718 : {
11719 0 : {
11720 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11721 0 : tree res = generic_simplify_574 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
11722 0 : if (res) return res;
11723 : }
11724 : }
11725 373827 : switch (TREE_CODE (_p0))
11726 : {
11727 0 : case FLOAT_EXPR:
11728 0 : {
11729 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11730 0 : switch (TREE_CODE (_p1))
11731 : {
11732 0 : case FLOAT_EXPR:
11733 0 : {
11734 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11735 0 : {
11736 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11737 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNEQ_EXPR, EQ_EXPR);
11738 0 : if (res) return res;
11739 : }
11740 0 : break;
11741 : }
11742 : default:;
11743 : }
11744 : break;
11745 : }
11746 0 : case NEGATE_EXPR:
11747 0 : {
11748 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11749 0 : switch (TREE_CODE (_p1))
11750 : {
11751 0 : case NEGATE_EXPR:
11752 0 : {
11753 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11754 0 : {
11755 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11756 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
11757 0 : if (res) return res;
11758 : }
11759 0 : break;
11760 : }
11761 0 : default:;
11762 : }
11763 0 : if (CONSTANT_CLASS_P (_p1))
11764 : {
11765 0 : {
11766 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11767 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, UNEQ_EXPR, UNEQ_EXPR);
11768 0 : if (res) return res;
11769 : }
11770 : }
11771 : break;
11772 : }
11773 373827 : default:;
11774 : }
11775 373827 : switch (TREE_CODE (_p1))
11776 : {
11777 154 : case REAL_CST:
11778 154 : {
11779 154 : {
11780 154 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11781 154 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
11782 154 : if (res) return res;
11783 : }
11784 152 : break;
11785 : }
11786 : default:;
11787 : }
11788 : return NULL_TREE;
11789 : }
11790 :
11791 : tree
11792 935840 : generic_simplify_BIT_FIELD_REF (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11793 : {
11794 935840 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11795 935840 : switch (TREE_CODE (_p0))
11796 : {
11797 16 : case BIT_FIELD_REF:
11798 16 : {
11799 16 : tree _q20 = TREE_OPERAND (_p0, 0);
11800 16 : tree _q21 = TREE_OPERAND (_p0, 1);
11801 16 : tree _q22 = TREE_OPERAND (_p0, 2);
11802 16 : {
11803 16 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
11804 16 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2002;
11805 16 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail2002;
11806 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2002;
11807 16 : {
11808 16 : tree res_op0;
11809 16 : res_op0 = captures[0];
11810 16 : tree res_op1;
11811 16 : res_op1 = captures[3];
11812 16 : tree res_op2;
11813 16 : res_op2 = const_binop (PLUS_EXPR, bitsizetype, captures[2], captures[4]);
11814 16 : tree _r;
11815 16 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11816 16 : if (TREE_SIDE_EFFECTS (captures[1]))
11817 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11818 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1094, __FILE__, __LINE__, true);
11819 16 : return _r;
11820 : }
11821 0 : next_after_fail2002:;
11822 : }
11823 0 : break;
11824 : }
11825 3 : case VIEW_CONVERT_EXPR:
11826 3 : {
11827 3 : tree _q20 = TREE_OPERAND (_p0, 0);
11828 3 : {
11829 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
11830 6 : if (! INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11831 6 : || type_has_mode_precision_p (TREE_TYPE (captures[0]))
11832 : )
11833 : {
11834 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2003;
11835 0 : {
11836 0 : tree res_op0;
11837 0 : res_op0 = captures[0];
11838 0 : tree res_op1;
11839 0 : res_op1 = captures[1];
11840 0 : tree res_op2;
11841 0 : res_op2 = captures[2];
11842 0 : tree _r;
11843 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11844 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1095, __FILE__, __LINE__, true);
11845 0 : return _r;
11846 : }
11847 0 : next_after_fail2003:;
11848 : }
11849 : }
11850 3 : break;
11851 : }
11852 935824 : default:;
11853 : }
11854 935824 : if (integer_zerop (_p2))
11855 : {
11856 308809 : {
11857 308809 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11858 308809 : if (tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (captures[0])))
11859 : )
11860 : {
11861 2665 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail2004;
11862 2665 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2004;
11863 2665 : {
11864 2665 : tree res_op0;
11865 2665 : res_op0 = captures[0];
11866 2665 : tree _r;
11867 2665 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11868 2665 : if (TREE_SIDE_EFFECTS (captures[1]))
11869 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11870 2665 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1096, __FILE__, __LINE__, true);
11871 2665 : return _r;
11872 : }
11873 306144 : next_after_fail2004:;
11874 : }
11875 : }
11876 : }
11877 933159 : {
11878 933159 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11879 933159 : if (TREE_CODE (TREE_TYPE (captures[0])) == COMPLEX_TYPE
11880 933159 : && tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11881 : )
11882 : {
11883 2 : if (integer_zerop (captures[2])
11884 : )
11885 : {
11886 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2005;
11887 0 : {
11888 0 : tree res_op0;
11889 0 : {
11890 0 : tree _o1[1], _r1;
11891 0 : _o1[0] = captures[0];
11892 0 : _r1 = fold_build1_loc (loc, REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11893 0 : res_op0 = _r1;
11894 : }
11895 0 : tree _r;
11896 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11897 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11898 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11899 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11900 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11901 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1097, __FILE__, __LINE__, true);
11902 0 : return _r;
11903 : }
11904 0 : next_after_fail2005:;
11905 : }
11906 : else
11907 : {
11908 2 : if (tree_int_cst_equal (captures[2], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11909 : )
11910 : {
11911 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2006;
11912 0 : {
11913 0 : tree res_op0;
11914 0 : {
11915 0 : tree _o1[1], _r1;
11916 0 : _o1[0] = captures[0];
11917 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11918 0 : res_op0 = _r1;
11919 : }
11920 0 : tree _r;
11921 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11922 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11923 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11924 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11925 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11926 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1098, __FILE__, __LINE__, true);
11927 0 : return _r;
11928 : }
11929 0 : next_after_fail2006:;
11930 : }
11931 : }
11932 : }
11933 : else
11934 : {
11935 1866252 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11936 20581 : && INTEGRAL_TYPE_P (type)
11937 : && (!
11938 :
11939 : || is_gimple_reg (captures[0]))
11940 952771 : && ((compare_tree_int (captures[1], TYPE_PRECISION (TREE_TYPE (captures[0]))) == 0
11941 0 : && integer_zerop (captures[2]))
11942 : || (BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN
11943 : && canonicalize_math_after_vectorization_p ()
11944 : && TYPE_PRECISION (TREE_TYPE (captures[0])) % BITS_PER_UNIT == 0
11945 : && TYPE_PRECISION (type) % BITS_PER_UNIT == 0
11946 : && compare_tree_int (captures[2], (BYTES_BIG_ENDIAN
11947 : ? (TYPE_PRECISION (TREE_TYPE (captures[0]))
11948 : - TYPE_PRECISION (type))
11949 : : 0)) == 0))
11950 : )
11951 : {
11952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2007;
11953 0 : {
11954 0 : tree res_op0;
11955 0 : res_op0 = captures[0];
11956 0 : tree _r;
11957 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
11958 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11959 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11960 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11961 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11962 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1099, __FILE__, __LINE__, true);
11963 0 : return _r;
11964 : }
11965 0 : next_after_fail2007:;
11966 : }
11967 : }
11968 : }
11969 933159 : switch (TREE_CODE (_p0))
11970 : {
11971 2289 : case CONSTRUCTOR:
11972 2289 : {
11973 2289 : {
11974 2289 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11975 2289 : if (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
11976 2289 : && tree_fits_uhwi_p (TYPE_SIZE (type))
11977 4578 : && ((tree_to_uhwi (TYPE_SIZE (type))
11978 2289 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))
11979 0 : || (VECTOR_TYPE_P (type)
11980 0 : && (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)))
11981 0 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))))
11982 : )
11983 : {
11984 2289 : {
11985 2289 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
11986 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
11987 2289 : tree eltype = TREE_TYPE (TREE_TYPE (ctor));
11988 2289 : unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype));
11989 2289 : unsigned HOST_WIDE_INT n = tree_to_uhwi (captures[1]);
11990 2289 : unsigned HOST_WIDE_INT idx = tree_to_uhwi (captures[2]);
11991 2289 : if (n != 0
11992 2289 : && (idx % width) == 0
11993 2289 : && (n % width) == 0
11994 4578 : && known_le ((idx + n) / width,
11995 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (ctor)))
11996 : )
11997 : {
11998 2289 : {
11999 2289 : idx = idx / width;
12000 2289 : n = n / width;
12001 2289 : poly_uint64 k = 1;
12002 2289 : if (CONSTRUCTOR_NELTS (ctor) != 0)
12003 : {
12004 2289 : tree cons_elem = TREE_TYPE (CONSTRUCTOR_ELT (ctor, 0)->value);
12005 2289 : if (TREE_CODE (cons_elem) == VECTOR_TYPE)
12006 2289 : k = TYPE_VECTOR_SUBPARTS (cons_elem);
12007 : }
12008 2289 : unsigned HOST_WIDE_INT elt, count, const_k;
12009 2289 : if (multiple_p (idx, k, &elt) && multiple_p (n, k, &count)
12010 : )
12011 : {
12012 12 : if (CONSTRUCTOR_NELTS (ctor) == 0
12013 : )
12014 : {
12015 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2008;
12016 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2008;
12017 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2008;
12018 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2008;
12019 0 : {
12020 0 : tree _r;
12021 0 : _r = build_zero_cst (type);
12022 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1100, __FILE__, __LINE__, true);
12023 2289 : return _r;
12024 : }
12025 : next_after_fail2008:;
12026 : }
12027 : else
12028 : {
12029 12 : if (count == 1
12030 : )
12031 : {
12032 12 : if (elt < CONSTRUCTOR_NELTS (ctor)
12033 : )
12034 : {
12035 12 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2009;
12036 12 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2009;
12037 12 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2009;
12038 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2009;
12039 12 : {
12040 12 : tree res_op0;
12041 12 : res_op0 = CONSTRUCTOR_ELT (ctor, elt)->value;
12042 12 : tree _r;
12043 12 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
12044 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1101, __FILE__, __LINE__, true);
12045 12 : return _r;
12046 : }
12047 : next_after_fail2009:;
12048 : }
12049 : else
12050 : {
12051 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2010;
12052 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2010;
12053 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2010;
12054 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2010;
12055 0 : {
12056 0 : tree _r;
12057 0 : _r = build_zero_cst (type);
12058 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1102, __FILE__, __LINE__, true);
12059 0 : return _r;
12060 : }
12061 : next_after_fail2010:;
12062 : }
12063 : }
12064 : else
12065 : {
12066 0 : if (single_use (captures[0])
12067 : )
12068 : {
12069 0 : {
12070 0 : vec<constructor_elt, va_gc> *vals;
12071 0 : vec_alloc (vals, count);
12072 0 : bool constant_p = true;
12073 0 : tree res;
12074 0 : for (unsigned i = 0;
12075 0 : i < count && elt + i < CONSTRUCTOR_NELTS (ctor); ++i)
12076 : {
12077 0 : tree e = CONSTRUCTOR_ELT (ctor, elt + i)->value;
12078 0 : CONSTRUCTOR_APPEND_ELT (vals, NULL_TREE, e);
12079 0 : if (!CONSTANT_CLASS_P (e))
12080 0 : constant_p = false;
12081 : }
12082 0 : tree evtype = (types_match (TREE_TYPE (type),
12083 0 : TREE_TYPE (TREE_TYPE (ctor)))
12084 0 : ? type
12085 0 : : build_vector_type (TREE_TYPE (TREE_TYPE (ctor)),
12086 0 : count * k));
12087 0 : res = (constant_p ? build_vector_from_ctor (evtype, vals)
12088 : : (
12089 :
12090 0 : ? NULL_TREE : build_constructor (evtype, vals)));
12091 0 : if (res
12092 : )
12093 : {
12094 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2011;
12095 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2011;
12096 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2011;
12097 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2011;
12098 0 : {
12099 0 : tree res_op0;
12100 0 : res_op0 = res;
12101 0 : tree _r;
12102 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
12103 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1103, __FILE__, __LINE__, true);
12104 0 : return _r;
12105 : }
12106 0 : next_after_fail2011:;
12107 : }
12108 : }
12109 : }
12110 : }
12111 : }
12112 : }
12113 : else
12114 : {
12115 2277 : if (k.is_constant (&const_k)
12116 2277 : && idx + n <= (idx / const_k + 1) * const_k
12117 : )
12118 : {
12119 2277 : if (CONSTRUCTOR_NELTS (ctor) <= idx / const_k
12120 : )
12121 : {
12122 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2012;
12123 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2012;
12124 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2012;
12125 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2012;
12126 0 : {
12127 0 : tree _r;
12128 0 : _r = build_zero_cst (type);
12129 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1104, __FILE__, __LINE__, true);
12130 0 : return _r;
12131 : }
12132 : next_after_fail2012:;
12133 : }
12134 : else
12135 : {
12136 2277 : if (n == const_k
12137 : )
12138 : {
12139 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2013;
12140 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2013;
12141 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2013;
12142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2013;
12143 0 : {
12144 0 : tree res_op0;
12145 0 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
12146 0 : tree _r;
12147 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
12148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1105, __FILE__, __LINE__, true);
12149 0 : return _r;
12150 : }
12151 : next_after_fail2013:;
12152 : }
12153 : else
12154 : {
12155 2277 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail2014;
12156 2277 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2014;
12157 2277 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2014;
12158 2277 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2014;
12159 2277 : {
12160 2277 : tree res_op0;
12161 2277 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
12162 2277 : tree res_op1;
12163 2277 : res_op1 = captures[1];
12164 2277 : tree res_op2;
12165 2277 : res_op2 = bitsize_int ((idx % const_k) * width);
12166 2277 : tree _r;
12167 2277 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
12168 2277 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1106, __FILE__, __LINE__, true);
12169 2277 : return _r;
12170 : }
12171 : next_after_fail2014:;
12172 : }
12173 : }
12174 : }
12175 : }
12176 : }
12177 : }
12178 : }
12179 : }
12180 : }
12181 0 : break;
12182 : }
12183 0 : case VEC_PERM_EXPR:
12184 0 : {
12185 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12186 0 : tree _q21 = TREE_OPERAND (_p0, 1);
12187 0 : tree _q22 = TREE_OPERAND (_p0, 2);
12188 0 : switch (TREE_CODE (_q22))
12189 : {
12190 0 : case VECTOR_CST:
12191 0 : {
12192 0 : {
12193 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
12194 0 : {
12195 0 : tree elem_type = TREE_TYPE (TREE_TYPE (captures[0]));
12196 0 : poly_uint64 elem_size = tree_to_poly_uint64 (TYPE_SIZE (elem_type));
12197 0 : poly_uint64 size = tree_to_poly_uint64 (TYPE_SIZE (type));
12198 0 : unsigned HOST_WIDE_INT nelts, idx;
12199 0 : unsigned HOST_WIDE_INT nelts_op = 0;
12200 0 : if (constant_multiple_p (tree_to_poly_uint64 (captures[5]), elem_size, &idx)
12201 0 : && VECTOR_CST_NELTS (captures[3]).is_constant (&nelts)
12202 0 : && (known_eq (size, elem_size)
12203 0 : || (constant_multiple_p (size, elem_size, &nelts_op)
12204 0 : && pow2p_hwi (nelts_op)))
12205 : )
12206 : {
12207 0 : {
12208 0 : bool ok = true;
12209 0 : if (known_eq (size, elem_size))
12210 0 : idx = TREE_INT_CST_LOW (VECTOR_CST_ELT (captures[3], idx)) % (2 * nelts);
12211 : else
12212 : {
12213 0 : unsigned start
12214 0 : = TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx)) % (2 * nelts);
12215 0 : unsigned end
12216 0 : = (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + nelts_op - 1))
12217 0 : % (2 * nelts));
12218 0 : if ((start < nelts) != (end < nelts))
12219 : ok = false;
12220 : else
12221 0 : for (unsigned HOST_WIDE_INT i = 1; i != nelts_op; i++)
12222 : {
12223 0 : if ((TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i))
12224 0 : % (2 * nelts) - 1)
12225 0 : != (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i - 1))
12226 0 : % (2 * nelts)))
12227 : {
12228 : ok = false;
12229 : break;
12230 : }
12231 : }
12232 0 : if (start % nelts_op)
12233 : ok = false;
12234 0 : idx = start;
12235 : }
12236 0 : if (ok
12237 : )
12238 : {
12239 0 : if (idx < nelts
12240 : )
12241 : {
12242 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail2015;
12243 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2015;
12244 0 : {
12245 0 : tree res_op0;
12246 0 : res_op0 = captures[1];
12247 0 : tree res_op1;
12248 0 : res_op1 = captures[4];
12249 0 : tree res_op2;
12250 0 : res_op2 = bitsize_int (idx * elem_size);
12251 0 : tree _r;
12252 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
12253 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12254 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12255 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12256 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12257 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1107, __FILE__, __LINE__, true);
12258 0 : return _r;
12259 : }
12260 0 : next_after_fail2015:;
12261 : }
12262 : else
12263 : {
12264 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail2016;
12265 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2016;
12266 0 : {
12267 0 : tree res_op0;
12268 0 : res_op0 = captures[2];
12269 0 : tree res_op1;
12270 0 : res_op1 = captures[4];
12271 0 : tree res_op2;
12272 0 : res_op2 = bitsize_int ((idx - nelts) * elem_size);
12273 0 : tree _r;
12274 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
12275 0 : if (TREE_SIDE_EFFECTS (captures[1]))
12276 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
12277 0 : if (TREE_SIDE_EFFECTS (captures[5]))
12278 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
12279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1108, __FILE__, __LINE__, true);
12280 0 : return _r;
12281 : }
12282 0 : next_after_fail2016:;
12283 : }
12284 : }
12285 : }
12286 : }
12287 : }
12288 : }
12289 0 : break;
12290 : }
12291 : default:;
12292 : }
12293 : break;
12294 : }
12295 0 : case BIT_INSERT_EXPR:
12296 0 : {
12297 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12298 0 : tree _q21 = TREE_OPERAND (_p0, 1);
12299 0 : tree _q22 = TREE_OPERAND (_p0, 2);
12300 0 : {
12301 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
12302 0 : {
12303 0 : unsigned HOST_WIDE_INT isize;
12304 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])))
12305 0 : isize = TYPE_PRECISION (TREE_TYPE (captures[1]));
12306 : else
12307 0 : isize = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (captures[1])));
12308 0 : if ((!INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
12309 0 : || type_has_mode_precision_p (TREE_TYPE (captures[1])))
12310 0 : && wi::leu_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
12311 0 : && wi::leu_p (wi::to_wide (captures[4]) + wi::to_wide (captures[3]),
12312 0 : wi::to_wide (captures[2]) + isize)
12313 : )
12314 : {
12315 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2017;
12316 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail2017;
12317 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2017;
12318 0 : {
12319 0 : tree res_op0;
12320 0 : res_op0 = captures[1];
12321 0 : tree res_op1;
12322 0 : res_op1 = captures[3];
12323 0 : tree res_op2;
12324 0 : res_op2 = wide_int_to_tree (bitsizetype,
12325 0 : wi::to_wide (captures[4])
12326 0 : - wi::to_wide (captures[2]));
12327 0 : tree _r;
12328 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
12329 0 : if (TREE_SIDE_EFFECTS (captures[0]))
12330 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
12331 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1109, __FILE__, __LINE__, true);
12332 0 : return _r;
12333 : }
12334 0 : next_after_fail2017:;
12335 : }
12336 : else
12337 : {
12338 0 : if (wi::eq_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
12339 0 : && compare_tree_int (captures[3], isize) == 0
12340 : )
12341 : {
12342 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2018;
12343 0 : {
12344 0 : tree res_op0;
12345 0 : res_op0 = captures[1];
12346 0 : tree _r;
12347 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
12348 0 : if (TREE_SIDE_EFFECTS (captures[0]))
12349 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
12350 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12351 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12352 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12353 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12354 0 : if (TREE_SIDE_EFFECTS (captures[4]))
12355 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
12356 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1110, __FILE__, __LINE__, true);
12357 0 : return _r;
12358 : }
12359 0 : next_after_fail2018:;
12360 : }
12361 : else
12362 : {
12363 0 : if (wi::geu_p (wi::to_wide (captures[2]),
12364 0 : wi::to_wide (captures[4]) + wi::to_wide (captures[3]))
12365 0 : || wi::geu_p (wi::to_wide (captures[4]),
12366 0 : wi::to_wide (captures[2]) + isize)
12367 : )
12368 : {
12369 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2019;
12370 0 : {
12371 0 : tree res_op0;
12372 0 : res_op0 = captures[0];
12373 0 : tree res_op1;
12374 0 : res_op1 = captures[3];
12375 0 : tree res_op2;
12376 0 : res_op2 = captures[4];
12377 0 : tree _r;
12378 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
12379 0 : if (TREE_SIDE_EFFECTS (captures[1]))
12380 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
12381 0 : if (TREE_SIDE_EFFECTS (captures[2]))
12382 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
12383 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1111, __FILE__, __LINE__, true);
12384 0 : return _r;
12385 : }
12386 0 : next_after_fail2019:;
12387 : }
12388 : }
12389 : }
12390 : }
12391 : }
12392 0 : break;
12393 : }
12394 : default:;
12395 : }
12396 : return NULL_TREE;
12397 : }
12398 : #pragma GCC diagnostic pop
|