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 1966989 : tree_power_of_two_cand (tree t, tree *res_ops)
11 : {
12 1966989 : const tree type = TREE_TYPE (t);
13 1966989 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1966989 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1966224 : switch (TREE_CODE (t))
16 : {
17 1625452 : case INTEGER_CST:
18 1625452 : {
19 1625452 : {
20 1625452 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 1625452 : {
22 1625452 : res_ops[0] = captures[0];
23 1625452 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 16 : break;
28 : }
29 16 : case LSHIFT_EXPR:
30 16 : {
31 16 : tree _p0 = TREE_OPERAND (t, 0);
32 16 : tree _p1 = TREE_OPERAND (t, 1);
33 16 : switch (TREE_CODE (_p0))
34 : {
35 16 : case INTEGER_CST:
36 16 : {
37 16 : {
38 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
39 16 : {
40 16 : res_ops[0] = captures[0];
41 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 13, __FILE__, __LINE__, false);
42 16 : return true;
43 : }
44 : }
45 : break;
46 : }
47 : default:;
48 : }
49 : break;
50 : }
51 : default:;
52 : }
53 : return false;
54 : }
55 :
56 : bool
57 84452118 : tree_with_possible_nonzero_bits (tree t)
58 : {
59 84452118 : const tree type = TREE_TYPE (t);
60 84452118 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
61 84452118 : if (TREE_SIDE_EFFECTS (t)) return false;
62 79205965 : switch (TREE_CODE (t))
63 : {
64 2059786 : case BIT_AND_EXPR:
65 2059786 : {
66 2059786 : tree _p0 = TREE_OPERAND (t, 0);
67 2059786 : tree _p1 = TREE_OPERAND (t, 1);
68 2059786 : if (tree_with_possible_nonzero_bits_1 (_p0))
69 : {
70 882586 : {
71 882586 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
72 882586 : {
73 882586 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
74 882586 : return true;
75 : }
76 : }
77 : }
78 1177200 : if (tree_with_possible_nonzero_bits_1 (_p1))
79 : {
80 995917 : {
81 995917 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
82 995917 : {
83 995917 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
84 995917 : return true;
85 : }
86 : }
87 : }
88 : break;
89 : }
90 77327462 : default:;
91 : }
92 77327462 : if (tree_with_possible_nonzero_bits_1 (t))
93 : {
94 41544294 : {
95 41544294 : tree captures[1] ATTRIBUTE_UNUSED = { t };
96 41544294 : {
97 41544294 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 36, __FILE__, __LINE__, false);
98 41544294 : return true;
99 : }
100 : }
101 : }
102 : return false;
103 : }
104 :
105 : bool
106 780180 : tree_vec_same_elem_p (tree t)
107 : {
108 780180 : const tree type = TREE_TYPE (t);
109 780180 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
110 780180 : if (TREE_SIDE_EFFECTS (t)) return false;
111 780180 : switch (TREE_CODE (t))
112 : {
113 0 : case VEC_DUPLICATE_EXPR:
114 0 : {
115 0 : tree _p0 = TREE_OPERAND (t, 0);
116 0 : {
117 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
118 0 : {
119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
120 0 : return true;
121 : }
122 : }
123 : break;
124 : }
125 : case CONSTRUCTOR:
126 : {
127 : {
128 : tree captures[1] ATTRIBUTE_UNUSED = { t };
129 : if (TREE_CODE (captures[0]) == SSA_NAME
130 : && uniform_vector_p (gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])))
131 : )
132 : {
133 : {
134 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
135 : return true;
136 : }
137 : }
138 : }
139 : break;
140 : }
141 780180 : default:;
142 : }
143 780180 : {
144 780180 : tree captures[1] ATTRIBUTE_UNUSED = { t };
145 780180 : if (uniform_vector_p (captures[0])
146 : )
147 : {
148 13981 : {
149 13981 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
150 13981 : return true;
151 : }
152 : }
153 : }
154 : return false;
155 : }
156 :
157 : tree
158 196 : generic_simplify_14 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
160 : {
161 196 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
162 196 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail89;
163 196 : {
164 196 : if (! tree_invariant_p (captures[3])) goto next_after_fail89;
165 15 : tree res_op0;
166 15 : {
167 15 : tree _o1[2], _r1;
168 15 : _o1[0] = captures[2];
169 15 : _o1[1] = unshare_expr (captures[3]);
170 15 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
171 15 : res_op0 = _r1;
172 : }
173 15 : tree res_op1;
174 15 : {
175 15 : tree _o1[2], _r1;
176 15 : _o1[0] = captures[4];
177 15 : _o1[1] = captures[3];
178 15 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
179 15 : if (EXPR_P (_r1))
180 14 : goto next_after_fail89;
181 1 : res_op1 = _r1;
182 : }
183 1 : tree _r;
184 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
185 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 62, __FILE__, __LINE__, true);
186 : return _r;
187 : }
188 : next_after_fail89:;
189 : return NULL_TREE;
190 : }
191 :
192 : tree
193 0 : generic_simplify_23 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
194 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
195 : const enum tree_code ARG_UNUSED (op))
196 : {
197 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
198 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail98;
199 0 : {
200 0 : tree res_op0;
201 0 : res_op0 = captures[0];
202 0 : tree res_op1;
203 0 : res_op1 = captures[1];
204 0 : tree _r;
205 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
206 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 71, __FILE__, __LINE__, true);
207 : return _r;
208 : }
209 0 : next_after_fail98:;
210 0 : return NULL_TREE;
211 : }
212 :
213 : tree
214 390 : generic_simplify_30 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
215 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
216 : const enum tree_code ARG_UNUSED (op),
217 : const enum tree_code ARG_UNUSED (rop))
218 : {
219 390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
220 390 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
221 390 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
222 : )
223 : {
224 390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail105;
225 390 : {
226 390 : tree res_op0;
227 390 : {
228 390 : tree _o1[1], _r1;
229 390 : _o1[0] = captures[0];
230 390 : if (TREE_TYPE (_o1[0]) != type)
231 : {
232 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
233 : }
234 : else
235 : _r1 = _o1[0];
236 390 : res_op0 = _r1;
237 : }
238 390 : tree res_op1;
239 390 : {
240 390 : tree _o1[2], _r1;
241 390 : {
242 390 : tree _o2[1], _r2;
243 390 : _o2[0] = captures[1];
244 390 : if (TREE_TYPE (_o2[0]) != type)
245 : {
246 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
247 : }
248 : else
249 : _r2 = _o2[0];
250 390 : _o1[0] = _r2;
251 : }
252 390 : {
253 390 : tree _o2[1], _r2;
254 390 : _o2[0] = captures[2];
255 390 : if (TREE_TYPE (_o2[0]) != type)
256 : {
257 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
258 : }
259 : else
260 : _r2 = _o2[0];
261 390 : _o1[1] = _r2;
262 : }
263 390 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
264 390 : res_op1 = _r1;
265 : }
266 390 : tree _r;
267 390 : _r = fold_build2_loc (loc, rop, type, res_op0, res_op1);
268 390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 78, __FILE__, __LINE__, true);
269 390 : return _r;
270 : }
271 0 : next_after_fail105:;
272 : }
273 : return NULL_TREE;
274 : }
275 :
276 : tree
277 0 : generic_simplify_42 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
278 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
279 : const enum tree_code ARG_UNUSED (op))
280 : {
281 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
282 0 : if (INTEGRAL_TYPE_P (type)
283 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
284 : )
285 : {
286 0 : {
287 0 : tree t = type;
288 0 : if (!TYPE_OVERFLOW_WRAPS (t))
289 0 : t = unsigned_type_for (t);
290 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
291 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail119;
292 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail119;
293 0 : {
294 0 : tree res_op0;
295 0 : {
296 0 : tree _o1[2], _r1;
297 0 : {
298 0 : tree _o2[1], _r2;
299 0 : _o2[0] = captures[2];
300 0 : if (TREE_TYPE (_o2[0]) != t)
301 : {
302 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
303 : }
304 : else
305 : _r2 = _o2[0];
306 0 : _o1[0] = _r2;
307 : }
308 0 : _o1[1] = wide_int_to_tree (t, c);
309 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
310 0 : res_op0 = _r1;
311 : }
312 0 : tree _r;
313 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 90, __FILE__, __LINE__, true);
315 0 : return _r;
316 : }
317 0 : next_after_fail119:;
318 0 : }
319 : }
320 : return NULL_TREE;
321 : }
322 :
323 : tree
324 64 : generic_simplify_50 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
325 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
326 : const enum tree_code ARG_UNUSED (cmp),
327 : const enum tree_code ARG_UNUSED (icmp),
328 : const enum tree_code ARG_UNUSED (ncmp))
329 : {
330 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
331 64 : {
332 64 : enum tree_code ic = invert_tree_comparison
333 64 : (cmp, HONOR_NANS (captures[0]));
334 64 : if (ic == icmp
335 : )
336 : {
337 64 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail128;
338 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail128;
339 64 : {
340 64 : tree res_op0;
341 64 : res_op0 = captures[0];
342 64 : tree res_op1;
343 64 : res_op1 = captures[1];
344 64 : tree _r;
345 64 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
346 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, true);
347 64 : return _r;
348 : }
349 : next_after_fail128:;
350 : }
351 : else
352 : {
353 0 : if (ic == ncmp
354 : )
355 : {
356 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail129;
357 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail129;
358 0 : {
359 0 : tree res_op0;
360 0 : res_op0 = captures[0];
361 0 : tree res_op1;
362 0 : res_op1 = captures[1];
363 0 : tree _r;
364 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
365 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 97, __FILE__, __LINE__, true);
366 0 : return _r;
367 : }
368 : next_after_fail129:;
369 : }
370 : }
371 : }
372 : return NULL_TREE;
373 : }
374 :
375 : tree
376 241620 : generic_simplify_64 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
377 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
378 : const enum tree_code ARG_UNUSED (outer_op))
379 : {
380 241620 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
381 241620 : if (!TYPE_SATURATING (type)
382 : )
383 : {
384 241620 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
385 483233 : && !FIXED_POINT_TYPE_P (type)
386 : )
387 : {
388 241613 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
389 : )
390 : {
391 228086 : if (!CONSTANT_CLASS_P (captures[1])
392 : )
393 : {
394 228086 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail151;
395 228086 : {
396 228086 : tree res_op0;
397 228086 : {
398 228086 : tree _o1[2], _r1;
399 228086 : {
400 228086 : tree _o2[1], _r2;
401 228086 : _o2[0] = captures[0];
402 228086 : if (TREE_TYPE (_o2[0]) != type)
403 : {
404 3303 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
405 : }
406 : else
407 : _r2 = _o2[0];
408 228086 : _o1[0] = _r2;
409 : }
410 228086 : _o1[1] = captures[2];
411 228086 : _r1 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
412 228086 : if (EXPR_P (_r1))
413 0 : goto next_after_fail151;
414 228086 : res_op0 = _r1;
415 : }
416 228086 : tree res_op1;
417 228086 : {
418 228086 : tree _o1[1], _r1;
419 228086 : _o1[0] = captures[1];
420 228086 : if (TREE_TYPE (_o1[0]) != type)
421 : {
422 3335 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
423 : }
424 : else
425 : _r1 = _o1[0];
426 228086 : res_op1 = _r1;
427 : }
428 228086 : tree _r;
429 228086 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
430 228086 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 119, __FILE__, __LINE__, true);
431 228086 : return _r;
432 : }
433 : next_after_fail151:;
434 : }
435 : }
436 : else
437 : {
438 27054 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
439 27054 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
440 : )
441 : {
442 2317 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail152;
443 2317 : {
444 2317 : tree res_op0;
445 2317 : {
446 2317 : tree _o1[2], _r1;
447 2317 : {
448 2317 : tree _o2[2], _r2;
449 2317 : _o2[0] = captures[0];
450 2317 : {
451 2317 : tree _o3[1], _r3;
452 2317 : _o3[0] = captures[2];
453 2317 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
454 : {
455 2317 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
456 : }
457 : else
458 : _r3 = _o3[0];
459 2317 : _o2[1] = _r3;
460 : }
461 2317 : _r2 = fold_build2_loc (loc, outer_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
462 2317 : if (EXPR_P (_r2))
463 0 : goto next_after_fail152;
464 2317 : _o1[0] = _r2;
465 : }
466 2317 : _o1[1] = captures[1];
467 2317 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
468 2317 : res_op0 = _r1;
469 : }
470 2317 : tree _r;
471 2317 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
472 2317 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 120, __FILE__, __LINE__, true);
473 2317 : return _r;
474 : }
475 : next_after_fail152:;
476 : }
477 : else
478 : {
479 11210 : if (types_match (type, captures[1]) && !TYPE_OVERFLOW_SANITIZED (type)
480 : )
481 : {
482 11182 : {
483 11182 : tree cst = const_binop (outer_op, type, captures[0], captures[2]);
484 11182 : if (cst && !TREE_OVERFLOW (cst)
485 : )
486 : {
487 11175 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail153;
488 11175 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail153;
489 11175 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail153;
490 11175 : {
491 11175 : tree res_op0;
492 11175 : res_op0 = cst;
493 11175 : tree res_op1;
494 11175 : res_op1 = captures[1];
495 11175 : tree _r;
496 11175 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
497 11175 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 121, __FILE__, __LINE__, true);
498 11175 : return _r;
499 : }
500 : next_after_fail153:;
501 : }
502 : }
503 : }
504 : }
505 : }
506 : }
507 : }
508 : return NULL_TREE;
509 : }
510 :
511 : tree
512 1 : generic_simplify_87 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
513 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
514 : {
515 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
516 1 : if (INTEGRAL_TYPE_P (type)
517 : )
518 : {
519 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail178;
520 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail178;
521 1 : {
522 1 : tree res_op0;
523 1 : res_op0 = unshare_expr (captures[1]);
524 1 : tree res_op1;
525 1 : {
526 1 : tree _o1[2], _r1;
527 1 : _o1[0] = captures[4];
528 1 : _o1[1] = captures[1];
529 1 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
530 1 : res_op1 = _r1;
531 : }
532 1 : tree _r;
533 1 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
534 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 146, __FILE__, __LINE__, true);
535 1 : return _r;
536 : }
537 : next_after_fail178:;
538 : }
539 : return NULL_TREE;
540 : }
541 :
542 : tree
543 2650 : generic_simplify_95 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
544 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
545 : {
546 2650 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
547 2650 : if (!TYPE_SATURATING (type)
548 : )
549 : {
550 2650 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
551 2650 : && !TYPE_OVERFLOW_SANITIZED (type)
552 : )
553 : {
554 13 : {
555 13 : tree t1 = type;
556 13 : if (INTEGRAL_TYPE_P (type)
557 21 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
558 8 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
559 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail186;
560 13 : {
561 13 : tree res_op0;
562 13 : {
563 13 : tree _o1[2], _r1;
564 13 : {
565 13 : tree _o2[1], _r2;
566 13 : _o2[0] = captures[0];
567 13 : if (TREE_TYPE (_o2[0]) != t1)
568 : {
569 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
570 : }
571 : else
572 : _r2 = _o2[0];
573 13 : _o1[0] = _r2;
574 : }
575 13 : {
576 13 : tree _o2[1], _r2;
577 13 : _o2[0] = captures[1];
578 13 : if (TREE_TYPE (_o2[0]) != t1)
579 : {
580 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
581 : }
582 : else
583 : _r2 = _o2[0];
584 13 : _o1[1] = _r2;
585 : }
586 13 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
587 13 : res_op0 = _r1;
588 : }
589 13 : tree _r;
590 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
591 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 153, __FILE__, __LINE__, true);
592 13 : return _r;
593 : }
594 0 : next_after_fail186:;
595 : }
596 : }
597 : }
598 : return NULL_TREE;
599 : }
600 :
601 : tree
602 9 : generic_simplify_106 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
603 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
604 : {
605 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
606 9 : if (INTEGRAL_TYPE_P (type)
607 9 : && (
608 :
609 9 : || !TREE_SIDE_EFFECTS (captures[1]))
610 : )
611 : {
612 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail203;
613 2 : {
614 2 : tree res_op0;
615 2 : {
616 2 : tree _o1[1], _r1;
617 2 : _o1[0] = captures[2];
618 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
619 : {
620 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
621 : }
622 : else
623 : _r1 = _o1[0];
624 2 : res_op0 = _r1;
625 : }
626 2 : tree res_op1;
627 2 : res_op1 = captures[1];
628 2 : tree res_op2;
629 2 : res_op2 = captures[0];
630 2 : tree _r;
631 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
632 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 170, __FILE__, __LINE__, true);
633 2 : return _r;
634 : }
635 0 : next_after_fail203:;
636 : }
637 : return NULL_TREE;
638 : }
639 :
640 : tree
641 0 : generic_simplify_112 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
642 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
643 : const enum tree_code ARG_UNUSED (bitop),
644 : const enum tree_code ARG_UNUSED (cmp))
645 : {
646 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
647 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
648 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
649 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
650 : )
651 : {
652 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail209;
653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail209;
654 0 : {
655 0 : tree res_op0;
656 0 : {
657 0 : tree _o1[2], _r1;
658 0 : _o1[0] = captures[0];
659 0 : {
660 0 : tree _o2[1], _r2;
661 0 : _o2[0] = captures[2];
662 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
663 : {
664 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
665 : }
666 : else
667 : _r2 = _o2[0];
668 0 : _o1[1] = _r2;
669 : }
670 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
671 0 : res_op0 = _r1;
672 : }
673 0 : tree res_op1;
674 0 : res_op1 = captures[1];
675 0 : tree _r;
676 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
677 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 176, __FILE__, __LINE__, true);
678 0 : return _r;
679 : }
680 : next_after_fail209:;
681 : }
682 : return NULL_TREE;
683 : }
684 :
685 : tree
686 8 : generic_simplify_123 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
687 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
688 : {
689 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
690 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
691 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
692 : )
693 : {
694 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail220;
695 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail220;
696 0 : {
697 0 : tree _r;
698 0 : _r = captures[2];
699 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 185, __FILE__, __LINE__, true);
700 0 : return _r;
701 : }
702 : next_after_fail220:;
703 : }
704 : return NULL_TREE;
705 : }
706 :
707 : tree
708 1 : generic_simplify_132 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
709 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
710 : {
711 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
712 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail229;
713 1 : {
714 1 : tree res_op0;
715 1 : {
716 1 : tree _o1[2], _r1;
717 1 : _o1[0] = captures[1];
718 1 : _o1[1] = captures[2];
719 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
720 1 : res_op0 = _r1;
721 : }
722 1 : tree _r;
723 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
724 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 191, __FILE__, __LINE__, true);
725 : return _r;
726 : }
727 0 : next_after_fail229:;
728 0 : return NULL_TREE;
729 : }
730 :
731 : tree
732 2 : generic_simplify_142 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
733 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
734 : const enum tree_code ARG_UNUSED (bitop),
735 : const enum tree_code ARG_UNUSED (rbitop))
736 : {
737 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
738 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail243;
739 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail243;
740 2 : {
741 2 : tree _r;
742 2 : _r = captures[2];
743 2 : if (TREE_SIDE_EFFECTS (captures[1]))
744 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
745 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 197, __FILE__, __LINE__, true);
746 : return _r;
747 : }
748 : next_after_fail243:;
749 : return NULL_TREE;
750 : }
751 :
752 : tree
753 700 : generic_simplify_148 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
754 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
755 : const enum tree_code ARG_UNUSED (op))
756 : {
757 700 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
758 700 : if (bitwise_equal_p (captures[4], captures[7])
759 : )
760 : {
761 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail250;
762 40 : {
763 40 : tree res_op0;
764 40 : {
765 40 : tree _o1[2], _r1;
766 40 : {
767 40 : tree _o2[2], _r2;
768 40 : _o2[0] = captures[5];
769 40 : {
770 40 : tree _o3[1], _r3;
771 40 : _o3[0] = captures[6];
772 40 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
773 : {
774 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
775 : }
776 : else
777 : _r3 = _o3[0];
778 40 : _o2[1] = _r3;
779 : }
780 40 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
781 40 : _o1[0] = _r2;
782 : }
783 40 : {
784 40 : tree _o2[1], _r2;
785 40 : _o2[0] = captures[4];
786 40 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
787 : {
788 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
789 : }
790 : else
791 : _r2 = _o2[0];
792 40 : _o1[1] = _r2;
793 : }
794 40 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
795 40 : res_op0 = _r1;
796 : }
797 40 : tree _r;
798 40 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
799 40 : if (TREE_SIDE_EFFECTS (captures[7]))
800 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
801 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 201, __FILE__, __LINE__, true);
802 40 : return _r;
803 : }
804 0 : next_after_fail250:;
805 : }
806 : return NULL_TREE;
807 : }
808 :
809 : tree
810 36 : generic_simplify_159 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
811 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
812 : const enum tree_code ARG_UNUSED (rcmp),
813 : const enum tree_code ARG_UNUSED (cmp2),
814 : const enum tree_code ARG_UNUSED (cmp1),
815 : const enum tree_code ARG_UNUSED (bitop))
816 : {
817 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
818 36 : {
819 36 : tree_code rescode;
820 36 : tree res;
821 36 : bool honor_nans = HONOR_NANS (captures[0]);
822 36 : rescode = combine_comparisons (bitop, cmp1, cmp2,
823 : type, honor_nans, &res);
824 36 : if (rescode == INTEGER_CST
825 : )
826 : {
827 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail276;
828 0 : {
829 0 : tree _r;
830 0 : _r = res;
831 0 : if (TREE_SIDE_EFFECTS (captures[0]))
832 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
833 0 : if (TREE_SIDE_EFFECTS (captures[1]))
834 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
835 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
836 18 : return _r;
837 : }
838 0 : next_after_fail276:;
839 : }
840 : else
841 : {
842 36 : if (rescode == rcmp
843 : )
844 : {
845 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail277;
846 18 : {
847 18 : tree res_op0;
848 18 : res_op0 = captures[0];
849 18 : tree res_op1;
850 18 : res_op1 = captures[1];
851 18 : tree _r;
852 18 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
853 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 219, __FILE__, __LINE__, true);
854 18 : return _r;
855 : }
856 0 : next_after_fail277:;
857 : }
858 : }
859 : }
860 18 : return NULL_TREE;
861 : }
862 :
863 : tree
864 4 : generic_simplify_171 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
865 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
866 : {
867 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
868 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail308;
869 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail308;
870 4 : {
871 4 : tree _r;
872 4 : _r = constant_boolean_node (true, type);
873 4 : if (TREE_SIDE_EFFECTS (captures[1]))
874 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
875 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
876 : return _r;
877 : }
878 : next_after_fail308:;
879 : return NULL_TREE;
880 : }
881 :
882 : tree
883 2 : generic_simplify_174 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
884 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
885 : {
886 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
887 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
888 4 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
889 : )
890 : {
891 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail312;
892 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail312;
893 2 : {
894 2 : tree res_op0;
895 2 : res_op0 = captures[3];
896 2 : tree res_op1;
897 2 : {
898 2 : tree _o1[2], _r1;
899 2 : _o1[0] = captures[1];
900 2 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
901 2 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
902 2 : res_op1 = _r1;
903 : }
904 2 : tree _r;
905 2 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
906 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 210, __FILE__, __LINE__, true);
907 2 : return _r;
908 : }
909 : next_after_fail312:;
910 : }
911 : return NULL_TREE;
912 : }
913 :
914 : tree
915 0 : generic_simplify_180 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
916 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
917 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
918 : {
919 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
920 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
921 : )
922 : {
923 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail318;
924 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail318;
925 0 : {
926 0 : tree res_op0;
927 0 : res_op0 = captures[0];
928 0 : tree _r;
929 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
930 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 237, __FILE__, __LINE__, true);
931 0 : return _r;
932 : }
933 : next_after_fail318:;
934 : }
935 : return NULL_TREE;
936 : }
937 :
938 : tree
939 0 : generic_simplify_183 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
940 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
941 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
942 : {
943 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
944 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
945 : )
946 : {
947 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail321;
948 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail321;
949 0 : {
950 0 : tree res_op0;
951 0 : {
952 0 : tree _o1[1], _r1;
953 0 : _o1[0] = captures[0];
954 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
955 0 : res_op0 = _r1;
956 : }
957 0 : tree _r;
958 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
959 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
960 0 : return _r;
961 : }
962 : next_after_fail321:;
963 : }
964 : return NULL_TREE;
965 : }
966 :
967 : tree
968 0 : generic_simplify_190 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
969 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
970 : {
971 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
972 0 : if (INTEGRAL_TYPE_P (type)
973 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
974 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
975 : )
976 : {
977 0 : if (TYPE_UNSIGNED (type)
978 : )
979 : {
980 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail329;
981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail329;
982 0 : {
983 0 : tree res_op0;
984 0 : res_op0 = captures[0];
985 0 : tree _r;
986 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 243, __FILE__, __LINE__, true);
988 0 : return _r;
989 : }
990 : next_after_fail329:;
991 : }
992 : else
993 : {
994 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail330;
995 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail330;
996 0 : {
997 0 : tree res_op0;
998 0 : res_op0 = captures[0];
999 0 : tree _r;
1000 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 244, __FILE__, __LINE__, true);
1002 0 : return _r;
1003 : }
1004 : next_after_fail330:;
1005 : }
1006 : }
1007 : return NULL_TREE;
1008 : }
1009 :
1010 : tree
1011 178938 : generic_simplify_197 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1012 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1013 : {
1014 178938 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1015 178938 : {
1016 178938 : poly_widest_int factor;
1017 178938 : if (multiple_p (wi::to_poly_widest (captures[2]), wi::to_widest (captures[1]), &factor)
1018 : )
1019 : {
1020 55374 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail337;
1021 55374 : {
1022 55374 : tree res_op0;
1023 55374 : {
1024 55374 : tree _o1[1], _r1;
1025 55374 : _o1[0] = captures[0];
1026 55374 : if (TREE_TYPE (_o1[0]) != type)
1027 : {
1028 10109 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1029 : }
1030 : else
1031 : _r1 = _o1[0];
1032 55374 : res_op0 = _r1;
1033 : }
1034 55374 : tree res_op1;
1035 55374 : res_op1 = wide_int_to_tree (type, factor);
1036 55374 : tree _r;
1037 55374 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1038 55374 : if (TREE_SIDE_EFFECTS (captures[1]))
1039 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1040 55374 : if (TREE_SIDE_EFFECTS (captures[2]))
1041 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1042 55374 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 250, __FILE__, __LINE__, true);
1043 55374 : return _r;
1044 : }
1045 0 : next_after_fail337:;
1046 : }
1047 178938 : }
1048 123564 : return NULL_TREE;
1049 : }
1050 :
1051 : tree
1052 2 : generic_simplify_206 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1053 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1054 : const combined_fn ARG_UNUSED (POW))
1055 : {
1056 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1057 2 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1058 : )
1059 : {
1060 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail347;
1061 2 : {
1062 2 : tree res_op0;
1063 2 : {
1064 2 : tree _o1[2], _r1;
1065 2 : _o1[0] = captures[1];
1066 2 : _o1[1] = captures[4];
1067 2 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1068 2 : res_op0 = _r1;
1069 : }
1070 2 : tree res_op1;
1071 2 : res_op1 = captures[2];
1072 2 : tree _r;
1073 2 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1074 2 : if (!_r)
1075 0 : goto next_after_fail347;
1076 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 260, __FILE__, __LINE__, true);
1077 2 : return _r;
1078 : }
1079 : next_after_fail347:;
1080 : }
1081 : return NULL_TREE;
1082 : }
1083 :
1084 : tree
1085 0 : generic_simplify_215 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1086 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1087 : const enum tree_code ARG_UNUSED (neeq))
1088 : {
1089 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1090 0 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
1091 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
1092 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1093 : )
1094 : {
1095 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail359;
1096 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail359;
1097 0 : {
1098 0 : tree res_op0;
1099 0 : res_op0 = captures[1];
1100 0 : tree res_op1;
1101 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1102 0 : tree _r;
1103 0 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1104 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 271, __FILE__, __LINE__, true);
1105 0 : return _r;
1106 : }
1107 : next_after_fail359:;
1108 : }
1109 : return NULL_TREE;
1110 : }
1111 :
1112 : tree
1113 12880 : generic_simplify_222 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1114 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1115 : const enum tree_code ARG_UNUSED (op))
1116 : {
1117 12880 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1118 12880 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1119 12880 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1120 12880 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1121 : )
1122 : {
1123 12880 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail379;
1124 12880 : {
1125 12880 : tree res_op0;
1126 12880 : res_op0 = captures[3];
1127 12880 : tree res_op1;
1128 12880 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1129 12880 : tree _r;
1130 12880 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1131 12880 : if (TREE_SIDE_EFFECTS (captures[2]))
1132 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1133 12880 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1134 12880 : return _r;
1135 : }
1136 0 : next_after_fail379:;
1137 : }
1138 : return NULL_TREE;
1139 : }
1140 :
1141 : tree
1142 21 : generic_simplify_230 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1143 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1144 : const enum tree_code ARG_UNUSED (cmp))
1145 : {
1146 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1147 21 : if (TREE_INT_CST_LOW (captures[1]) & 1
1148 : )
1149 : {
1150 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail387;
1151 2 : {
1152 2 : tree _r;
1153 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1154 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1155 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1156 2 : if (TREE_SIDE_EFFECTS (captures[1]))
1157 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1158 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 298, __FILE__, __LINE__, true);
1159 2 : return _r;
1160 : }
1161 0 : next_after_fail387:;
1162 : }
1163 : return NULL_TREE;
1164 : }
1165 :
1166 : tree
1167 6 : generic_simplify_237 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1168 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1169 : const enum tree_code ARG_UNUSED (cmp),
1170 : const enum tree_code ARG_UNUSED (icmp))
1171 : {
1172 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1173 6 : {
1174 6 : int c1 = wi::clz (wi::to_wide (captures[0]));
1175 6 : int c2 = wi::clz (wi::to_wide (captures[2]));
1176 6 : if (c1 < c2
1177 : )
1178 : {
1179 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail396;
1180 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail396;
1181 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail396;
1182 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail396;
1183 0 : {
1184 0 : tree _r;
1185 0 : _r = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
1186 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1187 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1188 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 307, __FILE__, __LINE__, true);
1189 0 : return _r;
1190 : }
1191 : next_after_fail396:;
1192 : }
1193 : else
1194 : {
1195 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail397;
1196 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail397;
1197 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail397;
1198 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail397;
1199 6 : {
1200 6 : tree res_op0;
1201 6 : res_op0 = captures[1];
1202 6 : tree res_op1;
1203 6 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c1 - c2);
1204 6 : tree _r;
1205 6 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1206 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 308, __FILE__, __LINE__, true);
1207 6 : return _r;
1208 : }
1209 : next_after_fail397:;
1210 : }
1211 : }
1212 : return NULL_TREE;
1213 : }
1214 :
1215 : tree
1216 14 : generic_simplify_247 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1217 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1218 : const enum tree_code ARG_UNUSED (cmp),
1219 : const combined_fn ARG_UNUSED (bswap))
1220 : {
1221 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1222 14 : {
1223 14 : tree ctype = TREE_TYPE (captures[0]);
1224 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail416;
1225 14 : {
1226 14 : tree res_op0;
1227 14 : {
1228 14 : tree _o1[1], _r1;
1229 14 : _o1[0] = captures[1];
1230 14 : if (TREE_TYPE (_o1[0]) != ctype)
1231 : {
1232 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1233 : }
1234 : else
1235 : _r1 = _o1[0];
1236 14 : res_op0 = _r1;
1237 : }
1238 14 : tree res_op1;
1239 14 : {
1240 14 : tree _o1[1], _r1;
1241 14 : _o1[0] = captures[2];
1242 14 : if (TREE_TYPE (_o1[0]) != ctype)
1243 : {
1244 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1245 : }
1246 : else
1247 : _r1 = _o1[0];
1248 14 : res_op1 = _r1;
1249 : }
1250 14 : tree _r;
1251 14 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1252 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 327, __FILE__, __LINE__, true);
1253 : return _r;
1254 : }
1255 0 : next_after_fail416:;
1256 : }
1257 0 : return NULL_TREE;
1258 : }
1259 :
1260 : tree
1261 160907 : generic_simplify_255 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1262 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1263 : const enum tree_code ARG_UNUSED (cmp))
1264 : {
1265 160907 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1266 316805 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1267 161632 : || ! tree_expr_maybe_nan_p (captures[0])
1268 : )
1269 : {
1270 155247 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail429;
1271 155247 : {
1272 155247 : tree _r;
1273 155247 : _r = constant_boolean_node (true, type);
1274 155247 : if (TREE_SIDE_EFFECTS (captures[0]))
1275 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1276 155247 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 339, __FILE__, __LINE__, true);
1277 155247 : return _r;
1278 : }
1279 0 : next_after_fail429:;
1280 : }
1281 : else
1282 : {
1283 5660 : if (cmp != EQ_EXPR
1284 5660 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1285 79 : || ! flag_trapping_math)
1286 : )
1287 : {
1288 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail430;
1289 0 : {
1290 0 : tree res_op0;
1291 0 : res_op0 = unshare_expr (captures[0]);
1292 0 : tree res_op1;
1293 0 : res_op1 = captures[0];
1294 0 : tree _r;
1295 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1296 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 340, __FILE__, __LINE__, true);
1297 0 : return _r;
1298 : }
1299 0 : next_after_fail430:;
1300 : }
1301 : }
1302 : return NULL_TREE;
1303 : }
1304 :
1305 : tree
1306 19680 : generic_simplify_262 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1307 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1308 : const enum tree_code ARG_UNUSED (cmp))
1309 : {
1310 19680 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1311 19680 : if (flag_associative_math
1312 : )
1313 : {
1314 13 : {
1315 13 : tree tem = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), captures[0], captures[2]);
1316 13 : if (tem && !TREE_OVERFLOW (tem)
1317 : )
1318 : {
1319 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail451;
1320 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail451;
1321 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail451;
1322 13 : {
1323 13 : tree res_op0;
1324 13 : res_op0 = tem;
1325 13 : tree res_op1;
1326 13 : res_op1 = captures[1];
1327 13 : tree _r;
1328 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1329 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 360, __FILE__, __LINE__, true);
1330 13 : return _r;
1331 : }
1332 : next_after_fail451:;
1333 : }
1334 : }
1335 : }
1336 : return NULL_TREE;
1337 : }
1338 :
1339 : tree
1340 59 : generic_simplify_268 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1341 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1342 : const enum tree_code ARG_UNUSED (cmp),
1343 : const enum tree_code ARG_UNUSED (scmp))
1344 : {
1345 59 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1346 96 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1347 96 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1348 37 : && (cmp == EQ_EXPR
1349 37 : || cmp == NE_EXPR
1350 36 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
1351 : )
1352 : {
1353 23 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1354 23 : {
1355 23 : tree res_op0;
1356 23 : res_op0 = captures[0];
1357 23 : tree res_op1;
1358 23 : res_op1 = captures[1];
1359 23 : tree _r;
1360 23 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1361 23 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1362 23 : return _r;
1363 : }
1364 0 : next_after_fail484:;
1365 : }
1366 : return NULL_TREE;
1367 : }
1368 :
1369 : tree
1370 19855872 : generic_simplify_271 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1371 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1372 : const enum tree_code ARG_UNUSED (cmp))
1373 : {
1374 19855872 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1375 39422931 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1376 12002922 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1377 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1378 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1379 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1380 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1381 19855872 : && single_use (captures[0])
1382 : )
1383 : {
1384 12002922 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1385 5219597 : && (TREE_CODE (captures[3]) == INTEGER_CST
1386 1938404 : || captures[2] != captures[3])
1387 3281193 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1388 : || cmp == NE_EXPR
1389 1502219 : || cmp == EQ_EXPR)
1390 2249124 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1391 14212096 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1392 1655 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1393 : )
1394 : {
1395 2209146 : if (TREE_CODE (captures[2]) == INTEGER_CST
1396 : )
1397 : {
1398 2209146 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail494;
1399 2209146 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail494;
1400 2209146 : {
1401 2209146 : tree res_op0;
1402 2209146 : res_op0 = captures[1];
1403 2209146 : tree res_op1;
1404 2209146 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1405 2209146 : wide_int::from (wi::to_wide (captures[2]),
1406 2209146 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1407 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1408 2209146 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1409 2209146 : 0, TREE_OVERFLOW (captures[2]));
1410 2209146 : tree _r;
1411 2209146 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1412 2209146 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1413 2209146 : return _r;
1414 : }
1415 : next_after_fail494:;
1416 : }
1417 : else
1418 : {
1419 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail495;
1420 0 : {
1421 0 : tree res_op0;
1422 0 : res_op0 = captures[1];
1423 0 : tree res_op1;
1424 0 : {
1425 0 : tree _o1[1], _r1;
1426 0 : _o1[0] = captures[2];
1427 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1428 : {
1429 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1430 : }
1431 : else
1432 : _r1 = _o1[0];
1433 0 : res_op1 = _r1;
1434 : }
1435 0 : tree _r;
1436 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1437 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1438 0 : return _r;
1439 : }
1440 0 : next_after_fail495:;
1441 : }
1442 : }
1443 : else
1444 : {
1445 9793776 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1446 : )
1447 : {
1448 5815828 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1449 2969383 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1450 404976 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1451 319374 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1452 8699609 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1453 5730208 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1454 5730208 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1455 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1456 0 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1457 5730208 : || (TREE_CODE (captures[2]) == INTEGER_CST
1458 4625368 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1459 4625368 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1460 : )
1461 : {
1462 4590681 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail496;
1463 4590681 : {
1464 4590681 : tree res_op0;
1465 4590681 : res_op0 = captures[1];
1466 4590681 : tree res_op1;
1467 4590681 : {
1468 4590681 : tree _o1[1], _r1;
1469 4590681 : _o1[0] = captures[3];
1470 4590681 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1471 : {
1472 4590663 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1473 : }
1474 : else
1475 : _r1 = _o1[0];
1476 4590681 : res_op1 = _r1;
1477 : }
1478 4590681 : tree _r;
1479 4590681 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1480 4590681 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1481 4590681 : return _r;
1482 : }
1483 0 : next_after_fail496:;
1484 : }
1485 : else
1486 : {
1487 1225147 : if (TREE_CODE (captures[2]) == INTEGER_CST
1488 84358 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1489 1309505 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1490 : )
1491 : {
1492 37997 : {
1493 37997 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1494 37997 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1495 37997 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1496 37997 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1497 37997 : if (above || below
1498 : )
1499 : {
1500 31555 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1501 : )
1502 : {
1503 26781 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail497;
1504 26781 : {
1505 26781 : tree _r;
1506 26781 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1507 26781 : if (TREE_SIDE_EFFECTS (captures[1]))
1508 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1509 26781 : if (TREE_SIDE_EFFECTS (captures[2]))
1510 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1511 26781 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 398, __FILE__, __LINE__, true);
1512 26781 : return _r;
1513 : }
1514 0 : next_after_fail497:;
1515 : }
1516 : else
1517 : {
1518 4774 : if (cmp == LT_EXPR || cmp == LE_EXPR
1519 : )
1520 : {
1521 4231 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail498;
1522 4231 : {
1523 4231 : tree _r;
1524 4231 : _r = constant_boolean_node (above ? true : false, type);
1525 4231 : if (TREE_SIDE_EFFECTS (captures[1]))
1526 10 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1527 4231 : if (TREE_SIDE_EFFECTS (captures[2]))
1528 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1529 4231 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 399, __FILE__, __LINE__, true);
1530 4231 : return _r;
1531 : }
1532 0 : next_after_fail498:;
1533 : }
1534 : else
1535 : {
1536 543 : if (cmp == GT_EXPR || cmp == GE_EXPR
1537 : )
1538 : {
1539 543 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail499;
1540 543 : {
1541 543 : tree _r;
1542 771 : _r = constant_boolean_node (above ? false : true, type);
1543 543 : if (TREE_SIDE_EFFECTS (captures[1]))
1544 4 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1545 543 : if (TREE_SIDE_EFFECTS (captures[2]))
1546 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1547 543 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 400, __FILE__, __LINE__, true);
1548 543 : return _r;
1549 : }
1550 0 : next_after_fail499:;
1551 : }
1552 : }
1553 : }
1554 : }
1555 : }
1556 : }
1557 : }
1558 : }
1559 : else
1560 : {
1561 7953027 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1562 3741714 : && (TYPE_PRECISION (TREE_TYPE (captures[0]))
1563 3741714 : < TYPE_PRECISION (TREE_TYPE (captures[1])))
1564 967411 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1565 4621194 : && types_match (TREE_TYPE (captures[1]),
1566 643246 : TREE_TYPE (captures[3]))
1567 : )
1568 : {
1569 0 : {
1570 0 : tree itype = TREE_TYPE (captures[0]);
1571 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail500;
1572 0 : {
1573 0 : tree res_op0;
1574 0 : {
1575 0 : tree _o1[1], _r1;
1576 0 : {
1577 0 : tree _o2[2], _r2;
1578 0 : _o2[0] = captures[1];
1579 0 : _o2[1] = captures[3];
1580 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1581 0 : _o1[0] = _r2;
1582 : }
1583 0 : if (TREE_TYPE (_o1[0]) != itype)
1584 : {
1585 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1586 : }
1587 : else
1588 : _r1 = _o1[0];
1589 0 : res_op0 = _r1;
1590 : }
1591 0 : tree res_op1;
1592 0 : res_op1 = build_zero_cst (itype);
1593 0 : tree _r;
1594 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1595 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 401, __FILE__, __LINE__, true);
1596 0 : return _r;
1597 : }
1598 0 : next_after_fail500:;
1599 : }
1600 : }
1601 : }
1602 : }
1603 : }
1604 : else
1605 : {
1606 15153456 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1607 1131964 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1608 565982 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1609 8984676 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1610 565863 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1611 : )
1612 : {
1613 565863 : {
1614 565863 : tree type1 = TREE_TYPE (captures[3]);
1615 565863 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1616 : {
1617 358330 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1618 358330 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1619 358330 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1620 181576 : type1 = float_type_node;
1621 358330 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1622 358330 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1623 292 : type1 = double_type_node;
1624 : }
1625 565863 : tree newtype
1626 565863 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1627 565863 : ? TREE_TYPE (captures[1]) : type1);
1628 565863 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1629 565863 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1630 : )
1631 : {
1632 44630 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail501;
1633 44630 : {
1634 44630 : tree res_op0;
1635 44630 : {
1636 44630 : tree _o1[1], _r1;
1637 44630 : _o1[0] = captures[1];
1638 44630 : if (TREE_TYPE (_o1[0]) != newtype)
1639 : {
1640 11448 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1641 : }
1642 : else
1643 : _r1 = _o1[0];
1644 44630 : res_op0 = _r1;
1645 : }
1646 44630 : tree res_op1;
1647 44630 : {
1648 44630 : tree _o1[1], _r1;
1649 44630 : _o1[0] = captures[3];
1650 44630 : if (TREE_TYPE (_o1[0]) != newtype)
1651 : {
1652 44630 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1653 : }
1654 : else
1655 : _r1 = _o1[0];
1656 44630 : res_op1 = _r1;
1657 : }
1658 44630 : tree _r;
1659 44630 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1660 44630 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 402, __FILE__, __LINE__, true);
1661 44630 : return _r;
1662 : }
1663 0 : next_after_fail501:;
1664 : }
1665 : }
1666 : }
1667 : }
1668 : return NULL_TREE;
1669 : }
1670 :
1671 : tree
1672 0 : generic_simplify_303 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1673 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1674 : const enum tree_code ARG_UNUSED (cmp))
1675 : {
1676 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1677 0 : if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[0])))
1678 0 : && can_compare_p (cmp == EQ_EXPR ? EQ : NE, TYPE_MODE (TREE_TYPE (captures[0])),
1679 : ccp_jump)
1680 : )
1681 : {
1682 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail569;
1683 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail569;
1684 0 : {
1685 0 : tree res_op0;
1686 0 : res_op0 = captures[0];
1687 0 : tree res_op1;
1688 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1689 0 : tree _r;
1690 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1691 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 460, __FILE__, __LINE__, true);
1692 0 : return _r;
1693 : }
1694 : next_after_fail569:;
1695 : }
1696 : return NULL_TREE;
1697 : }
1698 :
1699 : tree
1700 0 : generic_simplify_308 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1701 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1702 : const combined_fn ARG_UNUSED (copysigns))
1703 : {
1704 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1705 0 : if (!REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
1706 : )
1707 : {
1708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail575;
1709 0 : {
1710 0 : tree res_op0;
1711 0 : res_op0 = captures[0];
1712 0 : tree _r;
1713 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1714 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1715 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1716 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
1717 0 : return _r;
1718 : }
1719 0 : next_after_fail575:;
1720 : }
1721 : return NULL_TREE;
1722 : }
1723 :
1724 : tree
1725 7 : generic_simplify_313 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1726 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1727 : const enum tree_code ARG_UNUSED (div))
1728 : {
1729 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1730 14 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1731 0 : && (!VECTOR_TYPE_P (type)
1732 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1733 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1734 7 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1735 0 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1736 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1737 0 : || (element_precision (type)
1738 0 : == element_precision (TREE_TYPE (captures[2])))
1739 0 : || (INTEGRAL_TYPE_P (type)
1740 0 : && (tree_nonzero_bits (captures[0])
1741 7 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1742 : true,
1743 7 : element_precision (type))) == 0))))
1744 : )
1745 : {
1746 0 : if (!VECTOR_TYPE_P (type)
1747 0 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1748 0 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1749 : )
1750 : {
1751 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail580;
1752 0 : {
1753 0 : tree res_op0;
1754 0 : {
1755 0 : tree _o1[2], _r1;
1756 0 : _o1[0] = captures[1];
1757 0 : _o1[1] = captures[3];
1758 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1759 0 : res_op0 = _r1;
1760 : }
1761 0 : tree _r;
1762 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1763 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1764 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1765 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1766 0 : return _r;
1767 : }
1768 0 : next_after_fail580:;
1769 : }
1770 : else
1771 : {
1772 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail581;
1773 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail581;
1774 0 : {
1775 0 : tree res_op0;
1776 0 : res_op0 = captures[0];
1777 0 : tree res_op1;
1778 0 : res_op1 = captures[3];
1779 0 : tree _r;
1780 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1781 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1782 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1783 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 472, __FILE__, __LINE__, true);
1784 0 : return _r;
1785 : }
1786 : next_after_fail581:;
1787 : }
1788 : }
1789 : return NULL_TREE;
1790 : }
1791 :
1792 : tree
1793 230 : generic_simplify_330 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1794 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1795 : const enum tree_code ARG_UNUSED (mod))
1796 : {
1797 230 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1798 230 : if (!integer_zerop (captures[0])
1799 : )
1800 : {
1801 93 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail600;
1802 93 : {
1803 93 : tree _r;
1804 93 : _r = build_zero_cst (type);
1805 93 : if (TREE_SIDE_EFFECTS (captures[0]))
1806 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1807 93 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 489, __FILE__, __LINE__, true);
1808 93 : return _r;
1809 : }
1810 0 : next_after_fail600:;
1811 : }
1812 : return NULL_TREE;
1813 : }
1814 :
1815 : tree
1816 6 : generic_simplify_341 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1817 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1818 : const combined_fn ARG_UNUSED (COS),
1819 : const combined_fn ARG_UNUSED (SIN),
1820 : const combined_fn ARG_UNUSED (TAN))
1821 : {
1822 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1823 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1824 : )
1825 : {
1826 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail613;
1827 6 : {
1828 6 : tree res_op0;
1829 6 : res_op0 = build_one_cst (type);
1830 6 : tree res_op1;
1831 6 : {
1832 6 : tree _o1[1], _r1;
1833 6 : _o1[0] = captures[1];
1834 6 : _r1 = maybe_build_call_expr_loc (loc, TAN, TREE_TYPE (_o1[0]), 1, _o1[0]);
1835 6 : if (!_r1)
1836 0 : goto next_after_fail613;
1837 6 : res_op1 = _r1;
1838 : }
1839 6 : tree _r;
1840 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1841 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 502, __FILE__, __LINE__, true);
1842 6 : return _r;
1843 : }
1844 : next_after_fail613:;
1845 : }
1846 : return NULL_TREE;
1847 : }
1848 :
1849 : tree
1850 39 : generic_simplify_349 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1851 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1852 : const enum tree_code ARG_UNUSED (cmp),
1853 : const enum tree_code ARG_UNUSED (minmax))
1854 : {
1855 39 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1856 39 : {
1857 39 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[4]);
1858 39 : if ((cmp == LT_EXPR || cmp == LE_EXPR)
1859 15 : && code == MIN_EXPR
1860 43 : && integer_nonzerop (fold_build2 (LE_EXPR, boolean_type_node, captures[3], captures[4]))
1861 : )
1862 : {
1863 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail625;
1864 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail625;
1865 4 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail625;
1866 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1867 4 : {
1868 4 : tree res_op0;
1869 4 : res_op0 = captures[2];
1870 4 : tree res_op1;
1871 4 : res_op1 = captures[4];
1872 4 : tree _r;
1873 4 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
1874 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 514, __FILE__, __LINE__, true);
1875 4 : return _r;
1876 : }
1877 : next_after_fail625:;
1878 : }
1879 : else
1880 : {
1881 35 : if ((cmp == GT_EXPR || cmp == GE_EXPR)
1882 24 : && code == MAX_EXPR
1883 59 : && integer_nonzerop (fold_build2 (GE_EXPR, boolean_type_node, captures[3], captures[4]))
1884 : )
1885 : {
1886 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail626;
1887 10 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail626;
1888 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail626;
1889 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
1890 10 : {
1891 10 : tree res_op0;
1892 10 : res_op0 = captures[2];
1893 10 : tree res_op1;
1894 10 : res_op1 = captures[4];
1895 10 : tree _r;
1896 10 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1897 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 515, __FILE__, __LINE__, true);
1898 10 : return _r;
1899 : }
1900 : next_after_fail626:;
1901 : }
1902 : }
1903 : }
1904 : return NULL_TREE;
1905 : }
1906 :
1907 : tree
1908 15 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1910 : const enum tree_code ARG_UNUSED (op))
1911 : {
1912 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1913 15 : if (INTEGRAL_TYPE_P (type)
1914 15 : && TYPE_PRECISION (type) > 1
1915 15 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1916 30 : && expr_no_side_effects_p (captures[1])
1917 : )
1918 : {
1919 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail639;
1920 8 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail639;
1921 8 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail639;
1922 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail639;
1923 8 : {
1924 8 : tree res_op0;
1925 8 : {
1926 8 : tree _o1[2], _r1;
1927 8 : {
1928 8 : tree _o2[1], _r2;
1929 8 : _o2[0] = captures[0];
1930 8 : if (TREE_TYPE (_o2[0]) != type)
1931 : {
1932 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1933 : }
1934 : else
1935 : _r2 = _o2[0];
1936 8 : _o1[0] = _r2;
1937 : }
1938 8 : _o1[1] = captures[1];
1939 8 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1940 8 : res_op0 = _r1;
1941 : }
1942 8 : tree res_op1;
1943 8 : res_op1 = captures[2];
1944 8 : tree _r;
1945 8 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1946 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 528, __FILE__, __LINE__, true);
1947 8 : return _r;
1948 : }
1949 : next_after_fail639:;
1950 : }
1951 : return NULL_TREE;
1952 : }
1953 :
1954 : tree
1955 22 : generic_simplify_376 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1956 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1957 : const enum tree_code ARG_UNUSED (cmp))
1958 : {
1959 22 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1960 22 : if (INTEGRAL_TYPE_P (type)
1961 22 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1962 22 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1963 44 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
1964 : )
1965 : {
1966 22 : {
1967 22 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
1968 22 : if (cmp == LT_EXPR
1969 : )
1970 : {
1971 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail655;
1972 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail655;
1973 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail655;
1974 13 : {
1975 13 : tree res_op0;
1976 13 : {
1977 13 : tree _o1[1], _r1;
1978 13 : {
1979 13 : tree _o2[2], _r2;
1980 13 : _o2[0] = captures[0];
1981 13 : _o2[1] = shifter;
1982 13 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1983 13 : _o1[0] = _r2;
1984 : }
1985 13 : if (TREE_TYPE (_o1[0]) != type)
1986 : {
1987 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1988 : }
1989 : else
1990 : _r1 = _o1[0];
1991 13 : res_op0 = _r1;
1992 : }
1993 13 : tree res_op1;
1994 13 : res_op1 = captures[1];
1995 13 : tree _r;
1996 13 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1997 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 542, __FILE__, __LINE__, true);
1998 13 : return _r;
1999 : }
2000 : next_after_fail655:;
2001 : }
2002 : else
2003 : {
2004 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail656;
2005 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail656;
2006 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail656;
2007 9 : {
2008 9 : tree res_op0;
2009 9 : {
2010 9 : tree _o1[2], _r1;
2011 9 : {
2012 9 : tree _o2[1], _r2;
2013 9 : {
2014 9 : tree _o3[2], _r3;
2015 9 : _o3[0] = captures[0];
2016 9 : _o3[1] = shifter;
2017 9 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2018 9 : _o2[0] = _r3;
2019 : }
2020 9 : if (TREE_TYPE (_o2[0]) != type)
2021 : {
2022 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2023 : }
2024 : else
2025 : _r2 = _o2[0];
2026 9 : _o1[0] = _r2;
2027 : }
2028 9 : _o1[1] = captures[1];
2029 9 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2030 9 : res_op0 = _r1;
2031 : }
2032 9 : tree _r;
2033 9 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2034 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 543, __FILE__, __LINE__, true);
2035 9 : return _r;
2036 : }
2037 : next_after_fail656:;
2038 : }
2039 : }
2040 : }
2041 : return NULL_TREE;
2042 : }
2043 :
2044 : tree
2045 556 : generic_simplify_394 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2046 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2047 : const enum tree_code ARG_UNUSED (cmp))
2048 : {
2049 556 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2050 556 : if (wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2051 : )
2052 : {
2053 556 : {
2054 556 : wi::overflow_type ovf;
2055 556 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
2056 1112 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
2057 556 : if (ovf
2058 : )
2059 : {
2060 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail678;
2061 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail678;
2062 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail678;
2063 0 : {
2064 0 : tree _r;
2065 0 : _r = constant_boolean_node (wi::lt_p (wi::to_wide (captures[2]), 0,
2066 0 : TYPE_SIGN (TREE_TYPE (captures[2])))
2067 0 : != (cmp == LT_EXPR || cmp == LE_EXPR), type);
2068 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2069 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2070 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 565, __FILE__, __LINE__, true);
2071 0 : return _r;
2072 : }
2073 0 : next_after_fail678:;
2074 : }
2075 : else
2076 : {
2077 556 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail679;
2078 556 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail679;
2079 556 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail679;
2080 556 : {
2081 556 : tree res_op0;
2082 556 : res_op0 = captures[0];
2083 556 : tree res_op1;
2084 556 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
2085 556 : tree _r;
2086 556 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2087 556 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 566, __FILE__, __LINE__, true);
2088 556 : return _r;
2089 : }
2090 0 : next_after_fail679:;
2091 : }
2092 556 : }
2093 : }
2094 : return NULL_TREE;
2095 : }
2096 :
2097 : tree
2098 20474737 : generic_simplify_409 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2099 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2100 : const enum tree_code ARG_UNUSED (cmp),
2101 : const enum tree_code ARG_UNUSED (acmp))
2102 : {
2103 20474737 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2104 20474737 : {
2105 20474737 : tree cst = uniform_integer_cst_p (captures[1]);
2106 20474737 : if (tree_int_cst_sgn (cst) == -1
2107 : )
2108 : {
2109 177571 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail732;
2110 177571 : {
2111 177571 : tree res_op0;
2112 177571 : res_op0 = captures[0];
2113 177571 : tree res_op1;
2114 177571 : res_op1 = build_uniform_cst (TREE_TYPE (captures[1]),
2115 177571 : wide_int_to_tree (TREE_TYPE (cst),
2116 177571 : wi::to_wide (cst)
2117 355142 : + 1));
2118 177571 : tree _r;
2119 177571 : _r = fold_build2_loc (loc, acmp, type, res_op0, res_op1);
2120 177571 : if (TREE_SIDE_EFFECTS (captures[1]))
2121 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2122 177571 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 602, __FILE__, __LINE__, true);
2123 177571 : return _r;
2124 : }
2125 0 : next_after_fail732:;
2126 : }
2127 : }
2128 : return NULL_TREE;
2129 : }
2130 :
2131 : tree
2132 0 : generic_simplify_412 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2133 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2134 : const enum tree_code ARG_UNUSED (cmp),
2135 : const enum tree_code ARG_UNUSED (out))
2136 : {
2137 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2138 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2139 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2140 : )
2141 : {
2142 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail735;
2143 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail735;
2144 0 : {
2145 0 : tree res_op0;
2146 0 : {
2147 0 : tree _o1[1], _r1;
2148 0 : _o1[0] = captures[0];
2149 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2150 0 : res_op0 = _r1;
2151 : }
2152 0 : tree res_op1;
2153 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2154 0 : tree _r;
2155 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2156 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 587, __FILE__, __LINE__, true);
2157 0 : return _r;
2158 : }
2159 : next_after_fail735:;
2160 : }
2161 : return NULL_TREE;
2162 : }
2163 :
2164 : tree
2165 1 : generic_simplify_417 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2166 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2167 : const combined_fn ARG_UNUSED (logs),
2168 : const combined_fn ARG_UNUSED (exps),
2169 : const enum tree_code ARG_UNUSED (cmp))
2170 : {
2171 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2172 1 : if (flag_unsafe_math_optimizations
2173 : )
2174 : {
2175 1 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2176 1 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
2177 1 : && ! flag_trapping_math
2178 2 : && ! flag_errno_math
2179 : )
2180 : {
2181 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail740;
2182 1 : {
2183 1 : tree res_op0;
2184 1 : res_op0 = captures[1];
2185 1 : tree res_op1;
2186 1 : {
2187 1 : tree _o1[1], _r1;
2188 1 : _o1[0] = captures[2];
2189 1 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
2190 1 : if (!_r1)
2191 0 : goto next_after_fail740;
2192 1 : if (EXPR_P (_r1))
2193 1 : goto next_after_fail740;
2194 0 : res_op1 = _r1;
2195 : }
2196 0 : tree _r;
2197 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2198 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 606, __FILE__, __LINE__, true);
2199 0 : return _r;
2200 : }
2201 : next_after_fail740:;
2202 : }
2203 : }
2204 : return NULL_TREE;
2205 : }
2206 :
2207 : tree
2208 330 : generic_simplify_424 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2209 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2210 : const enum tree_code ARG_UNUSED (shiftrotate))
2211 : {
2212 330 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2213 330 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail751;
2214 330 : {
2215 330 : tree _r;
2216 330 : _r = captures[0];
2217 330 : if (TREE_SIDE_EFFECTS (captures[1]))
2218 42 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2219 330 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2220 : return _r;
2221 : }
2222 0 : next_after_fail751:;
2223 0 : return NULL_TREE;
2224 : }
2225 :
2226 : tree
2227 28045 : generic_simplify_429 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2228 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2229 : const enum tree_code ARG_UNUSED (bit_op),
2230 : const enum tree_code ARG_UNUSED (shift))
2231 : {
2232 28045 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2233 28045 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2234 : )
2235 : {
2236 28045 : {
2237 28045 : tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]);
2238 28045 : if (mask
2239 : )
2240 : {
2241 28038 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail759;
2242 28038 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail759;
2243 28038 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail759;
2244 28038 : {
2245 28038 : tree res_op0;
2246 28038 : {
2247 28038 : tree _o1[2], _r1;
2248 28038 : {
2249 28038 : tree _o2[1], _r2;
2250 28038 : _o2[0] = captures[2];
2251 28038 : if (TREE_TYPE (_o2[0]) != type)
2252 : {
2253 70 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2254 : }
2255 : else
2256 : _r2 = _o2[0];
2257 28038 : _o1[0] = _r2;
2258 : }
2259 28038 : _o1[1] = captures[4];
2260 28038 : _r1 = fold_build2_loc (loc, shift, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2261 28038 : res_op0 = _r1;
2262 : }
2263 28038 : tree res_op1;
2264 28038 : res_op1 = mask;
2265 28038 : tree _r;
2266 28038 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
2267 28038 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 623, __FILE__, __LINE__, true);
2268 28038 : return _r;
2269 : }
2270 : next_after_fail759:;
2271 : }
2272 : }
2273 : }
2274 : return NULL_TREE;
2275 : }
2276 :
2277 : tree
2278 94 : generic_simplify_435 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2279 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2280 : const enum tree_code ARG_UNUSED (minmax))
2281 : {
2282 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2283 94 : if (INTEGRAL_TYPE_P (type)
2284 94 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2285 94 : && types_match (type, TREE_TYPE (captures[1]))
2286 8 : && types_match (type, TREE_TYPE (captures[3]))
2287 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
2288 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2289 94 : && TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (type)
2290 : )
2291 : {
2292 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail771;
2293 0 : {
2294 0 : tree res_op0;
2295 0 : res_op0 = captures[1];
2296 0 : tree res_op1;
2297 0 : res_op1 = captures[3];
2298 0 : tree _r;
2299 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
2300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 635, __FILE__, __LINE__, true);
2301 0 : return _r;
2302 : }
2303 0 : next_after_fail771:;
2304 : }
2305 : return NULL_TREE;
2306 : }
2307 :
2308 : tree
2309 9091983 : generic_simplify_438 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2310 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2311 : const enum tree_code ARG_UNUSED (op))
2312 : {
2313 9091983 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2314 9091983 : if (INTEGRAL_TYPE_P (type)
2315 8217587 : && op != MULT_EXPR
2316 8217587 : && op != RDIV_EXPR
2317 4069646 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2318 3653666 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2319 3653666 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2320 3599676 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2321 3599668 : && type_has_mode_precision_p (type)
2322 3591084 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2323 1249904 : && types_match (captures[2], type)
2324 9105361 : && (types_match (captures[2], captures[4])
2325 13378 : || poly_int_tree_p (captures[3]))
2326 : )
2327 : {
2328 10622 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2329 : )
2330 : {
2331 6004 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail777;
2332 6004 : {
2333 6004 : tree res_op0;
2334 6004 : res_op0 = captures[2];
2335 6004 : tree res_op1;
2336 6004 : {
2337 6004 : tree _o1[1], _r1;
2338 6004 : _o1[0] = captures[4];
2339 6004 : if (TREE_TYPE (_o1[0]) != type)
2340 : {
2341 6004 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2342 : }
2343 : else
2344 : _r1 = _o1[0];
2345 6004 : res_op1 = _r1;
2346 : }
2347 6004 : tree _r;
2348 6004 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2349 6004 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2350 6004 : return _r;
2351 : }
2352 0 : next_after_fail777:;
2353 : }
2354 : else
2355 : {
2356 4618 : {
2357 4618 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2358 4618 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail778;
2359 4618 : {
2360 4618 : tree res_op0;
2361 4618 : {
2362 4618 : tree _o1[2], _r1;
2363 4618 : {
2364 4618 : tree _o2[1], _r2;
2365 4618 : _o2[0] = captures[2];
2366 4618 : if (TREE_TYPE (_o2[0]) != utype)
2367 : {
2368 4618 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2369 : }
2370 : else
2371 : _r2 = _o2[0];
2372 4618 : _o1[0] = _r2;
2373 : }
2374 4618 : {
2375 4618 : tree _o2[1], _r2;
2376 4618 : _o2[0] = captures[4];
2377 4618 : if (TREE_TYPE (_o2[0]) != utype)
2378 : {
2379 4618 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2380 : }
2381 : else
2382 : _r2 = _o2[0];
2383 4618 : _o1[1] = _r2;
2384 : }
2385 4618 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2386 4618 : res_op0 = _r1;
2387 : }
2388 4618 : tree _r;
2389 4618 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2390 4618 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2391 4618 : return _r;
2392 : }
2393 0 : next_after_fail778:;
2394 : }
2395 : }
2396 : }
2397 : else
2398 : {
2399 9046607 : if (FLOAT_TYPE_P (type)
2400 9116115 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2401 34754 : == DECIMAL_FLOAT_TYPE_P (type)
2402 : )
2403 : {
2404 34728 : {
2405 34728 : tree arg0 = strip_float_extensions (captures[2]);
2406 34728 : tree arg1 = strip_float_extensions (captures[4]);
2407 34728 : tree itype = TREE_TYPE (captures[0]);
2408 34728 : tree ty1 = TREE_TYPE (arg0);
2409 34728 : tree ty2 = TREE_TYPE (arg1);
2410 34728 : enum tree_code code = TREE_CODE (itype);
2411 0 : if (FLOAT_TYPE_P (ty1)
2412 34728 : && FLOAT_TYPE_P (ty2)
2413 : )
2414 : {
2415 34728 : {
2416 34728 : tree newtype = type;
2417 34728 : if (TYPE_MODE (ty1) == SDmode
2418 34466 : || TYPE_MODE (ty2) == SDmode
2419 69194 : || TYPE_MODE (type) == SDmode)
2420 262 : newtype = dfloat32_type_node;
2421 34728 : if (TYPE_MODE (ty1) == DDmode
2422 34596 : || TYPE_MODE (ty2) == DDmode
2423 69197 : || TYPE_MODE (type) == DDmode)
2424 259 : newtype = dfloat64_type_node;
2425 34728 : if (TYPE_MODE (ty1) == TDmode
2426 34728 : || TYPE_MODE (ty2) == TDmode
2427 69204 : || TYPE_MODE (type) == TDmode)
2428 267 : newtype = dfloat128_type_node;
2429 34728 : if ((newtype == dfloat32_type_node
2430 34728 : || newtype == dfloat64_type_node
2431 34601 : || newtype == dfloat128_type_node)
2432 394 : && newtype == type
2433 34734 : && types_match (newtype, type)
2434 : )
2435 : {
2436 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail779;
2437 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail779;
2438 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail779;
2439 0 : {
2440 0 : tree res_op0;
2441 0 : {
2442 0 : tree _o1[1], _r1;
2443 0 : _o1[0] = captures[2];
2444 0 : if (TREE_TYPE (_o1[0]) != newtype)
2445 : {
2446 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2447 : }
2448 : else
2449 : _r1 = _o1[0];
2450 0 : res_op0 = _r1;
2451 : }
2452 0 : tree res_op1;
2453 0 : {
2454 0 : tree _o1[1], _r1;
2455 0 : _o1[0] = captures[4];
2456 0 : if (TREE_TYPE (_o1[0]) != newtype)
2457 : {
2458 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2459 : }
2460 : else
2461 : _r1 = _o1[0];
2462 0 : res_op1 = _r1;
2463 : }
2464 0 : tree _r;
2465 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2466 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2467 0 : return _r;
2468 : }
2469 : next_after_fail779:;
2470 : }
2471 : else
2472 : {
2473 34722 : {
2474 34722 : if (element_precision (ty1) > element_precision (newtype))
2475 14 : newtype = ty1;
2476 34722 : if (element_precision (ty2) > element_precision (newtype))
2477 4617 : newtype = ty2;
2478 34722 : if (element_precision (newtype) < element_precision (itype)
2479 17337 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2480 0 : || target_supports_op_p (newtype, op, optab_default))
2481 17337 : && (flag_unsafe_math_optimizations
2482 17312 : || (element_precision (newtype) == element_precision (type)
2483 17288 : && real_can_shorten_arithmetic (element_mode (itype),
2484 : element_mode (type))
2485 7657 : && !excess_precision_type (newtype)))
2486 37993 : && !types_match (itype, newtype)
2487 : )
2488 : {
2489 3271 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail780;
2490 3270 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail780;
2491 3262 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail780;
2492 3262 : {
2493 3262 : tree res_op0;
2494 3262 : {
2495 3262 : tree _o1[2], _r1;
2496 3262 : {
2497 3262 : tree _o2[1], _r2;
2498 3262 : _o2[0] = captures[2];
2499 3262 : if (TREE_TYPE (_o2[0]) != newtype)
2500 : {
2501 3 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2502 : }
2503 : else
2504 : _r2 = _o2[0];
2505 3262 : _o1[0] = _r2;
2506 : }
2507 3262 : {
2508 3262 : tree _o2[1], _r2;
2509 3262 : _o2[0] = captures[4];
2510 3262 : if (TREE_TYPE (_o2[0]) != newtype)
2511 : {
2512 3262 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2513 : }
2514 : else
2515 : _r2 = _o2[0];
2516 3262 : _o1[1] = _r2;
2517 : }
2518 3262 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2519 3262 : res_op0 = _r1;
2520 : }
2521 3262 : tree _r;
2522 3262 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2523 3262 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 640, __FILE__, __LINE__, true);
2524 3262 : return _r;
2525 : }
2526 : next_after_fail780:;
2527 : }
2528 : }
2529 : }
2530 : }
2531 : }
2532 : }
2533 : }
2534 : }
2535 : return NULL_TREE;
2536 : }
2537 :
2538 : tree
2539 1667 : generic_simplify_470 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2540 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2541 : {
2542 1667 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2543 1667 : {
2544 1667 : bool wascmp;
2545 1667 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
2546 1667 : || bitwise_inverted_equal_p (captures[1], captures[2], wascmp)
2547 : )
2548 : {
2549 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail818;
2550 8 : {
2551 8 : tree _r;
2552 8 : _r = wascmp ? constant_boolean_node (false, type) : build_zero_cst (type);
2553 8 : if (TREE_SIDE_EFFECTS (captures[0]))
2554 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2555 8 : if (TREE_SIDE_EFFECTS (captures[1]))
2556 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2557 8 : if (TREE_SIDE_EFFECTS (captures[2]))
2558 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2559 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
2560 8 : return _r;
2561 : }
2562 0 : next_after_fail818:;
2563 : }
2564 : }
2565 1659 : return NULL_TREE;
2566 : }
2567 :
2568 : tree
2569 0 : generic_simplify_481 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2570 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2571 : {
2572 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2573 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail850;
2574 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail850;
2575 0 : {
2576 0 : tree _r;
2577 0 : _r = captures[2];
2578 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2579 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2580 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2581 : return _r;
2582 : }
2583 : next_after_fail850:;
2584 : return NULL_TREE;
2585 : }
2586 :
2587 : tree
2588 214 : generic_simplify_485 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2589 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2590 : const enum tree_code ARG_UNUSED (code2),
2591 : const enum tree_code ARG_UNUSED (code1))
2592 : {
2593 214 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2594 214 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2595 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2596 214 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2597 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2598 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2599 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2600 208 : && bitwise_equal_p (captures[2], captures[5]))
2601 : )
2602 : {
2603 6 : {
2604 6 : bool one_before = false;
2605 6 : bool one_after = false;
2606 6 : int cmp = 0;
2607 6 : bool allbits = true;
2608 6 : if (TREE_CODE (captures[2]) == INTEGER_CST
2609 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2610 : {
2611 6 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2612 6 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2613 6 : auto t2 = wi::to_wide (captures[5]);
2614 6 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2615 6 : if (cmp < 0
2616 6 : && t1 == t2 - 1)
2617 : one_before = true;
2618 6 : if (cmp > 0
2619 6 : && t1 == t2 + 1)
2620 : one_after = true;
2621 : }
2622 6 : bool val;
2623 6 : switch (code2)
2624 : {
2625 0 : case EQ_EXPR: val = (cmp == 0); break;
2626 2 : case NE_EXPR: val = (cmp != 0); break;
2627 0 : case LT_EXPR: val = (cmp < 0); break;
2628 4 : case GT_EXPR: val = (cmp > 0); break;
2629 0 : case LE_EXPR: val = (cmp <= 0); break;
2630 0 : case GE_EXPR: val = (cmp >= 0); break;
2631 0 : default: gcc_unreachable ();
2632 : }
2633 6 : if (code1 == EQ_EXPR && val
2634 : )
2635 : {
2636 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail861;
2637 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail861;
2638 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail861;
2639 0 : {
2640 0 : tree _r;
2641 0 : _r = captures[0];
2642 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2643 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2644 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2645 0 : return _r;
2646 : }
2647 : next_after_fail861:;
2648 : }
2649 : else
2650 : {
2651 6 : if (code1 == EQ_EXPR && !val
2652 : )
2653 : {
2654 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail862;
2655 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail862;
2656 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail862;
2657 0 : {
2658 0 : tree _r;
2659 0 : _r = constant_boolean_node (false, type);
2660 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2661 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2662 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2663 0 : return _r;
2664 : }
2665 : next_after_fail862:;
2666 : }
2667 : else
2668 : {
2669 6 : if (code1 == NE_EXPR && !val && allbits
2670 : )
2671 : {
2672 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail863;
2673 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail863;
2674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail863;
2675 0 : {
2676 0 : tree _r;
2677 0 : _r = captures[3];
2678 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2679 0 : return _r;
2680 : }
2681 : next_after_fail863:;
2682 : }
2683 : else
2684 : {
2685 6 : if ((code1 == NE_EXPR
2686 6 : && code2 == GE_EXPR
2687 0 : && cmp == 0
2688 0 : && allbits)
2689 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2690 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2691 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2692 : )
2693 : {
2694 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail864;
2695 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail864;
2696 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail864;
2697 0 : {
2698 0 : tree res_op0;
2699 0 : res_op0 = captures[4];
2700 0 : tree res_op1;
2701 0 : {
2702 0 : tree _o1[1], _r1;
2703 0 : _o1[0] = captures[2];
2704 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2705 : {
2706 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2707 : }
2708 : else
2709 : _r1 = _o1[0];
2710 0 : res_op1 = _r1;
2711 : }
2712 0 : tree _r;
2713 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2715 0 : return _r;
2716 : }
2717 : next_after_fail864:;
2718 : }
2719 : else
2720 : {
2721 6 : if ((code1 == NE_EXPR
2722 6 : && code2 == LE_EXPR
2723 0 : && cmp == 0
2724 0 : && allbits)
2725 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2726 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2727 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2728 : )
2729 : {
2730 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail865;
2731 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail865;
2732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail865;
2733 0 : {
2734 0 : tree res_op0;
2735 0 : res_op0 = captures[4];
2736 0 : tree res_op1;
2737 0 : {
2738 0 : tree _o1[1], _r1;
2739 0 : _o1[0] = captures[2];
2740 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2741 : {
2742 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2743 : }
2744 : else
2745 : _r1 = _o1[0];
2746 0 : res_op1 = _r1;
2747 : }
2748 0 : tree _r;
2749 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2750 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
2751 0 : return _r;
2752 : }
2753 : next_after_fail865:;
2754 : }
2755 : else
2756 : {
2757 6 : if ((code1 == NE_EXPR
2758 6 : && code2 == GT_EXPR
2759 : && one_after
2760 4 : && allbits)
2761 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2762 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2763 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2764 : )
2765 : {
2766 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail866;
2767 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail866;
2768 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail866;
2769 0 : {
2770 0 : tree res_op0;
2771 0 : res_op0 = captures[4];
2772 0 : tree res_op1;
2773 0 : {
2774 0 : tree _o1[1], _r1;
2775 0 : _o1[0] = captures[2];
2776 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2777 : {
2778 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2779 : }
2780 : else
2781 : _r1 = _o1[0];
2782 0 : res_op1 = _r1;
2783 : }
2784 0 : tree _r;
2785 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2786 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2787 0 : return _r;
2788 : }
2789 : next_after_fail866:;
2790 : }
2791 : else
2792 : {
2793 6 : if ((code1 == NE_EXPR
2794 6 : && code2 == LT_EXPR
2795 : && one_before
2796 0 : && allbits)
2797 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2798 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2799 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2800 : )
2801 : {
2802 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail867;
2803 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail867;
2804 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail867;
2805 0 : {
2806 0 : tree res_op0;
2807 0 : res_op0 = captures[4];
2808 0 : tree res_op1;
2809 0 : {
2810 0 : tree _o1[1], _r1;
2811 0 : _o1[0] = captures[2];
2812 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2813 : {
2814 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2815 : }
2816 : else
2817 : _r1 = _o1[0];
2818 0 : res_op1 = _r1;
2819 : }
2820 0 : tree _r;
2821 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2823 0 : return _r;
2824 : }
2825 : next_after_fail867:;
2826 : }
2827 : }
2828 : }
2829 : }
2830 : }
2831 : }
2832 : }
2833 : }
2834 : }
2835 : return NULL_TREE;
2836 : }
2837 :
2838 : tree
2839 147 : generic_simplify_518 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2840 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2841 : {
2842 147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2843 147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail911;
2844 147 : {
2845 147 : tree res_op0;
2846 147 : {
2847 147 : tree _o1[1], _r1;
2848 147 : _o1[0] = captures[0];
2849 147 : if (TREE_TYPE (_o1[0]) != type)
2850 : {
2851 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2852 : }
2853 : else
2854 : _r1 = _o1[0];
2855 147 : res_op0 = _r1;
2856 : }
2857 147 : tree res_op1;
2858 147 : res_op1 = build_each_one_cst (type);
2859 147 : tree _r;
2860 147 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
2861 147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 721, __FILE__, __LINE__, true);
2862 : return _r;
2863 : }
2864 0 : next_after_fail911:;
2865 0 : return NULL_TREE;
2866 : }
2867 :
2868 : tree
2869 0 : generic_simplify_525 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2870 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2871 : const enum tree_code ARG_UNUSED (minmax))
2872 : {
2873 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2874 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail919;
2875 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail919;
2876 0 : {
2877 0 : tree _r;
2878 0 : _r = captures[0];
2879 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 729, __FILE__, __LINE__, true);
2880 : return _r;
2881 : }
2882 : next_after_fail919:;
2883 : return NULL_TREE;
2884 : }
2885 :
2886 : tree
2887 0 : generic_simplify_532 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2888 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2889 : const enum tree_code ARG_UNUSED (minmax))
2890 : {
2891 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2892 0 : if (TYPE_UNSIGNED(type)
2893 : )
2894 : {
2895 0 : if (minmax == MIN_EXPR
2896 : )
2897 : {
2898 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail927;
2899 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail927;
2900 0 : {
2901 0 : tree _r;
2902 0 : _r = captures[1];
2903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 736, __FILE__, __LINE__, true);
2904 0 : return _r;
2905 : }
2906 : next_after_fail927:;
2907 : }
2908 : else
2909 : {
2910 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail928;
2911 0 : {
2912 0 : tree _r;
2913 0 : _r = captures[0];
2914 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2915 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2916 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 737, __FILE__, __LINE__, true);
2917 0 : return _r;
2918 : }
2919 0 : next_after_fail928:;
2920 : }
2921 : }
2922 : return NULL_TREE;
2923 : }
2924 :
2925 : tree
2926 2 : generic_simplify_540 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2927 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2928 : {
2929 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2930 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2931 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2932 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2933 : )
2934 : {
2935 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail948;
2936 2 : {
2937 2 : tree res_op0;
2938 2 : res_op0 = captures[0];
2939 2 : tree _r;
2940 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2941 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2942 2 : return _r;
2943 : }
2944 0 : next_after_fail948:;
2945 : }
2946 : return NULL_TREE;
2947 : }
2948 :
2949 : tree
2950 12 : generic_simplify_547 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2951 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2952 : const enum tree_code ARG_UNUSED (op))
2953 : {
2954 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2955 12 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail955;
2956 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail955;
2957 12 : {
2958 12 : tree _r;
2959 12 : _r = captures[2];
2960 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 534, __FILE__, __LINE__, true);
2961 : return _r;
2962 : }
2963 : next_after_fail955:;
2964 : return NULL_TREE;
2965 : }
2966 :
2967 : tree
2968 0 : generic_simplify_553 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2969 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2970 : const combined_fn ARG_UNUSED (cond_op))
2971 : {
2972 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2973 0 : {
2974 0 : tree op_type = TREE_TYPE (captures[6]);
2975 0 : if (inverse_conditions_p (captures[0], captures[2])
2976 0 : && element_precision (type) == element_precision (op_type)
2977 : )
2978 : {
2979 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail961;
2980 0 : {
2981 0 : tree res_op0;
2982 0 : {
2983 0 : tree _o1[5], _r1;
2984 0 : _o1[0] = captures[2];
2985 0 : _o1[1] = captures[3];
2986 0 : _o1[2] = captures[4];
2987 0 : _o1[3] = captures[5];
2988 0 : {
2989 0 : tree _o2[1], _r2;
2990 0 : _o2[0] = captures[1];
2991 0 : if (TREE_TYPE (_o2[0]) != op_type)
2992 : {
2993 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2994 : }
2995 : else
2996 : _r2 = _o2[0];
2997 0 : _o1[4] = _r2;
2998 : }
2999 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 5, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4]);
3000 0 : if (!_r1)
3001 0 : goto next_after_fail961;
3002 0 : res_op0 = _r1;
3003 : }
3004 0 : tree _r;
3005 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3006 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3007 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3008 0 : if (TREE_SIDE_EFFECTS (captures[6]))
3009 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
3010 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 753, __FILE__, __LINE__, true);
3011 0 : return _r;
3012 : }
3013 : next_after_fail961:;
3014 : }
3015 : }
3016 : return NULL_TREE;
3017 : }
3018 :
3019 : tree
3020 0 : generic_simplify_566 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3021 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3022 : const enum tree_code ARG_UNUSED (bitop),
3023 : const combined_fn ARG_UNUSED (bswap))
3024 : {
3025 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail977;
3027 0 : {
3028 0 : tree res_op0;
3029 0 : res_op0 = captures[0];
3030 0 : tree res_op1;
3031 0 : {
3032 0 : tree _o1[1], _r1;
3033 0 : _o1[0] = captures[1];
3034 0 : _r1 = maybe_build_call_expr_loc (loc, bswap, TREE_TYPE (_o1[0]), 1, _o1[0]);
3035 0 : if (!_r1)
3036 0 : goto next_after_fail977;
3037 0 : res_op1 = _r1;
3038 : }
3039 0 : tree _r;
3040 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
3041 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 769, __FILE__, __LINE__, true);
3042 : return _r;
3043 : }
3044 : next_after_fail977:;
3045 : return NULL_TREE;
3046 : }
3047 :
3048 : tree
3049 0 : generic_simplify_575 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3050 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3051 : const combined_fn ARG_UNUSED (tans),
3052 : const combined_fn ARG_UNUSED (atans))
3053 : {
3054 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3055 0 : if (flag_unsafe_math_optimizations
3056 : )
3057 : {
3058 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail986;
3059 0 : {
3060 0 : tree _r;
3061 0 : _r = captures[0];
3062 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
3063 0 : return _r;
3064 : }
3065 0 : next_after_fail986:;
3066 : }
3067 : return NULL_TREE;
3068 : }
3069 :
3070 : tree
3071 0 : generic_simplify_580 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3072 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3073 : const combined_fn ARG_UNUSED (froms),
3074 : const combined_fn ARG_UNUSED (tos))
3075 : {
3076 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3077 0 : if (optimize && canonicalize_math_p ()
3078 0 : && targetm.libc_has_function (function_c99_misc, NULL_TREE)
3079 : )
3080 : {
3081 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail991;
3082 0 : {
3083 0 : tree res_op0;
3084 0 : {
3085 0 : tree _o1[1], _r1;
3086 0 : _o1[0] = captures[0];
3087 0 : _r1 = maybe_build_call_expr_loc (loc, tos, TREE_TYPE (_o1[0]), 1, _o1[0]);
3088 0 : if (!_r1)
3089 0 : goto next_after_fail991;
3090 0 : res_op0 = _r1;
3091 : }
3092 0 : tree _r;
3093 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3094 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
3095 0 : return _r;
3096 : }
3097 : next_after_fail991:;
3098 : }
3099 : return NULL_TREE;
3100 : }
3101 :
3102 : tree
3103 0 : generic_simplify_587 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3104 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3105 : const combined_fn ARG_UNUSED (floors))
3106 : {
3107 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3108 0 : if (canonicalize_math_p ()
3109 : )
3110 : {
3111 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail998;
3112 0 : {
3113 0 : tree res_op0;
3114 0 : res_op0 = captures[0];
3115 0 : tree _r;
3116 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3117 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 790, __FILE__, __LINE__, true);
3118 0 : return _r;
3119 : }
3120 0 : next_after_fail998:;
3121 : }
3122 : return NULL_TREE;
3123 : }
3124 :
3125 : tree
3126 0 : generic_simplify_595 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3127 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3128 : const combined_fn ARG_UNUSED (fmas))
3129 : {
3130 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3131 0 : if (canonicalize_math_after_vectorization_p ()
3132 : )
3133 : {
3134 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1006;
3135 : {
3136 : tree res_op0;
3137 : res_op0 = captures[0];
3138 : tree res_op1;
3139 : res_op1 = captures[1];
3140 : tree res_op2;
3141 : res_op2 = captures[2];
3142 : tree _r;
3143 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
3144 : if (!_r)
3145 : goto next_after_fail1006;
3146 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 798, __FILE__, __LINE__, true);
3147 : return _r;
3148 : }
3149 0 : next_after_fail1006:;
3150 : }
3151 0 : return NULL_TREE;
3152 : }
3153 :
3154 : tree
3155 0 : generic_simplify_605 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3156 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3157 : const combined_fn ARG_UNUSED (fmas))
3158 : {
3159 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3160 0 : if (canonicalize_math_after_vectorization_p ()
3161 : )
3162 : {
3163 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1016;
3164 : {
3165 : tree res_op0;
3166 : res_op0 = captures[0];
3167 : tree res_op1;
3168 : res_op1 = captures[1];
3169 : tree res_op2;
3170 : res_op2 = captures[2];
3171 : tree res_op3;
3172 : res_op3 = captures[3];
3173 : tree res_op4;
3174 : res_op4 = captures[4];
3175 : tree _r;
3176 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3177 : if (!_r)
3178 : goto next_after_fail1016;
3179 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 808, __FILE__, __LINE__, true);
3180 : return _r;
3181 : }
3182 0 : next_after_fail1016:;
3183 : }
3184 0 : return NULL_TREE;
3185 : }
3186 :
3187 : tree
3188 0 : generic_simplify_615 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3189 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3190 : const combined_fn ARG_UNUSED (ctz))
3191 : {
3192 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3193 0 : {
3194 0 : tree t = TREE_TYPE (captures[0]);
3195 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1026;
3196 0 : {
3197 0 : tree res_op0;
3198 0 : {
3199 0 : tree _o1[1], _r1;
3200 0 : _o1[0] = captures[1];
3201 0 : if (TREE_TYPE (_o1[0]) != t)
3202 : {
3203 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3204 : }
3205 : else
3206 : _r1 = _o1[0];
3207 0 : res_op0 = _r1;
3208 : }
3209 0 : tree _r;
3210 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3211 0 : if (!_r)
3212 0 : goto next_after_fail1026;
3213 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3214 : return _r;
3215 : }
3216 : next_after_fail1026:;
3217 : }
3218 : return NULL_TREE;
3219 : }
3220 :
3221 : tree
3222 0 : generic_simplify_625 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3223 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3224 : const combined_fn ARG_UNUSED (bswap),
3225 : const combined_fn ARG_UNUSED (parity))
3226 : {
3227 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3228 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3229 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3230 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3231 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3232 : )
3233 : {
3234 0 : {
3235 0 : tree type0 = TREE_TYPE (captures[0]);
3236 0 : tree type1 = TREE_TYPE (captures[1]);
3237 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1037;
3238 0 : {
3239 0 : tree res_op0;
3240 0 : {
3241 0 : tree _o1[1], _r1;
3242 0 : {
3243 0 : tree _o2[1], _r2;
3244 0 : _o2[0] = captures[2];
3245 0 : if (TREE_TYPE (_o2[0]) != type1)
3246 : {
3247 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3248 : }
3249 : else
3250 : _r2 = _o2[0];
3251 0 : _o1[0] = _r2;
3252 : }
3253 0 : if (TREE_TYPE (_o1[0]) != type0)
3254 : {
3255 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3256 : }
3257 : else
3258 : _r1 = _o1[0];
3259 0 : res_op0 = _r1;
3260 : }
3261 0 : tree _r;
3262 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3263 0 : if (!_r)
3264 0 : goto next_after_fail1037;
3265 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3266 0 : return _r;
3267 : }
3268 : next_after_fail1037:;
3269 : }
3270 : }
3271 : return NULL_TREE;
3272 : }
3273 :
3274 : tree
3275 4352480 : generic_simplify_NEGATE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3276 : {
3277 4352480 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3278 4352480 : switch (TREE_CODE (_p0))
3279 : {
3280 41373 : case PLUS_EXPR:
3281 41373 : {
3282 41373 : tree _q20 = TREE_OPERAND (_p0, 0);
3283 41373 : tree _q21 = TREE_OPERAND (_p0, 1);
3284 41373 : if (tree_negate_expr_p (_q21))
3285 : {
3286 39291 : {
3287 39291 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3288 39291 : tree res = generic_simplify_516 (loc, type, _p0, captures);
3289 39291 : if (res) return res;
3290 : }
3291 : }
3292 2082 : if (tree_negate_expr_p (_q20))
3293 : {
3294 17 : {
3295 17 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
3296 17 : tree res = generic_simplify_516 (loc, type, _p0, captures);
3297 17 : if (res) return res;
3298 : }
3299 : }
3300 : break;
3301 : }
3302 109597 : case MINUS_EXPR:
3303 109597 : {
3304 109597 : tree _q20 = TREE_OPERAND (_p0, 0);
3305 109597 : tree _q21 = TREE_OPERAND (_p0, 1);
3306 109597 : {
3307 109597 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3308 109597 : if ((ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type))
3309 187148 : || (FLOAT_TYPE_P (type)
3310 77551 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
3311 77551 : && !HONOR_SIGNED_ZEROS (type))
3312 : )
3313 : {
3314 32103 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1084;
3315 32103 : {
3316 32103 : tree res_op0;
3317 32103 : res_op0 = captures[1];
3318 32103 : tree res_op1;
3319 32103 : res_op1 = captures[0];
3320 32103 : tree _r;
3321 32103 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3322 32103 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 860, __FILE__, __LINE__, true);
3323 32103 : return _r;
3324 : }
3325 0 : next_after_fail1084:;
3326 : }
3327 : }
3328 77494 : break;
3329 : }
3330 16 : case POINTER_DIFF_EXPR:
3331 16 : {
3332 16 : tree _q20 = TREE_OPERAND (_p0, 0);
3333 16 : tree _q21 = TREE_OPERAND (_p0, 1);
3334 16 : {
3335 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3336 16 : tree res = generic_simplify_517 (loc, type, _p0, captures);
3337 16 : if (res) return res;
3338 : }
3339 0 : break;
3340 : }
3341 5752 : case MULT_EXPR:
3342 5752 : {
3343 5752 : tree _q20 = TREE_OPERAND (_p0, 0);
3344 5752 : tree _q21 = TREE_OPERAND (_p0, 1);
3345 5752 : if (tree_negate_expr_p (_q21))
3346 : {
3347 1802 : {
3348 1802 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3349 1802 : tree res = generic_simplify_520 (loc, type, _p0, captures);
3350 1802 : if (res) return res;
3351 : }
3352 : }
3353 4345 : if (tree_negate_expr_p (_q20))
3354 : {
3355 27 : {
3356 27 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
3357 27 : tree res = generic_simplify_520 (loc, type, _p0, captures);
3358 27 : if (res) return res;
3359 : }
3360 : }
3361 : break;
3362 : }
3363 188 : case RDIV_EXPR:
3364 188 : {
3365 188 : tree _q20 = TREE_OPERAND (_p0, 0);
3366 188 : tree _q21 = TREE_OPERAND (_p0, 1);
3367 188 : if (tree_negate_expr_p (_q21))
3368 : {
3369 60 : {
3370 60 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3371 60 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3372 60 : && single_use (captures[0])
3373 : )
3374 : {
3375 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1085;
3376 60 : {
3377 60 : tree res_op0;
3378 60 : res_op0 = captures[1];
3379 60 : tree res_op1;
3380 60 : {
3381 60 : tree _o1[1], _r1;
3382 60 : _o1[0] = captures[2];
3383 60 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3384 60 : res_op1 = _r1;
3385 : }
3386 60 : tree _r;
3387 60 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3388 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 861, __FILE__, __LINE__, true);
3389 60 : return _r;
3390 : }
3391 0 : next_after_fail1085:;
3392 : }
3393 : }
3394 : }
3395 128 : if (tree_negate_expr_p (_q20))
3396 : {
3397 0 : {
3398 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3399 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3400 0 : && single_use (captures[0])
3401 : )
3402 : {
3403 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1086;
3404 0 : {
3405 0 : tree res_op0;
3406 0 : {
3407 0 : tree _o1[1], _r1;
3408 0 : _o1[0] = captures[1];
3409 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3410 0 : res_op0 = _r1;
3411 : }
3412 0 : tree res_op1;
3413 0 : res_op1 = captures[2];
3414 0 : tree _r;
3415 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3416 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 862, __FILE__, __LINE__, true);
3417 0 : return _r;
3418 : }
3419 0 : next_after_fail1086:;
3420 : }
3421 : }
3422 : }
3423 : break;
3424 : }
3425 1412604 : CASE_CONVERT:
3426 1412604 : {
3427 1412604 : tree _q20 = TREE_OPERAND (_p0, 0);
3428 1412604 : switch (TREE_CODE (_q20))
3429 : {
3430 58 : case RSHIFT_EXPR:
3431 58 : {
3432 58 : tree _q30 = TREE_OPERAND (_q20, 0);
3433 58 : tree _q31 = TREE_OPERAND (_q20, 1);
3434 58 : switch (TREE_CODE (_q31))
3435 : {
3436 43 : case INTEGER_CST:
3437 43 : {
3438 43 : {
3439 43 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
3440 43 : tree res = generic_simplify_521 (loc, type, _p0, captures);
3441 43 : if (res) return res;
3442 : }
3443 36 : break;
3444 : }
3445 : default:;
3446 : }
3447 : break;
3448 : }
3449 207 : case NEGATE_EXPR:
3450 207 : {
3451 207 : tree _q30 = TREE_OPERAND (_q20, 0);
3452 207 : {
3453 207 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3454 207 : if (!TYPE_SATURATING (type)
3455 : )
3456 : {
3457 207 : if (INTEGRAL_TYPE_P (type)
3458 207 : && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3459 17 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3460 32 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
3461 206 : && !TYPE_OVERFLOW_SANITIZED (type)
3462 429 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
3463 : )
3464 : {
3465 206 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1087;
3466 206 : {
3467 206 : tree res_op0;
3468 206 : res_op0 = captures[0];
3469 206 : tree _r;
3470 206 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3471 206 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 863, __FILE__, __LINE__, true);
3472 206 : return _r;
3473 : }
3474 0 : next_after_fail1087:;
3475 : }
3476 : }
3477 : }
3478 : break;
3479 : }
3480 1412391 : default:;
3481 : }
3482 1412391 : {
3483 1412391 : tree _q20_pops[1];
3484 1412391 : if (tree_logical_inverted_value (_q20, _q20_pops))
3485 : {
3486 1 : tree _q30 = _q20_pops[0];
3487 1 : {
3488 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3489 1 : if (INTEGRAL_TYPE_P (type)
3490 1 : && TREE_CODE (type) != BOOLEAN_TYPE
3491 1 : && TYPE_PRECISION (type) > 1
3492 1 : && TREE_CODE (captures[2]) == SSA_NAME
3493 1 : && ssa_name_has_boolean_range (captures[2])
3494 : )
3495 : {
3496 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1088;
3497 0 : {
3498 0 : tree res_op0;
3499 0 : {
3500 0 : tree _o1[1], _r1;
3501 0 : _o1[0] = captures[2];
3502 0 : if (TREE_TYPE (_o1[0]) != type)
3503 : {
3504 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3505 : }
3506 : else
3507 : _r1 = _o1[0];
3508 0 : res_op0 = _r1;
3509 : }
3510 0 : tree res_op1;
3511 0 : res_op1 = build_all_ones_cst (type);
3512 0 : tree _r;
3513 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3514 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 864, __FILE__, __LINE__, true);
3515 0 : return _r;
3516 : }
3517 0 : next_after_fail1088:;
3518 : }
3519 : }
3520 : }
3521 : }
3522 1412391 : if (tree_negate_expr_p (_q20))
3523 : {
3524 1711 : {
3525 1711 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3526 1711 : if (!TYPE_SATURATING (type)
3527 : )
3528 : {
3529 1711 : if (SCALAR_FLOAT_TYPE_P (type)
3530 1711 : && ((DECIMAL_FLOAT_TYPE_P (type)
3531 0 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
3532 0 : && TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (captures[0])))
3533 0 : || !HONOR_SIGN_DEPENDENT_ROUNDING (type))
3534 : )
3535 : {
3536 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1089;
3537 0 : {
3538 0 : tree res_op0;
3539 0 : {
3540 0 : tree _o1[1], _r1;
3541 0 : _o1[0] = captures[0];
3542 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3543 0 : res_op0 = _r1;
3544 : }
3545 0 : tree _r;
3546 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3547 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 865, __FILE__, __LINE__, true);
3548 0 : return _r;
3549 : }
3550 0 : next_after_fail1089:;
3551 : }
3552 : }
3553 : }
3554 : }
3555 : break;
3556 : }
3557 385 : case RSHIFT_EXPR:
3558 385 : {
3559 385 : tree _q20 = TREE_OPERAND (_p0, 0);
3560 385 : tree _q21 = TREE_OPERAND (_p0, 1);
3561 385 : switch (TREE_CODE (_q21))
3562 : {
3563 367 : case INTEGER_CST:
3564 367 : {
3565 367 : {
3566 367 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3567 367 : tree res = generic_simplify_521 (loc, type, _p0, captures);
3568 367 : if (res) return res;
3569 : }
3570 330 : break;
3571 : }
3572 : default:;
3573 : }
3574 : break;
3575 : }
3576 147 : case BIT_NOT_EXPR:
3577 147 : {
3578 147 : tree _q20 = TREE_OPERAND (_p0, 0);
3579 147 : {
3580 147 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3581 147 : tree res = generic_simplify_518 (loc, type, _p0, captures);
3582 147 : if (res) return res;
3583 : }
3584 0 : break;
3585 : }
3586 3786 : case NEGATE_EXPR:
3587 3786 : {
3588 3786 : tree _q20 = TREE_OPERAND (_p0, 0);
3589 3786 : {
3590 3786 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3591 3786 : tree res = generic_simplify_519 (loc, type, _p0, captures);
3592 3786 : if (res) return res;
3593 : }
3594 13 : break;
3595 : }
3596 72 : case VEC_COND_EXPR:
3597 72 : {
3598 72 : tree _q20 = TREE_OPERAND (_p0, 0);
3599 72 : tree _q21 = TREE_OPERAND (_p0, 1);
3600 72 : tree _q22 = TREE_OPERAND (_p0, 2);
3601 72 : {
3602 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3603 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1090;
3604 72 : {
3605 72 : tree res_op0;
3606 72 : res_op0 = captures[1];
3607 72 : tree res_op1;
3608 72 : {
3609 72 : tree _o1[1], _r1;
3610 72 : _o1[0] = captures[2];
3611 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, type, _o1[0]);
3612 72 : if (EXPR_P (_r1))
3613 0 : goto next_after_fail1090;
3614 72 : res_op1 = _r1;
3615 : }
3616 72 : tree res_op2;
3617 72 : {
3618 72 : tree _o1[1], _r1;
3619 72 : _o1[0] = captures[3];
3620 72 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, type, _o1[0]);
3621 72 : if (EXPR_P (_r1))
3622 0 : goto next_after_fail1090;
3623 72 : res_op2 = _r1;
3624 : }
3625 72 : tree _r;
3626 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3627 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
3628 72 : return _r;
3629 : }
3630 0 : next_after_fail1090:;
3631 : }
3632 0 : break;
3633 : }
3634 276510 : case CALL_EXPR:
3635 276510 : switch (get_call_combined_fn (_p0))
3636 : {
3637 12 : case CFN_BUILT_IN_FMA:
3638 12 : if (call_expr_nargs (_p0) == 3)
3639 : {
3640 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3641 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3642 12 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3643 12 : {
3644 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3645 12 : tree res = generic_simplify_522 (loc, type, _p0, captures, CFN_BUILT_IN_FMA);
3646 12 : if (res) return res;
3647 : }
3648 : }
3649 : break;
3650 0 : case CFN_COND_FMA:
3651 0 : if (call_expr_nargs (_p0) == 5)
3652 : {
3653 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3654 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3655 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3656 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3657 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3658 0 : {
3659 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3660 0 : const combined_fn fmas = CFN_COND_FMA;
3661 0 : if (canonicalize_math_after_vectorization_p ()
3662 : )
3663 : {
3664 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3665 : )
3666 : {
3667 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1091;
3668 : {
3669 : tree res_op0;
3670 : res_op0 = captures[1];
3671 : tree res_op1;
3672 : res_op1 = captures[2];
3673 : tree res_op2;
3674 : res_op2 = captures[3];
3675 : tree res_op3;
3676 : res_op3 = captures[4];
3677 : tree res_op4;
3678 : res_op4 = captures[5];
3679 : tree _r;
3680 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3681 : if (!_r)
3682 : goto next_after_fail1091;
3683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 866, __FILE__, __LINE__, true);
3684 : return _r;
3685 : }
3686 0 : next_after_fail1091:;
3687 : }
3688 : }
3689 : }
3690 : }
3691 : break;
3692 4 : case CFN_BUILT_IN_FMAF:
3693 4 : if (call_expr_nargs (_p0) == 3)
3694 : {
3695 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3696 4 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3697 4 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3698 4 : {
3699 4 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3700 4 : tree res = generic_simplify_522 (loc, type, _p0, captures, CFN_BUILT_IN_FMAF);
3701 4 : if (res) return res;
3702 : }
3703 : }
3704 : break;
3705 0 : case CFN_BUILT_IN_FMAL:
3706 0 : if (call_expr_nargs (_p0) == 3)
3707 : {
3708 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3709 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3710 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3711 0 : {
3712 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3713 0 : tree res = generic_simplify_522 (loc, type, _p0, captures, CFN_BUILT_IN_FMAL);
3714 0 : if (res) return res;
3715 : }
3716 : }
3717 : break;
3718 0 : case CFN_FMA:
3719 0 : if (call_expr_nargs (_p0) == 3)
3720 : {
3721 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3722 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3723 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3724 0 : {
3725 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3726 0 : tree res = generic_simplify_522 (loc, type, _p0, captures, CFN_FMA);
3727 0 : if (res) return res;
3728 : }
3729 : }
3730 : break;
3731 0 : case CFN_FMS:
3732 0 : if (call_expr_nargs (_p0) == 3)
3733 : {
3734 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3735 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3736 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3737 0 : {
3738 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3739 0 : if (canonicalize_math_after_vectorization_p ()
3740 : )
3741 : {
3742 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3743 : )
3744 : {
3745 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1092;
3746 : {
3747 : tree res_op0;
3748 : res_op0 = captures[1];
3749 : tree res_op1;
3750 : res_op1 = captures[2];
3751 : tree res_op2;
3752 : res_op2 = captures[3];
3753 : tree _r;
3754 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3755 : if (!_r)
3756 : goto next_after_fail1092;
3757 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 867, __FILE__, __LINE__, true);
3758 : return _r;
3759 : }
3760 0 : next_after_fail1092:;
3761 : }
3762 : }
3763 : }
3764 : }
3765 0 : if (call_expr_nargs (_p0) == 5)
3766 : {
3767 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3768 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3769 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3770 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3771 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3772 0 : {
3773 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3774 0 : if (canonicalize_math_after_vectorization_p ()
3775 : )
3776 : {
3777 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3778 : )
3779 : {
3780 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1093;
3781 : {
3782 : tree res_op0;
3783 : res_op0 = captures[1];
3784 : tree res_op1;
3785 : res_op1 = captures[2];
3786 : tree res_op2;
3787 : res_op2 = captures[3];
3788 : tree res_op3;
3789 : res_op3 = captures[4];
3790 : tree res_op4;
3791 : res_op4 = captures[5];
3792 : tree _r;
3793 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3794 : if (!_r)
3795 : goto next_after_fail1093;
3796 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 868, __FILE__, __LINE__, true);
3797 : return _r;
3798 : }
3799 0 : next_after_fail1093:;
3800 : }
3801 : }
3802 : }
3803 : }
3804 : break;
3805 0 : case CFN_COND_FNMA:
3806 0 : if (call_expr_nargs (_p0) == 5)
3807 : {
3808 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3809 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3810 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3811 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3812 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3813 0 : {
3814 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3815 0 : if (canonicalize_math_after_vectorization_p ()
3816 : )
3817 : {
3818 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3819 : )
3820 : {
3821 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1094;
3822 : {
3823 : tree res_op0;
3824 : res_op0 = captures[1];
3825 : tree res_op1;
3826 : res_op1 = captures[2];
3827 : tree res_op2;
3828 : res_op2 = captures[3];
3829 : tree res_op3;
3830 : res_op3 = captures[4];
3831 : tree res_op4;
3832 : res_op4 = captures[5];
3833 : tree _r;
3834 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3835 : if (!_r)
3836 : goto next_after_fail1094;
3837 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 869, __FILE__, __LINE__, true);
3838 : return _r;
3839 : }
3840 0 : next_after_fail1094:;
3841 : }
3842 : }
3843 : }
3844 : }
3845 : break;
3846 0 : case CFN_COND_FNMS:
3847 0 : if (call_expr_nargs (_p0) == 5)
3848 : {
3849 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3850 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3851 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3852 0 : tree _q23 = CALL_EXPR_ARG (_p0, 3);
3853 0 : tree _q24 = CALL_EXPR_ARG (_p0, 4);
3854 0 : {
3855 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _q23, _q24 };
3856 0 : if (canonicalize_math_after_vectorization_p ()
3857 : )
3858 : {
3859 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3860 : )
3861 : {
3862 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1095;
3863 : {
3864 : tree res_op0;
3865 : res_op0 = captures[1];
3866 : tree res_op1;
3867 : res_op1 = captures[2];
3868 : tree res_op2;
3869 : res_op2 = captures[3];
3870 : tree res_op3;
3871 : res_op3 = captures[4];
3872 : tree res_op4;
3873 : res_op4 = captures[5];
3874 : tree _r;
3875 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3876 : if (!_r)
3877 : goto next_after_fail1095;
3878 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 870, __FILE__, __LINE__, true);
3879 : return _r;
3880 : }
3881 0 : next_after_fail1095:;
3882 : }
3883 : }
3884 : }
3885 : }
3886 : break;
3887 0 : case CFN_FNMA:
3888 0 : if (call_expr_nargs (_p0) == 3)
3889 : {
3890 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3891 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3892 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3893 0 : {
3894 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3895 0 : if (canonicalize_math_after_vectorization_p ()
3896 : )
3897 : {
3898 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3899 : )
3900 : {
3901 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1096;
3902 : {
3903 : tree res_op0;
3904 : res_op0 = captures[1];
3905 : tree res_op1;
3906 : res_op1 = captures[2];
3907 : tree res_op2;
3908 : res_op2 = captures[3];
3909 : tree _r;
3910 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3911 : if (!_r)
3912 : goto next_after_fail1096;
3913 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 871, __FILE__, __LINE__, true);
3914 : return _r;
3915 : }
3916 0 : next_after_fail1096:;
3917 : }
3918 : }
3919 : }
3920 : }
3921 : break;
3922 0 : case CFN_FNMS:
3923 0 : if (call_expr_nargs (_p0) == 3)
3924 : {
3925 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3926 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3927 0 : tree _q22 = CALL_EXPR_ARG (_p0, 2);
3928 0 : {
3929 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3930 0 : if (canonicalize_math_after_vectorization_p ()
3931 : )
3932 : {
3933 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
3934 : )
3935 : {
3936 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1097;
3937 : {
3938 : tree res_op0;
3939 : res_op0 = captures[1];
3940 : tree res_op1;
3941 : res_op1 = captures[2];
3942 : tree res_op2;
3943 : res_op2 = captures[3];
3944 : tree _r;
3945 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3946 : if (!_r)
3947 : goto next_after_fail1097;
3948 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 872, __FILE__, __LINE__, true);
3949 : return _r;
3950 : }
3951 0 : next_after_fail1097:;
3952 : }
3953 : }
3954 : }
3955 : }
3956 : break;
3957 : default:;
3958 : }
3959 : break;
3960 4275317 : default:;
3961 : }
3962 4275317 : {
3963 4275317 : tree _p0_pops[1];
3964 4275317 : if (tree_nop_convert (_p0, _p0_pops))
3965 : {
3966 1630566 : tree _q20 = _p0_pops[0];
3967 1630566 : switch (TREE_CODE (_q20))
3968 : {
3969 0 : case POINTER_DIFF_EXPR:
3970 0 : {
3971 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3972 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3973 0 : {
3974 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
3975 0 : tree res = generic_simplify_517 (loc, type, _p0, captures);
3976 0 : if (res) return res;
3977 : }
3978 0 : break;
3979 : }
3980 0 : case BIT_NOT_EXPR:
3981 0 : {
3982 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3983 0 : {
3984 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3985 0 : tree res = generic_simplify_518 (loc, type, _p0, captures);
3986 0 : if (res) return res;
3987 : }
3988 0 : break;
3989 : }
3990 0 : case NEGATE_EXPR:
3991 0 : {
3992 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3993 0 : {
3994 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3995 0 : tree res = generic_simplify_519 (loc, type, _p0, captures);
3996 0 : if (res) return res;
3997 : }
3998 0 : break;
3999 : }
4000 : default:;
4001 : }
4002 : }
4003 : }
4004 4275317 : {
4005 4275317 : tree _p0_pops[1];
4006 4275317 : if (tree_logical_inverted_value (_p0, _p0_pops))
4007 : {
4008 70 : tree _q20 = _p0_pops[0];
4009 70 : {
4010 70 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
4011 70 : if (INTEGRAL_TYPE_P (type)
4012 70 : && TREE_CODE (type) != BOOLEAN_TYPE
4013 70 : && TYPE_PRECISION (type) > 1
4014 70 : && TREE_CODE (captures[2]) == SSA_NAME
4015 70 : && ssa_name_has_boolean_range (captures[2])
4016 : )
4017 : {
4018 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1098;
4019 0 : {
4020 0 : tree res_op0;
4021 0 : {
4022 0 : tree _o1[1], _r1;
4023 0 : _o1[0] = captures[2];
4024 0 : if (TREE_TYPE (_o1[0]) != type)
4025 : {
4026 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4027 : }
4028 : else
4029 : _r1 = _o1[0];
4030 0 : res_op0 = _r1;
4031 : }
4032 0 : tree res_op1;
4033 0 : res_op1 = build_all_ones_cst (type);
4034 0 : tree _r;
4035 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
4036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 864, __FILE__, __LINE__, true);
4037 0 : return _r;
4038 : }
4039 0 : next_after_fail1098:;
4040 : }
4041 : }
4042 : }
4043 : }
4044 4275317 : {
4045 4275317 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4046 4275317 : tree res = generic_simplify_441 (loc, type, _p0, captures);
4047 4275317 : if (res) return res;
4048 : }
4049 4261547 : return NULL_TREE;
4050 : }
4051 :
4052 : tree
4053 27913355 : generic_simplify_EQ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4054 : {
4055 27913355 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4056 27913355 : switch (TREE_CODE (_p1))
4057 : {
4058 98 : case NEGATE_EXPR:
4059 98 : {
4060 98 : tree _q30 = TREE_OPERAND (_p1, 0);
4061 98 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4062 : {
4063 0 : {
4064 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4065 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
4066 0 : if (res) return res;
4067 : }
4068 : }
4069 : break;
4070 : }
4071 27913355 : default:;
4072 : }
4073 27913355 : switch (TREE_CODE (_p0))
4074 : {
4075 1330 : case NEGATE_EXPR:
4076 1330 : {
4077 1330 : tree _q20 = TREE_OPERAND (_p0, 0);
4078 1330 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4079 : {
4080 101 : {
4081 101 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4082 101 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, EQ_EXPR);
4083 101 : if (res) return res;
4084 : }
4085 : }
4086 : break;
4087 : }
4088 0 : case CEIL_MOD_EXPR:
4089 0 : {
4090 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4091 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4092 0 : if (integer_pow2p (_q21))
4093 : {
4094 0 : if (integer_zerop (_p1))
4095 : {
4096 0 : {
4097 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4098 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, EQ_EXPR, CEIL_MOD_EXPR);
4099 0 : if (res) return res;
4100 : }
4101 : }
4102 : }
4103 : break;
4104 : }
4105 876 : case FLOOR_MOD_EXPR:
4106 876 : {
4107 876 : tree _q20 = TREE_OPERAND (_p0, 0);
4108 876 : tree _q21 = TREE_OPERAND (_p0, 1);
4109 876 : if (integer_pow2p (_q21))
4110 : {
4111 26 : if (integer_zerop (_p1))
4112 : {
4113 26 : {
4114 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4115 26 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, EQ_EXPR, FLOOR_MOD_EXPR);
4116 26 : if (res) return res;
4117 : }
4118 : }
4119 : }
4120 : break;
4121 : }
4122 0 : case ROUND_MOD_EXPR:
4123 0 : {
4124 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4125 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4126 0 : if (integer_pow2p (_q21))
4127 : {
4128 0 : if (integer_zerop (_p1))
4129 : {
4130 0 : {
4131 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4132 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, EQ_EXPR, ROUND_MOD_EXPR);
4133 0 : if (res) return res;
4134 : }
4135 : }
4136 : }
4137 : break;
4138 : }
4139 92977 : case TRUNC_MOD_EXPR:
4140 92977 : {
4141 92977 : tree _q20 = TREE_OPERAND (_p0, 0);
4142 92977 : tree _q21 = TREE_OPERAND (_p0, 1);
4143 92977 : if (integer_pow2p (_q21))
4144 : {
4145 39882 : if (integer_zerop (_p1))
4146 : {
4147 562 : {
4148 562 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4149 562 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, EQ_EXPR, TRUNC_MOD_EXPR);
4150 562 : if (res) return res;
4151 : }
4152 : }
4153 : }
4154 : break;
4155 : }
4156 5264387 : CASE_CONVERT:
4157 5264387 : {
4158 5264387 : tree _q20 = TREE_OPERAND (_p0, 0);
4159 5264387 : switch (TREE_CODE (_p1))
4160 : {
4161 2 : case LSHIFT_EXPR:
4162 2 : {
4163 2 : tree _q40 = TREE_OPERAND (_p1, 0);
4164 2 : tree _q41 = TREE_OPERAND (_p1, 1);
4165 2 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4166 : {
4167 0 : {
4168 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4169 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4170 0 : if (res) return res;
4171 : }
4172 : }
4173 : break;
4174 : }
4175 5264387 : default:;
4176 : }
4177 5264387 : {
4178 5264387 : tree _p1_pops[1];
4179 5264387 : if (tree_nop_convert (_p1, _p1_pops))
4180 : {
4181 1262253 : tree _q40 = _p1_pops[0];
4182 1262253 : switch (TREE_CODE (_q40))
4183 : {
4184 0 : case LSHIFT_EXPR:
4185 0 : {
4186 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4187 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4188 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4189 : {
4190 0 : {
4191 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4192 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4193 0 : if (res) return res;
4194 : }
4195 : }
4196 : break;
4197 : }
4198 : default:;
4199 : }
4200 : }
4201 : }
4202 5264387 : switch (TREE_CODE (_q20))
4203 : {
4204 92 : case EXACT_DIV_EXPR:
4205 92 : {
4206 92 : tree _q30 = TREE_OPERAND (_q20, 0);
4207 92 : tree _q31 = TREE_OPERAND (_q20, 1);
4208 92 : switch (TREE_CODE (_q31))
4209 : {
4210 92 : case INTEGER_CST:
4211 92 : {
4212 92 : switch (TREE_CODE (_p1))
4213 : {
4214 0 : CASE_CONVERT:
4215 0 : {
4216 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4217 0 : switch (TREE_CODE (_q60))
4218 : {
4219 0 : case EXACT_DIV_EXPR:
4220 0 : {
4221 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4222 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4223 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4224 : {
4225 0 : {
4226 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4227 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4228 0 : if (res) return res;
4229 : }
4230 : }
4231 : break;
4232 : }
4233 : default:;
4234 : }
4235 : break;
4236 : }
4237 : default:;
4238 : }
4239 : break;
4240 : }
4241 : default:;
4242 : }
4243 : break;
4244 : }
4245 5264387 : default:;
4246 : }
4247 5264387 : switch (TREE_CODE (_p1))
4248 : {
4249 29400 : case PLUS_EXPR:
4250 29400 : {
4251 29400 : tree _q40 = TREE_OPERAND (_p1, 0);
4252 29400 : tree _q41 = TREE_OPERAND (_p1, 1);
4253 29400 : switch (TREE_CODE (_q41))
4254 : {
4255 26 : CASE_CONVERT:
4256 26 : {
4257 26 : tree _q60 = TREE_OPERAND (_q41, 0);
4258 26 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4259 : {
4260 0 : {
4261 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4262 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4263 0 : if (res) return res;
4264 : }
4265 : }
4266 : break;
4267 : }
4268 29400 : default:;
4269 : }
4270 29400 : switch (TREE_CODE (_q40))
4271 : {
4272 3994 : CASE_CONVERT:
4273 3994 : {
4274 3994 : tree _q50 = TREE_OPERAND (_q40, 0);
4275 3994 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4276 : {
4277 0 : {
4278 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4279 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4280 0 : if (res) return res;
4281 : }
4282 : }
4283 : break;
4284 : }
4285 29400 : default:;
4286 : }
4287 29400 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4288 : {
4289 0 : {
4290 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4291 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4292 0 : if (res) return res;
4293 : }
4294 : }
4295 29400 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4296 : {
4297 0 : {
4298 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4299 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
4300 0 : if (res) return res;
4301 : }
4302 : }
4303 : break;
4304 : }
4305 5264387 : default:;
4306 : }
4307 5264387 : {
4308 5264387 : tree _p1_pops[1];
4309 5264387 : if (tree_nop_convert (_p1, _p1_pops))
4310 : {
4311 1262253 : tree _q40 = _p1_pops[0];
4312 1262253 : switch (TREE_CODE (_q40))
4313 : {
4314 73 : case PLUS_EXPR:
4315 73 : {
4316 73 : tree _q50 = TREE_OPERAND (_q40, 0);
4317 73 : tree _q51 = TREE_OPERAND (_q40, 1);
4318 73 : switch (TREE_CODE (_q51))
4319 : {
4320 0 : CASE_CONVERT:
4321 0 : {
4322 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4323 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4324 : {
4325 0 : {
4326 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4327 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4328 0 : if (res) return res;
4329 : }
4330 : }
4331 : break;
4332 : }
4333 73 : default:;
4334 : }
4335 73 : switch (TREE_CODE (_q50))
4336 : {
4337 4 : CASE_CONVERT:
4338 4 : {
4339 4 : tree _q60 = TREE_OPERAND (_q50, 0);
4340 4 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4341 : {
4342 0 : {
4343 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4344 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4345 0 : if (res) return res;
4346 : }
4347 : }
4348 : break;
4349 : }
4350 73 : default:;
4351 : }
4352 73 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4353 : {
4354 0 : {
4355 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4356 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4357 0 : if (res) return res;
4358 : }
4359 : }
4360 73 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4361 : {
4362 0 : {
4363 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4364 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4365 0 : if (res) return res;
4366 : }
4367 : }
4368 : break;
4369 : }
4370 : default:;
4371 : }
4372 : }
4373 : }
4374 5264387 : break;
4375 : }
4376 27912764 : default:;
4377 : }
4378 27912764 : {
4379 27912764 : tree _p0_pops[1];
4380 27912764 : if (tree_nop_convert (_p0, _p0_pops))
4381 : {
4382 3071569 : tree _q20 = _p0_pops[0];
4383 3071569 : switch (TREE_CODE (_q20))
4384 : {
4385 1 : case LSHIFT_EXPR:
4386 1 : {
4387 1 : tree _q30 = TREE_OPERAND (_q20, 0);
4388 1 : tree _q31 = TREE_OPERAND (_q20, 1);
4389 1 : switch (TREE_CODE (_p1))
4390 : {
4391 0 : CASE_CONVERT:
4392 0 : {
4393 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4394 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4395 : {
4396 0 : {
4397 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4398 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4399 0 : if (res) return res;
4400 : }
4401 : }
4402 : break;
4403 : }
4404 1 : default:;
4405 : }
4406 1 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4407 : {
4408 1 : {
4409 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4410 1 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4411 1 : if (res) return res;
4412 : }
4413 : }
4414 : break;
4415 : }
4416 2285 : case PLUS_EXPR:
4417 2285 : {
4418 2285 : tree _q30 = TREE_OPERAND (_q20, 0);
4419 2285 : tree _q31 = TREE_OPERAND (_q20, 1);
4420 2285 : switch (TREE_CODE (_q31))
4421 : {
4422 0 : CASE_CONVERT:
4423 0 : {
4424 0 : tree _q50 = TREE_OPERAND (_q31, 0);
4425 0 : switch (TREE_CODE (_p1))
4426 : {
4427 0 : CASE_CONVERT:
4428 0 : {
4429 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4430 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4431 : {
4432 0 : {
4433 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4434 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4435 0 : if (res) return res;
4436 : }
4437 : }
4438 : break;
4439 : }
4440 : default:;
4441 : }
4442 : break;
4443 : }
4444 2285 : default:;
4445 : }
4446 2285 : switch (TREE_CODE (_q30))
4447 : {
4448 1197 : CASE_CONVERT:
4449 1197 : {
4450 1197 : tree _q40 = TREE_OPERAND (_q30, 0);
4451 1197 : switch (TREE_CODE (_p1))
4452 : {
4453 8 : CASE_CONVERT:
4454 8 : {
4455 8 : tree _q70 = TREE_OPERAND (_p1, 0);
4456 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4457 : {
4458 0 : {
4459 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4460 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4461 0 : if (res) return res;
4462 : }
4463 : }
4464 : break;
4465 : }
4466 1197 : default:;
4467 : }
4468 1197 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4469 : {
4470 0 : {
4471 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4472 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4473 0 : if (res) return res;
4474 : }
4475 : }
4476 : break;
4477 : }
4478 2285 : default:;
4479 : }
4480 2285 : switch (TREE_CODE (_q31))
4481 : {
4482 0 : CASE_CONVERT:
4483 0 : {
4484 0 : tree _q50 = TREE_OPERAND (_q31, 0);
4485 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4486 : {
4487 0 : {
4488 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4489 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4490 0 : if (res) return res;
4491 : }
4492 : }
4493 : break;
4494 : }
4495 2285 : default:;
4496 : }
4497 2285 : switch (TREE_CODE (_p1))
4498 : {
4499 77 : CASE_CONVERT:
4500 77 : {
4501 77 : tree _q60 = TREE_OPERAND (_p1, 0);
4502 77 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4503 : {
4504 0 : {
4505 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4506 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4507 0 : if (res) return res;
4508 : }
4509 : }
4510 77 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4511 : {
4512 0 : {
4513 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4514 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4515 0 : if (res) return res;
4516 : }
4517 : }
4518 : break;
4519 : }
4520 2285 : default:;
4521 : }
4522 2285 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4523 : {
4524 0 : {
4525 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4526 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4527 0 : if (res) return res;
4528 : }
4529 : }
4530 2285 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4531 : {
4532 0 : {
4533 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4534 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
4535 0 : if (res) return res;
4536 : }
4537 : }
4538 : break;
4539 : }
4540 : default:;
4541 : }
4542 : }
4543 : }
4544 27912763 : {
4545 27912763 : tree _p1_pops[1];
4546 27912763 : if (tree_nop_convert (_p1, _p1_pops))
4547 : {
4548 1501772 : tree _q30 = _p1_pops[0];
4549 1501772 : switch (TREE_CODE (_q30))
4550 : {
4551 0 : case LSHIFT_EXPR:
4552 0 : {
4553 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4554 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4555 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4556 : {
4557 0 : {
4558 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4559 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4560 0 : if (res) return res;
4561 : }
4562 : }
4563 : break;
4564 : }
4565 : default:;
4566 : }
4567 : }
4568 : }
4569 27912763 : switch (TREE_CODE (_p0))
4570 : {
4571 2028 : case LSHIFT_EXPR:
4572 2028 : {
4573 2028 : tree _q20 = TREE_OPERAND (_p0, 0);
4574 2028 : tree _q21 = TREE_OPERAND (_p0, 1);
4575 2028 : switch (TREE_CODE (_p1))
4576 : {
4577 61 : CASE_CONVERT:
4578 61 : {
4579 61 : tree _q50 = TREE_OPERAND (_p1, 0);
4580 61 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4581 : {
4582 4 : {
4583 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4584 4 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4585 4 : if (res) return res;
4586 : }
4587 : }
4588 : break;
4589 : }
4590 2027 : default:;
4591 : }
4592 2027 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4593 : {
4594 27 : {
4595 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4596 27 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4597 27 : if (res) return res;
4598 : }
4599 : }
4600 2023 : if (tree_zero_one_valued_p (_q20))
4601 : {
4602 239 : switch (TREE_CODE (_q21))
4603 : {
4604 10 : case INTEGER_CST:
4605 10 : {
4606 10 : if (integer_zerop (_p1))
4607 : {
4608 2 : {
4609 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4610 2 : if (tree_fits_shwi_p (captures[1])
4611 2 : && tree_to_shwi (captures[1]) > 0
4612 4 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
4613 : )
4614 : {
4615 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1499;
4616 2 : {
4617 2 : tree res_op0;
4618 2 : res_op0 = captures[0];
4619 2 : tree res_op1;
4620 2 : res_op1 = captures[2];
4621 2 : tree _r;
4622 2 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
4623 2 : if (TREE_SIDE_EFFECTS (captures[1]))
4624 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4625 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 987, __FILE__, __LINE__, true);
4626 2 : return _r;
4627 : }
4628 0 : next_after_fail1499:;
4629 : }
4630 : }
4631 : }
4632 : break;
4633 : }
4634 : default:;
4635 : }
4636 : }
4637 : break;
4638 : }
4639 27912756 : default:;
4640 : }
4641 27912756 : switch (TREE_CODE (_p1))
4642 : {
4643 235 : case LSHIFT_EXPR:
4644 235 : {
4645 235 : tree _q30 = TREE_OPERAND (_p1, 0);
4646 235 : tree _q31 = TREE_OPERAND (_p1, 1);
4647 235 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4648 : {
4649 0 : {
4650 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4651 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, EQ_EXPR);
4652 0 : if (res) return res;
4653 : }
4654 : }
4655 : break;
4656 : }
4657 27912756 : default:;
4658 : }
4659 27912756 : switch (TREE_CODE (_p0))
4660 : {
4661 46282 : case VIEW_CONVERT_EXPR:
4662 46282 : {
4663 46282 : tree _q20 = TREE_OPERAND (_p0, 0);
4664 46282 : if (tree_zero_one_valued_p (_q20))
4665 : {
4666 0 : if (integer_zerop (_p1))
4667 : {
4668 0 : {
4669 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4670 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, EQ_EXPR);
4671 0 : if (res) return res;
4672 : }
4673 : }
4674 : }
4675 : break;
4676 : }
4677 15906 : case RSHIFT_EXPR:
4678 15906 : {
4679 15906 : tree _q20 = TREE_OPERAND (_p0, 0);
4680 15906 : tree _q21 = TREE_OPERAND (_p0, 1);
4681 15906 : switch (TREE_CODE (_q21))
4682 : {
4683 14654 : case INTEGER_CST:
4684 14654 : {
4685 14654 : switch (TREE_CODE (_p1))
4686 : {
4687 106 : case RSHIFT_EXPR:
4688 106 : {
4689 106 : tree _q50 = TREE_OPERAND (_p1, 0);
4690 106 : tree _q51 = TREE_OPERAND (_p1, 1);
4691 106 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4692 : {
4693 18 : switch (TREE_CODE (_q51))
4694 : {
4695 18 : case INTEGER_CST:
4696 18 : {
4697 18 : {
4698 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4699 18 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
4700 18 : if (res) return res;
4701 : }
4702 17 : break;
4703 : }
4704 : default:;
4705 : }
4706 : }
4707 : break;
4708 : }
4709 14653 : default:;
4710 : }
4711 14653 : if (integer_zerop (_p1))
4712 : {
4713 1530 : {
4714 1530 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4715 1530 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
4716 1530 : if (res) return res;
4717 : }
4718 : }
4719 : break;
4720 : }
4721 : default:;
4722 : }
4723 : break;
4724 : }
4725 850098 : case BIT_AND_EXPR:
4726 850098 : {
4727 850098 : tree _q20 = TREE_OPERAND (_p0, 0);
4728 850098 : tree _q21 = TREE_OPERAND (_p0, 1);
4729 850098 : if (tree_truth_valued_p (_q20))
4730 : {
4731 27 : if (tree_truth_valued_p (_q21))
4732 : {
4733 26 : switch (TREE_CODE (_p1))
4734 : {
4735 0 : case BIT_XOR_EXPR:
4736 0 : {
4737 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4738 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4739 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4740 : {
4741 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4742 : {
4743 0 : {
4744 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1500;
4746 0 : {
4747 0 : tree res_op0;
4748 0 : {
4749 0 : tree _o1[2], _r1;
4750 0 : _o1[0] = captures[0];
4751 0 : _o1[1] = captures[1];
4752 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4753 0 : res_op0 = _r1;
4754 : }
4755 0 : tree _r;
4756 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4757 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
4758 0 : return _r;
4759 : }
4760 0 : next_after_fail1500:;
4761 : }
4762 : }
4763 : }
4764 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4765 : {
4766 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4767 : {
4768 0 : {
4769 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
4770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1501;
4771 0 : {
4772 0 : tree res_op0;
4773 0 : {
4774 0 : tree _o1[2], _r1;
4775 0 : _o1[0] = captures[0];
4776 0 : _o1[1] = captures[1];
4777 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4778 0 : res_op0 = _r1;
4779 : }
4780 0 : tree _r;
4781 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4782 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
4783 0 : return _r;
4784 : }
4785 0 : next_after_fail1501:;
4786 : }
4787 : }
4788 : }
4789 : break;
4790 : }
4791 : default:;
4792 : }
4793 : }
4794 : }
4795 : break;
4796 : }
4797 597 : case BIT_XOR_EXPR:
4798 597 : {
4799 597 : tree _q20 = TREE_OPERAND (_p0, 0);
4800 597 : tree _q21 = TREE_OPERAND (_p0, 1);
4801 597 : switch (TREE_CODE (_p1))
4802 : {
4803 0 : case BIT_AND_EXPR:
4804 0 : {
4805 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4806 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4807 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4808 : {
4809 0 : if (tree_truth_valued_p (_q50))
4810 : {
4811 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4812 : {
4813 0 : if (tree_truth_valued_p (_q51))
4814 : {
4815 0 : {
4816 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4817 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1502;
4818 0 : {
4819 0 : tree res_op0;
4820 0 : {
4821 0 : tree _o1[2], _r1;
4822 0 : _o1[0] = captures[0];
4823 0 : _o1[1] = captures[1];
4824 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4825 0 : res_op0 = _r1;
4826 : }
4827 0 : tree _r;
4828 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4829 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
4830 0 : return _r;
4831 : }
4832 0 : next_after_fail1502:;
4833 : }
4834 : }
4835 : }
4836 : }
4837 : }
4838 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4839 : {
4840 0 : if (tree_truth_valued_p (_q50))
4841 : {
4842 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4843 : {
4844 0 : if (tree_truth_valued_p (_q51))
4845 : {
4846 0 : {
4847 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4848 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1503;
4849 0 : {
4850 0 : tree res_op0;
4851 0 : {
4852 0 : tree _o1[2], _r1;
4853 0 : _o1[0] = captures[0];
4854 0 : _o1[1] = captures[1];
4855 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4856 0 : res_op0 = _r1;
4857 : }
4858 0 : tree _r;
4859 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
4861 0 : return _r;
4862 : }
4863 0 : next_after_fail1503:;
4864 : }
4865 : }
4866 : }
4867 : }
4868 : }
4869 : break;
4870 : }
4871 : default:;
4872 : }
4873 : break;
4874 : }
4875 403 : case BIT_NOT_EXPR:
4876 403 : {
4877 403 : tree _q20 = TREE_OPERAND (_p0, 0);
4878 403 : if (tree_truth_valued_p (_q20))
4879 : {
4880 0 : if (tree_truth_valued_p (_p1))
4881 : {
4882 0 : {
4883 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
4884 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures);
4885 0 : if (res) return res;
4886 : }
4887 : }
4888 : }
4889 : break;
4890 : }
4891 65611 : case MULT_EXPR:
4892 65611 : {
4893 65611 : tree _q20 = TREE_OPERAND (_p0, 0);
4894 65611 : tree _q21 = TREE_OPERAND (_p0, 1);
4895 65611 : switch (TREE_CODE (_p1))
4896 : {
4897 953 : case MULT_EXPR:
4898 953 : {
4899 953 : tree _q50 = TREE_OPERAND (_p1, 0);
4900 953 : tree _q51 = TREE_OPERAND (_p1, 1);
4901 953 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4902 : {
4903 642 : {
4904 642 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4905 642 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
4906 642 : if (res) return res;
4907 : }
4908 : }
4909 945 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4910 : {
4911 0 : {
4912 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4913 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
4914 0 : if (res) return res;
4915 : }
4916 : }
4917 945 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4918 : {
4919 0 : {
4920 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4921 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
4922 0 : if (res) return res;
4923 : }
4924 : }
4925 945 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4926 : {
4927 24 : {
4928 24 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4929 24 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, EQ_EXPR);
4930 24 : if (res) return res;
4931 : }
4932 : }
4933 : break;
4934 : }
4935 65603 : default:;
4936 : }
4937 65603 : switch (TREE_CODE (_q21))
4938 : {
4939 57653 : case INTEGER_CST:
4940 57653 : {
4941 57653 : switch (TREE_CODE (_p1))
4942 : {
4943 903 : case MULT_EXPR:
4944 903 : {
4945 903 : tree _q50 = TREE_OPERAND (_p1, 0);
4946 903 : tree _q51 = TREE_OPERAND (_p1, 1);
4947 903 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4948 : {
4949 597 : {
4950 597 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4951 597 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, EQ_EXPR);
4952 597 : if (res) return res;
4953 : }
4954 : }
4955 : break;
4956 : }
4957 : default:;
4958 : }
4959 : break;
4960 : }
4961 : default:;
4962 : }
4963 : break;
4964 : }
4965 7255 : case EXACT_DIV_EXPR:
4966 7255 : {
4967 7255 : tree _q20 = TREE_OPERAND (_p0, 0);
4968 7255 : tree _q21 = TREE_OPERAND (_p0, 1);
4969 7255 : switch (TREE_CODE (_q21))
4970 : {
4971 7255 : case INTEGER_CST:
4972 7255 : {
4973 7255 : switch (TREE_CODE (_p1))
4974 : {
4975 0 : case EXACT_DIV_EXPR:
4976 0 : {
4977 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4978 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4979 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4980 : {
4981 0 : {
4982 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
4983 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, EQ_EXPR);
4984 0 : if (res) return res;
4985 : }
4986 : }
4987 : break;
4988 : }
4989 : default:;
4990 : }
4991 : break;
4992 : }
4993 : default:;
4994 : }
4995 : break;
4996 : }
4997 5365 : case TRUNC_DIV_EXPR:
4998 5365 : {
4999 5365 : tree _q20 = TREE_OPERAND (_p0, 0);
5000 5365 : tree _q21 = TREE_OPERAND (_p0, 1);
5001 5365 : switch (TREE_CODE (_q21))
5002 : {
5003 3874 : case INTEGER_CST:
5004 3874 : {
5005 3874 : switch (TREE_CODE (_p1))
5006 : {
5007 999 : case INTEGER_CST:
5008 999 : {
5009 999 : {
5010 999 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5011 999 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, EQ_EXPR);
5012 999 : if (res) return res;
5013 : }
5014 21 : break;
5015 : }
5016 : default:;
5017 : }
5018 : break;
5019 : }
5020 : default:;
5021 : }
5022 : break;
5023 : }
5024 672411 : case PLUS_EXPR:
5025 672411 : {
5026 672411 : tree _q20 = TREE_OPERAND (_p0, 0);
5027 672411 : tree _q21 = TREE_OPERAND (_p0, 1);
5028 672411 : switch (TREE_CODE (_p1))
5029 : {
5030 54643 : case PLUS_EXPR:
5031 54643 : {
5032 54643 : tree _q50 = TREE_OPERAND (_p1, 0);
5033 54643 : tree _q51 = TREE_OPERAND (_p1, 1);
5034 54643 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5035 : {
5036 685 : {
5037 685 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5038 1370 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5039 1096 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5040 377 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5041 : )
5042 : {
5043 411 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1504;
5044 411 : {
5045 411 : tree res_op0;
5046 411 : res_op0 = captures[0];
5047 411 : tree res_op1;
5048 411 : res_op1 = captures[2];
5049 411 : tree _r;
5050 411 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5051 411 : if (TREE_SIDE_EFFECTS (captures[1]))
5052 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5053 411 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5054 411 : return _r;
5055 : }
5056 0 : next_after_fail1504:;
5057 : }
5058 : }
5059 : }
5060 54232 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5061 : {
5062 4 : {
5063 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5064 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5065 4 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5066 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5067 : )
5068 : {
5069 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1505;
5070 0 : {
5071 0 : tree res_op0;
5072 0 : res_op0 = captures[0];
5073 0 : tree res_op1;
5074 0 : res_op1 = captures[2];
5075 0 : tree _r;
5076 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5077 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5078 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5079 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5080 0 : return _r;
5081 : }
5082 0 : next_after_fail1505:;
5083 : }
5084 : }
5085 : }
5086 54232 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5087 : {
5088 4 : {
5089 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5090 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5091 4 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5092 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5093 : )
5094 : {
5095 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1506;
5096 0 : {
5097 0 : tree res_op0;
5098 0 : res_op0 = captures[0];
5099 0 : tree res_op1;
5100 0 : res_op1 = captures[2];
5101 0 : tree _r;
5102 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5103 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5104 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5105 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5106 0 : return _r;
5107 : }
5108 0 : next_after_fail1506:;
5109 : }
5110 : }
5111 : }
5112 54232 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5113 : {
5114 249 : {
5115 249 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5116 498 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5117 249 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5118 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5119 : )
5120 : {
5121 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1507;
5122 0 : {
5123 0 : tree res_op0;
5124 0 : res_op0 = captures[0];
5125 0 : tree res_op1;
5126 0 : res_op1 = captures[2];
5127 0 : tree _r;
5128 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5129 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5130 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5131 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5132 0 : return _r;
5133 : }
5134 0 : next_after_fail1507:;
5135 : }
5136 : }
5137 : }
5138 : break;
5139 : }
5140 672000 : default:;
5141 : }
5142 672000 : switch (TREE_CODE (_q21))
5143 : {
5144 2700 : CASE_CONVERT:
5145 2700 : {
5146 2700 : tree _q40 = TREE_OPERAND (_q21, 0);
5147 2700 : switch (TREE_CODE (_p1))
5148 : {
5149 158 : CASE_CONVERT:
5150 158 : {
5151 158 : tree _q60 = TREE_OPERAND (_p1, 0);
5152 158 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5153 : {
5154 0 : {
5155 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5156 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5157 0 : if (res) return res;
5158 : }
5159 : }
5160 : break;
5161 : }
5162 : default:;
5163 : }
5164 : break;
5165 : }
5166 672000 : default:;
5167 : }
5168 672000 : switch (TREE_CODE (_q20))
5169 : {
5170 25754 : CASE_CONVERT:
5171 25754 : {
5172 25754 : tree _q30 = TREE_OPERAND (_q20, 0);
5173 25754 : switch (TREE_CODE (_p1))
5174 : {
5175 355 : CASE_CONVERT:
5176 355 : {
5177 355 : tree _q60 = TREE_OPERAND (_p1, 0);
5178 355 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5179 : {
5180 2 : {
5181 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5182 2 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5183 2 : if (res) return res;
5184 : }
5185 : }
5186 : break;
5187 : }
5188 25753 : default:;
5189 : }
5190 25753 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5191 : {
5192 0 : {
5193 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5194 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5195 0 : if (res) return res;
5196 : }
5197 : }
5198 : break;
5199 : }
5200 671999 : default:;
5201 : }
5202 671999 : switch (TREE_CODE (_q21))
5203 : {
5204 2700 : CASE_CONVERT:
5205 2700 : {
5206 2700 : tree _q40 = TREE_OPERAND (_q21, 0);
5207 2700 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5208 : {
5209 0 : {
5210 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5211 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5212 0 : if (res) return res;
5213 : }
5214 : }
5215 : break;
5216 : }
5217 671999 : default:;
5218 : }
5219 671999 : switch (TREE_CODE (_p1))
5220 : {
5221 12461 : CASE_CONVERT:
5222 12461 : {
5223 12461 : tree _q50 = TREE_OPERAND (_p1, 0);
5224 12461 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5225 : {
5226 0 : {
5227 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5228 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5229 0 : if (res) return res;
5230 : }
5231 : }
5232 12461 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5233 : {
5234 0 : {
5235 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5236 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5237 0 : if (res) return res;
5238 : }
5239 : }
5240 : break;
5241 : }
5242 671999 : default:;
5243 : }
5244 671999 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5245 : {
5246 2419 : {
5247 2419 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5248 2419 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5249 2419 : if (res) return res;
5250 : }
5251 : }
5252 669648 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5253 : {
5254 78 : {
5255 78 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5256 78 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5257 78 : if (res) return res;
5258 : }
5259 : }
5260 : break;
5261 : }
5262 64286 : case POINTER_PLUS_EXPR:
5263 64286 : {
5264 64286 : tree _q20 = TREE_OPERAND (_p0, 0);
5265 64286 : tree _q21 = TREE_OPERAND (_p0, 1);
5266 64286 : switch (TREE_CODE (_p1))
5267 : {
5268 2294 : case POINTER_PLUS_EXPR:
5269 2294 : {
5270 2294 : tree _q50 = TREE_OPERAND (_p1, 0);
5271 2294 : tree _q51 = TREE_OPERAND (_p1, 1);
5272 2294 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5273 : {
5274 14 : {
5275 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5276 14 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, EQ_EXPR);
5277 14 : if (res) return res;
5278 : }
5279 : }
5280 : break;
5281 : }
5282 64272 : default:;
5283 : }
5284 64272 : switch (TREE_CODE (_q20))
5285 : {
5286 1146 : CASE_CONVERT:
5287 1146 : {
5288 1146 : tree _q30 = TREE_OPERAND (_q20, 0);
5289 1146 : switch (TREE_CODE (_p1))
5290 : {
5291 84 : CASE_CONVERT:
5292 84 : {
5293 84 : tree _q60 = TREE_OPERAND (_p1, 0);
5294 84 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5295 : {
5296 54 : {
5297 54 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5298 54 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5299 54 : if (res) return res;
5300 : }
5301 : }
5302 : break;
5303 : }
5304 1092 : default:;
5305 : }
5306 1092 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5307 : {
5308 0 : {
5309 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5310 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5311 0 : if (res) return res;
5312 : }
5313 : }
5314 : break;
5315 : }
5316 64218 : default:;
5317 : }
5318 64218 : switch (TREE_CODE (_p1))
5319 : {
5320 413 : CASE_CONVERT:
5321 413 : {
5322 413 : tree _q50 = TREE_OPERAND (_p1, 0);
5323 413 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5324 : {
5325 0 : {
5326 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5327 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5328 0 : if (res) return res;
5329 : }
5330 : }
5331 : break;
5332 : }
5333 64218 : default:;
5334 : }
5335 64218 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5336 : {
5337 1470 : {
5338 1470 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5339 1470 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5340 1470 : if (res) return res;
5341 : }
5342 : }
5343 : break;
5344 : }
5345 155009 : case MINUS_EXPR:
5346 155009 : {
5347 155009 : tree _q20 = TREE_OPERAND (_p0, 0);
5348 155009 : tree _q21 = TREE_OPERAND (_p0, 1);
5349 155009 : switch (TREE_CODE (_p1))
5350 : {
5351 177 : case MINUS_EXPR:
5352 177 : {
5353 177 : tree _q50 = TREE_OPERAND (_p1, 0);
5354 177 : tree _q51 = TREE_OPERAND (_p1, 1);
5355 177 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5356 : {
5357 40 : {
5358 40 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5359 80 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5360 40 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5361 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5362 : )
5363 : {
5364 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1508;
5365 0 : {
5366 0 : tree res_op0;
5367 0 : res_op0 = captures[0];
5368 0 : tree res_op1;
5369 0 : res_op1 = captures[2];
5370 0 : tree _r;
5371 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5372 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5373 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5374 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 931, __FILE__, __LINE__, true);
5375 0 : return _r;
5376 : }
5377 0 : next_after_fail1508:;
5378 : }
5379 : }
5380 : }
5381 177 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5382 : {
5383 40 : {
5384 40 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5385 80 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5386 40 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5387 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5388 : )
5389 : {
5390 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1509;
5391 0 : {
5392 0 : tree res_op0;
5393 0 : res_op0 = captures[2];
5394 0 : tree res_op1;
5395 0 : res_op1 = captures[1];
5396 0 : tree _r;
5397 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5398 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5399 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5400 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 932, __FILE__, __LINE__, true);
5401 0 : return _r;
5402 : }
5403 0 : next_after_fail1509:;
5404 : }
5405 : }
5406 : }
5407 : break;
5408 : }
5409 155009 : default:;
5410 : }
5411 155009 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5412 : {
5413 92 : {
5414 92 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5415 92 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, EQ_EXPR);
5416 92 : if (res) return res;
5417 : }
5418 : }
5419 : break;
5420 : }
5421 32617 : case POINTER_DIFF_EXPR:
5422 32617 : {
5423 32617 : tree _q20 = TREE_OPERAND (_p0, 0);
5424 32617 : tree _q21 = TREE_OPERAND (_p0, 1);
5425 32617 : switch (TREE_CODE (_p1))
5426 : {
5427 1286 : case POINTER_DIFF_EXPR:
5428 1286 : {
5429 1286 : tree _q50 = TREE_OPERAND (_p1, 0);
5430 1286 : tree _q51 = TREE_OPERAND (_p1, 1);
5431 1286 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5432 : {
5433 0 : {
5434 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5435 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, EQ_EXPR);
5436 0 : if (res) return res;
5437 : }
5438 : }
5439 1286 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5440 : {
5441 0 : {
5442 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5443 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, EQ_EXPR);
5444 0 : if (res) return res;
5445 : }
5446 : }
5447 : break;
5448 : }
5449 : default:;
5450 : }
5451 : break;
5452 : }
5453 27907293 : default:;
5454 : }
5455 27907293 : {
5456 27907293 : tree _p0_pops[1];
5457 27907293 : if (tree_logical_inverted_value (_p0, _p0_pops))
5458 : {
5459 7844 : tree _q20 = _p0_pops[0];
5460 7844 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5461 : {
5462 9 : if (tree_truth_valued_p (_p1))
5463 : {
5464 0 : {
5465 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5466 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
5467 0 : if (res) return res;
5468 : }
5469 : }
5470 : }
5471 : }
5472 : }
5473 27907293 : if (tree_truth_valued_p (_p0))
5474 : {
5475 636919 : switch (TREE_CODE (_p1))
5476 : {
5477 24 : case BIT_NOT_EXPR:
5478 24 : {
5479 24 : tree _q30 = TREE_OPERAND (_p1, 0);
5480 24 : if (tree_truth_valued_p (_q30))
5481 : {
5482 4 : {
5483 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5484 4 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures);
5485 4 : if (res) return res;
5486 : }
5487 : }
5488 : break;
5489 : }
5490 636919 : default:;
5491 : }
5492 636919 : {
5493 636919 : tree _p1_pops[1];
5494 636919 : if (tree_logical_inverted_value (_p1, _p1_pops))
5495 : {
5496 99 : tree _q30 = _p1_pops[0];
5497 99 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5498 : {
5499 0 : {
5500 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5501 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, EQ_EXPR);
5502 0 : if (res) return res;
5503 : }
5504 : }
5505 : }
5506 : }
5507 : }
5508 27907293 : switch (TREE_CODE (_p1))
5509 : {
5510 88271 : case PLUS_EXPR:
5511 88271 : {
5512 88271 : tree _q30 = TREE_OPERAND (_p1, 0);
5513 88271 : tree _q31 = TREE_OPERAND (_p1, 1);
5514 88271 : switch (TREE_CODE (_q31))
5515 : {
5516 26 : CASE_CONVERT:
5517 26 : {
5518 26 : tree _q50 = TREE_OPERAND (_q31, 0);
5519 26 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5520 : {
5521 0 : {
5522 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5523 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5524 0 : if (res) return res;
5525 : }
5526 : }
5527 : break;
5528 : }
5529 88271 : default:;
5530 : }
5531 88271 : switch (TREE_CODE (_q30))
5532 : {
5533 22456 : CASE_CONVERT:
5534 22456 : {
5535 22456 : tree _q40 = TREE_OPERAND (_q30, 0);
5536 22456 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5537 : {
5538 0 : {
5539 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5540 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5541 0 : if (res) return res;
5542 : }
5543 : }
5544 : break;
5545 : }
5546 88271 : default:;
5547 : }
5548 88271 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5549 : {
5550 0 : {
5551 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5552 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5553 0 : if (res) return res;
5554 : }
5555 : }
5556 88271 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5557 : {
5558 0 : {
5559 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5560 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, EQ_EXPR);
5561 0 : if (res) return res;
5562 : }
5563 : }
5564 : break;
5565 : }
5566 27907293 : default:;
5567 : }
5568 27907293 : {
5569 27907293 : tree _p1_pops[1];
5570 27907293 : if (tree_nop_convert (_p1, _p1_pops))
5571 : {
5572 1501715 : tree _q30 = _p1_pops[0];
5573 1501715 : switch (TREE_CODE (_q30))
5574 : {
5575 998 : case PLUS_EXPR:
5576 998 : {
5577 998 : tree _q40 = TREE_OPERAND (_q30, 0);
5578 998 : tree _q41 = TREE_OPERAND (_q30, 1);
5579 998 : switch (TREE_CODE (_q41))
5580 : {
5581 2 : CASE_CONVERT:
5582 2 : {
5583 2 : tree _q60 = TREE_OPERAND (_q41, 0);
5584 2 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5585 : {
5586 0 : {
5587 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5588 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5589 0 : if (res) return res;
5590 : }
5591 : }
5592 : break;
5593 : }
5594 998 : default:;
5595 : }
5596 998 : switch (TREE_CODE (_q40))
5597 : {
5598 908 : CASE_CONVERT:
5599 908 : {
5600 908 : tree _q50 = TREE_OPERAND (_q40, 0);
5601 908 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5602 : {
5603 0 : {
5604 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5605 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5606 0 : if (res) return res;
5607 : }
5608 : }
5609 : break;
5610 : }
5611 998 : default:;
5612 : }
5613 998 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5614 : {
5615 0 : {
5616 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5617 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5618 0 : if (res) return res;
5619 : }
5620 : }
5621 998 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5622 : {
5623 0 : {
5624 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5625 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, EQ_EXPR);
5626 0 : if (res) return res;
5627 : }
5628 : }
5629 : break;
5630 : }
5631 : default:;
5632 : }
5633 : }
5634 : }
5635 27907293 : switch (TREE_CODE (_p0))
5636 : {
5637 5264386 : CASE_CONVERT:
5638 5264386 : {
5639 5264386 : tree _q20 = TREE_OPERAND (_p0, 0);
5640 5264386 : switch (TREE_CODE (_p1))
5641 : {
5642 159 : case POINTER_PLUS_EXPR:
5643 159 : {
5644 159 : tree _q40 = TREE_OPERAND (_p1, 0);
5645 159 : tree _q41 = TREE_OPERAND (_p1, 1);
5646 159 : switch (TREE_CODE (_q40))
5647 : {
5648 96 : CASE_CONVERT:
5649 96 : {
5650 96 : tree _q50 = TREE_OPERAND (_q40, 0);
5651 96 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5652 : {
5653 3 : {
5654 3 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5655 3 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5656 3 : if (res) return res;
5657 : }
5658 : }
5659 : break;
5660 : }
5661 156 : default:;
5662 : }
5663 156 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5664 : {
5665 0 : {
5666 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5667 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5668 0 : if (res) return res;
5669 : }
5670 : }
5671 : break;
5672 : }
5673 5264383 : default:;
5674 : }
5675 5264383 : {
5676 5264383 : tree _p1_pops[1];
5677 5264383 : if (tree_nop_convert (_p1, _p1_pops))
5678 : {
5679 1262253 : tree _q40 = _p1_pops[0];
5680 1262253 : switch (TREE_CODE (_q40))
5681 : {
5682 18 : case POINTER_PLUS_EXPR:
5683 18 : {
5684 18 : tree _q50 = TREE_OPERAND (_q40, 0);
5685 18 : tree _q51 = TREE_OPERAND (_q40, 1);
5686 18 : switch (TREE_CODE (_q50))
5687 : {
5688 0 : CASE_CONVERT:
5689 0 : {
5690 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5691 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5692 : {
5693 0 : {
5694 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5695 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5696 0 : if (res) return res;
5697 : }
5698 : }
5699 : break;
5700 : }
5701 18 : default:;
5702 : }
5703 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5704 : {
5705 0 : {
5706 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5707 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5708 0 : if (res) return res;
5709 : }
5710 : }
5711 : break;
5712 : }
5713 : default:;
5714 : }
5715 : }
5716 : }
5717 5264383 : break;
5718 : }
5719 27907290 : default:;
5720 : }
5721 27907290 : {
5722 27907290 : tree _p0_pops[1];
5723 27907290 : if (tree_nop_convert (_p0, _p0_pops))
5724 : {
5725 3071565 : tree _q20 = _p0_pops[0];
5726 3071565 : switch (TREE_CODE (_q20))
5727 : {
5728 97 : case POINTER_PLUS_EXPR:
5729 97 : {
5730 97 : tree _q30 = TREE_OPERAND (_q20, 0);
5731 97 : tree _q31 = TREE_OPERAND (_q20, 1);
5732 97 : switch (TREE_CODE (_q30))
5733 : {
5734 21 : CASE_CONVERT:
5735 21 : {
5736 21 : tree _q40 = TREE_OPERAND (_q30, 0);
5737 21 : switch (TREE_CODE (_p1))
5738 : {
5739 0 : CASE_CONVERT:
5740 0 : {
5741 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5742 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5743 : {
5744 0 : {
5745 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5746 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5747 0 : if (res) return res;
5748 : }
5749 : }
5750 : break;
5751 : }
5752 21 : default:;
5753 : }
5754 21 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5755 : {
5756 0 : {
5757 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5758 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5759 0 : if (res) return res;
5760 : }
5761 : }
5762 : break;
5763 : }
5764 97 : default:;
5765 : }
5766 97 : switch (TREE_CODE (_p1))
5767 : {
5768 27 : CASE_CONVERT:
5769 27 : {
5770 27 : tree _q60 = TREE_OPERAND (_p1, 0);
5771 27 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5772 : {
5773 0 : {
5774 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5775 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5776 0 : if (res) return res;
5777 : }
5778 : }
5779 : break;
5780 : }
5781 97 : default:;
5782 : }
5783 97 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5784 : {
5785 0 : {
5786 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5787 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5788 0 : if (res) return res;
5789 : }
5790 : }
5791 : break;
5792 : }
5793 : default:;
5794 : }
5795 : }
5796 : }
5797 27907290 : switch (TREE_CODE (_p1))
5798 : {
5799 6041 : case POINTER_PLUS_EXPR:
5800 6041 : {
5801 6041 : tree _q30 = TREE_OPERAND (_p1, 0);
5802 6041 : tree _q31 = TREE_OPERAND (_p1, 1);
5803 6041 : switch (TREE_CODE (_q30))
5804 : {
5805 3488 : CASE_CONVERT:
5806 3488 : {
5807 3488 : tree _q40 = TREE_OPERAND (_q30, 0);
5808 3488 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5809 : {
5810 0 : {
5811 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5812 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5813 0 : if (res) return res;
5814 : }
5815 : }
5816 : break;
5817 : }
5818 6041 : default:;
5819 : }
5820 6041 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5821 : {
5822 0 : {
5823 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5824 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, EQ_EXPR);
5825 0 : if (res) return res;
5826 : }
5827 : }
5828 : break;
5829 : }
5830 27907290 : default:;
5831 : }
5832 27907290 : {
5833 27907290 : tree _p1_pops[1];
5834 27907290 : if (tree_nop_convert (_p1, _p1_pops))
5835 : {
5836 1501715 : tree _q30 = _p1_pops[0];
5837 1501715 : switch (TREE_CODE (_q30))
5838 : {
5839 32 : case POINTER_PLUS_EXPR:
5840 32 : {
5841 32 : tree _q40 = TREE_OPERAND (_q30, 0);
5842 32 : tree _q41 = TREE_OPERAND (_q30, 1);
5843 32 : switch (TREE_CODE (_q40))
5844 : {
5845 0 : CASE_CONVERT:
5846 0 : {
5847 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5848 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5849 : {
5850 0 : {
5851 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5852 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5853 0 : if (res) return res;
5854 : }
5855 : }
5856 : break;
5857 : }
5858 32 : default:;
5859 : }
5860 32 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5861 : {
5862 0 : {
5863 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5864 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, EQ_EXPR);
5865 0 : if (res) return res;
5866 : }
5867 : }
5868 : break;
5869 : }
5870 : default:;
5871 : }
5872 : }
5873 : }
5874 27907290 : switch (TREE_CODE (_p0))
5875 : {
5876 62748 : case POINTER_PLUS_EXPR:
5877 62748 : {
5878 62748 : tree _q20 = TREE_OPERAND (_p0, 0);
5879 62748 : tree _q21 = TREE_OPERAND (_p0, 1);
5880 62748 : switch (TREE_CODE (_p1))
5881 : {
5882 12163 : case ADDR_EXPR:
5883 12163 : {
5884 12163 : {
5885 12163 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5886 12163 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, EQ_EXPR);
5887 12163 : if (res) return res;
5888 : }
5889 12162 : break;
5890 : }
5891 62747 : default:;
5892 : }
5893 62747 : switch (TREE_CODE (_q20))
5894 : {
5895 1177 : case ADDR_EXPR:
5896 1177 : {
5897 1177 : switch (TREE_CODE (_p1))
5898 : {
5899 15 : case POINTER_PLUS_EXPR:
5900 15 : {
5901 15 : tree _q50 = TREE_OPERAND (_p1, 0);
5902 15 : tree _q51 = TREE_OPERAND (_p1, 1);
5903 15 : switch (TREE_CODE (_q50))
5904 : {
5905 6 : case ADDR_EXPR:
5906 6 : {
5907 6 : {
5908 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
5909 6 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, EQ_EXPR);
5910 6 : if (res) return res;
5911 : }
5912 6 : break;
5913 : }
5914 : default:;
5915 : }
5916 : break;
5917 : }
5918 : default:;
5919 : }
5920 : break;
5921 : }
5922 : default:;
5923 : }
5924 : break;
5925 : }
5926 86010 : case ADDR_EXPR:
5927 86010 : {
5928 86010 : switch (TREE_CODE (_p1))
5929 : {
5930 0 : case POINTER_PLUS_EXPR:
5931 0 : {
5932 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5933 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5934 0 : {
5935 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5936 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, EQ_EXPR);
5937 0 : if (res) return res;
5938 : }
5939 0 : break;
5940 : }
5941 : default:;
5942 : }
5943 : break;
5944 : }
5945 27907289 : default:;
5946 : }
5947 27907289 : switch (TREE_CODE (_p1))
5948 : {
5949 3606 : case MINUS_EXPR:
5950 3606 : {
5951 3606 : tree _q30 = TREE_OPERAND (_p1, 0);
5952 3606 : tree _q31 = TREE_OPERAND (_p1, 1);
5953 3606 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5954 : {
5955 0 : {
5956 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5957 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, EQ_EXPR);
5958 0 : if (res) return res;
5959 : }
5960 : }
5961 : break;
5962 : }
5963 27907289 : default:;
5964 : }
5965 27907289 : switch (TREE_CODE (_p0))
5966 : {
5967 4387 : case TRUNC_DIV_EXPR:
5968 4387 : {
5969 4387 : tree _q20 = TREE_OPERAND (_p0, 0);
5970 4387 : tree _q21 = TREE_OPERAND (_p0, 1);
5971 4387 : if (tree_expr_nonnegative_p (_q20))
5972 : {
5973 1124 : if (tree_expr_nonnegative_p (_q21))
5974 : {
5975 1070 : if (integer_zerop (_p1))
5976 : {
5977 256 : {
5978 256 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5979 256 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
5980 256 : if (res) return res;
5981 : }
5982 : }
5983 : }
5984 : }
5985 : break;
5986 : }
5987 5264383 : CASE_CONVERT:
5988 5264383 : {
5989 5264383 : tree _q20 = TREE_OPERAND (_p0, 0);
5990 5264383 : switch (TREE_CODE (_p1))
5991 : {
5992 1671885 : CASE_CONVERT:
5993 1671885 : {
5994 1671885 : tree _q40 = TREE_OPERAND (_p1, 0);
5995 1671885 : switch (TREE_CODE (_q40))
5996 : {
5997 0 : case MINUS_EXPR:
5998 0 : {
5999 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6000 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6001 0 : switch (TREE_CODE (_q50))
6002 : {
6003 0 : case INTEGER_CST:
6004 0 : {
6005 0 : switch (TREE_CODE (_q51))
6006 : {
6007 0 : CASE_CONVERT:
6008 0 : {
6009 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6010 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6011 : {
6012 0 : {
6013 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6014 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6015 0 : if (res) return res;
6016 : }
6017 : }
6018 : break;
6019 : }
6020 : default:;
6021 : }
6022 : break;
6023 : }
6024 : default:;
6025 : }
6026 : break;
6027 : }
6028 : default:;
6029 : }
6030 : break;
6031 : }
6032 5264383 : default:;
6033 : }
6034 5264383 : switch (TREE_CODE (_q20))
6035 : {
6036 244 : case MINUS_EXPR:
6037 244 : {
6038 244 : tree _q30 = TREE_OPERAND (_q20, 0);
6039 244 : tree _q31 = TREE_OPERAND (_q20, 1);
6040 244 : switch (TREE_CODE (_q30))
6041 : {
6042 56 : case INTEGER_CST:
6043 56 : {
6044 56 : switch (TREE_CODE (_q31))
6045 : {
6046 0 : CASE_CONVERT:
6047 0 : {
6048 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6049 0 : switch (TREE_CODE (_p1))
6050 : {
6051 0 : CASE_CONVERT:
6052 0 : {
6053 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6054 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6055 : {
6056 0 : {
6057 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6058 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6059 0 : if (res) return res;
6060 : }
6061 : }
6062 : break;
6063 : }
6064 0 : default:;
6065 : }
6066 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6067 : {
6068 0 : {
6069 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6070 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6071 0 : if (res) return res;
6072 : }
6073 : }
6074 : break;
6075 : }
6076 56 : default:;
6077 : }
6078 56 : switch (TREE_CODE (_p1))
6079 : {
6080 0 : CASE_CONVERT:
6081 0 : {
6082 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6083 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6084 : {
6085 0 : {
6086 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6087 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6088 0 : if (res) return res;
6089 : }
6090 : }
6091 : break;
6092 : }
6093 56 : default:;
6094 : }
6095 56 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6096 : {
6097 0 : {
6098 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6099 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6100 0 : if (res) return res;
6101 : }
6102 : }
6103 : break;
6104 : }
6105 : default:;
6106 : }
6107 : break;
6108 : }
6109 5264383 : default:;
6110 : }
6111 5264383 : switch (TREE_CODE (_p1))
6112 : {
6113 1671885 : CASE_CONVERT:
6114 1671885 : {
6115 1671885 : tree _q40 = TREE_OPERAND (_p1, 0);
6116 1671885 : switch (TREE_CODE (_q40))
6117 : {
6118 0 : case MINUS_EXPR:
6119 0 : {
6120 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6121 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6122 0 : switch (TREE_CODE (_q50))
6123 : {
6124 0 : case INTEGER_CST:
6125 0 : {
6126 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6127 : {
6128 0 : {
6129 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6130 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6131 0 : if (res) return res;
6132 : }
6133 : }
6134 : break;
6135 : }
6136 : default:;
6137 : }
6138 : break;
6139 : }
6140 : default:;
6141 : }
6142 : break;
6143 : }
6144 285 : case MINUS_EXPR:
6145 285 : {
6146 285 : tree _q40 = TREE_OPERAND (_p1, 0);
6147 285 : tree _q41 = TREE_OPERAND (_p1, 1);
6148 285 : switch (TREE_CODE (_q40))
6149 : {
6150 82 : case INTEGER_CST:
6151 82 : {
6152 82 : switch (TREE_CODE (_q41))
6153 : {
6154 12 : CASE_CONVERT:
6155 12 : {
6156 12 : tree _q60 = TREE_OPERAND (_q41, 0);
6157 12 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6158 : {
6159 0 : {
6160 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6161 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6162 0 : if (res) return res;
6163 : }
6164 : }
6165 : break;
6166 : }
6167 82 : default:;
6168 : }
6169 82 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6170 : {
6171 0 : {
6172 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6173 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6174 0 : if (res) return res;
6175 : }
6176 : }
6177 : break;
6178 : }
6179 : default:;
6180 : }
6181 : break;
6182 : }
6183 : default:;
6184 : }
6185 : break;
6186 : }
6187 154927 : case MINUS_EXPR:
6188 154927 : {
6189 154927 : tree _q20 = TREE_OPERAND (_p0, 0);
6190 154927 : tree _q21 = TREE_OPERAND (_p0, 1);
6191 154927 : switch (TREE_CODE (_q20))
6192 : {
6193 39916 : case INTEGER_CST:
6194 39916 : {
6195 39916 : switch (TREE_CODE (_q21))
6196 : {
6197 23523 : CASE_CONVERT:
6198 23523 : {
6199 23523 : tree _q40 = TREE_OPERAND (_q21, 0);
6200 23523 : switch (TREE_CODE (_p1))
6201 : {
6202 0 : CASE_CONVERT:
6203 0 : {
6204 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6205 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6206 : {
6207 0 : {
6208 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6209 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6210 0 : if (res) return res;
6211 : }
6212 : }
6213 : break;
6214 : }
6215 23523 : default:;
6216 : }
6217 23523 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6218 : {
6219 0 : {
6220 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6221 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6222 0 : if (res) return res;
6223 : }
6224 : }
6225 : break;
6226 : }
6227 39916 : default:;
6228 : }
6229 39916 : switch (TREE_CODE (_p1))
6230 : {
6231 43 : CASE_CONVERT:
6232 43 : {
6233 43 : tree _q50 = TREE_OPERAND (_p1, 0);
6234 43 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6235 : {
6236 0 : {
6237 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6238 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6239 0 : if (res) return res;
6240 : }
6241 : }
6242 : break;
6243 : }
6244 39916 : default:;
6245 : }
6246 39916 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6247 : {
6248 2 : {
6249 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6250 2 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6251 2 : if (res) return res;
6252 : }
6253 : }
6254 : break;
6255 : }
6256 : default:;
6257 : }
6258 : break;
6259 : }
6260 27907043 : default:;
6261 : }
6262 27907043 : switch (TREE_CODE (_p1))
6263 : {
6264 1973064 : CASE_CONVERT:
6265 1973064 : {
6266 1973064 : tree _q30 = TREE_OPERAND (_p1, 0);
6267 1973064 : switch (TREE_CODE (_q30))
6268 : {
6269 12 : case MINUS_EXPR:
6270 12 : {
6271 12 : tree _q40 = TREE_OPERAND (_q30, 0);
6272 12 : tree _q41 = TREE_OPERAND (_q30, 1);
6273 12 : switch (TREE_CODE (_q40))
6274 : {
6275 12 : case INTEGER_CST:
6276 12 : {
6277 12 : switch (TREE_CODE (_q41))
6278 : {
6279 12 : CASE_CONVERT:
6280 12 : {
6281 12 : tree _q60 = TREE_OPERAND (_q41, 0);
6282 12 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6283 : {
6284 0 : {
6285 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6286 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6287 0 : if (res) return res;
6288 : }
6289 : }
6290 : break;
6291 : }
6292 12 : default:;
6293 : }
6294 12 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6295 : {
6296 0 : {
6297 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6298 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6299 0 : if (res) return res;
6300 : }
6301 : }
6302 : break;
6303 : }
6304 : default:;
6305 : }
6306 : break;
6307 : }
6308 : default:;
6309 : }
6310 : break;
6311 : }
6312 3606 : case MINUS_EXPR:
6313 3606 : {
6314 3606 : tree _q30 = TREE_OPERAND (_p1, 0);
6315 3606 : tree _q31 = TREE_OPERAND (_p1, 1);
6316 3606 : switch (TREE_CODE (_q30))
6317 : {
6318 286 : case INTEGER_CST:
6319 286 : {
6320 286 : switch (TREE_CODE (_q31))
6321 : {
6322 16 : CASE_CONVERT:
6323 16 : {
6324 16 : tree _q50 = TREE_OPERAND (_q31, 0);
6325 16 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6326 : {
6327 0 : {
6328 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6329 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6330 0 : if (res) return res;
6331 : }
6332 : }
6333 : break;
6334 : }
6335 286 : default:;
6336 : }
6337 286 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6338 : {
6339 0 : {
6340 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6341 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, EQ_EXPR);
6342 0 : if (res) return res;
6343 : }
6344 : }
6345 : break;
6346 : }
6347 : default:;
6348 : }
6349 : break;
6350 : }
6351 27907043 : default:;
6352 : }
6353 27907043 : switch (TREE_CODE (_p0))
6354 : {
6355 1130 : case LT_EXPR:
6356 1130 : {
6357 1130 : tree _q20 = TREE_OPERAND (_p0, 0);
6358 1130 : tree _q21 = TREE_OPERAND (_p0, 1);
6359 1130 : switch (TREE_CODE (_p1))
6360 : {
6361 16 : case GT_EXPR:
6362 16 : {
6363 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6364 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6365 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6366 : {
6367 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6368 : {
6369 0 : {
6370 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6371 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6372 0 : if (res) return res;
6373 : }
6374 : }
6375 : }
6376 : break;
6377 : }
6378 0 : case EQ_EXPR:
6379 0 : {
6380 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6381 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6382 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6383 : {
6384 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6385 : {
6386 0 : {
6387 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6388 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6389 0 : if (res) return res;
6390 : }
6391 : }
6392 : }
6393 : break;
6394 : }
6395 0 : case NE_EXPR:
6396 0 : {
6397 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6398 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6399 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6400 : {
6401 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6402 : {
6403 0 : {
6404 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6405 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6406 0 : if (res) return res;
6407 : }
6408 : }
6409 : }
6410 : break;
6411 : }
6412 : default:;
6413 : }
6414 : break;
6415 : }
6416 1555 : case LE_EXPR:
6417 1555 : {
6418 1555 : tree _q20 = TREE_OPERAND (_p0, 0);
6419 1555 : tree _q21 = TREE_OPERAND (_p0, 1);
6420 1555 : switch (TREE_CODE (_p1))
6421 : {
6422 5 : case GE_EXPR:
6423 5 : {
6424 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6425 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6426 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6427 : {
6428 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6429 : {
6430 0 : {
6431 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6432 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6433 0 : if (res) return res;
6434 : }
6435 : }
6436 : }
6437 : break;
6438 : }
6439 0 : case EQ_EXPR:
6440 0 : {
6441 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6442 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6443 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6444 : {
6445 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6446 : {
6447 0 : {
6448 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6449 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6450 0 : if (res) return res;
6451 : }
6452 : }
6453 : }
6454 : break;
6455 : }
6456 8 : case NE_EXPR:
6457 8 : {
6458 8 : tree _q50 = TREE_OPERAND (_p1, 0);
6459 8 : tree _q51 = TREE_OPERAND (_p1, 1);
6460 8 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6461 : {
6462 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6463 : {
6464 0 : {
6465 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6466 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6467 0 : if (res) return res;
6468 : }
6469 : }
6470 : }
6471 : break;
6472 : }
6473 : default:;
6474 : }
6475 : break;
6476 : }
6477 69329 : case GT_EXPR:
6478 69329 : {
6479 69329 : tree _q20 = TREE_OPERAND (_p0, 0);
6480 69329 : tree _q21 = TREE_OPERAND (_p0, 1);
6481 69329 : switch (TREE_CODE (_p1))
6482 : {
6483 67582 : case GT_EXPR:
6484 67582 : {
6485 67582 : tree _q50 = TREE_OPERAND (_p1, 0);
6486 67582 : tree _q51 = TREE_OPERAND (_p1, 1);
6487 67582 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6488 : {
6489 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6490 : {
6491 0 : {
6492 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6493 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6494 0 : if (res) return res;
6495 : }
6496 0 : {
6497 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6498 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6499 0 : if (res) return res;
6500 : }
6501 : }
6502 : }
6503 : break;
6504 : }
6505 57 : case EQ_EXPR:
6506 57 : {
6507 57 : tree _q50 = TREE_OPERAND (_p1, 0);
6508 57 : tree _q51 = TREE_OPERAND (_p1, 1);
6509 57 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6510 : {
6511 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6512 : {
6513 0 : {
6514 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6515 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6516 0 : if (res) return res;
6517 : }
6518 : }
6519 : }
6520 : break;
6521 : }
6522 37 : case NE_EXPR:
6523 37 : {
6524 37 : tree _q50 = TREE_OPERAND (_p1, 0);
6525 37 : tree _q51 = TREE_OPERAND (_p1, 1);
6526 37 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6527 : {
6528 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6529 : {
6530 0 : {
6531 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6532 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6533 0 : if (res) return res;
6534 : }
6535 : }
6536 : }
6537 : break;
6538 : }
6539 41 : case LT_EXPR:
6540 41 : {
6541 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6542 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6543 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6544 : {
6545 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6546 : {
6547 0 : {
6548 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6549 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, GT_EXPR, EQ_EXPR);
6550 0 : if (res) return res;
6551 : }
6552 : }
6553 : }
6554 : break;
6555 : }
6556 : default:;
6557 : }
6558 : break;
6559 : }
6560 6627 : case GE_EXPR:
6561 6627 : {
6562 6627 : tree _q20 = TREE_OPERAND (_p0, 0);
6563 6627 : tree _q21 = TREE_OPERAND (_p0, 1);
6564 6627 : switch (TREE_CODE (_p1))
6565 : {
6566 27 : case GE_EXPR:
6567 27 : {
6568 27 : tree _q50 = TREE_OPERAND (_p1, 0);
6569 27 : tree _q51 = TREE_OPERAND (_p1, 1);
6570 27 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6571 : {
6572 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6573 : {
6574 0 : {
6575 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6576 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6577 0 : if (res) return res;
6578 : }
6579 0 : {
6580 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6581 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6582 0 : if (res) return res;
6583 : }
6584 : }
6585 : }
6586 : break;
6587 : }
6588 90 : case EQ_EXPR:
6589 90 : {
6590 90 : tree _q50 = TREE_OPERAND (_p1, 0);
6591 90 : tree _q51 = TREE_OPERAND (_p1, 1);
6592 90 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6593 : {
6594 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6595 : {
6596 0 : {
6597 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6598 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6599 0 : if (res) return res;
6600 : }
6601 : }
6602 : }
6603 : break;
6604 : }
6605 56 : case NE_EXPR:
6606 56 : {
6607 56 : tree _q50 = TREE_OPERAND (_p1, 0);
6608 56 : tree _q51 = TREE_OPERAND (_p1, 1);
6609 56 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6610 : {
6611 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6612 : {
6613 0 : {
6614 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6615 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6616 0 : if (res) return res;
6617 : }
6618 : }
6619 : }
6620 : break;
6621 : }
6622 6 : case LE_EXPR:
6623 6 : {
6624 6 : tree _q50 = TREE_OPERAND (_p1, 0);
6625 6 : tree _q51 = TREE_OPERAND (_p1, 1);
6626 6 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6627 : {
6628 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6629 : {
6630 0 : {
6631 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6632 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR, EQ_EXPR);
6633 0 : if (res) return res;
6634 : }
6635 : }
6636 : }
6637 : break;
6638 : }
6639 : default:;
6640 : }
6641 : break;
6642 : }
6643 32624 : case EQ_EXPR:
6644 32624 : {
6645 32624 : tree _q20 = TREE_OPERAND (_p0, 0);
6646 32624 : tree _q21 = TREE_OPERAND (_p0, 1);
6647 32624 : switch (TREE_CODE (_p1))
6648 : {
6649 5 : case LT_EXPR:
6650 5 : {
6651 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6652 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6653 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6654 : {
6655 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6656 : {
6657 0 : {
6658 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6659 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6660 0 : if (res) return res;
6661 : }
6662 : }
6663 : }
6664 : break;
6665 : }
6666 4 : case LE_EXPR:
6667 4 : {
6668 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6669 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6670 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6671 : {
6672 4 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6673 : {
6674 0 : {
6675 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6676 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6677 0 : if (res) return res;
6678 : }
6679 : }
6680 : }
6681 : break;
6682 : }
6683 75 : case GT_EXPR:
6684 75 : {
6685 75 : tree _q50 = TREE_OPERAND (_p1, 0);
6686 75 : tree _q51 = TREE_OPERAND (_p1, 1);
6687 75 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6688 : {
6689 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6690 : {
6691 0 : {
6692 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6693 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GT_EXPR);
6694 0 : if (res) return res;
6695 : }
6696 : }
6697 : }
6698 : break;
6699 : }
6700 112 : case GE_EXPR:
6701 112 : {
6702 112 : tree _q50 = TREE_OPERAND (_p1, 0);
6703 112 : tree _q51 = TREE_OPERAND (_p1, 1);
6704 112 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6705 : {
6706 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6707 : {
6708 0 : {
6709 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6710 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, GE_EXPR);
6711 0 : if (res) return res;
6712 : }
6713 : }
6714 : }
6715 : break;
6716 : }
6717 : default:;
6718 : }
6719 : break;
6720 : }
6721 12081 : case NE_EXPR:
6722 12081 : {
6723 12081 : tree _q20 = TREE_OPERAND (_p0, 0);
6724 12081 : tree _q21 = TREE_OPERAND (_p0, 1);
6725 12081 : switch (TREE_CODE (_p1))
6726 : {
6727 6 : case LT_EXPR:
6728 6 : {
6729 6 : tree _q50 = TREE_OPERAND (_p1, 0);
6730 6 : tree _q51 = TREE_OPERAND (_p1, 1);
6731 6 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6732 : {
6733 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6734 : {
6735 0 : {
6736 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6737 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6738 0 : if (res) return res;
6739 : }
6740 : }
6741 : }
6742 : break;
6743 : }
6744 0 : case LE_EXPR:
6745 0 : {
6746 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6747 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6748 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6749 : {
6750 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6751 : {
6752 0 : {
6753 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6754 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6755 0 : if (res) return res;
6756 : }
6757 : }
6758 : }
6759 : break;
6760 : }
6761 21 : case GT_EXPR:
6762 21 : {
6763 21 : tree _q50 = TREE_OPERAND (_p1, 0);
6764 21 : tree _q51 = TREE_OPERAND (_p1, 1);
6765 21 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6766 : {
6767 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6768 : {
6769 0 : {
6770 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6771 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LE_EXPR);
6772 0 : if (res) return res;
6773 : }
6774 : }
6775 : }
6776 : break;
6777 : }
6778 3 : case GE_EXPR:
6779 3 : {
6780 3 : tree _q50 = TREE_OPERAND (_p1, 0);
6781 3 : tree _q51 = TREE_OPERAND (_p1, 1);
6782 3 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6783 : {
6784 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6785 : {
6786 0 : {
6787 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6788 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, LT_EXPR);
6789 0 : if (res) return res;
6790 : }
6791 : }
6792 : }
6793 : break;
6794 : }
6795 : default:;
6796 : }
6797 : break;
6798 : }
6799 11161 : case MIN_EXPR:
6800 11161 : {
6801 11161 : tree _q20 = TREE_OPERAND (_p0, 0);
6802 11161 : tree _q21 = TREE_OPERAND (_p0, 1);
6803 11161 : switch (TREE_CODE (_p1))
6804 : {
6805 0 : case MAX_EXPR:
6806 0 : {
6807 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6808 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6809 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6810 : {
6811 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6812 : {
6813 0 : {
6814 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6815 0 : if (!HONOR_NANS (captures[0])
6816 : )
6817 : {
6818 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1510;
6819 0 : {
6820 0 : tree res_op0;
6821 0 : res_op0 = captures[0];
6822 0 : tree res_op1;
6823 0 : res_op1 = captures[1];
6824 0 : tree _r;
6825 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6826 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
6827 0 : return _r;
6828 : }
6829 0 : next_after_fail1510:;
6830 : }
6831 : }
6832 : }
6833 : }
6834 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6835 : {
6836 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6837 : {
6838 0 : {
6839 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6840 0 : if (!HONOR_NANS (captures[0])
6841 : )
6842 : {
6843 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1511;
6844 0 : {
6845 0 : tree res_op0;
6846 0 : res_op0 = captures[0];
6847 0 : tree res_op1;
6848 0 : res_op1 = captures[1];
6849 0 : tree _r;
6850 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6851 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
6852 0 : return _r;
6853 : }
6854 0 : next_after_fail1511:;
6855 : }
6856 : }
6857 : }
6858 : }
6859 : break;
6860 : }
6861 11161 : default:;
6862 : }
6863 11161 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6864 : {
6865 0 : {
6866 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6867 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
6868 0 : if (res) return res;
6869 : }
6870 : }
6871 11161 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6872 : {
6873 0 : {
6874 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6875 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
6876 0 : if (res) return res;
6877 : }
6878 : }
6879 : break;
6880 : }
6881 710 : case MAX_EXPR:
6882 710 : {
6883 710 : tree _q20 = TREE_OPERAND (_p0, 0);
6884 710 : tree _q21 = TREE_OPERAND (_p0, 1);
6885 710 : switch (TREE_CODE (_p1))
6886 : {
6887 0 : case MIN_EXPR:
6888 0 : {
6889 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6890 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6891 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6892 : {
6893 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6894 : {
6895 0 : {
6896 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6897 0 : if (!HONOR_NANS (captures[0])
6898 : )
6899 : {
6900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1512;
6901 0 : {
6902 0 : tree res_op0;
6903 0 : res_op0 = captures[0];
6904 0 : tree res_op1;
6905 0 : res_op1 = captures[1];
6906 0 : tree _r;
6907 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6908 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
6909 0 : return _r;
6910 : }
6911 0 : next_after_fail1512:;
6912 : }
6913 : }
6914 : }
6915 : }
6916 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6917 : {
6918 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6919 : {
6920 0 : {
6921 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6922 0 : if (!HONOR_NANS (captures[0])
6923 : )
6924 : {
6925 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1513;
6926 0 : {
6927 0 : tree res_op0;
6928 0 : res_op0 = captures[0];
6929 0 : tree res_op1;
6930 0 : res_op1 = captures[1];
6931 0 : tree _r;
6932 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6933 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
6934 0 : return _r;
6935 : }
6936 0 : next_after_fail1513:;
6937 : }
6938 : }
6939 : }
6940 : }
6941 : break;
6942 : }
6943 710 : default:;
6944 : }
6945 710 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6946 : {
6947 0 : {
6948 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6949 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
6950 0 : if (res) return res;
6951 : }
6952 : }
6953 710 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6954 : {
6955 1 : {
6956 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6957 1 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
6958 1 : if (res) return res;
6959 : }
6960 : }
6961 : break;
6962 : }
6963 27907043 : default:;
6964 : }
6965 27907043 : if (tree_with_possible_nonzero_bits (_p0))
6966 : {
6967 9806891 : if (tree_with_known_nonzero_bits (_p1))
6968 : {
6969 8294551 : {
6970 8294551 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6971 8294551 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, EQ_EXPR);
6972 8294551 : if (res) return res;
6973 : }
6974 : }
6975 : }
6976 27890680 : if (tree_with_known_nonzero_bits (_p0))
6977 : {
6978 6294847 : if (tree_with_possible_nonzero_bits (_p1))
6979 : {
6980 6262441 : {
6981 6262441 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
6982 6262441 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, EQ_EXPR);
6983 6262441 : if (res) return res;
6984 : }
6985 : }
6986 : }
6987 27890324 : switch (TREE_CODE (_p1))
6988 : {
6989 157 : case MIN_EXPR:
6990 157 : {
6991 157 : tree _q30 = TREE_OPERAND (_p1, 0);
6992 157 : tree _q31 = TREE_OPERAND (_p1, 1);
6993 157 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6994 : {
6995 0 : {
6996 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6997 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
6998 0 : if (res) return res;
6999 : }
7000 : }
7001 157 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7002 : {
7003 0 : {
7004 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7005 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, EQ_EXPR, LE_EXPR);
7006 0 : if (res) return res;
7007 : }
7008 : }
7009 : break;
7010 : }
7011 58 : case MAX_EXPR:
7012 58 : {
7013 58 : tree _q30 = TREE_OPERAND (_p1, 0);
7014 58 : tree _q31 = TREE_OPERAND (_p1, 1);
7015 58 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7016 : {
7017 0 : {
7018 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7019 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7020 0 : if (res) return res;
7021 : }
7022 : }
7023 58 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7024 : {
7025 0 : {
7026 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7027 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, EQ_EXPR, GE_EXPR);
7028 0 : if (res) return res;
7029 : }
7030 : }
7031 : break;
7032 : }
7033 27890324 : default:;
7034 : }
7035 27890324 : switch (TREE_CODE (_p0))
7036 : {
7037 11161 : case MIN_EXPR:
7038 11161 : {
7039 11161 : tree _q20 = TREE_OPERAND (_p0, 0);
7040 11161 : tree _q21 = TREE_OPERAND (_p0, 1);
7041 11161 : switch (TREE_CODE (_q21))
7042 : {
7043 222 : case INTEGER_CST:
7044 222 : {
7045 222 : switch (TREE_CODE (_p1))
7046 : {
7047 0 : case INTEGER_CST:
7048 0 : {
7049 0 : {
7050 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7051 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, EQ_EXPR);
7052 0 : if (res) return res;
7053 : }
7054 0 : break;
7055 : }
7056 : default:;
7057 : }
7058 : break;
7059 : }
7060 : default:;
7061 : }
7062 : break;
7063 : }
7064 710 : case MAX_EXPR:
7065 710 : {
7066 710 : tree _q20 = TREE_OPERAND (_p0, 0);
7067 710 : tree _q21 = TREE_OPERAND (_p0, 1);
7068 710 : switch (TREE_CODE (_q21))
7069 : {
7070 453 : case INTEGER_CST:
7071 453 : {
7072 453 : switch (TREE_CODE (_p1))
7073 : {
7074 42 : case INTEGER_CST:
7075 42 : {
7076 42 : {
7077 42 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7078 42 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, EQ_EXPR);
7079 42 : if (res) return res;
7080 : }
7081 0 : break;
7082 : }
7083 : default:;
7084 : }
7085 : break;
7086 : }
7087 668 : default:;
7088 : }
7089 668 : if (tree_expr_nonnegative_p (_q20))
7090 : {
7091 162 : if (tree_expr_nonnegative_p (_q21))
7092 : {
7093 162 : if (integer_zerop (_p1))
7094 : {
7095 0 : {
7096 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7097 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, EQ_EXPR);
7098 0 : if (res) return res;
7099 : }
7100 : }
7101 : }
7102 : }
7103 : break;
7104 : }
7105 849954 : case BIT_AND_EXPR:
7106 849954 : {
7107 849954 : tree _q20 = TREE_OPERAND (_p0, 0);
7108 849954 : tree _q21 = TREE_OPERAND (_p0, 1);
7109 849954 : switch (TREE_CODE (_q20))
7110 : {
7111 777 : case LSHIFT_EXPR:
7112 777 : {
7113 777 : tree _q30 = TREE_OPERAND (_q20, 0);
7114 777 : tree _q31 = TREE_OPERAND (_q20, 1);
7115 777 : if (integer_pow2p (_q30))
7116 : {
7117 769 : if (integer_pow2p (_q21))
7118 : {
7119 1 : if (integer_zerop (_p1))
7120 : {
7121 1 : {
7122 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7123 1 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7124 1 : if (res) return res;
7125 : }
7126 : }
7127 : }
7128 : }
7129 776 : switch (TREE_CODE (_q31))
7130 : {
7131 0 : case INTEGER_CST:
7132 0 : {
7133 0 : switch (TREE_CODE (_q21))
7134 : {
7135 0 : case INTEGER_CST:
7136 0 : {
7137 0 : switch (TREE_CODE (_p1))
7138 : {
7139 0 : case INTEGER_CST:
7140 0 : {
7141 0 : {
7142 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7143 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, EQ_EXPR);
7144 0 : if (res) return res;
7145 : }
7146 0 : break;
7147 : }
7148 : default:;
7149 : }
7150 : break;
7151 : }
7152 : default:;
7153 : }
7154 : break;
7155 : }
7156 776 : default:;
7157 : }
7158 776 : if (integer_onep (_q30))
7159 : {
7160 768 : if (integer_pow2p (_q21))
7161 : {
7162 0 : if (integer_zerop (_p1))
7163 : {
7164 0 : {
7165 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7166 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7167 0 : if (res) return res;
7168 : }
7169 : }
7170 : }
7171 : }
7172 : break;
7173 : }
7174 3037 : case RSHIFT_EXPR:
7175 3037 : {
7176 3037 : tree _q30 = TREE_OPERAND (_q20, 0);
7177 3037 : tree _q31 = TREE_OPERAND (_q20, 1);
7178 3037 : if (integer_pow2p (_q30))
7179 : {
7180 1 : if (integer_pow2p (_q21))
7181 : {
7182 1 : if (integer_zerop (_p1))
7183 : {
7184 1 : {
7185 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7186 1 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7187 1 : if (res) return res;
7188 : }
7189 : }
7190 : }
7191 : }
7192 3036 : switch (TREE_CODE (_q31))
7193 : {
7194 525 : case INTEGER_CST:
7195 525 : {
7196 525 : switch (TREE_CODE (_q21))
7197 : {
7198 525 : case INTEGER_CST:
7199 525 : {
7200 525 : switch (TREE_CODE (_p1))
7201 : {
7202 525 : case INTEGER_CST:
7203 525 : {
7204 525 : {
7205 525 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7206 525 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, EQ_EXPR);
7207 525 : if (res) return res;
7208 : }
7209 0 : break;
7210 : }
7211 : default:;
7212 : }
7213 : break;
7214 : }
7215 : default:;
7216 : }
7217 : break;
7218 : }
7219 : default:;
7220 : }
7221 : break;
7222 : }
7223 849427 : default:;
7224 : }
7225 849427 : {
7226 849427 : tree _q20_pops[1];
7227 849427 : if (tree_nop_convert (_q20, _q20_pops))
7228 : {
7229 21868 : tree _q30 = _q20_pops[0];
7230 21868 : switch (TREE_CODE (_q30))
7231 : {
7232 0 : case LSHIFT_EXPR:
7233 0 : {
7234 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7235 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7236 0 : if (integer_onep (_q40))
7237 : {
7238 0 : if (integer_pow2p (_q21))
7239 : {
7240 0 : if (integer_zerop (_p1))
7241 : {
7242 0 : {
7243 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7244 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
7245 0 : if (res) return res;
7246 : }
7247 : }
7248 : }
7249 : }
7250 : break;
7251 : }
7252 : default:;
7253 : }
7254 : }
7255 : }
7256 849427 : break;
7257 : }
7258 2021 : case LSHIFT_EXPR:
7259 2021 : {
7260 2021 : tree _q20 = TREE_OPERAND (_p0, 0);
7261 2021 : tree _q21 = TREE_OPERAND (_p0, 1);
7262 2021 : switch (TREE_CODE (_q20))
7263 : {
7264 336 : case INTEGER_CST:
7265 336 : {
7266 336 : switch (TREE_CODE (_p1))
7267 : {
7268 20 : case INTEGER_CST:
7269 20 : {
7270 20 : {
7271 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7272 20 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, EQ_EXPR);
7273 20 : if (res) return res;
7274 : }
7275 3 : break;
7276 : }
7277 : default:;
7278 : }
7279 : break;
7280 : }
7281 : default:;
7282 : }
7283 : break;
7284 : }
7285 0 : case LROTATE_EXPR:
7286 0 : {
7287 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7288 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7289 0 : switch (TREE_CODE (_p1))
7290 : {
7291 0 : case LROTATE_EXPR:
7292 0 : {
7293 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7294 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7295 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7296 : {
7297 0 : {
7298 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7299 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7300 0 : if (res) return res;
7301 : }
7302 : }
7303 : break;
7304 : }
7305 0 : default:;
7306 : }
7307 0 : switch (TREE_CODE (_q21))
7308 : {
7309 0 : case INTEGER_CST:
7310 0 : {
7311 0 : switch (TREE_CODE (_p1))
7312 : {
7313 0 : case INTEGER_CST:
7314 0 : {
7315 0 : {
7316 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7317 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7318 0 : if (res) return res;
7319 : }
7320 0 : break;
7321 : }
7322 : default:;
7323 : }
7324 : break;
7325 : }
7326 0 : default:;
7327 : }
7328 0 : switch (TREE_CODE (_p1))
7329 : {
7330 0 : case INTEGER_CST:
7331 0 : {
7332 0 : {
7333 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7334 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, EQ_EXPR);
7335 0 : if (res) return res;
7336 : }
7337 0 : break;
7338 : }
7339 : default:;
7340 : }
7341 : break;
7342 : }
7343 42 : case RROTATE_EXPR:
7344 42 : {
7345 42 : tree _q20 = TREE_OPERAND (_p0, 0);
7346 42 : tree _q21 = TREE_OPERAND (_p0, 1);
7347 42 : switch (TREE_CODE (_p1))
7348 : {
7349 0 : case RROTATE_EXPR:
7350 0 : {
7351 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7352 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7353 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7354 : {
7355 0 : {
7356 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7357 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7358 0 : if (res) return res;
7359 : }
7360 : }
7361 : break;
7362 : }
7363 42 : default:;
7364 : }
7365 42 : switch (TREE_CODE (_q21))
7366 : {
7367 42 : case INTEGER_CST:
7368 42 : {
7369 42 : switch (TREE_CODE (_p1))
7370 : {
7371 0 : case INTEGER_CST:
7372 0 : {
7373 0 : {
7374 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7375 0 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7376 0 : if (res) return res;
7377 : }
7378 0 : break;
7379 : }
7380 : default:;
7381 : }
7382 : break;
7383 : }
7384 42 : default:;
7385 : }
7386 42 : switch (TREE_CODE (_p1))
7387 : {
7388 0 : case INTEGER_CST:
7389 0 : {
7390 0 : {
7391 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7392 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, EQ_EXPR);
7393 0 : if (res) return res;
7394 : }
7395 0 : break;
7396 : }
7397 : default:;
7398 : }
7399 : break;
7400 : }
7401 65603 : case MULT_EXPR:
7402 65603 : {
7403 65603 : tree _q20 = TREE_OPERAND (_p0, 0);
7404 65603 : tree _q21 = TREE_OPERAND (_p0, 1);
7405 65603 : switch (TREE_CODE (_q20))
7406 : {
7407 66 : case TRUNC_DIV_EXPR:
7408 66 : {
7409 66 : tree _q30 = TREE_OPERAND (_q20, 0);
7410 66 : tree _q31 = TREE_OPERAND (_q20, 1);
7411 66 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
7412 : {
7413 47 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7414 : {
7415 47 : {
7416 47 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7417 47 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures);
7418 47 : if (res) return res;
7419 : }
7420 : }
7421 : }
7422 : break;
7423 : }
7424 65556 : default:;
7425 : }
7426 65556 : switch (TREE_CODE (_q21))
7427 : {
7428 0 : case TRUNC_DIV_EXPR:
7429 0 : {
7430 0 : tree _q40 = TREE_OPERAND (_q21, 0);
7431 0 : tree _q41 = TREE_OPERAND (_q21, 1);
7432 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
7433 : {
7434 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7435 : {
7436 0 : {
7437 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
7438 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures);
7439 0 : if (res) return res;
7440 : }
7441 : }
7442 : }
7443 : break;
7444 : }
7445 : default:;
7446 : }
7447 : break;
7448 : }
7449 27889691 : default:;
7450 : }
7451 27889691 : switch (TREE_CODE (_p1))
7452 : {
7453 13957 : case MULT_EXPR:
7454 13957 : {
7455 13957 : tree _q30 = TREE_OPERAND (_p1, 0);
7456 13957 : tree _q31 = TREE_OPERAND (_p1, 1);
7457 13957 : switch (TREE_CODE (_q30))
7458 : {
7459 0 : case TRUNC_DIV_EXPR:
7460 0 : {
7461 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7462 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7463 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7464 : {
7465 0 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q41, 0) && types_match (_q31, _q41)))
7466 : {
7467 0 : {
7468 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7469 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures);
7470 0 : if (res) return res;
7471 : }
7472 : }
7473 : }
7474 : break;
7475 : }
7476 13957 : default:;
7477 : }
7478 13957 : switch (TREE_CODE (_q31))
7479 : {
7480 0 : case TRUNC_DIV_EXPR:
7481 0 : {
7482 0 : tree _q50 = TREE_OPERAND (_q31, 0);
7483 0 : tree _q51 = TREE_OPERAND (_q31, 1);
7484 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7485 : {
7486 0 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q30, 0) && types_match (_q51, _q30)))
7487 : {
7488 0 : {
7489 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _p0, _q30 };
7490 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures);
7491 0 : if (res) return res;
7492 : }
7493 : }
7494 : }
7495 : break;
7496 : }
7497 : default:;
7498 : }
7499 : break;
7500 : }
7501 27889691 : default:;
7502 : }
7503 27889691 : switch (TREE_CODE (_p0))
7504 : {
7505 1080 : case VEC_COND_EXPR:
7506 1080 : {
7507 1080 : tree _q20 = TREE_OPERAND (_p0, 0);
7508 1080 : tree _q21 = TREE_OPERAND (_p0, 1);
7509 1080 : tree _q22 = TREE_OPERAND (_p0, 2);
7510 1080 : switch (TREE_CODE (_p1))
7511 : {
7512 187 : case VEC_COND_EXPR:
7513 187 : {
7514 187 : tree _q60 = TREE_OPERAND (_p1, 0);
7515 187 : tree _q61 = TREE_OPERAND (_p1, 1);
7516 187 : tree _q62 = TREE_OPERAND (_p1, 2);
7517 187 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7518 : {
7519 120 : {
7520 120 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7521 120 : if (VECTOR_TYPE_P (type)
7522 120 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
7523 120 : || types_match (type, TREE_TYPE (captures[2]))
7524 120 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7525 : || (optimize_vectors_before_lowering_p ()
7526 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7527 : )
7528 : {
7529 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1514;
7530 120 : {
7531 120 : tree res_op0;
7532 120 : res_op0 = captures[1];
7533 120 : tree res_op1;
7534 120 : {
7535 120 : tree _o1[2], _r1;
7536 120 : _o1[0] = captures[2];
7537 120 : _o1[1] = captures[5];
7538 120 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7539 120 : if (EXPR_P (_r1))
7540 120 : goto next_after_fail1514;
7541 0 : res_op1 = _r1;
7542 : }
7543 0 : tree res_op2;
7544 0 : {
7545 0 : tree _o1[2], _r1;
7546 0 : _o1[0] = captures[3];
7547 0 : _o1[1] = captures[6];
7548 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7549 0 : if (EXPR_P (_r1))
7550 0 : goto next_after_fail1514;
7551 0 : res_op2 = _r1;
7552 : }
7553 0 : tree _r;
7554 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7555 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
7556 0 : return _r;
7557 : }
7558 120 : next_after_fail1514:;
7559 : }
7560 : }
7561 : }
7562 : break;
7563 : }
7564 1080 : default:;
7565 : }
7566 1080 : {
7567 1080 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7568 1080 : if (VECTOR_TYPE_P (type)
7569 1080 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
7570 1080 : || types_match (type, TREE_TYPE (captures[2]))
7571 1080 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7572 : || (optimize_vectors_before_lowering_p ()
7573 79 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7574 : )
7575 : {
7576 1080 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1515;
7577 1080 : {
7578 1080 : if (! tree_invariant_p (captures[4])) goto next_after_fail1515;
7579 150 : tree res_op0;
7580 150 : res_op0 = captures[1];
7581 150 : tree res_op1;
7582 150 : {
7583 150 : tree _o1[2], _r1;
7584 150 : _o1[0] = captures[2];
7585 150 : _o1[1] = unshare_expr (captures[4]);
7586 150 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7587 150 : if (EXPR_P (_r1))
7588 96 : goto next_after_fail1515;
7589 54 : res_op1 = _r1;
7590 : }
7591 54 : tree res_op2;
7592 54 : {
7593 54 : tree _o1[2], _r1;
7594 54 : _o1[0] = captures[3];
7595 54 : _o1[1] = captures[4];
7596 54 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
7597 54 : if (EXPR_P (_r1))
7598 33 : goto next_after_fail1515;
7599 21 : res_op2 = _r1;
7600 : }
7601 21 : tree _r;
7602 21 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7603 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
7604 21 : return _r;
7605 : }
7606 1059 : next_after_fail1515:;
7607 : }
7608 : }
7609 1059 : break;
7610 : }
7611 2014829 : case CALL_EXPR:
7612 2014829 : switch (get_call_combined_fn (_p0))
7613 : {
7614 1 : case CFN_BUILT_IN_BITREVERSE128:
7615 1 : if (call_expr_nargs (_p0) == 1)
7616 : {
7617 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7618 1 : switch (TREE_CODE (_p1))
7619 : {
7620 1 : case INTEGER_CST:
7621 1 : {
7622 1 : {
7623 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7624 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE128);
7625 1 : if (res) return res;
7626 : }
7627 1 : break;
7628 : }
7629 0 : case CALL_EXPR:
7630 0 : switch (get_call_combined_fn (_p1))
7631 : {
7632 0 : case CFN_BUILT_IN_BITREVERSE128:
7633 0 : if (call_expr_nargs (_p1) == 1)
7634 : {
7635 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7636 0 : {
7637 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7638 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE128);
7639 0 : if (res) return res;
7640 : }
7641 : }
7642 : break;
7643 : default:;
7644 : }
7645 : break;
7646 : default:;
7647 : }
7648 : }
7649 : break;
7650 1 : case CFN_BUILT_IN_BITREVERSE16:
7651 1 : if (call_expr_nargs (_p0) == 1)
7652 : {
7653 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7654 1 : switch (TREE_CODE (_p1))
7655 : {
7656 1 : case INTEGER_CST:
7657 1 : {
7658 1 : {
7659 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7660 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE16);
7661 1 : if (res) return res;
7662 : }
7663 1 : break;
7664 : }
7665 0 : case CALL_EXPR:
7666 0 : switch (get_call_combined_fn (_p1))
7667 : {
7668 0 : case CFN_BUILT_IN_BITREVERSE16:
7669 0 : if (call_expr_nargs (_p1) == 1)
7670 : {
7671 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7672 0 : {
7673 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7674 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE16);
7675 0 : if (res) return res;
7676 : }
7677 : }
7678 : break;
7679 : default:;
7680 : }
7681 : break;
7682 : default:;
7683 : }
7684 : }
7685 : break;
7686 1 : case CFN_BUILT_IN_BITREVERSE32:
7687 1 : if (call_expr_nargs (_p0) == 1)
7688 : {
7689 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7690 1 : switch (TREE_CODE (_p1))
7691 : {
7692 1 : case INTEGER_CST:
7693 1 : {
7694 1 : {
7695 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7696 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE32);
7697 1 : if (res) return res;
7698 : }
7699 1 : break;
7700 : }
7701 0 : case CALL_EXPR:
7702 0 : switch (get_call_combined_fn (_p1))
7703 : {
7704 0 : case CFN_BUILT_IN_BITREVERSE32:
7705 0 : if (call_expr_nargs (_p1) == 1)
7706 : {
7707 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7708 0 : {
7709 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7710 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE32);
7711 0 : if (res) return res;
7712 : }
7713 : }
7714 : break;
7715 : default:;
7716 : }
7717 : break;
7718 : default:;
7719 : }
7720 : }
7721 : break;
7722 1 : case CFN_BUILT_IN_BITREVERSE64:
7723 1 : if (call_expr_nargs (_p0) == 1)
7724 : {
7725 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7726 1 : switch (TREE_CODE (_p1))
7727 : {
7728 1 : case INTEGER_CST:
7729 1 : {
7730 1 : {
7731 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7732 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE64);
7733 1 : if (res) return res;
7734 : }
7735 1 : break;
7736 : }
7737 0 : case CALL_EXPR:
7738 0 : switch (get_call_combined_fn (_p1))
7739 : {
7740 0 : case CFN_BUILT_IN_BITREVERSE64:
7741 0 : if (call_expr_nargs (_p1) == 1)
7742 : {
7743 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7744 0 : {
7745 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7746 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE64);
7747 0 : if (res) return res;
7748 : }
7749 : }
7750 : break;
7751 : default:;
7752 : }
7753 : break;
7754 : default:;
7755 : }
7756 : }
7757 : break;
7758 0 : case CFN_BITREVERSE:
7759 0 : if (call_expr_nargs (_p0) == 1)
7760 : {
7761 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7762 0 : switch (TREE_CODE (_p1))
7763 : {
7764 0 : case INTEGER_CST:
7765 0 : {
7766 0 : {
7767 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7768 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BITREVERSE);
7769 0 : if (res) return res;
7770 : }
7771 0 : break;
7772 : }
7773 0 : case CALL_EXPR:
7774 0 : switch (get_call_combined_fn (_p1))
7775 : {
7776 0 : case CFN_BITREVERSE:
7777 0 : if (call_expr_nargs (_p1) == 1)
7778 : {
7779 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7780 0 : {
7781 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7782 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BITREVERSE);
7783 0 : if (res) return res;
7784 : }
7785 : }
7786 : break;
7787 : default:;
7788 : }
7789 : break;
7790 : default:;
7791 : }
7792 : }
7793 : break;
7794 0 : case CFN_BSWAP:
7795 0 : if (call_expr_nargs (_p0) == 1)
7796 : {
7797 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7798 0 : switch (TREE_CODE (_p1))
7799 : {
7800 0 : case INTEGER_CST:
7801 0 : {
7802 0 : {
7803 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7804 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BSWAP);
7805 0 : if (res) return res;
7806 : }
7807 0 : break;
7808 : }
7809 0 : case CALL_EXPR:
7810 0 : switch (get_call_combined_fn (_p1))
7811 : {
7812 0 : case CFN_BSWAP:
7813 0 : if (call_expr_nargs (_p1) == 1)
7814 : {
7815 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7816 0 : {
7817 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7818 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BSWAP);
7819 0 : if (res) return res;
7820 : }
7821 : }
7822 : break;
7823 : default:;
7824 : }
7825 : break;
7826 : default:;
7827 : }
7828 : }
7829 : break;
7830 0 : case CFN_BUILT_IN_BSWAP128:
7831 0 : if (call_expr_nargs (_p0) == 1)
7832 : {
7833 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7834 0 : switch (TREE_CODE (_p1))
7835 : {
7836 0 : case INTEGER_CST:
7837 0 : {
7838 0 : {
7839 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7840 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
7841 0 : if (res) return res;
7842 : }
7843 0 : break;
7844 : }
7845 0 : case CALL_EXPR:
7846 0 : switch (get_call_combined_fn (_p1))
7847 : {
7848 0 : case CFN_BUILT_IN_BSWAP128:
7849 0 : if (call_expr_nargs (_p1) == 1)
7850 : {
7851 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7852 0 : {
7853 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7854 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP128);
7855 0 : if (res) return res;
7856 : }
7857 : }
7858 : break;
7859 : default:;
7860 : }
7861 : break;
7862 : default:;
7863 : }
7864 : }
7865 : break;
7866 1 : case CFN_BUILT_IN_BITREVERSE8:
7867 1 : if (call_expr_nargs (_p0) == 1)
7868 : {
7869 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7870 1 : switch (TREE_CODE (_p1))
7871 : {
7872 1 : case INTEGER_CST:
7873 1 : {
7874 1 : {
7875 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7876 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE8);
7877 1 : if (res) return res;
7878 : }
7879 1 : break;
7880 : }
7881 0 : case CALL_EXPR:
7882 0 : switch (get_call_combined_fn (_p1))
7883 : {
7884 0 : case CFN_BUILT_IN_BITREVERSE8:
7885 0 : if (call_expr_nargs (_p1) == 1)
7886 : {
7887 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7888 0 : {
7889 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7890 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BITREVERSE8);
7891 0 : if (res) return res;
7892 : }
7893 : }
7894 : break;
7895 : default:;
7896 : }
7897 : break;
7898 : default:;
7899 : }
7900 : }
7901 : break;
7902 2 : case CFN_BUILT_IN_BSWAP16:
7903 2 : if (call_expr_nargs (_p0) == 1)
7904 : {
7905 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7906 2 : switch (TREE_CODE (_p1))
7907 : {
7908 1 : case INTEGER_CST:
7909 1 : {
7910 1 : {
7911 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7912 1 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
7913 1 : if (res) return res;
7914 : }
7915 1 : break;
7916 : }
7917 1 : case CALL_EXPR:
7918 1 : switch (get_call_combined_fn (_p1))
7919 : {
7920 1 : case CFN_BUILT_IN_BSWAP16:
7921 1 : if (call_expr_nargs (_p1) == 1)
7922 : {
7923 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7924 1 : {
7925 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7926 1 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP16);
7927 1 : if (res) return res;
7928 : }
7929 : }
7930 : break;
7931 : default:;
7932 : }
7933 : break;
7934 : default:;
7935 : }
7936 : }
7937 : break;
7938 6 : case CFN_BUILT_IN_BSWAP32:
7939 6 : if (call_expr_nargs (_p0) == 1)
7940 : {
7941 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7942 6 : switch (TREE_CODE (_p1))
7943 : {
7944 3 : case INTEGER_CST:
7945 3 : {
7946 3 : {
7947 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7948 3 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
7949 3 : if (res) return res;
7950 : }
7951 3 : break;
7952 : }
7953 3 : case CALL_EXPR:
7954 3 : switch (get_call_combined_fn (_p1))
7955 : {
7956 3 : case CFN_BUILT_IN_BSWAP32:
7957 3 : if (call_expr_nargs (_p1) == 1)
7958 : {
7959 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7960 3 : {
7961 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7962 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP32);
7963 3 : if (res) return res;
7964 : }
7965 : }
7966 : break;
7967 : default:;
7968 : }
7969 : break;
7970 : default:;
7971 : }
7972 : }
7973 : break;
7974 6 : case CFN_BUILT_IN_BSWAP64:
7975 6 : if (call_expr_nargs (_p0) == 1)
7976 : {
7977 6 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7978 6 : switch (TREE_CODE (_p1))
7979 : {
7980 3 : case INTEGER_CST:
7981 3 : {
7982 3 : {
7983 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7984 3 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
7985 3 : if (res) return res;
7986 : }
7987 3 : break;
7988 : }
7989 3 : case CALL_EXPR:
7990 3 : switch (get_call_combined_fn (_p1))
7991 : {
7992 3 : case CFN_BUILT_IN_BSWAP64:
7993 3 : if (call_expr_nargs (_p1) == 1)
7994 : {
7995 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7996 3 : {
7997 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7998 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_BSWAP64);
7999 3 : if (res) return res;
8000 : }
8001 : }
8002 : break;
8003 : default:;
8004 : }
8005 : break;
8006 : default:;
8007 : }
8008 : }
8009 : break;
8010 : default:;
8011 : }
8012 : break;
8013 27889663 : default:;
8014 : }
8015 27889663 : switch (TREE_CODE (_p1))
8016 : {
8017 215 : case VEC_COND_EXPR:
8018 215 : {
8019 215 : tree _q30 = TREE_OPERAND (_p1, 0);
8020 215 : tree _q31 = TREE_OPERAND (_p1, 1);
8021 215 : tree _q32 = TREE_OPERAND (_p1, 2);
8022 215 : {
8023 215 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8024 215 : if (VECTOR_TYPE_P (type)
8025 215 : && (TREE_CODE_CLASS (EQ_EXPR) != tcc_comparison
8026 215 : || types_match (type, TREE_TYPE (captures[3]))
8027 215 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8028 : || (optimize_vectors_before_lowering_p ()
8029 21 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8030 : )
8031 : {
8032 215 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1516;
8033 215 : {
8034 215 : if (! tree_invariant_p (captures[0])) goto next_after_fail1516;
8035 0 : tree res_op0;
8036 0 : res_op0 = captures[2];
8037 0 : tree res_op1;
8038 0 : {
8039 0 : tree _o1[2], _r1;
8040 0 : _o1[0] = unshare_expr (captures[0]);
8041 0 : _o1[1] = captures[3];
8042 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8043 0 : if (EXPR_P (_r1))
8044 0 : goto next_after_fail1516;
8045 0 : res_op1 = _r1;
8046 : }
8047 0 : tree res_op2;
8048 0 : {
8049 0 : tree _o1[2], _r1;
8050 0 : _o1[0] = captures[0];
8051 0 : _o1[1] = captures[4];
8052 0 : _r1 = fold_build2_loc (loc, EQ_EXPR, type, _o1[0], _o1[1]);
8053 0 : if (EXPR_P (_r1))
8054 0 : goto next_after_fail1516;
8055 0 : res_op2 = _r1;
8056 : }
8057 0 : tree _r;
8058 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8059 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
8060 0 : return _r;
8061 : }
8062 215 : next_after_fail1516:;
8063 : }
8064 : }
8065 215 : break;
8066 : }
8067 27889663 : default:;
8068 : }
8069 27889663 : switch (TREE_CODE (_p0))
8070 : {
8071 41354 : case COND_EXPR:
8072 41354 : {
8073 41354 : tree _q20 = TREE_OPERAND (_p0, 0);
8074 41354 : tree _q21 = TREE_OPERAND (_p0, 1);
8075 41354 : tree _q22 = TREE_OPERAND (_p0, 2);
8076 41354 : switch (TREE_CODE (_p1))
8077 : {
8078 49 : case COND_EXPR:
8079 49 : {
8080 49 : tree _q60 = TREE_OPERAND (_p1, 0);
8081 49 : tree _q61 = TREE_OPERAND (_p1, 1);
8082 49 : tree _q62 = TREE_OPERAND (_p1, 2);
8083 49 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8084 : {
8085 3 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8086 : {
8087 3 : {
8088 3 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8089 3 : const enum tree_code eqne = EQ_EXPR;
8090 3 : if (!HONOR_NANS (captures[1])
8091 3 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8092 3 : && types_match (type, TREE_TYPE (captures[0]))
8093 3 : && expr_no_side_effects_p (captures[1])
8094 4 : && expr_no_side_effects_p (captures[2])
8095 : )
8096 : {
8097 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1517;
8098 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1517;
8099 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1517;
8100 1 : {
8101 1 : tree res_op0;
8102 1 : {
8103 1 : tree _o1[2], _r1;
8104 1 : {
8105 1 : tree _o2[2], _r2;
8106 1 : _o2[0] = captures[0];
8107 1 : _o2[1] = captures[3];
8108 1 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8109 1 : _o1[0] = _r2;
8110 : }
8111 1 : {
8112 1 : tree _o2[2], _r2;
8113 1 : _o2[0] = captures[1];
8114 1 : _o2[1] = captures[2];
8115 1 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8116 1 : _o1[1] = _r2;
8117 : }
8118 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8119 1 : res_op0 = _r1;
8120 : }
8121 1 : tree res_op1;
8122 1 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8123 1 : tree res_op2;
8124 1 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8125 1 : tree _r;
8126 1 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8127 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8128 1 : return _r;
8129 : }
8130 2 : next_after_fail1517:;
8131 : }
8132 : }
8133 : }
8134 : }
8135 48 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8136 : {
8137 19 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8138 : {
8139 19 : {
8140 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8141 19 : const enum tree_code eqne = EQ_EXPR;
8142 19 : if (!HONOR_NANS (captures[1])
8143 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8144 0 : && types_match (type, TREE_TYPE (captures[0]))
8145 0 : && expr_no_side_effects_p (captures[1])
8146 19 : && expr_no_side_effects_p (captures[2])
8147 : )
8148 : {
8149 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1518;
8150 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1518;
8151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1518;
8152 0 : {
8153 0 : tree res_op0;
8154 0 : {
8155 0 : tree _o1[2], _r1;
8156 0 : {
8157 0 : tree _o2[2], _r2;
8158 0 : _o2[0] = captures[0];
8159 0 : _o2[1] = captures[3];
8160 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8161 0 : _o1[0] = _r2;
8162 : }
8163 0 : {
8164 0 : tree _o2[2], _r2;
8165 0 : _o2[0] = captures[1];
8166 0 : _o2[1] = captures[2];
8167 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8168 0 : _o1[1] = _r2;
8169 : }
8170 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8171 0 : res_op0 = _r1;
8172 : }
8173 0 : tree res_op1;
8174 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8175 0 : tree res_op2;
8176 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8177 0 : tree _r;
8178 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8179 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8180 0 : return _r;
8181 : }
8182 19 : next_after_fail1518:;
8183 : }
8184 : }
8185 : }
8186 : }
8187 : break;
8188 : }
8189 : default:;
8190 : }
8191 : break;
8192 : }
8193 1059 : case VEC_COND_EXPR:
8194 1059 : {
8195 1059 : tree _q20 = TREE_OPERAND (_p0, 0);
8196 1059 : tree _q21 = TREE_OPERAND (_p0, 1);
8197 1059 : tree _q22 = TREE_OPERAND (_p0, 2);
8198 1059 : switch (TREE_CODE (_p1))
8199 : {
8200 187 : case VEC_COND_EXPR:
8201 187 : {
8202 187 : tree _q60 = TREE_OPERAND (_p1, 0);
8203 187 : tree _q61 = TREE_OPERAND (_p1, 1);
8204 187 : tree _q62 = TREE_OPERAND (_p1, 2);
8205 187 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8206 : {
8207 126 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8208 : {
8209 126 : {
8210 126 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8211 126 : const enum tree_code eqne = EQ_EXPR;
8212 126 : if (!HONOR_NANS (captures[1])
8213 6 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8214 6 : && types_match (type, TREE_TYPE (captures[0]))
8215 6 : && expr_no_side_effects_p (captures[1])
8216 132 : && expr_no_side_effects_p (captures[2])
8217 : )
8218 : {
8219 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1519;
8220 6 : {
8221 6 : tree res_op0;
8222 6 : {
8223 6 : tree _o1[2], _r1;
8224 6 : {
8225 6 : tree _o2[2], _r2;
8226 6 : _o2[0] = captures[0];
8227 6 : _o2[1] = captures[3];
8228 6 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8229 6 : _o1[0] = _r2;
8230 : }
8231 6 : {
8232 6 : tree _o2[2], _r2;
8233 6 : _o2[0] = captures[1];
8234 6 : _o2[1] = captures[2];
8235 6 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8236 6 : _o1[1] = _r2;
8237 : }
8238 6 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8239 6 : res_op0 = _r1;
8240 : }
8241 6 : tree res_op1;
8242 6 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8243 6 : tree res_op2;
8244 6 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8245 6 : tree _r;
8246 6 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8247 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8248 6 : return _r;
8249 : }
8250 0 : next_after_fail1519:;
8251 : }
8252 : }
8253 : }
8254 : }
8255 181 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8256 : {
8257 53 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8258 : {
8259 53 : {
8260 53 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8261 53 : const enum tree_code eqne = EQ_EXPR;
8262 53 : if (!HONOR_NANS (captures[1])
8263 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8264 0 : && types_match (type, TREE_TYPE (captures[0]))
8265 0 : && expr_no_side_effects_p (captures[1])
8266 53 : && expr_no_side_effects_p (captures[2])
8267 : )
8268 : {
8269 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1520;
8270 0 : {
8271 0 : tree res_op0;
8272 0 : {
8273 0 : tree _o1[2], _r1;
8274 0 : {
8275 0 : tree _o2[2], _r2;
8276 0 : _o2[0] = captures[0];
8277 0 : _o2[1] = captures[3];
8278 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8279 0 : _o1[0] = _r2;
8280 : }
8281 0 : {
8282 0 : tree _o2[2], _r2;
8283 0 : _o2[0] = captures[1];
8284 0 : _o2[1] = captures[2];
8285 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8286 0 : _o1[1] = _r2;
8287 : }
8288 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8289 0 : res_op0 = _r1;
8290 : }
8291 0 : tree res_op1;
8292 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8293 0 : tree res_op2;
8294 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8295 0 : tree _r;
8296 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8297 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8298 0 : return _r;
8299 : }
8300 0 : next_after_fail1520:;
8301 : }
8302 : }
8303 : }
8304 : }
8305 : break;
8306 : }
8307 : default:;
8308 : }
8309 : break;
8310 : }
8311 1130 : case LT_EXPR:
8312 1130 : {
8313 1130 : tree _q20 = TREE_OPERAND (_p0, 0);
8314 1130 : tree _q21 = TREE_OPERAND (_p0, 1);
8315 1130 : if (integer_truep (_p1))
8316 : {
8317 5 : {
8318 5 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8319 5 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8320 5 : if (res) return res;
8321 : }
8322 : }
8323 1130 : if (integer_zerop (_p1))
8324 : {
8325 414 : {
8326 414 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8327 414 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8328 414 : if (res) return res;
8329 : }
8330 : }
8331 : break;
8332 : }
8333 1555 : case LE_EXPR:
8334 1555 : {
8335 1555 : tree _q20 = TREE_OPERAND (_p0, 0);
8336 1555 : tree _q21 = TREE_OPERAND (_p0, 1);
8337 1555 : if (integer_truep (_p1))
8338 : {
8339 0 : {
8340 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8341 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8342 0 : if (res) return res;
8343 : }
8344 : }
8345 1555 : if (integer_zerop (_p1))
8346 : {
8347 691 : {
8348 691 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8349 691 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8350 691 : if (res) return res;
8351 : }
8352 : }
8353 : break;
8354 : }
8355 32624 : case EQ_EXPR:
8356 32624 : {
8357 32624 : tree _q20 = TREE_OPERAND (_p0, 0);
8358 32624 : tree _q21 = TREE_OPERAND (_p0, 1);
8359 32624 : if (integer_truep (_p1))
8360 : {
8361 48 : {
8362 48 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8363 48 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8364 48 : if (res) return res;
8365 : }
8366 : }
8367 32619 : if (integer_zerop (_p1))
8368 : {
8369 7681 : {
8370 7681 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8371 7681 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8372 7681 : if (res) return res;
8373 : }
8374 : }
8375 : break;
8376 : }
8377 12081 : case NE_EXPR:
8378 12081 : {
8379 12081 : tree _q20 = TREE_OPERAND (_p0, 0);
8380 12081 : tree _q21 = TREE_OPERAND (_p0, 1);
8381 12081 : if (integer_truep (_p1))
8382 : {
8383 126 : {
8384 126 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8385 126 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8386 126 : if (res) return res;
8387 : }
8388 : }
8389 11961 : if (integer_zerop (_p1))
8390 : {
8391 9911 : {
8392 9911 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8393 9911 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8394 9911 : if (res) return res;
8395 : }
8396 : }
8397 : break;
8398 : }
8399 6627 : case GE_EXPR:
8400 6627 : {
8401 6627 : tree _q20 = TREE_OPERAND (_p0, 0);
8402 6627 : tree _q21 = TREE_OPERAND (_p0, 1);
8403 6627 : if (integer_truep (_p1))
8404 : {
8405 0 : {
8406 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8407 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8408 0 : if (res) return res;
8409 : }
8410 : }
8411 6627 : if (integer_zerop (_p1))
8412 : {
8413 5510 : {
8414 5510 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8415 5510 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8416 5510 : if (res) return res;
8417 : }
8418 : }
8419 : break;
8420 : }
8421 69329 : case GT_EXPR:
8422 69329 : {
8423 69329 : tree _q20 = TREE_OPERAND (_p0, 0);
8424 69329 : tree _q21 = TREE_OPERAND (_p0, 1);
8425 69329 : if (integer_truep (_p1))
8426 : {
8427 0 : {
8428 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8429 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8430 0 : if (res) return res;
8431 : }
8432 : }
8433 69329 : if (integer_zerop (_p1))
8434 : {
8435 445 : {
8436 445 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8437 445 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8438 445 : if (res) return res;
8439 : }
8440 : }
8441 : break;
8442 : }
8443 1023 : case UNORDERED_EXPR:
8444 1023 : {
8445 1023 : tree _q20 = TREE_OPERAND (_p0, 0);
8446 1023 : tree _q21 = TREE_OPERAND (_p0, 1);
8447 1023 : if (integer_truep (_p1))
8448 : {
8449 0 : {
8450 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8451 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8452 0 : if (res) return res;
8453 : }
8454 : }
8455 1023 : if (integer_zerop (_p1))
8456 : {
8457 1017 : {
8458 1017 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8459 1017 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8460 1017 : if (res) return res;
8461 : }
8462 : }
8463 : break;
8464 : }
8465 0 : case ORDERED_EXPR:
8466 0 : {
8467 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8468 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8469 0 : if (integer_truep (_p1))
8470 : {
8471 0 : {
8472 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8473 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8474 0 : if (res) return res;
8475 : }
8476 : }
8477 0 : if (integer_zerop (_p1))
8478 : {
8479 0 : {
8480 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8481 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8482 0 : if (res) return res;
8483 : }
8484 : }
8485 : break;
8486 : }
8487 0 : case UNLT_EXPR:
8488 0 : {
8489 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8490 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8491 0 : if (integer_truep (_p1))
8492 : {
8493 0 : {
8494 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8495 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8496 0 : if (res) return res;
8497 : }
8498 : }
8499 0 : if (integer_zerop (_p1))
8500 : {
8501 0 : {
8502 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8503 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8504 0 : if (res) return res;
8505 : }
8506 : }
8507 : break;
8508 : }
8509 0 : case UNLE_EXPR:
8510 0 : {
8511 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8512 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8513 0 : if (integer_truep (_p1))
8514 : {
8515 0 : {
8516 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8517 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8518 0 : if (res) return res;
8519 : }
8520 : }
8521 0 : if (integer_zerop (_p1))
8522 : {
8523 0 : {
8524 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8525 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8526 0 : if (res) return res;
8527 : }
8528 : }
8529 : break;
8530 : }
8531 0 : case UNGT_EXPR:
8532 0 : {
8533 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8534 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8535 0 : if (integer_truep (_p1))
8536 : {
8537 0 : {
8538 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8539 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8540 0 : if (res) return res;
8541 : }
8542 : }
8543 0 : if (integer_zerop (_p1))
8544 : {
8545 0 : {
8546 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8547 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8548 0 : if (res) return res;
8549 : }
8550 : }
8551 : break;
8552 : }
8553 0 : case UNGE_EXPR:
8554 0 : {
8555 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8556 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8557 0 : if (integer_truep (_p1))
8558 : {
8559 0 : {
8560 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8561 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8562 0 : if (res) return res;
8563 : }
8564 : }
8565 0 : if (integer_zerop (_p1))
8566 : {
8567 0 : {
8568 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8569 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8570 0 : if (res) return res;
8571 : }
8572 : }
8573 : break;
8574 : }
8575 0 : case UNEQ_EXPR:
8576 0 : {
8577 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8578 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8579 0 : if (integer_truep (_p1))
8580 : {
8581 0 : {
8582 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8583 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8584 0 : if (res) return res;
8585 : }
8586 : }
8587 0 : if (integer_zerop (_p1))
8588 : {
8589 0 : {
8590 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8591 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8592 0 : if (res) return res;
8593 : }
8594 : }
8595 : break;
8596 : }
8597 0 : case LTGT_EXPR:
8598 0 : {
8599 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8600 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8601 0 : if (integer_truep (_p1))
8602 : {
8603 0 : {
8604 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8605 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8606 0 : if (res) return res;
8607 : }
8608 : }
8609 0 : if (integer_zerop (_p1))
8610 : {
8611 0 : {
8612 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8613 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8614 0 : if (res) return res;
8615 : }
8616 : }
8617 : break;
8618 : }
8619 154926 : case MINUS_EXPR:
8620 154926 : {
8621 154926 : tree _q20 = TREE_OPERAND (_p0, 0);
8622 154926 : tree _q21 = TREE_OPERAND (_p0, 1);
8623 154926 : if (integer_zerop (_p1))
8624 : {
8625 58178 : {
8626 58178 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8627 58178 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, EQ_EXPR);
8628 58178 : if (res) return res;
8629 : }
8630 : }
8631 : break;
8632 : }
8633 32617 : case POINTER_DIFF_EXPR:
8634 32617 : {
8635 32617 : tree _q20 = TREE_OPERAND (_p0, 0);
8636 32617 : tree _q21 = TREE_OPERAND (_p0, 1);
8637 32617 : if (integer_zerop (_p1))
8638 : {
8639 1533 : {
8640 1533 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8641 1533 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, EQ_EXPR);
8642 1533 : if (res) return res;
8643 : }
8644 : }
8645 : break;
8646 : }
8647 65556 : case MULT_EXPR:
8648 65556 : {
8649 65556 : tree _q20 = TREE_OPERAND (_p0, 0);
8650 65556 : tree _q21 = TREE_OPERAND (_p0, 1);
8651 65556 : switch (TREE_CODE (_q21))
8652 : {
8653 57653 : case INTEGER_CST:
8654 57653 : {
8655 57653 : switch (TREE_CODE (_p1))
8656 : {
8657 9695 : case INTEGER_CST:
8658 9695 : {
8659 9695 : {
8660 9695 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8661 9695 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, EQ_EXPR);
8662 9695 : if (res) return res;
8663 : }
8664 8777 : break;
8665 : }
8666 56735 : default:;
8667 : }
8668 56735 : if (integer_zerop (_p1))
8669 : {
8670 4248 : {
8671 4248 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8672 4248 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8673 4248 : if (res) return res;
8674 : }
8675 : }
8676 : break;
8677 : }
8678 : default:;
8679 : }
8680 : break;
8681 : }
8682 27804137 : default:;
8683 : }
8684 27804137 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8685 : {
8686 115485 : {
8687 115485 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8688 115485 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, EQ_EXPR);
8689 115485 : if (res) return res;
8690 : }
8691 : }
8692 27694233 : switch (TREE_CODE (_p0))
8693 : {
8694 5180786 : CASE_CONVERT:
8695 5180786 : {
8696 5180786 : tree _q20 = TREE_OPERAND (_p0, 0);
8697 5180786 : switch (TREE_CODE (_p1))
8698 : {
8699 1588379 : CASE_CONVERT:
8700 1588379 : {
8701 1588379 : tree _q40 = TREE_OPERAND (_p1, 0);
8702 1588379 : {
8703 1588379 : tree _q40_pops[1];
8704 1588379 : if (tree_maybe_bit_not (_q40, _q40_pops))
8705 : {
8706 0 : tree _q50 = _q40_pops[0];
8707 0 : {
8708 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8709 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR);
8710 0 : if (res) return res;
8711 : }
8712 : }
8713 : }
8714 1588379 : break;
8715 : }
8716 5180786 : default:;
8717 : }
8718 5180786 : {
8719 5180786 : tree _q20_pops[1];
8720 5180786 : if (tree_maybe_bit_not (_q20, _q20_pops))
8721 : {
8722 232 : tree _q30 = _q20_pops[0];
8723 232 : switch (TREE_CODE (_p1))
8724 : {
8725 74 : CASE_CONVERT:
8726 74 : {
8727 74 : tree _q50 = TREE_OPERAND (_p1, 0);
8728 74 : {
8729 74 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
8730 74 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR);
8731 74 : if (res) return res;
8732 : }
8733 74 : break;
8734 : }
8735 : default:;
8736 : }
8737 : }
8738 : }
8739 5180786 : break;
8740 : }
8741 27694233 : default:;
8742 : }
8743 27694233 : {
8744 27694233 : tree _p1_pops[1];
8745 27694233 : if (tree_maybe_bit_not (_p1, _p1_pops))
8746 : {
8747 19573648 : tree _q30 = _p1_pops[0];
8748 19573648 : {
8749 19573648 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8750 19573648 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR);
8751 19573648 : if (res) return res;
8752 : }
8753 : }
8754 : }
8755 27694231 : switch (TREE_CODE (_p0))
8756 : {
8757 403 : case BIT_NOT_EXPR:
8758 403 : {
8759 403 : tree _q20 = TREE_OPERAND (_p0, 0);
8760 403 : switch (TREE_CODE (_p1))
8761 : {
8762 1 : case BIT_NOT_EXPR:
8763 1 : {
8764 1 : tree _q40 = TREE_OPERAND (_p1, 0);
8765 1 : {
8766 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
8767 1 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, EQ_EXPR);
8768 1 : if (res) return res;
8769 : }
8770 0 : break;
8771 : }
8772 402 : default:;
8773 : }
8774 402 : {
8775 402 : tree _p1_pops[1];
8776 402 : if (tree_nop_convert (_p1, _p1_pops))
8777 : {
8778 3 : tree _q40 = _p1_pops[0];
8779 3 : switch (TREE_CODE (_q40))
8780 : {
8781 0 : case BIT_NOT_EXPR:
8782 0 : {
8783 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8784 0 : {
8785 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
8786 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, EQ_EXPR);
8787 0 : if (res) return res;
8788 : }
8789 0 : break;
8790 : }
8791 : default:;
8792 : }
8793 : }
8794 : }
8795 402 : if (CONSTANT_CLASS_P (_p1))
8796 : {
8797 195 : {
8798 195 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8799 195 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8800 195 : if (res) return res;
8801 : }
8802 : }
8803 : break;
8804 : }
8805 27694035 : default:;
8806 : }
8807 27694035 : {
8808 27694035 : tree _p0_pops[1];
8809 27694035 : if (tree_maybe_bit_not (_p0, _p0_pops))
8810 : {
8811 99330 : tree _q20 = _p0_pops[0];
8812 99330 : {
8813 99330 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
8814 99330 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, EQ_EXPR);
8815 99330 : if (res) return res;
8816 : }
8817 : }
8818 : }
8819 27694034 : {
8820 27694034 : tree _p0_pops[1];
8821 27694034 : if (tree_nop_convert (_p0, _p0_pops))
8822 : {
8823 2987983 : tree _q20 = _p0_pops[0];
8824 2987983 : switch (TREE_CODE (_q20))
8825 : {
8826 41 : case BIT_NOT_EXPR:
8827 41 : {
8828 41 : tree _q30 = TREE_OPERAND (_q20, 0);
8829 41 : switch (TREE_CODE (_p1))
8830 : {
8831 0 : case BIT_NOT_EXPR:
8832 0 : {
8833 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8834 0 : {
8835 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
8836 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, EQ_EXPR);
8837 0 : if (res) return res;
8838 : }
8839 0 : break;
8840 : }
8841 41 : default:;
8842 : }
8843 41 : {
8844 41 : tree _p1_pops[1];
8845 41 : if (tree_nop_convert (_p1, _p1_pops))
8846 : {
8847 0 : tree _q50 = _p1_pops[0];
8848 0 : switch (TREE_CODE (_q50))
8849 : {
8850 0 : case BIT_NOT_EXPR:
8851 0 : {
8852 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8853 0 : {
8854 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
8855 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, EQ_EXPR);
8856 0 : if (res) return res;
8857 : }
8858 0 : break;
8859 : }
8860 : default:;
8861 : }
8862 : }
8863 : }
8864 41 : if (CONSTANT_CLASS_P (_p1))
8865 : {
8866 41 : {
8867 41 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
8868 41 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8869 41 : if (res) return res;
8870 : }
8871 : }
8872 : break;
8873 : }
8874 : default:;
8875 : }
8876 : }
8877 : }
8878 27693993 : switch (TREE_CODE (_p1))
8879 : {
8880 967607 : case REAL_CST:
8881 967607 : {
8882 967607 : {
8883 967607 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8884 967607 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, EQ_EXPR);
8885 967607 : if (res) return res;
8886 : }
8887 966591 : break;
8888 : }
8889 27692977 : default:;
8890 : }
8891 27692977 : switch (TREE_CODE (_p0))
8892 : {
8893 669594 : case PLUS_EXPR:
8894 669594 : {
8895 669594 : tree _q20 = TREE_OPERAND (_p0, 0);
8896 669594 : tree _q21 = TREE_OPERAND (_p0, 1);
8897 669594 : switch (TREE_CODE (_q21))
8898 : {
8899 577 : case REAL_CST:
8900 577 : {
8901 577 : switch (TREE_CODE (_p1))
8902 : {
8903 407 : case REAL_CST:
8904 407 : {
8905 407 : {
8906 407 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8907 407 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR);
8908 407 : if (res) return res;
8909 : }
8910 407 : break;
8911 : }
8912 : default:;
8913 : }
8914 : break;
8915 : }
8916 : default:;
8917 : }
8918 : break;
8919 : }
8920 96748 : case MINUS_EXPR:
8921 96748 : {
8922 96748 : tree _q20 = TREE_OPERAND (_p0, 0);
8923 96748 : tree _q21 = TREE_OPERAND (_p0, 1);
8924 96748 : switch (TREE_CODE (_q21))
8925 : {
8926 62 : case REAL_CST:
8927 62 : {
8928 62 : switch (TREE_CODE (_p1))
8929 : {
8930 62 : case REAL_CST:
8931 62 : {
8932 62 : {
8933 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8934 62 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, MINUS_EXPR, EQ_EXPR);
8935 62 : if (res) return res;
8936 : }
8937 62 : break;
8938 : }
8939 : default:;
8940 : }
8941 : break;
8942 : }
8943 96748 : default:;
8944 : }
8945 96748 : switch (TREE_CODE (_q20))
8946 : {
8947 274 : case REAL_CST:
8948 274 : {
8949 274 : switch (TREE_CODE (_p1))
8950 : {
8951 245 : case REAL_CST:
8952 245 : {
8953 245 : {
8954 245 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8955 245 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, EQ_EXPR);
8956 245 : if (res) return res;
8957 : }
8958 244 : break;
8959 : }
8960 : default:;
8961 : }
8962 : break;
8963 : }
8964 : default:;
8965 : }
8966 : break;
8967 : }
8968 2775 : case FLOAT_EXPR:
8969 2775 : {
8970 2775 : tree _q20 = TREE_OPERAND (_p0, 0);
8971 2775 : switch (TREE_CODE (_p1))
8972 : {
8973 2 : case FLOAT_EXPR:
8974 2 : {
8975 2 : tree _q40 = TREE_OPERAND (_p1, 0);
8976 2 : {
8977 2 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8978 2 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8979 2 : if (res) return res;
8980 : }
8981 1 : break;
8982 : }
8983 278 : case REAL_CST:
8984 278 : {
8985 278 : {
8986 278 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8987 278 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
8988 278 : if (res) return res;
8989 : }
8990 226 : break;
8991 : }
8992 : default:;
8993 : }
8994 : break;
8995 : }
8996 7255 : case EXACT_DIV_EXPR:
8997 7255 : {
8998 7255 : tree _q20 = TREE_OPERAND (_p0, 0);
8999 7255 : tree _q21 = TREE_OPERAND (_p0, 1);
9000 7255 : switch (TREE_CODE (_p1))
9001 : {
9002 33 : case INTEGER_CST:
9003 33 : {
9004 33 : {
9005 33 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9006 33 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, EQ_EXPR);
9007 33 : if (res) return res;
9008 : }
9009 0 : break;
9010 : }
9011 : default:;
9012 : }
9013 : break;
9014 : }
9015 1327 : case NEGATE_EXPR:
9016 1327 : {
9017 1327 : tree _q20 = TREE_OPERAND (_p0, 0);
9018 1327 : switch (TREE_CODE (_p1))
9019 : {
9020 1 : case NEGATE_EXPR:
9021 1 : {
9022 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9023 1 : {
9024 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9025 1 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9026 1 : if (res) return res;
9027 : }
9028 0 : break;
9029 : }
9030 1326 : default:;
9031 : }
9032 1326 : if (CONSTANT_CLASS_P (_p1))
9033 : {
9034 210 : {
9035 210 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9036 210 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
9037 210 : if (res) return res;
9038 : }
9039 : }
9040 : break;
9041 : }
9042 1430 : case ABS_EXPR:
9043 1430 : {
9044 1430 : tree _q20 = TREE_OPERAND (_p0, 0);
9045 1430 : if (zerop (_p1))
9046 : {
9047 66 : {
9048 66 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9049 66 : const enum tree_code eqne = EQ_EXPR;
9050 66 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1521;
9051 66 : {
9052 66 : tree res_op0;
9053 66 : res_op0 = captures[0];
9054 66 : tree res_op1;
9055 66 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9056 66 : tree _r;
9057 66 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9058 66 : if (TREE_SIDE_EFFECTS (captures[1]))
9059 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9060 66 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9061 66 : return _r;
9062 : }
9063 0 : next_after_fail1521:;
9064 : }
9065 : }
9066 : break;
9067 : }
9068 1 : case ABSU_EXPR:
9069 1 : {
9070 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9071 1 : if (zerop (_p1))
9072 : {
9073 0 : {
9074 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9075 0 : const enum tree_code eqne = EQ_EXPR;
9076 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1522;
9077 0 : {
9078 0 : tree res_op0;
9079 0 : res_op0 = captures[0];
9080 0 : tree res_op1;
9081 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9082 0 : tree _r;
9083 0 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9084 0 : if (TREE_SIDE_EFFECTS (captures[1]))
9085 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9086 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9087 0 : return _r;
9088 : }
9089 0 : next_after_fail1522:;
9090 : }
9091 : }
9092 : break;
9093 : }
9094 5180709 : CASE_CONVERT:
9095 5180709 : {
9096 5180709 : tree _q20 = TREE_OPERAND (_p0, 0);
9097 5180709 : switch (TREE_CODE (_p1))
9098 : {
9099 1588379 : CASE_CONVERT:
9100 1588379 : {
9101 1588379 : tree _q40 = TREE_OPERAND (_p1, 0);
9102 1588379 : {
9103 1588379 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9104 1588379 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, EQ_EXPR);
9105 1588379 : if (res) return res;
9106 : }
9107 911897 : break;
9108 : }
9109 4504227 : default:;
9110 : }
9111 4504227 : {
9112 4504227 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9113 4504227 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, EQ_EXPR);
9114 4504227 : if (res) return res;
9115 : }
9116 2319584 : switch (TREE_CODE (_q20))
9117 : {
9118 3 : case BIT_IOR_EXPR:
9119 3 : {
9120 3 : tree _q30 = TREE_OPERAND (_q20, 0);
9121 3 : tree _q31 = TREE_OPERAND (_q20, 1);
9122 3 : switch (TREE_CODE (_q31))
9123 : {
9124 0 : case INTEGER_CST:
9125 0 : {
9126 0 : switch (TREE_CODE (_p1))
9127 : {
9128 0 : case INTEGER_CST:
9129 0 : {
9130 0 : {
9131 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9132 0 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
9133 0 : if (res) return res;
9134 : }
9135 0 : break;
9136 : }
9137 : default:;
9138 : }
9139 : break;
9140 : }
9141 : default:;
9142 : }
9143 : break;
9144 : }
9145 : default:;
9146 : }
9147 : break;
9148 : }
9149 9055920 : case SSA_NAME:
9150 9055920 : {
9151 9055920 : switch (TREE_CODE (_p1))
9152 : {
9153 831977 : case ADDR_EXPR:
9154 831977 : {
9155 831977 : {
9156 831977 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9157 831977 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, EQ_EXPR);
9158 831977 : if (res) return res;
9159 : }
9160 831977 : break;
9161 : }
9162 : default:;
9163 : }
9164 : break;
9165 : }
9166 33744 : case BIT_IOR_EXPR:
9167 33744 : {
9168 33744 : tree _q20 = TREE_OPERAND (_p0, 0);
9169 33744 : tree _q21 = TREE_OPERAND (_p0, 1);
9170 33744 : switch (TREE_CODE (_q21))
9171 : {
9172 1519 : case INTEGER_CST:
9173 1519 : {
9174 1519 : switch (TREE_CODE (_p1))
9175 : {
9176 476 : case INTEGER_CST:
9177 476 : {
9178 476 : {
9179 476 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9180 476 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, EQ_EXPR);
9181 476 : if (res) return res;
9182 : }
9183 476 : break;
9184 : }
9185 : default:;
9186 : }
9187 : break;
9188 : }
9189 : default:;
9190 : }
9191 : break;
9192 : }
9193 593 : case BIT_XOR_EXPR:
9194 593 : {
9195 593 : tree _q20 = TREE_OPERAND (_p0, 0);
9196 593 : tree _q21 = TREE_OPERAND (_p0, 1);
9197 593 : if (integer_zerop (_p1))
9198 : {
9199 163 : {
9200 163 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9201 163 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, EQ_EXPR);
9202 163 : if (res) return res;
9203 : }
9204 : }
9205 430 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9206 : {
9207 29 : {
9208 29 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9209 29 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR);
9210 29 : if (res) return res;
9211 : }
9212 : }
9213 401 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9214 : {
9215 30 : {
9216 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9217 30 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR);
9218 30 : if (res) return res;
9219 : }
9220 : }
9221 : break;
9222 : }
9223 2014819 : case CALL_EXPR:
9224 2014819 : switch (get_call_combined_fn (_p0))
9225 : {
9226 3 : case CFN_BUILT_IN_SQRTF:
9227 3 : if (call_expr_nargs (_p0) == 1)
9228 : {
9229 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9230 3 : switch (TREE_CODE (_p1))
9231 : {
9232 0 : case REAL_CST:
9233 0 : {
9234 0 : {
9235 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9236 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9237 0 : if (res) return res;
9238 : }
9239 0 : break;
9240 : }
9241 3 : case CALL_EXPR:
9242 3 : switch (get_call_combined_fn (_p1))
9243 : {
9244 3 : case CFN_BUILT_IN_SQRTF:
9245 3 : if (call_expr_nargs (_p1) == 1)
9246 : {
9247 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9248 3 : {
9249 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9250 3 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR);
9251 3 : if (res) return res;
9252 : }
9253 : }
9254 : break;
9255 : default:;
9256 : }
9257 : break;
9258 : default:;
9259 : }
9260 : }
9261 : break;
9262 3 : case CFN_BUILT_IN_SQRTL:
9263 3 : if (call_expr_nargs (_p0) == 1)
9264 : {
9265 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9266 3 : switch (TREE_CODE (_p1))
9267 : {
9268 0 : case REAL_CST:
9269 0 : {
9270 0 : {
9271 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9272 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9273 0 : if (res) return res;
9274 : }
9275 0 : break;
9276 : }
9277 3 : case CALL_EXPR:
9278 3 : switch (get_call_combined_fn (_p1))
9279 : {
9280 3 : case CFN_BUILT_IN_SQRTL:
9281 3 : if (call_expr_nargs (_p1) == 1)
9282 : {
9283 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9284 3 : {
9285 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9286 3 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR);
9287 3 : if (res) return res;
9288 : }
9289 : }
9290 : break;
9291 : default:;
9292 : }
9293 : break;
9294 : default:;
9295 : }
9296 : }
9297 : break;
9298 0 : case CFN_BUILT_IN_SQRT:
9299 0 : if (call_expr_nargs (_p0) == 1)
9300 : {
9301 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9302 0 : switch (TREE_CODE (_p1))
9303 : {
9304 0 : case REAL_CST:
9305 0 : {
9306 0 : {
9307 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9308 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9309 0 : if (res) return res;
9310 : }
9311 0 : break;
9312 : }
9313 0 : case CALL_EXPR:
9314 0 : switch (get_call_combined_fn (_p1))
9315 : {
9316 0 : case CFN_BUILT_IN_SQRT:
9317 0 : if (call_expr_nargs (_p1) == 1)
9318 : {
9319 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9320 0 : {
9321 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9322 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, EQ_EXPR);
9323 0 : if (res) return res;
9324 : }
9325 : }
9326 : break;
9327 : default:;
9328 : }
9329 : break;
9330 : default:;
9331 : }
9332 : }
9333 : break;
9334 0 : case CFN_SQRT:
9335 0 : if (call_expr_nargs (_p0) == 1)
9336 : {
9337 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9338 0 : switch (TREE_CODE (_p1))
9339 : {
9340 0 : case REAL_CST:
9341 0 : {
9342 0 : {
9343 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9344 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9345 0 : if (res) return res;
9346 : }
9347 0 : break;
9348 : }
9349 0 : case CALL_EXPR:
9350 0 : switch (get_call_combined_fn (_p1))
9351 : {
9352 0 : case CFN_SQRT:
9353 0 : if (call_expr_nargs (_p1) == 1)
9354 : {
9355 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9356 0 : {
9357 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9358 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_SQRT, EQ_EXPR);
9359 0 : if (res) return res;
9360 : }
9361 : }
9362 : break;
9363 : default:;
9364 : }
9365 : break;
9366 : default:;
9367 : }
9368 : }
9369 : break;
9370 : default:;
9371 : }
9372 : break;
9373 24831276 : default:;
9374 : }
9375 24831276 : switch (TREE_CODE (_p1))
9376 : {
9377 22 : case BIT_XOR_EXPR:
9378 22 : {
9379 22 : tree _q30 = TREE_OPERAND (_p1, 0);
9380 22 : tree _q31 = TREE_OPERAND (_p1, 1);
9381 22 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9382 : {
9383 0 : {
9384 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9385 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR);
9386 0 : if (res) return res;
9387 : }
9388 : }
9389 22 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9390 : {
9391 0 : {
9392 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9393 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, EQ_EXPR);
9394 0 : if (res) return res;
9395 : }
9396 : }
9397 : break;
9398 : }
9399 24831276 : default:;
9400 : }
9401 24831276 : switch (TREE_CODE (_p0))
9402 : {
9403 849427 : case BIT_AND_EXPR:
9404 849427 : {
9405 849427 : tree _q20 = TREE_OPERAND (_p0, 0);
9406 849427 : tree _q21 = TREE_OPERAND (_p0, 1);
9407 849427 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9408 : {
9409 137 : {
9410 137 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9411 137 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, EQ_EXPR);
9412 137 : if (res) return res;
9413 : }
9414 : }
9415 849426 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9416 : {
9417 144644 : {
9418 144644 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9419 144644 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, EQ_EXPR);
9420 144644 : if (res) return res;
9421 : }
9422 : }
9423 : break;
9424 : }
9425 24831275 : default:;
9426 : }
9427 24831275 : switch (TREE_CODE (_p1))
9428 : {
9429 25421 : case BIT_AND_EXPR:
9430 25421 : {
9431 25421 : tree _q30 = TREE_OPERAND (_p1, 0);
9432 25421 : tree _q31 = TREE_OPERAND (_p1, 1);
9433 25421 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9434 : {
9435 0 : {
9436 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9437 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, EQ_EXPR);
9438 0 : if (res) return res;
9439 : }
9440 : }
9441 25421 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9442 : {
9443 0 : {
9444 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9445 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, EQ_EXPR);
9446 0 : if (res) return res;
9447 : }
9448 : }
9449 : break;
9450 : }
9451 24831275 : default:;
9452 : }
9453 24831275 : switch (TREE_CODE (_p0))
9454 : {
9455 2319584 : CASE_CONVERT:
9456 2319584 : {
9457 2319584 : tree _q20 = TREE_OPERAND (_p0, 0);
9458 2319584 : switch (TREE_CODE (_q20))
9459 : {
9460 2 : case BIT_AND_EXPR:
9461 2 : {
9462 2 : tree _q30 = TREE_OPERAND (_q20, 0);
9463 2 : tree _q31 = TREE_OPERAND (_q20, 1);
9464 2 : switch (TREE_CODE (_q30))
9465 : {
9466 0 : CASE_CONVERT:
9467 0 : {
9468 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9469 0 : switch (TREE_CODE (_q31))
9470 : {
9471 0 : case INTEGER_CST:
9472 0 : {
9473 0 : switch (TREE_CODE (_p1))
9474 : {
9475 0 : CASE_CONVERT:
9476 0 : {
9477 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9478 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9479 : {
9480 0 : {
9481 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9482 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9483 0 : if (res) return res;
9484 : }
9485 : }
9486 : break;
9487 : }
9488 : default:;
9489 : }
9490 : break;
9491 : }
9492 : default:;
9493 : }
9494 : break;
9495 : }
9496 : default:;
9497 : }
9498 : break;
9499 : }
9500 2319584 : default:;
9501 : }
9502 2319584 : switch (TREE_CODE (_p1))
9503 : {
9504 911897 : CASE_CONVERT:
9505 911897 : {
9506 911897 : tree _q40 = TREE_OPERAND (_p1, 0);
9507 911897 : switch (TREE_CODE (_q40))
9508 : {
9509 7 : case BIT_AND_EXPR:
9510 7 : {
9511 7 : tree _q50 = TREE_OPERAND (_q40, 0);
9512 7 : tree _q51 = TREE_OPERAND (_q40, 1);
9513 7 : switch (TREE_CODE (_q50))
9514 : {
9515 7 : CASE_CONVERT:
9516 7 : {
9517 7 : tree _q60 = TREE_OPERAND (_q50, 0);
9518 7 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9519 : {
9520 0 : switch (TREE_CODE (_q51))
9521 : {
9522 0 : case INTEGER_CST:
9523 0 : {
9524 0 : {
9525 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9526 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, EQ_EXPR);
9527 0 : if (res) return res;
9528 : }
9529 0 : break;
9530 : }
9531 : default:;
9532 : }
9533 : }
9534 : break;
9535 : }
9536 : default:;
9537 : }
9538 : break;
9539 : }
9540 : default:;
9541 : }
9542 : break;
9543 : }
9544 : default:;
9545 : }
9546 : break;
9547 : }
9548 33744 : case BIT_IOR_EXPR:
9549 33744 : {
9550 33744 : tree _q20 = TREE_OPERAND (_p0, 0);
9551 33744 : tree _q21 = TREE_OPERAND (_p0, 1);
9552 33744 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9553 : {
9554 24 : {
9555 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9556 24 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9557 24 : if (res) return res;
9558 : }
9559 : }
9560 33744 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9561 : {
9562 46 : {
9563 46 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9564 46 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9565 46 : if (res) return res;
9566 : }
9567 : }
9568 : break;
9569 : }
9570 24831275 : default:;
9571 : }
9572 24831275 : switch (TREE_CODE (_p1))
9573 : {
9574 618 : case BIT_IOR_EXPR:
9575 618 : {
9576 618 : tree _q30 = TREE_OPERAND (_p1, 0);
9577 618 : tree _q31 = TREE_OPERAND (_p1, 1);
9578 618 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9579 : {
9580 0 : {
9581 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9582 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9583 0 : if (res) return res;
9584 : }
9585 : }
9586 618 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9587 : {
9588 0 : {
9589 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9590 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, EQ_EXPR);
9591 0 : if (res) return res;
9592 : }
9593 : }
9594 : break;
9595 : }
9596 24831275 : default:;
9597 : }
9598 24831275 : switch (TREE_CODE (_p0))
9599 : {
9600 2319584 : CASE_CONVERT:
9601 2319584 : {
9602 2319584 : tree _q20 = TREE_OPERAND (_p0, 0);
9603 2319584 : switch (TREE_CODE (_q20))
9604 : {
9605 984 : case BIT_XOR_EXPR:
9606 984 : {
9607 984 : tree _q30 = TREE_OPERAND (_q20, 0);
9608 984 : tree _q31 = TREE_OPERAND (_q20, 1);
9609 984 : switch (TREE_CODE (_q31))
9610 : {
9611 7 : case INTEGER_CST:
9612 7 : {
9613 7 : switch (TREE_CODE (_p1))
9614 : {
9615 0 : case INTEGER_CST:
9616 0 : {
9617 0 : {
9618 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9619 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
9620 0 : if (res) return res;
9621 : }
9622 0 : break;
9623 : }
9624 : default:;
9625 : }
9626 : break;
9627 : }
9628 : default:;
9629 : }
9630 : break;
9631 : }
9632 : default:;
9633 : }
9634 : break;
9635 : }
9636 371 : case BIT_XOR_EXPR:
9637 371 : {
9638 371 : tree _q20 = TREE_OPERAND (_p0, 0);
9639 371 : tree _q21 = TREE_OPERAND (_p0, 1);
9640 371 : switch (TREE_CODE (_q21))
9641 : {
9642 103 : case INTEGER_CST:
9643 103 : {
9644 103 : switch (TREE_CODE (_p1))
9645 : {
9646 16 : case INTEGER_CST:
9647 16 : {
9648 16 : {
9649 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9650 16 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, EQ_EXPR);
9651 16 : if (res) return res;
9652 : }
9653 0 : break;
9654 : }
9655 : default:;
9656 : }
9657 : break;
9658 : }
9659 : default:;
9660 : }
9661 : break;
9662 : }
9663 24831259 : default:;
9664 : }
9665 24831259 : {
9666 24831259 : tree _p0_pops[1];
9667 24831259 : if (tree_nop_convert (_p0, _p0_pops))
9668 : {
9669 1957454 : tree _q20 = _p0_pops[0];
9670 1957454 : if (integer_zerop (_p1))
9671 : {
9672 461598 : {
9673 461598 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9674 461598 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9675 461598 : if (res) return res;
9676 : }
9677 : }
9678 : }
9679 : }
9680 24519098 : if (integer_zerop (_p1))
9681 : {
9682 9857569 : {
9683 9857569 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9684 9857569 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, EQ_EXPR);
9685 9857569 : if (res) return res;
9686 : }
9687 : }
9688 24445347 : switch (TREE_CODE (_p0))
9689 : {
9690 849426 : case BIT_AND_EXPR:
9691 849426 : {
9692 849426 : tree _q20 = TREE_OPERAND (_p0, 0);
9693 849426 : tree _q21 = TREE_OPERAND (_p0, 1);
9694 849426 : switch (TREE_CODE (_p1))
9695 : {
9696 25117 : case BIT_AND_EXPR:
9697 25117 : {
9698 25117 : tree _q50 = TREE_OPERAND (_p1, 0);
9699 25117 : tree _q51 = TREE_OPERAND (_p1, 1);
9700 25117 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9701 : {
9702 24592 : {
9703 24592 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9704 24592 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9705 24592 : if (res) return res;
9706 : }
9707 : }
9708 525 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9709 : {
9710 28 : {
9711 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9712 28 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9713 28 : if (res) return res;
9714 : }
9715 : }
9716 497 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9717 : {
9718 28 : {
9719 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9720 28 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9721 28 : if (res) return res;
9722 : }
9723 : }
9724 469 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9725 : {
9726 28 : {
9727 28 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
9728 28 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, EQ_EXPR);
9729 28 : if (res) return res;
9730 : }
9731 : }
9732 : break;
9733 : }
9734 824750 : default:;
9735 : }
9736 824750 : if (integer_pow2p (_q21))
9737 : {
9738 284170 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9739 : {
9740 111755 : {
9741 111755 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9742 111755 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
9743 111755 : if (res) return res;
9744 : }
9745 : }
9746 : }
9747 713015 : switch (TREE_CODE (_q20))
9748 : {
9749 49173 : CASE_CONVERT:
9750 49173 : {
9751 49173 : tree _q30 = TREE_OPERAND (_q20, 0);
9752 49173 : if (integer_pow2p (_q21))
9753 : {
9754 10861 : if (integer_zerop (_p1))
9755 : {
9756 10859 : {
9757 10859 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
9758 10859 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
9759 10859 : if (res) return res;
9760 : }
9761 : }
9762 : }
9763 : break;
9764 : }
9765 712058 : default:;
9766 : }
9767 712058 : if (integer_pow2p (_q21))
9768 : {
9769 171478 : if (integer_zerop (_p1))
9770 : {
9771 171321 : {
9772 171321 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
9773 171321 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, EQ_EXPR, GE_EXPR);
9774 171321 : if (res) return res;
9775 : }
9776 : }
9777 : }
9778 : break;
9779 : }
9780 1208 : case GE_EXPR:
9781 1208 : {
9782 1208 : tree _q20 = TREE_OPERAND (_p0, 0);
9783 1208 : tree _q21 = TREE_OPERAND (_p0, 1);
9784 1208 : if (integer_zerop (_q21))
9785 : {
9786 95 : switch (TREE_CODE (_p1))
9787 : {
9788 5 : case GE_EXPR:
9789 5 : {
9790 5 : tree _q50 = TREE_OPERAND (_p1, 0);
9791 5 : tree _q51 = TREE_OPERAND (_p1, 1);
9792 5 : if (integer_zerop (_q51))
9793 : {
9794 5 : {
9795 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9796 5 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR, GE_EXPR);
9797 5 : if (res) return res;
9798 : }
9799 : }
9800 : break;
9801 : }
9802 1 : case LT_EXPR:
9803 1 : {
9804 1 : tree _q50 = TREE_OPERAND (_p1, 0);
9805 1 : tree _q51 = TREE_OPERAND (_p1, 1);
9806 1 : if (integer_zerop (_q51))
9807 : {
9808 1 : {
9809 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
9810 1 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
9811 1 : if (res) return res;
9812 : }
9813 : }
9814 : break;
9815 : }
9816 : default:;
9817 : }
9818 : }
9819 : break;
9820 : }
9821 835 : case LT_EXPR:
9822 835 : {
9823 835 : tree _q20 = TREE_OPERAND (_p0, 0);
9824 835 : tree _q21 = TREE_OPERAND (_p0, 1);
9825 835 : if (integer_zerop (_q21))
9826 : {
9827 138 : switch (TREE_CODE (_p1))
9828 : {
9829 11 : case LT_EXPR:
9830 11 : {
9831 11 : tree _q50 = TREE_OPERAND (_p1, 0);
9832 11 : tree _q51 = TREE_OPERAND (_p1, 1);
9833 11 : if (integer_zerop (_q51))
9834 : {
9835 9 : {
9836 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9837 9 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, LT_EXPR, EQ_EXPR, GE_EXPR);
9838 9 : if (res) return res;
9839 : }
9840 : }
9841 : break;
9842 : }
9843 1 : case GE_EXPR:
9844 1 : {
9845 1 : tree _q50 = TREE_OPERAND (_p1, 0);
9846 1 : tree _q51 = TREE_OPERAND (_p1, 1);
9847 1 : if (integer_zerop (_q51))
9848 : {
9849 1 : {
9850 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
9851 1 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
9852 1 : if (res) return res;
9853 : }
9854 : }
9855 : break;
9856 : }
9857 : default:;
9858 : }
9859 : }
9860 : break;
9861 : }
9862 33744 : case BIT_IOR_EXPR:
9863 33744 : {
9864 33744 : tree _q20 = TREE_OPERAND (_p0, 0);
9865 33744 : tree _q21 = TREE_OPERAND (_p0, 1);
9866 33744 : switch (TREE_CODE (_q21))
9867 : {
9868 658 : CASE_CONVERT:
9869 658 : {
9870 658 : tree _q40 = TREE_OPERAND (_q21, 0);
9871 658 : switch (TREE_CODE (_q40))
9872 : {
9873 0 : case NE_EXPR:
9874 0 : {
9875 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9876 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9877 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9878 : {
9879 0 : if (integer_zerop (_q51))
9880 : {
9881 0 : if (integer_zerop (_p1))
9882 : {
9883 0 : {
9884 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9885 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR);
9886 0 : if (res) return res;
9887 : }
9888 : }
9889 : }
9890 : }
9891 : break;
9892 : }
9893 : default:;
9894 : }
9895 : break;
9896 : }
9897 33744 : default:;
9898 : }
9899 33744 : switch (TREE_CODE (_q20))
9900 : {
9901 643 : CASE_CONVERT:
9902 643 : {
9903 643 : tree _q30 = TREE_OPERAND (_q20, 0);
9904 643 : switch (TREE_CODE (_q30))
9905 : {
9906 0 : case NE_EXPR:
9907 0 : {
9908 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9909 0 : tree _q41 = TREE_OPERAND (_q30, 1);
9910 0 : if (integer_zerop (_q41))
9911 : {
9912 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
9913 : {
9914 0 : if (integer_zerop (_p1))
9915 : {
9916 0 : {
9917 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
9918 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR);
9919 0 : if (res) return res;
9920 : }
9921 : }
9922 : }
9923 : }
9924 : break;
9925 : }
9926 : default:;
9927 : }
9928 : break;
9929 : }
9930 33744 : default:;
9931 : }
9932 33744 : switch (TREE_CODE (_q21))
9933 : {
9934 1 : case NE_EXPR:
9935 1 : {
9936 1 : tree _q40 = TREE_OPERAND (_q21, 0);
9937 1 : tree _q41 = TREE_OPERAND (_q21, 1);
9938 1 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
9939 : {
9940 0 : if (integer_zerop (_q41))
9941 : {
9942 0 : if (integer_zerop (_p1))
9943 : {
9944 0 : {
9945 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9946 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR);
9947 0 : if (res) return res;
9948 : }
9949 : }
9950 : }
9951 : }
9952 : break;
9953 : }
9954 33744 : default:;
9955 : }
9956 33744 : switch (TREE_CODE (_q20))
9957 : {
9958 8 : case NE_EXPR:
9959 8 : {
9960 8 : tree _q30 = TREE_OPERAND (_q20, 0);
9961 8 : tree _q31 = TREE_OPERAND (_q20, 1);
9962 8 : if (integer_zerop (_q31))
9963 : {
9964 0 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
9965 : {
9966 0 : if (integer_zerop (_p1))
9967 : {
9968 0 : {
9969 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
9970 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, EQ_EXPR);
9971 0 : if (res) return res;
9972 : }
9973 : }
9974 : }
9975 : }
9976 : break;
9977 : }
9978 : default:;
9979 : }
9980 : break;
9981 : }
9982 2007420 : CASE_CONVERT:
9983 2007420 : {
9984 2007420 : tree _q20 = TREE_OPERAND (_p0, 0);
9985 2007420 : switch (TREE_CODE (_q20))
9986 : {
9987 562556 : case ADDR_EXPR:
9988 562556 : {
9989 562556 : switch (TREE_CODE (_p1))
9990 : {
9991 534435 : CASE_CONVERT:
9992 534435 : {
9993 534435 : tree _q40 = TREE_OPERAND (_p1, 0);
9994 534435 : switch (TREE_CODE (_q40))
9995 : {
9996 534435 : case ADDR_EXPR:
9997 534435 : {
9998 534435 : {
9999 534435 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10000 534435 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR);
10001 534435 : if (res) return res;
10002 : }
10003 30 : break;
10004 : }
10005 : default:;
10006 : }
10007 : break;
10008 : }
10009 20893 : case ADDR_EXPR:
10010 20893 : {
10011 20893 : {
10012 20893 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10013 20893 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, EQ_EXPR);
10014 20893 : if (res) return res;
10015 : }
10016 7896 : break;
10017 : }
10018 : default:;
10019 : }
10020 : break;
10021 : }
10022 : default:;
10023 : }
10024 : break;
10025 : }
10026 18976 : case ADDR_EXPR:
10027 18976 : {
10028 18976 : switch (TREE_CODE (_p1))
10029 : {
10030 165 : CASE_CONVERT:
10031 165 : {
10032 165 : tree _q30 = TREE_OPERAND (_p1, 0);
10033 165 : switch (TREE_CODE (_q30))
10034 : {
10035 165 : case ADDR_EXPR:
10036 165 : {
10037 165 : {
10038 165 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10039 165 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10040 165 : if (res) return res;
10041 : }
10042 0 : break;
10043 : }
10044 : default:;
10045 : }
10046 : break;
10047 : }
10048 16395 : case ADDR_EXPR:
10049 16395 : {
10050 16395 : {
10051 16395 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10052 16395 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, EQ_EXPR);
10053 16395 : if (res) return res;
10054 : }
10055 7258 : break;
10056 : }
10057 : default:;
10058 : }
10059 : break;
10060 : }
10061 23750967 : default:;
10062 : }
10063 23750967 : {
10064 23750967 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10065 23750967 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, EQ_EXPR);
10066 23750967 : if (res) return res;
10067 : }
10068 23747778 : switch (TREE_CODE (_p0))
10069 : {
10070 1460018 : CASE_CONVERT:
10071 1460018 : {
10072 1460018 : tree _q20 = TREE_OPERAND (_p0, 0);
10073 1460018 : switch (TREE_CODE (_p1))
10074 : {
10075 258599 : case INTEGER_CST:
10076 258599 : {
10077 258599 : {
10078 258599 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10079 258599 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, EQ_EXPR);
10080 258599 : if (res) return res;
10081 : }
10082 257206 : break;
10083 : }
10084 1458625 : default:;
10085 : }
10086 1458625 : switch (TREE_CODE (_q20))
10087 : {
10088 0 : case NE_EXPR:
10089 0 : {
10090 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10091 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10092 0 : switch (TREE_CODE (_q31))
10093 : {
10094 0 : case INTEGER_CST:
10095 0 : {
10096 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10097 : {
10098 0 : {
10099 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10100 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10101 0 : if (res) return res;
10102 : }
10103 : }
10104 : break;
10105 : }
10106 : default:;
10107 : }
10108 : break;
10109 : }
10110 0 : case EQ_EXPR:
10111 0 : {
10112 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10113 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10114 0 : switch (TREE_CODE (_q31))
10115 : {
10116 0 : case INTEGER_CST:
10117 0 : {
10118 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10119 : {
10120 0 : {
10121 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10122 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10123 0 : if (res) return res;
10124 : }
10125 : }
10126 : break;
10127 : }
10128 : default:;
10129 : }
10130 : break;
10131 : }
10132 : default:;
10133 : }
10134 : break;
10135 : }
10136 23746385 : default:;
10137 : }
10138 23746385 : switch (TREE_CODE (_p1))
10139 : {
10140 678491 : CASE_CONVERT:
10141 678491 : {
10142 678491 : tree _q30 = TREE_OPERAND (_p1, 0);
10143 678491 : switch (TREE_CODE (_q30))
10144 : {
10145 0 : case NE_EXPR:
10146 0 : {
10147 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10148 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10149 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10150 : {
10151 0 : switch (TREE_CODE (_q41))
10152 : {
10153 0 : case INTEGER_CST:
10154 0 : {
10155 0 : {
10156 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10157 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10158 0 : if (res) return res;
10159 : }
10160 0 : break;
10161 : }
10162 : default:;
10163 : }
10164 : }
10165 : break;
10166 : }
10167 0 : case EQ_EXPR:
10168 0 : {
10169 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10170 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10171 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10172 : {
10173 0 : switch (TREE_CODE (_q41))
10174 : {
10175 0 : case INTEGER_CST:
10176 0 : {
10177 0 : {
10178 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10179 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10180 0 : if (res) return res;
10181 : }
10182 0 : break;
10183 : }
10184 : default:;
10185 : }
10186 : }
10187 : break;
10188 : }
10189 : default:;
10190 : }
10191 : break;
10192 : }
10193 23746385 : default:;
10194 : }
10195 23746385 : if (integer_onep (_p1))
10196 : {
10197 1807826 : {
10198 1807826 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10199 1807826 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10200 1807826 : && types_match (type, TREE_TYPE (captures[0]))
10201 : )
10202 : {
10203 116342 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1523;
10204 116342 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1523;
10205 116342 : {
10206 116342 : tree res_op0;
10207 116342 : res_op0 = captures[0];
10208 116342 : tree _r;
10209 116342 : _r = non_lvalue_loc (loc, res_op0);
10210 116342 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 991, __FILE__, __LINE__, true);
10211 116342 : return _r;
10212 : }
10213 : next_after_fail1523:;
10214 : }
10215 : }
10216 : }
10217 23630043 : switch (TREE_CODE (_p0))
10218 : {
10219 711766 : case BIT_AND_EXPR:
10220 711766 : {
10221 711766 : tree _q20 = TREE_OPERAND (_p0, 0);
10222 711766 : tree _q21 = TREE_OPERAND (_p0, 1);
10223 711766 : switch (TREE_CODE (_q21))
10224 : {
10225 688 : case VECTOR_CST:
10226 688 : {
10227 688 : if (integer_zerop (_p1))
10228 : {
10229 398 : {
10230 398 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10231 398 : const enum tree_code cmp = EQ_EXPR;
10232 398 : const enum tree_code icmp = LE_EXPR;
10233 398 : {
10234 398 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10235 398 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10236 : )
10237 : {
10238 2 : {
10239 2 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10240 2 : ? optab_vector : optab_default;
10241 2 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10242 2 : if (target_supports_op_p (utype, icmp, optab)
10243 2 : || (optimize_vectors_before_lowering_p ()
10244 2 : && (!target_supports_op_p (type, cmp, optab)
10245 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10246 : )
10247 : {
10248 2 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10249 : )
10250 : {
10251 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1524;
10252 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1524;
10253 2 : {
10254 2 : tree res_op0;
10255 2 : res_op0 = captures[1];
10256 2 : tree res_op1;
10257 2 : res_op1 = csts;
10258 2 : tree _r;
10259 2 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10260 2 : if (TREE_SIDE_EFFECTS (captures[2]))
10261 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10262 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10263 2 : return _r;
10264 : }
10265 396 : next_after_fail1524:;
10266 : }
10267 : else
10268 : {
10269 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1525;
10270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1525;
10271 0 : {
10272 0 : tree res_op0;
10273 0 : {
10274 0 : tree _o1[1], _r1;
10275 0 : _o1[0] = captures[1];
10276 0 : if (TREE_TYPE (_o1[0]) != utype)
10277 : {
10278 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10279 : }
10280 : else
10281 : _r1 = _o1[0];
10282 0 : res_op0 = _r1;
10283 : }
10284 0 : tree res_op1;
10285 0 : res_op1 = csts;
10286 0 : tree _r;
10287 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10288 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10289 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10290 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10291 0 : return _r;
10292 : }
10293 396 : next_after_fail1525:;
10294 : }
10295 : }
10296 : }
10297 : }
10298 : }
10299 : }
10300 : }
10301 : break;
10302 : }
10303 648393 : case INTEGER_CST:
10304 648393 : {
10305 648393 : if (integer_zerop (_p1))
10306 : {
10307 536446 : {
10308 536446 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10309 536446 : const enum tree_code cmp = EQ_EXPR;
10310 536446 : const enum tree_code icmp = LE_EXPR;
10311 536446 : {
10312 536446 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10313 536446 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10314 : )
10315 : {
10316 1049 : {
10317 1049 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10318 1049 : ? optab_vector : optab_default;
10319 1049 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10320 1049 : if (target_supports_op_p (utype, icmp, optab)
10321 1049 : || (optimize_vectors_before_lowering_p ()
10322 905 : && (!target_supports_op_p (type, cmp, optab)
10323 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10324 : )
10325 : {
10326 905 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10327 : )
10328 : {
10329 616 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1526;
10330 616 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1526;
10331 616 : {
10332 616 : tree res_op0;
10333 616 : res_op0 = captures[1];
10334 616 : tree res_op1;
10335 616 : res_op1 = csts;
10336 616 : tree _r;
10337 616 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10338 616 : if (TREE_SIDE_EFFECTS (captures[2]))
10339 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10340 616 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10341 616 : return _r;
10342 : }
10343 535541 : next_after_fail1526:;
10344 : }
10345 : else
10346 : {
10347 289 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1527;
10348 289 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1527;
10349 289 : {
10350 289 : tree res_op0;
10351 289 : {
10352 289 : tree _o1[1], _r1;
10353 289 : _o1[0] = captures[1];
10354 289 : if (TREE_TYPE (_o1[0]) != utype)
10355 : {
10356 289 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10357 : }
10358 : else
10359 : _r1 = _o1[0];
10360 289 : res_op0 = _r1;
10361 : }
10362 289 : tree res_op1;
10363 289 : res_op1 = csts;
10364 289 : tree _r;
10365 289 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10366 289 : if (TREE_SIDE_EFFECTS (captures[2]))
10367 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10368 289 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10369 289 : return _r;
10370 : }
10371 535541 : next_after_fail1527:;
10372 : }
10373 : }
10374 : }
10375 : }
10376 : }
10377 : }
10378 : }
10379 : break;
10380 : }
10381 710859 : default:;
10382 : }
10383 710859 : switch (TREE_CODE (_q20))
10384 : {
10385 0 : case VECTOR_CST:
10386 0 : {
10387 0 : if (integer_zerop (_p1))
10388 : {
10389 0 : {
10390 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10391 0 : const enum tree_code cmp = EQ_EXPR;
10392 0 : const enum tree_code icmp = LE_EXPR;
10393 0 : {
10394 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10395 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10396 : )
10397 : {
10398 0 : {
10399 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10400 0 : ? optab_vector : optab_default;
10401 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10402 0 : if (target_supports_op_p (utype, icmp, optab)
10403 0 : || (optimize_vectors_before_lowering_p ()
10404 0 : && (!target_supports_op_p (type, cmp, optab)
10405 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10406 : )
10407 : {
10408 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10409 : )
10410 : {
10411 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1528;
10412 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1528;
10413 0 : {
10414 0 : tree res_op0;
10415 0 : res_op0 = captures[1];
10416 0 : tree res_op1;
10417 0 : res_op1 = csts;
10418 0 : tree _r;
10419 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10420 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10421 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10422 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10423 0 : return _r;
10424 : }
10425 0 : next_after_fail1528:;
10426 : }
10427 : else
10428 : {
10429 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1529;
10430 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1529;
10431 0 : {
10432 0 : tree res_op0;
10433 0 : {
10434 0 : tree _o1[1], _r1;
10435 0 : _o1[0] = captures[1];
10436 0 : if (TREE_TYPE (_o1[0]) != utype)
10437 : {
10438 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10439 : }
10440 : else
10441 : _r1 = _o1[0];
10442 0 : res_op0 = _r1;
10443 : }
10444 0 : tree res_op1;
10445 0 : res_op1 = csts;
10446 0 : tree _r;
10447 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10448 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10449 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10450 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10451 0 : return _r;
10452 : }
10453 0 : next_after_fail1529:;
10454 : }
10455 : }
10456 : }
10457 : }
10458 : }
10459 : }
10460 : }
10461 : break;
10462 : }
10463 0 : case INTEGER_CST:
10464 0 : {
10465 0 : if (integer_zerop (_p1))
10466 : {
10467 0 : {
10468 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10469 0 : const enum tree_code cmp = EQ_EXPR;
10470 0 : const enum tree_code icmp = LE_EXPR;
10471 0 : {
10472 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10473 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10474 : )
10475 : {
10476 0 : {
10477 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10478 0 : ? optab_vector : optab_default;
10479 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10480 0 : if (target_supports_op_p (utype, icmp, optab)
10481 0 : || (optimize_vectors_before_lowering_p ()
10482 0 : && (!target_supports_op_p (type, cmp, optab)
10483 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10484 : )
10485 : {
10486 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10487 : )
10488 : {
10489 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1530;
10490 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1530;
10491 0 : {
10492 0 : tree res_op0;
10493 0 : res_op0 = captures[1];
10494 0 : tree res_op1;
10495 0 : res_op1 = csts;
10496 0 : tree _r;
10497 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10498 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10499 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10500 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10501 0 : return _r;
10502 : }
10503 0 : next_after_fail1530:;
10504 : }
10505 : else
10506 : {
10507 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1531;
10508 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1531;
10509 0 : {
10510 0 : tree res_op0;
10511 0 : {
10512 0 : tree _o1[1], _r1;
10513 0 : _o1[0] = captures[1];
10514 0 : if (TREE_TYPE (_o1[0]) != utype)
10515 : {
10516 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10517 : }
10518 : else
10519 : _r1 = _o1[0];
10520 0 : res_op0 = _r1;
10521 : }
10522 0 : tree res_op1;
10523 0 : res_op1 = csts;
10524 0 : tree _r;
10525 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10526 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10527 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10528 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10529 0 : return _r;
10530 : }
10531 0 : next_after_fail1531:;
10532 : }
10533 : }
10534 : }
10535 : }
10536 : }
10537 : }
10538 : }
10539 : break;
10540 : }
10541 : default:;
10542 : }
10543 : break;
10544 : }
10545 15866 : case RSHIFT_EXPR:
10546 15866 : {
10547 15866 : tree _q20 = TREE_OPERAND (_p0, 0);
10548 15866 : tree _q21 = TREE_OPERAND (_p0, 1);
10549 15866 : switch (TREE_CODE (_q20))
10550 : {
10551 1 : case MULT_EXPR:
10552 1 : {
10553 1 : tree _q30 = TREE_OPERAND (_q20, 0);
10554 1 : tree _q31 = TREE_OPERAND (_q20, 1);
10555 1 : switch (TREE_CODE (_q30))
10556 : {
10557 1 : CASE_CONVERT:
10558 1 : {
10559 1 : tree _q40 = TREE_OPERAND (_q30, 0);
10560 1 : switch (TREE_CODE (_q31))
10561 : {
10562 1 : CASE_CONVERT:
10563 1 : {
10564 1 : tree _q60 = TREE_OPERAND (_q31, 0);
10565 1 : switch (TREE_CODE (_q21))
10566 : {
10567 1 : case INTEGER_CST:
10568 1 : {
10569 1 : if (integer_zerop (_p1))
10570 : {
10571 1 : {
10572 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10573 1 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, EQ_EXPR, LE_EXPR);
10574 1 : if (res) return res;
10575 : }
10576 : }
10577 : break;
10578 : }
10579 : default:;
10580 : }
10581 : break;
10582 : }
10583 : default:;
10584 : }
10585 : break;
10586 : }
10587 : default:;
10588 : }
10589 : break;
10590 : }
10591 : default:;
10592 : }
10593 : break;
10594 : }
10595 669582 : case PLUS_EXPR:
10596 669582 : {
10597 669582 : tree _q20 = TREE_OPERAND (_p0, 0);
10598 669582 : tree _q21 = TREE_OPERAND (_p0, 1);
10599 669582 : switch (TREE_CODE (_q21))
10600 : {
10601 622893 : case INTEGER_CST:
10602 622893 : {
10603 622893 : switch (TREE_CODE (_p1))
10604 : {
10605 352166 : case INTEGER_CST:
10606 352166 : {
10607 352166 : {
10608 352166 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10609 352166 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, EQ_EXPR);
10610 352166 : if (res) return res;
10611 : }
10612 14 : break;
10613 : }
10614 : default:;
10615 : }
10616 : break;
10617 : }
10618 : default:;
10619 : }
10620 : break;
10621 : }
10622 96747 : case MINUS_EXPR:
10623 96747 : {
10624 96747 : tree _q20 = TREE_OPERAND (_p0, 0);
10625 96747 : tree _q21 = TREE_OPERAND (_p0, 1);
10626 96747 : switch (TREE_CODE (_q21))
10627 : {
10628 19 : case INTEGER_CST:
10629 19 : {
10630 19 : switch (TREE_CODE (_p1))
10631 : {
10632 16 : case INTEGER_CST:
10633 16 : {
10634 16 : {
10635 16 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10636 16 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, EQ_EXPR);
10637 16 : if (res) return res;
10638 : }
10639 16 : break;
10640 : }
10641 : default:;
10642 : }
10643 : break;
10644 : }
10645 96747 : default:;
10646 : }
10647 96747 : switch (TREE_CODE (_q20))
10648 : {
10649 37439 : case INTEGER_CST:
10650 37439 : {
10651 37439 : switch (TREE_CODE (_p1))
10652 : {
10653 36107 : case INTEGER_CST:
10654 36107 : {
10655 36107 : {
10656 36107 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10657 36107 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR);
10658 36107 : if (res) return res;
10659 : }
10660 0 : break;
10661 : }
10662 : default:;
10663 : }
10664 : break;
10665 : }
10666 : default:;
10667 : }
10668 : break;
10669 : }
10670 2010540 : case CALL_EXPR:
10671 2010540 : switch (get_call_combined_fn (_p0))
10672 : {
10673 19 : case CFN_BUILT_IN_CLZ:
10674 19 : if (call_expr_nargs (_p0) == 1)
10675 : {
10676 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10677 19 : switch (TREE_CODE (_p1))
10678 : {
10679 19 : case INTEGER_CST:
10680 19 : {
10681 19 : {
10682 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10683 19 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZ);
10684 19 : if (res) return res;
10685 : }
10686 16 : break;
10687 : }
10688 : default:;
10689 : }
10690 : }
10691 : break;
10692 17 : case CFN_BUILT_IN_CTZ:
10693 17 : if (call_expr_nargs (_p0) == 1)
10694 : {
10695 17 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10696 17 : switch (TREE_CODE (_p1))
10697 : {
10698 17 : case INTEGER_CST:
10699 17 : {
10700 17 : {
10701 17 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10702 17 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZ);
10703 17 : if (res) return res;
10704 : }
10705 16 : break;
10706 : }
10707 : default:;
10708 : }
10709 : }
10710 : break;
10711 4 : case CFN_BUILT_IN_FFS:
10712 4 : if (call_expr_nargs (_p0) == 1)
10713 : {
10714 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10715 4 : switch (TREE_CODE (_p1))
10716 : {
10717 4 : case INTEGER_CST:
10718 4 : {
10719 4 : {
10720 4 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10721 4 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFS);
10722 4 : if (res) return res;
10723 : }
10724 0 : break;
10725 : }
10726 : default:;
10727 : }
10728 : }
10729 : break;
10730 0 : case CFN_REDUC_IOR:
10731 0 : if (call_expr_nargs (_p0) == 1)
10732 : {
10733 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10734 0 : if (integer_zerop (_p1))
10735 : {
10736 0 : {
10737 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10738 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, EQ_EXPR);
10739 0 : if (res) return res;
10740 : }
10741 : }
10742 : }
10743 : break;
10744 0 : case CFN_BUILT_IN_FFSIMAX:
10745 0 : if (call_expr_nargs (_p0) == 1)
10746 : {
10747 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10748 0 : switch (TREE_CODE (_p1))
10749 : {
10750 0 : case INTEGER_CST:
10751 0 : {
10752 0 : {
10753 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10754 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSIMAX);
10755 0 : if (res) return res;
10756 : }
10757 0 : break;
10758 : }
10759 : default:;
10760 : }
10761 : }
10762 : break;
10763 15 : case CFN_BUILT_IN_POPCOUNT:
10764 15 : if (call_expr_nargs (_p0) == 1)
10765 : {
10766 15 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10767 15 : if (integer_zerop (_p1))
10768 : {
10769 1 : {
10770 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10771 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
10772 1 : if (res) return res;
10773 : }
10774 : }
10775 : }
10776 : break;
10777 0 : case CFN_BUILT_IN_CLZL:
10778 0 : if (call_expr_nargs (_p0) == 1)
10779 : {
10780 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10781 0 : switch (TREE_CODE (_p1))
10782 : {
10783 0 : case INTEGER_CST:
10784 0 : {
10785 0 : {
10786 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10787 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZL);
10788 0 : if (res) return res;
10789 : }
10790 0 : break;
10791 : }
10792 : default:;
10793 : }
10794 : }
10795 : break;
10796 16 : case CFN_BUILT_IN_CTZL:
10797 16 : if (call_expr_nargs (_p0) == 1)
10798 : {
10799 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10800 16 : switch (TREE_CODE (_p1))
10801 : {
10802 16 : case INTEGER_CST:
10803 16 : {
10804 16 : {
10805 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10806 16 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZL);
10807 16 : if (res) return res;
10808 : }
10809 16 : break;
10810 : }
10811 : default:;
10812 : }
10813 : }
10814 : break;
10815 1 : case CFN_BUILT_IN_FFSL:
10816 1 : if (call_expr_nargs (_p0) == 1)
10817 : {
10818 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10819 1 : switch (TREE_CODE (_p1))
10820 : {
10821 1 : case INTEGER_CST:
10822 1 : {
10823 1 : {
10824 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10825 1 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSL);
10826 1 : if (res) return res;
10827 : }
10828 0 : break;
10829 : }
10830 : default:;
10831 : }
10832 : }
10833 : break;
10834 7 : case CFN_BUILT_IN_POPCOUNTLL:
10835 7 : if (call_expr_nargs (_p0) == 1)
10836 : {
10837 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10838 7 : if (integer_zerop (_p1))
10839 : {
10840 1 : {
10841 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10842 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
10843 1 : if (res) return res;
10844 : }
10845 : }
10846 : }
10847 : break;
10848 0 : case CFN_BUILT_IN_CTZIMAX:
10849 0 : if (call_expr_nargs (_p0) == 1)
10850 : {
10851 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10852 0 : switch (TREE_CODE (_p1))
10853 : {
10854 0 : case INTEGER_CST:
10855 0 : {
10856 0 : {
10857 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10858 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZIMAX);
10859 0 : if (res) return res;
10860 : }
10861 0 : break;
10862 : }
10863 : default:;
10864 : }
10865 : }
10866 : break;
10867 0 : case CFN_POPCOUNT:
10868 0 : if (call_expr_nargs (_p0) == 1)
10869 : {
10870 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10871 0 : if (integer_zerop (_p1))
10872 : {
10873 0 : {
10874 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10875 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_POPCOUNT);
10876 0 : if (res) return res;
10877 : }
10878 : }
10879 : }
10880 : break;
10881 0 : case CFN_CLZ:
10882 0 : if (call_expr_nargs (_p0) == 1)
10883 : {
10884 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10885 0 : switch (TREE_CODE (_p1))
10886 : {
10887 0 : case INTEGER_CST:
10888 0 : {
10889 0 : {
10890 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10891 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_CLZ);
10892 0 : if (res) return res;
10893 : }
10894 0 : break;
10895 : }
10896 : default:;
10897 : }
10898 : }
10899 0 : if (call_expr_nargs (_p0) == 2)
10900 : {
10901 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10902 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10903 0 : switch (TREE_CODE (_p1))
10904 : {
10905 0 : case INTEGER_CST:
10906 0 : {
10907 0 : {
10908 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10909 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR);
10910 0 : if (res) return res;
10911 : }
10912 0 : break;
10913 : }
10914 : default:;
10915 : }
10916 : }
10917 : break;
10918 0 : case CFN_CTZ:
10919 0 : if (call_expr_nargs (_p0) == 1)
10920 : {
10921 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10922 0 : switch (TREE_CODE (_p1))
10923 : {
10924 0 : case INTEGER_CST:
10925 0 : {
10926 0 : {
10927 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10928 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_CTZ);
10929 0 : if (res) return res;
10930 : }
10931 0 : break;
10932 : }
10933 : default:;
10934 : }
10935 : }
10936 0 : if (call_expr_nargs (_p0) == 2)
10937 : {
10938 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10939 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10940 0 : switch (TREE_CODE (_p1))
10941 : {
10942 0 : case INTEGER_CST:
10943 0 : {
10944 0 : {
10945 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10946 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, EQ_EXPR);
10947 0 : if (res) return res;
10948 : }
10949 0 : break;
10950 : }
10951 : default:;
10952 : }
10953 : }
10954 : break;
10955 0 : case CFN_FFS:
10956 0 : if (call_expr_nargs (_p0) == 1)
10957 : {
10958 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10959 0 : switch (TREE_CODE (_p1))
10960 : {
10961 0 : case INTEGER_CST:
10962 0 : {
10963 0 : {
10964 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10965 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_FFS);
10966 0 : if (res) return res;
10967 : }
10968 0 : break;
10969 : }
10970 : default:;
10971 : }
10972 : }
10973 : break;
10974 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
10975 0 : if (call_expr_nargs (_p0) == 1)
10976 : {
10977 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10978 0 : if (integer_zerop (_p1))
10979 : {
10980 0 : {
10981 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10982 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
10983 0 : if (res) return res;
10984 : }
10985 : }
10986 : }
10987 : break;
10988 0 : case CFN_BUILT_IN_CLZIMAX:
10989 0 : if (call_expr_nargs (_p0) == 1)
10990 : {
10991 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10992 0 : switch (TREE_CODE (_p1))
10993 : {
10994 0 : case INTEGER_CST:
10995 0 : {
10996 0 : {
10997 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10998 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZIMAX);
10999 0 : if (res) return res;
11000 : }
11001 0 : break;
11002 : }
11003 : default:;
11004 : }
11005 : }
11006 : break;
11007 7 : case CFN_BUILT_IN_POPCOUNTL:
11008 7 : if (call_expr_nargs (_p0) == 1)
11009 : {
11010 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11011 7 : if (integer_zerop (_p1))
11012 : {
11013 1 : {
11014 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11015 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
11016 1 : if (res) return res;
11017 : }
11018 : }
11019 : }
11020 : break;
11021 16 : case CFN_BUILT_IN_CLZLL:
11022 16 : if (call_expr_nargs (_p0) == 1)
11023 : {
11024 16 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11025 16 : switch (TREE_CODE (_p1))
11026 : {
11027 16 : case INTEGER_CST:
11028 16 : {
11029 16 : {
11030 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11031 16 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, EQ_EXPR, LT_EXPR, CFN_BUILT_IN_CLZLL);
11032 16 : if (res) return res;
11033 : }
11034 16 : break;
11035 : }
11036 : default:;
11037 : }
11038 : }
11039 : break;
11040 0 : case CFN_BUILT_IN_CTZLL:
11041 0 : if (call_expr_nargs (_p0) == 1)
11042 : {
11043 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11044 0 : switch (TREE_CODE (_p1))
11045 : {
11046 0 : case INTEGER_CST:
11047 0 : {
11048 0 : {
11049 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11050 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_CTZLL);
11051 0 : if (res) return res;
11052 : }
11053 0 : break;
11054 : }
11055 : default:;
11056 : }
11057 : }
11058 : break;
11059 0 : case CFN_BUILT_IN_FFSLL:
11060 0 : if (call_expr_nargs (_p0) == 1)
11061 : {
11062 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11063 0 : switch (TREE_CODE (_p1))
11064 : {
11065 0 : case INTEGER_CST:
11066 0 : {
11067 0 : {
11068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11069 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, EQ_EXPR, CFN_BUILT_IN_FFSLL);
11070 0 : if (res) return res;
11071 : }
11072 0 : break;
11073 : }
11074 : default:;
11075 : }
11076 : }
11077 : break;
11078 : default:;
11079 : }
11080 : break;
11081 : default:;
11082 : }
11083 : return NULL_TREE;
11084 : }
11085 :
11086 : tree
11087 752935 : generic_simplify_UNLT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11088 : {
11089 752935 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11090 752935 : switch (TREE_CODE (_p0))
11091 : {
11092 0 : case VEC_COND_EXPR:
11093 0 : {
11094 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11095 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11096 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11097 0 : switch (TREE_CODE (_p1))
11098 : {
11099 0 : case VEC_COND_EXPR:
11100 0 : {
11101 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11102 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11103 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11104 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11105 : {
11106 0 : {
11107 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11108 0 : if (VECTOR_TYPE_P (type)
11109 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11110 0 : || types_match (type, TREE_TYPE (captures[2]))
11111 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11112 : || (optimize_vectors_before_lowering_p ()
11113 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11114 : )
11115 : {
11116 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1806;
11117 0 : {
11118 0 : tree res_op0;
11119 0 : res_op0 = captures[1];
11120 0 : tree res_op1;
11121 0 : {
11122 0 : tree _o1[2], _r1;
11123 0 : _o1[0] = captures[2];
11124 0 : _o1[1] = captures[5];
11125 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11126 0 : if (EXPR_P (_r1))
11127 0 : goto next_after_fail1806;
11128 0 : res_op1 = _r1;
11129 : }
11130 0 : tree res_op2;
11131 0 : {
11132 0 : tree _o1[2], _r1;
11133 0 : _o1[0] = captures[3];
11134 0 : _o1[1] = captures[6];
11135 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11136 0 : if (EXPR_P (_r1))
11137 0 : goto next_after_fail1806;
11138 0 : res_op2 = _r1;
11139 : }
11140 0 : tree _r;
11141 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11142 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11143 0 : return _r;
11144 : }
11145 0 : next_after_fail1806:;
11146 : }
11147 : }
11148 : }
11149 : break;
11150 : }
11151 0 : default:;
11152 : }
11153 0 : {
11154 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11155 0 : if (VECTOR_TYPE_P (type)
11156 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11157 0 : || types_match (type, TREE_TYPE (captures[2]))
11158 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11159 : || (optimize_vectors_before_lowering_p ()
11160 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11161 : )
11162 : {
11163 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1807;
11164 0 : {
11165 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1807;
11166 0 : tree res_op0;
11167 0 : res_op0 = captures[1];
11168 0 : tree res_op1;
11169 0 : {
11170 0 : tree _o1[2], _r1;
11171 0 : _o1[0] = captures[2];
11172 0 : _o1[1] = unshare_expr (captures[4]);
11173 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11174 0 : if (EXPR_P (_r1))
11175 0 : goto next_after_fail1807;
11176 0 : res_op1 = _r1;
11177 : }
11178 0 : tree res_op2;
11179 0 : {
11180 0 : tree _o1[2], _r1;
11181 0 : _o1[0] = captures[3];
11182 0 : _o1[1] = captures[4];
11183 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11184 0 : if (EXPR_P (_r1))
11185 0 : goto next_after_fail1807;
11186 0 : res_op2 = _r1;
11187 : }
11188 0 : tree _r;
11189 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11190 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
11191 0 : return _r;
11192 : }
11193 0 : next_after_fail1807:;
11194 : }
11195 : }
11196 0 : break;
11197 : }
11198 752935 : default:;
11199 : }
11200 752935 : switch (TREE_CODE (_p1))
11201 : {
11202 0 : case VEC_COND_EXPR:
11203 0 : {
11204 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11205 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11206 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11207 0 : {
11208 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11209 0 : if (VECTOR_TYPE_P (type)
11210 0 : && (TREE_CODE_CLASS (UNLT_EXPR) != tcc_comparison
11211 0 : || types_match (type, TREE_TYPE (captures[3]))
11212 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11213 : || (optimize_vectors_before_lowering_p ()
11214 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11215 : )
11216 : {
11217 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1808;
11218 0 : {
11219 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1808;
11220 0 : tree res_op0;
11221 0 : res_op0 = captures[2];
11222 0 : tree res_op1;
11223 0 : {
11224 0 : tree _o1[2], _r1;
11225 0 : _o1[0] = unshare_expr (captures[0]);
11226 0 : _o1[1] = captures[3];
11227 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11228 0 : if (EXPR_P (_r1))
11229 0 : goto next_after_fail1808;
11230 0 : res_op1 = _r1;
11231 : }
11232 0 : tree res_op2;
11233 0 : {
11234 0 : tree _o1[2], _r1;
11235 0 : _o1[0] = captures[0];
11236 0 : _o1[1] = captures[4];
11237 0 : _r1 = fold_build2_loc (loc, UNLT_EXPR, type, _o1[0], _o1[1]);
11238 0 : if (EXPR_P (_r1))
11239 0 : goto next_after_fail1808;
11240 0 : res_op2 = _r1;
11241 : }
11242 0 : tree _r;
11243 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11244 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
11245 0 : return _r;
11246 : }
11247 0 : next_after_fail1808:;
11248 : }
11249 : }
11250 0 : break;
11251 : }
11252 752935 : default:;
11253 : }
11254 752935 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11255 : {
11256 0 : {
11257 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11258 0 : tree res = generic_simplify_568 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11259 0 : if (res) return res;
11260 : }
11261 : }
11262 752935 : switch (TREE_CODE (_p0))
11263 : {
11264 283 : case FLOAT_EXPR:
11265 283 : {
11266 283 : tree _q20 = TREE_OPERAND (_p0, 0);
11267 283 : switch (TREE_CODE (_p1))
11268 : {
11269 0 : case FLOAT_EXPR:
11270 0 : {
11271 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11272 0 : {
11273 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11274 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, UNLT_EXPR, LT_EXPR);
11275 0 : if (res) return res;
11276 : }
11277 0 : break;
11278 : }
11279 : default:;
11280 : }
11281 : break;
11282 : }
11283 0 : case NEGATE_EXPR:
11284 0 : {
11285 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11286 0 : switch (TREE_CODE (_p1))
11287 : {
11288 0 : case NEGATE_EXPR:
11289 0 : {
11290 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11291 0 : {
11292 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11293 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11294 0 : if (res) return res;
11295 : }
11296 0 : break;
11297 : }
11298 0 : default:;
11299 : }
11300 0 : if (CONSTANT_CLASS_P (_p1))
11301 : {
11302 0 : {
11303 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11304 0 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, UNLT_EXPR, UNGT_EXPR);
11305 0 : if (res) return res;
11306 : }
11307 : }
11308 : break;
11309 : }
11310 752935 : default:;
11311 : }
11312 752935 : switch (TREE_CODE (_p1))
11313 : {
11314 377895 : case REAL_CST:
11315 377895 : {
11316 377895 : {
11317 377895 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11318 377895 : tree res = generic_simplify_567 (loc, type, _p0, _p1, captures, UNLT_EXPR);
11319 377895 : if (res) return res;
11320 : }
11321 377893 : break;
11322 : }
11323 : default:;
11324 : }
11325 : return NULL_TREE;
11326 : }
11327 :
11328 : tree
11329 1553571 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11330 : {
11331 1553571 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11332 1553571 : switch (TREE_CODE (_p0))
11333 : {
11334 0 : case VEC_COND_EXPR:
11335 0 : {
11336 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11337 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11338 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11339 0 : switch (TREE_CODE (_p1))
11340 : {
11341 0 : case VEC_COND_EXPR:
11342 0 : {
11343 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11344 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11345 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11346 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11347 : {
11348 0 : {
11349 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11350 0 : if (VECTOR_TYPE_P (type)
11351 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11352 0 : || types_match (type, TREE_TYPE (captures[2]))
11353 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11354 : || (optimize_vectors_before_lowering_p ()
11355 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11356 : )
11357 : {
11358 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1812;
11359 0 : {
11360 0 : tree res_op0;
11361 0 : res_op0 = captures[1];
11362 0 : tree res_op1;
11363 0 : {
11364 0 : tree _o1[2], _r1;
11365 0 : _o1[0] = captures[2];
11366 0 : _o1[1] = captures[5];
11367 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11368 0 : if (EXPR_P (_r1))
11369 0 : goto next_after_fail1812;
11370 0 : res_op1 = _r1;
11371 : }
11372 0 : tree res_op2;
11373 0 : {
11374 0 : tree _o1[2], _r1;
11375 0 : _o1[0] = captures[3];
11376 0 : _o1[1] = captures[6];
11377 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11378 0 : if (EXPR_P (_r1))
11379 0 : goto next_after_fail1812;
11380 0 : res_op2 = _r1;
11381 : }
11382 0 : tree _r;
11383 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11384 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
11385 0 : return _r;
11386 : }
11387 0 : next_after_fail1812:;
11388 : }
11389 : }
11390 : }
11391 : break;
11392 : }
11393 0 : default:;
11394 : }
11395 0 : {
11396 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11397 0 : if (VECTOR_TYPE_P (type)
11398 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11399 0 : || types_match (type, TREE_TYPE (captures[2]))
11400 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11401 : || (optimize_vectors_before_lowering_p ()
11402 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11403 : )
11404 : {
11405 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1813;
11406 0 : {
11407 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1813;
11408 0 : tree res_op0;
11409 0 : res_op0 = captures[1];
11410 0 : tree res_op1;
11411 0 : {
11412 0 : tree _o1[2], _r1;
11413 0 : _o1[0] = captures[2];
11414 0 : _o1[1] = unshare_expr (captures[4]);
11415 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11416 0 : if (EXPR_P (_r1))
11417 0 : goto next_after_fail1813;
11418 0 : res_op1 = _r1;
11419 : }
11420 0 : tree res_op2;
11421 0 : {
11422 0 : tree _o1[2], _r1;
11423 0 : _o1[0] = captures[3];
11424 0 : _o1[1] = captures[4];
11425 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11426 0 : if (EXPR_P (_r1))
11427 0 : goto next_after_fail1813;
11428 0 : res_op2 = _r1;
11429 : }
11430 0 : tree _r;
11431 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11432 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
11433 0 : return _r;
11434 : }
11435 0 : next_after_fail1813:;
11436 : }
11437 : }
11438 0 : break;
11439 : }
11440 1553571 : default:;
11441 : }
11442 1553571 : switch (TREE_CODE (_p1))
11443 : {
11444 0 : case VEC_COND_EXPR:
11445 0 : {
11446 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11447 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11448 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11449 0 : {
11450 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11451 0 : if (VECTOR_TYPE_P (type)
11452 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11453 0 : || types_match (type, TREE_TYPE (captures[3]))
11454 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11455 : || (optimize_vectors_before_lowering_p ()
11456 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11457 : )
11458 : {
11459 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1814;
11460 0 : {
11461 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1814;
11462 0 : tree res_op0;
11463 0 : res_op0 = captures[2];
11464 0 : tree res_op1;
11465 0 : {
11466 0 : tree _o1[2], _r1;
11467 0 : _o1[0] = unshare_expr (captures[0]);
11468 0 : _o1[1] = captures[3];
11469 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11470 0 : if (EXPR_P (_r1))
11471 0 : goto next_after_fail1814;
11472 0 : res_op1 = _r1;
11473 : }
11474 0 : tree res_op2;
11475 0 : {
11476 0 : tree _o1[2], _r1;
11477 0 : _o1[0] = captures[0];
11478 0 : _o1[1] = captures[4];
11479 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11480 0 : if (EXPR_P (_r1))
11481 0 : goto next_after_fail1814;
11482 0 : res_op2 = _r1;
11483 : }
11484 0 : tree _r;
11485 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11486 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
11487 0 : return _r;
11488 : }
11489 0 : next_after_fail1814:;
11490 : }
11491 : }
11492 0 : break;
11493 : }
11494 1553571 : default:;
11495 : }
11496 1553571 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11497 : {
11498 0 : {
11499 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11500 0 : tree res = generic_simplify_568 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11501 0 : if (res) return res;
11502 : }
11503 : }
11504 1553571 : switch (TREE_CODE (_p0))
11505 : {
11506 339 : case FLOAT_EXPR:
11507 339 : {
11508 339 : tree _q20 = TREE_OPERAND (_p0, 0);
11509 339 : switch (TREE_CODE (_p1))
11510 : {
11511 0 : case FLOAT_EXPR:
11512 0 : {
11513 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11514 0 : {
11515 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11516 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
11517 0 : if (res) return res;
11518 : }
11519 0 : break;
11520 : }
11521 : default:;
11522 : }
11523 : break;
11524 : }
11525 0 : case NEGATE_EXPR:
11526 0 : {
11527 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11528 0 : switch (TREE_CODE (_p1))
11529 : {
11530 0 : case NEGATE_EXPR:
11531 0 : {
11532 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11533 0 : {
11534 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11535 0 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11536 0 : if (res) return res;
11537 : }
11538 0 : break;
11539 : }
11540 0 : default:;
11541 : }
11542 0 : if (CONSTANT_CLASS_P (_p1))
11543 : {
11544 0 : {
11545 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11546 0 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11547 0 : if (res) return res;
11548 : }
11549 : }
11550 : break;
11551 : }
11552 1553571 : default:;
11553 : }
11554 1553571 : switch (TREE_CODE (_p1))
11555 : {
11556 1178583 : case REAL_CST:
11557 1178583 : {
11558 1178583 : {
11559 1178583 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11560 1178583 : tree res = generic_simplify_567 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11561 1178583 : if (res) return res;
11562 : }
11563 1178581 : break;
11564 : }
11565 : default:;
11566 : }
11567 : return NULL_TREE;
11568 : }
11569 :
11570 : tree
11571 652873677 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0, tree _p1)
11572 : {
11573 652873677 : switch (code)
11574 : {
11575 1045388 : case BIT_XOR_EXPR:
11576 1045388 : return generic_simplify_BIT_XOR_EXPR (loc, code, type, _p0, _p1);
11577 98875193 : case PLUS_EXPR:
11578 98875193 : return generic_simplify_PLUS_EXPR (loc, code, type, _p0, _p1);
11579 80635510 : case POINTER_PLUS_EXPR:
11580 80635510 : return generic_simplify_POINTER_PLUS_EXPR (loc, code, type, _p0, _p1);
11581 33446228 : case MINUS_EXPR:
11582 33446228 : return generic_simplify_MINUS_EXPR (loc, code, type, _p0, _p1);
11583 1905395 : case BIT_IOR_EXPR:
11584 1905395 : return generic_simplify_BIT_IOR_EXPR (loc, code, type, _p0, _p1);
11585 3250193 : case POINTER_DIFF_EXPR:
11586 3250193 : return generic_simplify_POINTER_DIFF_EXPR (loc, code, type, _p0, _p1);
11587 72655966 : case MULT_EXPR:
11588 72655966 : return generic_simplify_MULT_EXPR (loc, code, type, _p0, _p1);
11589 27913355 : case EQ_EXPR:
11590 27913355 : return generic_simplify_EQ_EXPR (loc, code, type, _p0, _p1);
11591 38926730 : case NE_EXPR:
11592 38926730 : return generic_simplify_NE_EXPR (loc, code, type, _p0, _p1);
11593 2167174 : case TRUNC_DIV_EXPR:
11594 2167174 : return generic_simplify_TRUNC_DIV_EXPR (loc, code, type, _p0, _p1);
11595 7190 : case CEIL_DIV_EXPR:
11596 7190 : return generic_simplify_CEIL_DIV_EXPR (loc, code, type, _p0, _p1);
11597 2014712 : case FLOOR_DIV_EXPR:
11598 2014712 : return generic_simplify_FLOOR_DIV_EXPR (loc, code, type, _p0, _p1);
11599 0 : case ROUND_DIV_EXPR:
11600 0 : return generic_simplify_ROUND_DIV_EXPR (loc, code, type, _p0, _p1);
11601 3578008 : case EXACT_DIV_EXPR:
11602 3578008 : return generic_simplify_EXACT_DIV_EXPR (loc, code, type, _p0, _p1);
11603 878458 : case FLOOR_MOD_EXPR:
11604 878458 : return generic_simplify_FLOOR_MOD_EXPR (loc, code, type, _p0, _p1);
11605 6432017 : case RDIV_EXPR:
11606 6432017 : return generic_simplify_RDIV_EXPR (loc, code, type, _p0, _p1);
11607 17800414 : case LT_EXPR:
11608 17800414 : return generic_simplify_LT_EXPR (loc, code, type, _p0, _p1);
11609 9388971 : case LE_EXPR:
11610 9388971 : return generic_simplify_LE_EXPR (loc, code, type, _p0, _p1);
11611 20995652 : case GT_EXPR:
11612 20995652 : return generic_simplify_GT_EXPR (loc, code, type, _p0, _p1);
11613 6815838 : case GE_EXPR:
11614 6815838 : return generic_simplify_GE_EXPR (loc, code, type, _p0, _p1);
11615 4284 : case CEIL_MOD_EXPR:
11616 4284 : return generic_simplify_CEIL_MOD_EXPR (loc, code, type, _p0, _p1);
11617 0 : case ROUND_MOD_EXPR:
11618 0 : return generic_simplify_ROUND_MOD_EXPR (loc, code, type, _p0, _p1);
11619 2123192 : case TRUNC_MOD_EXPR:
11620 2123192 : return generic_simplify_TRUNC_MOD_EXPR (loc, code, type, _p0, _p1);
11621 1280811 : case LSHIFT_EXPR:
11622 1280811 : return generic_simplify_LSHIFT_EXPR (loc, code, type, _p0, _p1);
11623 1028800 : case RSHIFT_EXPR:
11624 1028800 : return generic_simplify_RSHIFT_EXPR (loc, code, type, _p0, _p1);
11625 7096124 : case BIT_AND_EXPR:
11626 7096124 : return generic_simplify_BIT_AND_EXPR (loc, code, type, _p0, _p1);
11627 10809702 : case TRUTH_AND_EXPR:
11628 10809702 : return generic_simplify_TRUTH_AND_EXPR (loc, code, type, _p0, _p1);
11629 9475877 : case TRUTH_OR_EXPR:
11630 9475877 : return generic_simplify_TRUTH_OR_EXPR (loc, code, type, _p0, _p1);
11631 82452 : case MIN_EXPR:
11632 82452 : return generic_simplify_MIN_EXPR (loc, code, type, _p0, _p1);
11633 388906 : case MAX_EXPR:
11634 388906 : return generic_simplify_MAX_EXPR (loc, code, type, _p0, _p1);
11635 1944 : case LROTATE_EXPR:
11636 1944 : return generic_simplify_LROTATE_EXPR (loc, code, type, _p0, _p1);
11637 2797 : case RROTATE_EXPR:
11638 2797 : return generic_simplify_RROTATE_EXPR (loc, code, type, _p0, _p1);
11639 663576 : case COMPLEX_EXPR:
11640 663576 : return generic_simplify_COMPLEX_EXPR (loc, code, type, _p0, _p1);
11641 789605 : case UNORDERED_EXPR:
11642 789605 : return generic_simplify_UNORDERED_EXPR (loc, code, type, _p0, _p1);
11643 203823 : case ORDERED_EXPR:
11644 203823 : return generic_simplify_ORDERED_EXPR (loc, code, type, _p0, _p1);
11645 752935 : case UNLT_EXPR:
11646 752935 : return generic_simplify_UNLT_EXPR (loc, code, type, _p0, _p1);
11647 1176401 : case UNLE_EXPR:
11648 1176401 : return generic_simplify_UNLE_EXPR (loc, code, type, _p0, _p1);
11649 1553571 : case UNGT_EXPR:
11650 1553571 : return generic_simplify_UNGT_EXPR (loc, code, type, _p0, _p1);
11651 432746 : case UNGE_EXPR:
11652 432746 : return generic_simplify_UNGE_EXPR (loc, code, type, _p0, _p1);
11653 374872 : case UNEQ_EXPR:
11654 374872 : return generic_simplify_UNEQ_EXPR (loc, code, type, _p0, _p1);
11655 79 : case LTGT_EXPR:
11656 79 : return generic_simplify_LTGT_EXPR (loc, code, type, _p0, _p1);
11657 3444296 : case TRUTH_ORIF_EXPR:
11658 3444296 : return generic_simplify_TRUTH_ORIF_EXPR (loc, code, type, _p0, _p1);
11659 : default:;
11660 : }
11661 : return NULL_TREE;
11662 : }
11663 :
11664 : tree
11665 45373164 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0, tree _p1, tree _p2)
11666 : {
11667 45373164 : switch (code)
11668 : {
11669 13061620 : case COND_EXPR:
11670 13061620 : return generic_simplify_COND_EXPR (loc, code, type, _p0, _p1, _p2);
11671 464503 : case VEC_COND_EXPR:
11672 464503 : return generic_simplify_VEC_COND_EXPR (loc, code, type, _p0, _p1, _p2);
11673 920902 : case BIT_FIELD_REF:
11674 920902 : return generic_simplify_BIT_FIELD_REF (loc, code, type, _p0, _p1, _p2);
11675 15158 : case BIT_INSERT_EXPR:
11676 15158 : return generic_simplify_BIT_INSERT_EXPR (loc, code, type, _p0, _p1, _p2);
11677 833421 : case VEC_PERM_EXPR:
11678 833421 : return generic_simplify_VEC_PERM_EXPR (loc, code, type, _p0, _p1, _p2);
11679 : default:;
11680 : }
11681 : return NULL_TREE;
11682 : }
11683 :
11684 : tree
11685 0 : generic_simplify (location_t, enum tree_code,
11686 : const tree, tree, tree, tree, tree)
11687 : {
11688 0 : return NULL_TREE;
11689 : }
11690 :
11691 : tree
11692 0 : generic_simplify (location_t, enum tree_code,
11693 : const tree, tree, tree, tree, tree, tree)
11694 : {
11695 0 : return NULL_TREE;
11696 : }
11697 :
11698 : tree
11699 0 : generic_simplify (location_t, enum tree_code,
11700 : const tree, tree, tree, tree, tree, tree, tree)
11701 : {
11702 0 : return NULL_TREE;
11703 : }
11704 :
11705 : tree
11706 0 : generic_simplify (location_t, enum tree_code,
11707 : const tree, tree, tree, tree, tree, tree, tree, tree)
11708 : {
11709 0 : return NULL_TREE;
11710 : }
11711 : void
11712 18366 : generic_dump_logs (const char *file1, int line1_id, const char *file2, int line2, bool simplify)
11713 : {
11714 18366 : static int dbg_line_numbers[1120] = {
11715 : /* 0 */ 159, 162, 171, 173, 176, 179, 181, 187, 195, 193,
11716 : /* 10 */ 197, 199, 986, 988, 2212, 2218, 2220, 2223, 2228, 2231,
11717 : /* 20 */ 2479, 2483, 2485, 2487, 2489, 2491, 2493, 2495, 2522, 2538,
11718 : /* 30 */ 2546, 2528, 3151, 3153, 3155, 3162, 3159, 3169, 3171, 3178,
11719 : /* 40 */ 3175, 3386, 3396, 5911, 9411, 9432, 11878, 11881, 11886, 2179,
11720 : /* 50 */ 9231, 1368, 1372, 1532, 1547, 1552, 1599, 1600, 1604, 1605,
11721 : /* 60 */ 1647, 1672, 1677, 1787, 1920, 2010, 1930, 2074, 1940, 1945,
11722 : /* 70 */ 2068, 1953, 2120, 2062, 2081, 2087, 2759, 2094, 2108, 2154,
11723 : /* 80 */ 2371, 2437, 2460, 2471, 2474, 2506, 2617, 2649, 4477, 4490,
11724 : /* 90 */ 4500, 3228, 3230, 4854, 4514, 4526, 7319, 7321, 7386, 7394,
11725 : /* 100 */ 10789, 10795, 280, 307, 308, 519, 1362, 1903, 1958, 2021,
11726 : /* 110 */ 3940, 3878, 3983, 3984, 3988, 3989, 3999, 4003, 4007, 4022,
11727 : /* 120 */ 4025, 4029, 3955, 3958, 3963, 4141, 4147, 4153, 4333, 4334,
11728 : /* 130 */ 4363, 4384, 4403, 4842, 5810, 7250, 7335, 7337, 8859, 8934,
11729 : /* 140 */ 10621, 10668, 10682, 11905, 12342, 970, 976, 1512, 1521, 2039,
11730 : /* 150 */ 2030, 1977, 2785, 3891, 3931, 3936, 3937, 3945, 3946, 3949,
11731 : /* 160 */ 3966, 4041, 4044, 4048, 4161, 4183, 4221, 4232, 4271, 4286,
11732 : /* 170 */ 4848, 7260, 8939, 10678, 11909, 1498, 1507, 1537, 1542, 1584,
11733 : /* 180 */ 1569, 1576, 1626, 2116, 1631, 1638, 1667, 1811, 1910, 1915,
11734 : /* 190 */ 1925, 1935, 2049, 2136, 2146, 2148, 2407, 2412, 2417, 2423,
11735 : /* 200 */ 2424, 2446, 2600, 2629, 2631, 2636, 2638, 2778, 3442, 3457,
11736 : /* 210 */ 3475, 3675, 3676, 3677, 3685, 3693, 3702, 3711, 3809, 3811,
11737 : /* 220 */ 3743, 3744, 3749, 3750, 3755, 3760, 3764, 3843, 3856, 3447,
11738 : /* 230 */ 3466, 3468, 3452, 7955, 9830, 12503, 12518, 487, 493, 525,
11739 : /* 240 */ 1307, 1327, 1332, 2204, 2205, 2242, 2794, 2575, 5495, 5796,
11740 : /* 250 */ 5803, 5853, 5856, 5906, 8852, 9266, 9096, 9103, 9260, 9305,
11741 : /* 260 */ 9310, 355, 932, 1380, 3071, 2867, 2873, 2876, 2881, 2511,
11742 : /* 270 */ 2773, 2564, 2711, 2955, 2818, 2828, 2897, 2899, 2900, 2903,
11743 : /* 280 */ 2905, 2906, 2908, 2910, 2912, 2914, 2916, 2918, 2932, 2933,
11744 : /* 290 */ 2989, 3077, 3102, 3018, 3045, 3085, 3090, 3114, 3121, 3187,
11745 : /* 300 */ 3791, 4785, 4793, 4796, 4802, 4805, 4831, 5287, 5288, 5322,
11746 : /* 310 */ 5326, 5455, 5295, 5296, 5340, 5343, 5344, 5349, 5352, 5355,
11747 : /* 320 */ 5356, 5308, 5311, 5528, 5532, 5537, 5821, 5973, 5977, 7346,
11748 : /* 330 */ 7362, 7364, 7376, 7406, 7412, 7413, 7428, 7429, 7433, 7451,
11749 : /* 340 */ 7456, 7488, 7496, 7506, 7515, 7519, 7525, 7532, 7548, 7552,
11750 : /* 350 */ 7556, 7563, 7564, 7569, 7570, 7577, 7578, 7580, 7581, 7597,
11751 : /* 360 */ 7608, 7620, 7624, 7626, 7631, 7634, 7637, 7645, 7707, 7708,
11752 : /* 370 */ 7712, 7713, 7720, 7724, 7728, 7731, 7737, 7738, 7742, 7745,
11753 : /* 380 */ 7752, 7782, 7785, 7788, 7791, 7860, 7863, 7870, 7876, 7882,
11754 : /* 390 */ 7890, 7899, 7900, 7998, 8008, 8047, 8053, 8069, 8082, 8084,
11755 : /* 400 */ 8086, 8097, 8125, 8167, 8146, 8147, 8154, 8156, 8172, 8178,
11756 : /* 410 */ 8183, 8192, 8198, 8204, 8209, 8214, 8246, 8309, 8228, 8238,
11757 : /* 420 */ 8338, 8357, 8359, 8361, 8363, 8365, 8367, 8371, 8373, 8396,
11758 : /* 430 */ 8419, 8530, 8537, 8538, 8546, 8547, 8748, 9874, 9876, 9954,
11759 : /* 440 */ 9956, 9957, 9963, 9979, 9981, 9983, 10001, 10002, 10406, 10409,
11760 : /* 450 */ 10423, 10432, 10496, 10497, 10551, 10553, 10629, 11220, 11222, 11224,
11761 : /* 460 */ 11658, 7342, 7353, 7355, 7463, 499, 1280, 1301, 9216, 9221,
11762 : /* 470 */ 9226, 559, 560, 571, 576, 583, 592, 600, 609, 655,
11763 : /* 480 */ 658, 867, 1021, 1049, 1080, 620, 897, 901, 906, 912,
11764 : /* 490 */ 916, 924, 1013, 771, 781, 783, 785, 8846, 9271, 9293,
11765 : /* 500 */ 9276, 9281, 9286, 9300, 9334, 9339, 842, 6625, 6627, 6629,
11766 : /* 510 */ 6729, 6732, 6915, 6917, 6931, 6935, 6958, 6964, 6975, 7037,
11767 : /* 520 */ 7052, 4878, 4898, 4905, 4911, 4917, 4923, 7043, 4891, 4934,
11768 : /* 530 */ 4947, 6536, 6839, 6843, 6851, 7189, 9847, 9848, 7199, 10849,
11769 : /* 540 */ 10857, 12546, 8262, 8263, 8277, 8278, 854, 857, 1762, 2841,
11770 : /* 550 */ 2844, 2963, 2975, 3060, 3004, 3031, 3142, 3145, 4655, 4666,
11771 : /* 560 */ 4815, 4823, 5118, 7284, 8674, 7912, 7915, 7941, 7942, 8444,
11772 : /* 570 */ 8446, 8448, 8450, 8454, 8456, 8458, 8460, 8464, 8469, 8476,
11773 : /* 580 */ 8481, 8501, 8503, 8505, 8507, 8687, 8700, 8710, 8718, 8728,
11774 : /* 590 */ 8873, 8875, 9888, 9897, 9937, 10474, 10476, 10477, 10532, 10535,
11775 : /* 600 */ 10537, 2857, 7274, 7985, 8772, 8947, 8952, 11241, 11243, 11245,
11776 : /* 610 */ 11247, 11251, 959, 995, 1352, 4982, 5069, 5072, 5080, 5233,
11777 : /* 620 */ 5235, 5236, 5237, 5467, 5033, 5042, 6028, 6031, 6032, 6040,
11778 : /* 630 */ 2382, 2392, 2399, 3822, 3827, 4620, 4727, 9713, 9715, 9746,
11779 : /* 640 */ 9781, 12286, 1244, 9164, 9185, 1253, 8908, 8914, 9211, 9660,
11780 : /* 650 */ 1267, 1271, 9206, 9389, 1480, 1564, 1612, 1557, 1589, 1620,
11781 : /* 660 */ 1662, 1703, 1714, 1725, 1737, 2661, 1992, 2000, 2005, 2128,
11782 : /* 670 */ 2501, 2800, 3382, 3412, 3414, 3424, 3426, 3533, 3534, 3535,
11783 : /* 680 */ 3543, 3551, 3560, 3569, 3603, 3604, 3609, 3610, 3615, 3620,
11784 : /* 690 */ 3624, 3432, 3437, 3482, 4859, 5426, 5444, 5445, 5999, 6005,
11785 : /* 700 */ 6053, 7478, 7958, 9816, 9818, 10663, 1652, 1657, 2738, 1842,
11786 : /* 710 */ 2743, 5506, 2718, 2749, 2753, 5520, 4770, 7311, 7313, 2249,
11787 : /* 720 */ 2263, 2723, 3916, 2288, 2311, 2312, 10277, 2808, 4533, 4537,
11788 : /* 730 */ 4547, 4565, 4596, 4605, 4679, 4682, 4691, 4692, 4710, 4712,
11789 : /* 740 */ 4714, 4716, 4765, 9838, 4551, 4558, 4543, 4737, 4746, 4749,
11790 : /* 750 */ 11450, 11456, 11464, 11470, 11479, 11485, 11493, 11499, 11545, 11553,
11791 : /* 760 */ 4969, 5205, 5215, 8801, 8804, 8823, 5949, 5961, 5964, 5968,
11792 : /* 770 */ 8562, 7471, 7467, 8782, 8789, 8924, 8929, 9030, 9127, 9144,
11793 : /* 780 */ 9176, 9196, 9201, 9452, 9429, 9408, 9237, 9241, 9553, 9563,
11794 : /* 790 */ 9570, 9579, 9597, 9604, 9585, 9853, 9859, 10267, 10273, 10270,
11795 : /* 800 */ 10290, 10295, 10301, 10309, 10315, 10323, 10329, 10339, 10345, 10353,
11796 : /* 810 */ 10359, 10367, 10373, 10381, 10387, 10441, 10643, 10658, 10694, 10948,
11797 : /* 820 */ 10951, 10756, 10770, 10783, 11627, 11642, 11733, 11734, 12395, 219,
11798 : /* 830 */ 2160, 2170, 6085, 2188, 1187, 2672, 3363, 5548, 5550, 5560,
11799 : /* 840 */ 5677, 5688, 5701, 5724, 5734, 5743, 5755, 5781, 6095, 6542,
11800 : /* 850 */ 1839, 1853, 1860, 1891, 1898, 2516, 2766, 2165, 2183, 2192,
11801 : /* 860 */ 2258, 2294, 2300, 3903, 7237, 3911, 10349, 10305, 10363, 10377,
11802 : /* 870 */ 10391, 10319, 10333, 5565, 5575, 5584, 5611, 5621, 5627, 6106,
11803 : /* 880 */ 5636, 5633, 5919, 5927, 5935, 5939, 5922, 5930, 5943, 5955,
11804 : /* 890 */ 237, 263, 1795, 1800, 2731, 2585, 3779, 4645, 6124, 6133,
11805 : /* 900 */ 6144, 6153, 12301, 753, 5868, 5874, 5876, 3235, 3239, 268,
11806 : /* 910 */ 3256, 3260, 3291, 3299, 3272, 3286, 286, 323, 1516, 1848,
11807 : /* 920 */ 1965, 1972, 1982, 1987, 2269, 3307, 3319, 3313, 3325, 2280,
11808 : /* 930 */ 2984, 3012, 3039, 3023, 3050, 4195, 4167, 4242, 4251, 4294,
11809 : /* 940 */ 4305, 5059, 5881, 5892, 12267, 12268, 1754, 1767, 1772, 7948,
11810 : /* 950 */ 11604, 11608, 273, 326, 2993, 2996, 3332, 3339, 3346, 3352,
11811 : /* 960 */ 4204, 3357, 4260, 4314, 5884, 399, 330, 367, 376, 384,
11812 : /* 970 */ 458, 473, 481, 672, 712, 1030, 1225, 1230, 1335, 1338,
11813 : /* 980 */ 1472, 2570, 5897, 8881, 8887, 9078, 9328, 2692, 6332, 6342,
11814 : /* 990 */ 8015, 8594, 8654, 8655, 2682, 8588, 635, 638, 762, 791,
11815 : /* 1000 */ 797, 803, 811, 816, 821, 885, 889, 8893, 8899, 8512,
11816 : /* 1010 */ 943, 1427, 4998, 1416, 1419, 1451, 1462, 4975, 5064, 5266,
11817 : /* 1020 */ 1486, 1684, 1777, 1805, 2451, 5272, 5273, 7952, 12274, 4572,
11818 : /* 1030 */ 4576, 4637, 4638, 4758, 4583, 4587, 4628, 4629, 5186, 5916,
11819 : /* 1040 */ 8570, 8572, 8579, 8581, 7475, 7059, 4865, 6164, 4962, 6173,
11820 : /* 1050 */ 6858, 6863, 7010, 7012, 7018, 7027, 7028, 6071, 6073, 7065,
11821 : /* 1060 */ 7068, 7077, 7081, 7086, 7115, 7120, 7186, 7128, 7133, 7196,
11822 : /* 1070 */ 8292, 8294, 7152, 7153, 7154, 7209, 7176, 7177, 7178, 7224,
11823 : /* 1080 */ 7225, 8323, 8328, 7094, 6077, 6079, 6353, 6355, 10009, 10015,
11824 : /* 1090 */ 10020, 10029, 10031, 10051, 10096, 10099, 10100, 10132, 10138, 10140,
11825 : /* 1100 */ 10141, 10197, 10198, 10219, 10224, 10229, 10259, 12458, 11758, 11760,
11826 : /* 1110 */ 11795, 11870, 11873, 11954, 11893, 11899, 12020, 12022, 12081, 12083
11827 : };
11828 :
11829 27432 : fprintf (dump_file, "%s %s:%d, %s:%d\n",
11830 : simplify ? "Applying pattern" : "Matching expression", file1, dbg_line_numbers[line1_id], file2, line2);
11831 18366 : }
11832 :
11833 : #pragma GCC diagnostic pop
|