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 177131878 : tree_maybe_bit_not (tree t, tree *res_ops)
11 : {
12 177131878 : const tree type = TREE_TYPE (t);
13 177131878 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 177131878 : if (TREE_SIDE_EFFECTS (t)) return false;
15 169366460 : switch (TREE_CODE (t))
16 : {
17 51366072 : case INTEGER_CST:
18 51366072 : {
19 51366072 : {
20 51366072 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 51366072 : {
22 51366072 : res_ops[0] = captures[0];
23 51366072 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 8, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 118000388 : break;
28 : }
29 118000388 : default:;
30 : }
31 118000388 : {
32 118000388 : tree t_pops[1];
33 118000388 : if (tree_bit_not_with_nop (t, t_pops))
34 : {
35 150291 : tree _p0 = t_pops[0];
36 150291 : {
37 150291 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
38 150291 : {
39 150291 : res_ops[0] = captures[0];
40 150291 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 9, __FILE__, __LINE__, false);
41 150291 : return true;
42 : }
43 : }
44 : }
45 : }
46 117850097 : {
47 117850097 : tree t_pops[1];
48 117850097 : if (tree_maybe_cmp (t, t_pops))
49 : {
50 565064 : tree _p0 = t_pops[0];
51 565064 : {
52 565064 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
53 565064 : {
54 565064 : res_ops[0] = captures[0];
55 565064 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 10, __FILE__, __LINE__, false);
56 565064 : return true;
57 : }
58 : }
59 : }
60 : }
61 117285033 : {
62 117285033 : tree t_pops[2];
63 117285033 : if (tree_bit_xor_cst (t, t_pops))
64 : {
65 1598 : tree _p0 = t_pops[0];
66 1598 : tree _p1 = t_pops[1];
67 1598 : {
68 1598 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
69 1598 : {
70 1598 : res_ops[0] = captures[0];
71 1598 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 11, __FILE__, __LINE__, false);
72 1598 : return true;
73 : }
74 : }
75 : }
76 : }
77 117283435 : return false;
78 : }
79 :
80 : bool
81 2455 : tree_min_value (tree t)
82 : {
83 2455 : const tree type = TREE_TYPE (t);
84 2455 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
85 2455 : if (TREE_SIDE_EFFECTS (t)) return false;
86 2447 : if (uniform_integer_cst_p (t))
87 : {
88 2175 : {
89 2175 : {
90 2175 : tree int_cst = uniform_integer_cst_p (t);
91 2175 : tree inner_type = TREE_TYPE (int_cst);
92 4350 : if ((INTEGRAL_TYPE_P (inner_type)
93 17 : || POINTER_TYPE_P (inner_type))
94 4367 : && wi::eq_p (wi::to_wide (int_cst), wi::min_value (inner_type))
95 : )
96 : {
97 134 : {
98 134 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 41, __FILE__, __LINE__, false);
99 134 : return true;
100 : }
101 : }
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_1 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 3 : if (!flag_trapping_math
115 : )
116 : {
117 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail72;
118 2 : {
119 2 : tree res_op0;
120 2 : res_op0 = captures[0];
121 2 : tree _r;
122 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
123 2 : if (TREE_SIDE_EFFECTS (captures[1]))
124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
125 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 49, __FILE__, __LINE__, true);
126 2 : return _r;
127 : }
128 0 : next_after_fail72:;
129 : }
130 : return NULL_TREE;
131 : }
132 :
133 : tree
134 29 : generic_simplify_8 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
136 : const enum tree_code ARG_UNUSED (bit_op))
137 : {
138 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
139 29 : if (bit_op == BIT_AND_EXPR
140 : )
141 : {
142 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail79;
143 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail79;
144 9 : {
145 9 : tree _r;
146 9 : _r = build_zero_cst (type);
147 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 56, __FILE__, __LINE__, true);
148 9 : return _r;
149 : }
150 : next_after_fail79:;
151 : }
152 : else
153 : {
154 20 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail80;
155 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail80;
156 20 : {
157 20 : tree _r;
158 20 : _r = build_minus_one_cst (type);
159 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 57, __FILE__, __LINE__, true);
160 20 : return _r;
161 : }
162 : next_after_fail80:;
163 : }
164 : return NULL_TREE;
165 : }
166 :
167 : tree
168 1 : generic_simplify_17 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
169 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
170 : {
171 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
172 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail92;
173 1 : {
174 1 : tree res_op0;
175 1 : res_op0 = captures[0];
176 1 : tree res_op1;
177 1 : res_op1 = captures[1];
178 1 : tree _r;
179 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
180 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 65, __FILE__, __LINE__, true);
181 : return _r;
182 : }
183 0 : next_after_fail92:;
184 0 : return NULL_TREE;
185 : }
186 :
187 : tree
188 510 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
189 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
190 : const enum tree_code ARG_UNUSED (op))
191 : {
192 510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
193 510 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
194 510 : && tree_nop_conversion_p (type, TREE_TYPE (captures[4]))
195 1020 : && (wi::to_wide (captures[2]) & wi::to_wide (captures[5])) == 0
196 : )
197 : {
198 101 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail100;
199 101 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail100;
200 101 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail100;
201 101 : {
202 101 : tree res_op0;
203 101 : {
204 101 : tree _o1[1], _r1;
205 101 : _o1[0] = captures[0];
206 101 : if (TREE_TYPE (_o1[0]) != type)
207 : {
208 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
209 : }
210 : else
211 : _r1 = _o1[0];
212 101 : res_op0 = _r1;
213 : }
214 101 : tree res_op1;
215 101 : {
216 101 : tree _o1[1], _r1;
217 101 : _o1[0] = captures[3];
218 101 : if (TREE_TYPE (_o1[0]) != type)
219 : {
220 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
221 : }
222 : else
223 : _r1 = _o1[0];
224 101 : res_op1 = _r1;
225 : }
226 101 : tree _r;
227 101 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
228 101 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, true);
229 101 : return _r;
230 : }
231 : next_after_fail100:;
232 : }
233 : return NULL_TREE;
234 : }
235 :
236 : tree
237 24 : generic_simplify_38 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
238 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
239 : const enum tree_code ARG_UNUSED (op),
240 : const enum tree_code ARG_UNUSED (cmp),
241 : const enum tree_code ARG_UNUSED (icmp))
242 : {
243 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
244 24 : if (invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
245 : )
246 : {
247 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail115;
248 24 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail115;
249 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail115;
250 24 : {
251 24 : tree res_op0;
252 24 : res_op0 = captures[1];
253 24 : tree res_op1;
254 24 : res_op1 = captures[4];
255 24 : tree res_op2;
256 24 : res_op2 = captures[7];
257 24 : tree _r;
258 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
259 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 87, __FILE__, __LINE__, true);
260 24 : return _r;
261 : }
262 : next_after_fail115:;
263 : }
264 : return NULL_TREE;
265 : }
266 :
267 : tree
268 0 : generic_simplify_45 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
269 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
270 : const enum tree_code ARG_UNUSED (op))
271 : {
272 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
273 0 : if (INTEGRAL_TYPE_P (type)
274 0 : && tree_int_cst_sgn (captures[5]) > 0
275 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
276 : )
277 : {
278 0 : {
279 0 : tree t = type;
280 0 : if (!TYPE_OVERFLOW_WRAPS (t))
281 0 : t = unsigned_type_for (t);
282 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
283 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
284 0 : wi::lshift (wone, wi::to_wide (captures[5])));
285 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail123;
286 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail123;
287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail123;
288 0 : {
289 0 : tree res_op0;
290 0 : {
291 0 : tree _o1[2], _r1;
292 0 : {
293 0 : tree _o2[1], _r2;
294 0 : _o2[0] = captures[2];
295 0 : if (TREE_TYPE (_o2[0]) != t)
296 : {
297 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
298 : }
299 : else
300 : _r2 = _o2[0];
301 0 : _o1[0] = _r2;
302 : }
303 0 : _o1[1] = wide_int_to_tree (t, c);
304 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
305 0 : res_op0 = _r1;
306 : }
307 0 : tree _r;
308 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
309 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 89, __FILE__, __LINE__, true);
310 0 : return _r;
311 : }
312 0 : next_after_fail123:;
313 0 : }
314 : }
315 : return NULL_TREE;
316 : }
317 :
318 : tree
319 311 : generic_simplify_55 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
320 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
321 : const enum tree_code ARG_UNUSED (outer_op),
322 : const enum tree_code ARG_UNUSED (inner_op))
323 : {
324 311 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
325 311 : if (real_zerop (captures[2])
326 34 : && real_zerop (captures[3])
327 345 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
328 : )
329 : {
330 10 : {
331 10 : bool inner_plus = ((inner_op == PLUS_EXPR)
332 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[2])));
333 10 : bool outer_plus
334 10 : = ((outer_op == PLUS_EXPR)
335 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[3])));
336 10 : if (outer_plus && !inner_plus
337 : )
338 : {
339 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail135;
340 2 : {
341 2 : tree res_op0;
342 2 : res_op0 = captures[1];
343 2 : tree res_op1;
344 2 : res_op1 = captures[3];
345 2 : tree _r;
346 2 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
347 2 : if (TREE_SIDE_EFFECTS (captures[2]))
348 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
349 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 103, __FILE__, __LINE__, true);
350 2 : return _r;
351 : }
352 0 : next_after_fail135:;
353 : }
354 : else
355 : {
356 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail136;
357 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail136;
358 8 : {
359 8 : tree _r;
360 8 : _r = captures[0];
361 8 : if (TREE_SIDE_EFFECTS (captures[3]))
362 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
363 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 104, __FILE__, __LINE__, true);
364 8 : return _r;
365 : }
366 : next_after_fail136:;
367 : }
368 : }
369 : }
370 : return NULL_TREE;
371 : }
372 :
373 : tree
374 540 : generic_simplify_69 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
375 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
376 : {
377 540 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
378 540 : if (!TYPE_SATURATING (type)
379 : )
380 : {
381 540 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
382 1080 : && !FIXED_POINT_TYPE_P (type)
383 : )
384 : {
385 540 : if (!TYPE_OVERFLOW_TRAPS (type)
386 : )
387 : {
388 540 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail158;
389 540 : {
390 540 : tree res_op0;
391 540 : res_op0 = build_all_ones_cst (TREE_TYPE (captures[0]));
392 540 : tree _r;
393 540 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
394 540 : if (TREE_SIDE_EFFECTS (captures[0]))
395 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
396 540 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 126, __FILE__, __LINE__, true);
397 540 : return _r;
398 : }
399 0 : next_after_fail158:;
400 : }
401 : }
402 : }
403 : return NULL_TREE;
404 : }
405 :
406 : tree
407 2 : generic_simplify_76 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
408 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
409 : const enum tree_code ARG_UNUSED (div),
410 : const enum tree_code ARG_UNUSED (mod))
411 : {
412 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
413 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail166;
414 2 : {
415 2 : tree _r;
416 2 : _r = captures[0];
417 2 : if (TREE_SIDE_EFFECTS (captures[1]))
418 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
419 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 134, __FILE__, __LINE__, true);
420 : return _r;
421 : }
422 0 : next_after_fail166:;
423 0 : return NULL_TREE;
424 : }
425 :
426 : tree
427 19475 : generic_simplify_79 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
428 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
429 : const enum tree_code ARG_UNUSED (op))
430 : {
431 19475 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
432 19475 : if (flag_unsafe_math_optimizations
433 : )
434 : {
435 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail170;
436 12 : {
437 12 : tree res_op0;
438 12 : {
439 12 : tree _o1[2], _r1;
440 12 : _o1[0] = captures[0];
441 12 : _o1[1] = captures[2];
442 12 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
443 12 : res_op0 = _r1;
444 : }
445 12 : tree res_op1;
446 12 : res_op1 = captures[1];
447 12 : tree _r;
448 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
449 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 138, __FILE__, __LINE__, true);
450 12 : return _r;
451 : }
452 0 : next_after_fail170:;
453 : }
454 : return NULL_TREE;
455 : }
456 :
457 : tree
458 0 : generic_simplify_85 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
459 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
460 : const enum tree_code ARG_UNUSED (op))
461 : {
462 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
463 0 : if (VECTOR_FLOAT_TYPE_P (type)
464 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
465 : )
466 : {
467 0 : {
468 0 : tree perm_cst = captures[1];
469 0 : vec_perm_builder builder;
470 0 : bool full_perm_p = false;
471 0 : if (tree_to_vec_perm_builder (&builder, perm_cst))
472 : {
473 0 : unsigned HOST_WIDE_INT nelts;
474 0 : nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
475 0 : vec_perm_indices sel (builder, 1, nelts);
476 0 : if (sel.encoding ().encoded_full_vector_p ())
477 : {
478 0 : auto_sbitmap seen (nelts);
479 0 : bitmap_clear (seen);
480 0 : unsigned HOST_WIDE_INT count = 0, i;
481 0 : for (i = 0; i < nelts; i++)
482 : {
483 0 : if (!bitmap_set_bit (seen, sel[i].to_constant ()))
484 : break;
485 0 : count++;
486 : }
487 0 : full_perm_p = count == nelts;
488 0 : }
489 0 : }
490 0 : if (full_perm_p
491 : )
492 : {
493 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail176;
494 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail176;
495 0 : {
496 0 : tree res_op0;
497 0 : {
498 0 : tree _o1[2], _r1;
499 0 : _o1[0] = captures[0];
500 0 : _o1[1] = captures[2];
501 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
502 0 : captures[3] = _r1;
503 : }
504 0 : res_op0 = unshare_expr (captures[3]);
505 0 : tree res_op1;
506 0 : res_op1 = captures[3];
507 0 : tree res_op2;
508 0 : res_op2 = captures[1];
509 0 : tree _r;
510 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
511 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 144, __FILE__, __LINE__, true);
512 0 : return _r;
513 : }
514 0 : next_after_fail176:;
515 : }
516 0 : }
517 : }
518 : return NULL_TREE;
519 : }
520 :
521 : tree
522 43522 : generic_simplify_98 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
523 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
524 : {
525 43522 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
526 43522 : if (!TYPE_SATURATING (type)
527 : )
528 : {
529 43522 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
530 87044 : && !FIXED_POINT_TYPE_P (type)
531 : )
532 : {
533 0 : if (!ANY_INTEGRAL_TYPE_P (type)
534 43522 : || TYPE_OVERFLOW_WRAPS (type)
535 : )
536 : {
537 39768 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail190;
538 39768 : {
539 39768 : tree res_op0;
540 39768 : {
541 39768 : tree _o1[1], _r1;
542 39768 : _o1[0] = captures[1];
543 39768 : if (TREE_TYPE (_o1[0]) != type)
544 : {
545 202 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
546 : }
547 : else
548 : _r1 = _o1[0];
549 39768 : res_op0 = _r1;
550 : }
551 39768 : tree _r;
552 39768 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
553 39768 : if (TREE_SIDE_EFFECTS (captures[0]))
554 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
555 39768 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 157, __FILE__, __LINE__, true);
556 39768 : return _r;
557 : }
558 0 : next_after_fail190:;
559 : }
560 : else
561 : {
562 3754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail191;
563 3754 : {
564 3754 : tree res_op0;
565 3754 : {
566 3754 : tree _o1[1], _r1;
567 3754 : _o1[0] = captures[1];
568 3754 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
569 3754 : res_op0 = _r1;
570 : }
571 3754 : tree _r;
572 3754 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
573 3754 : if (TREE_SIDE_EFFECTS (captures[0]))
574 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
575 3754 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 158, __FILE__, __LINE__, true);
576 3754 : return _r;
577 : }
578 0 : next_after_fail191:;
579 : }
580 : }
581 : }
582 : return NULL_TREE;
583 : }
584 :
585 : tree
586 36 : generic_simplify_111 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
587 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
588 : const enum tree_code ARG_UNUSED (bitop),
589 : const enum tree_code ARG_UNUSED (cmp))
590 : {
591 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
592 72 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
593 36 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
594 72 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
595 : )
596 : {
597 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail208;
598 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail208;
599 36 : {
600 36 : tree res_op0;
601 36 : {
602 36 : tree _o1[2], _r1;
603 36 : _o1[0] = captures[0];
604 36 : {
605 36 : tree _o2[1], _r2;
606 36 : _o2[0] = captures[2];
607 36 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
608 : {
609 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
610 : }
611 : else
612 : _r2 = _o2[0];
613 36 : _o1[1] = _r2;
614 : }
615 36 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
616 36 : res_op0 = _r1;
617 : }
618 36 : tree res_op1;
619 36 : res_op1 = captures[1];
620 36 : tree _r;
621 36 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
622 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 175, __FILE__, __LINE__, true);
623 36 : return _r;
624 : }
625 : next_after_fail208:;
626 : }
627 : return NULL_TREE;
628 : }
629 :
630 : tree
631 16 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
632 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
633 : {
634 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
635 32 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
636 32 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
637 : )
638 : {
639 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail215;
640 0 : {
641 0 : tree res_op0;
642 0 : res_op0 = captures[0];
643 0 : tree res_op1;
644 0 : {
645 0 : tree _o1[2], _r1;
646 0 : _o1[0] = captures[1];
647 0 : _o1[1] = build_one_cst (type);
648 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
649 0 : res_op1 = _r1;
650 : }
651 0 : tree _r;
652 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
653 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 181, __FILE__, __LINE__, true);
654 0 : return _r;
655 : }
656 0 : next_after_fail215:;
657 : }
658 : return NULL_TREE;
659 : }
660 :
661 : tree
662 1 : generic_simplify_131 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
663 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
664 : {
665 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
666 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail228;
667 1 : {
668 1 : tree res_op0;
669 1 : {
670 1 : tree _o1[2], _r1;
671 1 : _o1[0] = captures[1];
672 1 : _o1[1] = captures[2];
673 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
674 1 : res_op0 = _r1;
675 : }
676 1 : tree _r;
677 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
678 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 190, __FILE__, __LINE__, true);
679 : return _r;
680 : }
681 0 : next_after_fail228:;
682 0 : return NULL_TREE;
683 : }
684 :
685 : tree
686 21 : generic_simplify_141 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
687 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
688 : const enum tree_code ARG_UNUSED (bitop),
689 : const enum tree_code ARG_UNUSED (rbitop))
690 : {
691 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
692 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail242;
693 21 : {
694 21 : tree _r;
695 21 : _r = captures[0];
696 21 : if (TREE_SIDE_EFFECTS (captures[1]))
697 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
698 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
699 : return _r;
700 : }
701 0 : next_after_fail242:;
702 0 : return NULL_TREE;
703 : }
704 :
705 : tree
706 0 : generic_simplify_145 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
707 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
708 : const enum tree_code ARG_UNUSED (bitop),
709 : const enum tree_code ARG_UNUSED (rbitop))
710 : {
711 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
712 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail246;
713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail246;
714 0 : {
715 0 : tree res_op0;
716 0 : res_op0 = captures[0];
717 0 : tree res_op1;
718 0 : res_op1 = captures[2];
719 0 : tree _r;
720 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
722 : return _r;
723 : }
724 : next_after_fail246:;
725 : return NULL_TREE;
726 : }
727 :
728 : tree
729 0 : generic_simplify_152 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
730 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
731 : const enum tree_code ARG_UNUSED (cmp),
732 : const enum tree_code ARG_UNUSED (icmp))
733 : {
734 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
735 0 : if (integer_zerop (captures[5])
736 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
737 : )
738 : {
739 0 : if (integer_onep (captures[4])
740 : )
741 : {
742 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail254;
743 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail254;
744 0 : {
745 0 : tree res_op0;
746 0 : {
747 0 : tree _o1[3], _r1;
748 0 : _o1[0] = captures[1];
749 0 : _o1[1] = captures[6];
750 0 : _o1[2] = captures[9];
751 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
752 0 : res_op0 = _r1;
753 : }
754 0 : tree res_op1;
755 0 : res_op1 = captures[4];
756 0 : tree _r;
757 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 203, __FILE__, __LINE__, true);
759 0 : return _r;
760 : }
761 : next_after_fail254:;
762 : }
763 : else
764 : {
765 0 : if (integer_minus_onep (captures[4])
766 : )
767 : {
768 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail255;
769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail255;
770 0 : {
771 0 : tree res_op0;
772 0 : res_op0 = captures[1];
773 0 : tree res_op1;
774 0 : res_op1 = captures[6];
775 0 : tree res_op2;
776 0 : res_op2 = captures[9];
777 0 : tree _r;
778 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
779 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
780 0 : return _r;
781 : }
782 : next_after_fail255:;
783 : }
784 : }
785 : }
786 : else
787 : {
788 0 : if (integer_zerop (captures[4])
789 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[2])) == icmp
790 : )
791 : {
792 0 : if (integer_onep (captures[5])
793 : )
794 : {
795 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail256;
796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail256;
797 0 : {
798 0 : tree res_op0;
799 0 : {
800 0 : tree _o1[3], _r1;
801 0 : _o1[0] = captures[1];
802 0 : _o1[1] = captures[9];
803 0 : _o1[2] = captures[6];
804 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
805 0 : res_op0 = _r1;
806 : }
807 0 : tree res_op1;
808 0 : res_op1 = captures[5];
809 0 : tree _r;
810 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 205, __FILE__, __LINE__, true);
812 0 : return _r;
813 : }
814 : next_after_fail256:;
815 : }
816 : else
817 : {
818 0 : if (integer_minus_onep (captures[5])
819 : )
820 : {
821 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail257;
822 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail257;
823 0 : {
824 0 : tree res_op0;
825 0 : res_op0 = captures[1];
826 0 : tree res_op1;
827 0 : res_op1 = captures[9];
828 0 : tree res_op2;
829 0 : res_op2 = captures[6];
830 0 : tree _r;
831 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
832 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
833 0 : return _r;
834 : }
835 : next_after_fail257:;
836 : }
837 : }
838 : }
839 : }
840 : return NULL_TREE;
841 : }
842 :
843 : tree
844 4 : generic_simplify_173 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
845 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
846 : {
847 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
848 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail311;
849 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail311;
850 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail311;
851 4 : {
852 4 : tree _r;
853 4 : _r = captures[0];
854 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 232, __FILE__, __LINE__, true);
855 : return _r;
856 : }
857 : next_after_fail311:;
858 : return NULL_TREE;
859 : }
860 :
861 : tree
862 0 : generic_simplify_178 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
863 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
864 : {
865 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
866 0 : if (type_has_mode_precision_p (type)
867 0 : && tree_fits_uhwi_p (captures[1])
868 0 : && tree_fits_uhwi_p (captures[3])
869 0 : && tree_fits_uhwi_p (captures[4])
870 0 : && ((~((HOST_WIDE_INT_1U << tree_to_uhwi (captures[1])) - 1)) & tree_to_uhwi (captures[4])) == 0
871 0 : && (tree_to_uhwi (captures[1]) + tree_to_uhwi (captures[3])) == TYPE_PRECISION (type)
872 0 : && TYPE_UNSIGNED (type)
873 0 : && captures[0] == captures[2]
874 : )
875 : {
876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail316;
877 0 : {
878 0 : tree res_op0;
879 0 : {
880 0 : tree _o1[2], _r1;
881 0 : _o1[0] = captures[0];
882 0 : _o1[1] = captures[3];
883 0 : _r1 = fold_build2_loc (loc, RROTATE_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
884 0 : res_op0 = _r1;
885 : }
886 0 : tree res_op1;
887 0 : res_op1 = captures[4];
888 0 : tree _r;
889 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
890 0 : if (TREE_SIDE_EFFECTS (captures[1]))
891 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
892 0 : if (TREE_SIDE_EFFECTS (captures[2]))
893 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
894 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 235, __FILE__, __LINE__, true);
895 0 : return _r;
896 : }
897 0 : next_after_fail316:;
898 : }
899 : return NULL_TREE;
900 : }
901 :
902 : tree
903 0 : generic_simplify_185 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
904 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
905 : const combined_fn ARG_UNUSED (copysigns))
906 : {
907 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
908 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail323;
909 0 : {
910 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail323;
911 0 : tree res_op0;
912 0 : res_op0 = unshare_expr (captures[1]);
913 0 : tree res_op1;
914 0 : res_op1 = captures[1];
915 0 : tree _r;
916 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
917 0 : if (TREE_SIDE_EFFECTS (captures[2]))
918 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
919 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 240, __FILE__, __LINE__, true);
920 : return _r;
921 : }
922 : next_after_fail323:;
923 : return NULL_TREE;
924 : }
925 :
926 : tree
927 37502 : generic_simplify_191 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
928 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
929 : {
930 37502 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
931 37502 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
932 37502 : && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
933 : )
934 : {
935 34863 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail331;
936 34863 : {
937 34863 : tree res_op0;
938 34863 : {
939 34863 : tree _o1[1], _r1;
940 34863 : _o1[0] = captures[0];
941 34863 : if (TREE_TYPE (_o1[0]) != type)
942 : {
943 890 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
944 : }
945 : else
946 : _r1 = _o1[0];
947 34863 : res_op0 = _r1;
948 : }
949 34863 : tree res_op1;
950 34863 : {
951 34863 : tree _o1[1], _r1;
952 34863 : {
953 34863 : tree _o2[1], _r2;
954 34863 : _o2[0] = captures[1];
955 34863 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
956 34863 : _o1[0] = _r2;
957 : }
958 34863 : if (TREE_TYPE (_o1[0]) != type)
959 : {
960 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
961 : }
962 : else
963 : _r1 = _o1[0];
964 34863 : res_op1 = _r1;
965 : }
966 34863 : tree _r;
967 34863 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
968 34863 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 245, __FILE__, __LINE__, true);
969 34863 : return _r;
970 : }
971 0 : next_after_fail331:;
972 : }
973 : return NULL_TREE;
974 : }
975 :
976 : tree
977 2 : generic_simplify_200 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
978 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
979 : const combined_fn ARG_UNUSED (SQRT_ALL))
980 : {
981 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
982 2 : if (flag_unsafe_math_optimizations
983 : )
984 : {
985 2 : if (!tree_expr_maybe_signaling_nan_p (captures[1])
986 : )
987 : {
988 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail341;
989 2 : {
990 2 : tree _r;
991 2 : _r = captures[1];
992 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 254, __FILE__, __LINE__, true);
993 2 : return _r;
994 : }
995 0 : next_after_fail341:;
996 : }
997 : }
998 : return NULL_TREE;
999 : }
1000 :
1001 : tree
1002 12 : generic_simplify_204 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1003 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1004 : const combined_fn ARG_UNUSED (TAN),
1005 : const combined_fn ARG_UNUSED (COS),
1006 : const combined_fn ARG_UNUSED (SIN))
1007 : {
1008 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1009 12 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1010 : )
1011 : {
1012 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail345;
1013 12 : {
1014 12 : tree res_op0;
1015 12 : res_op0 = captures[1];
1016 12 : tree _r;
1017 12 : _r = maybe_build_call_expr_loc (loc, SIN, type, 1, res_op0);
1018 12 : if (!_r)
1019 0 : goto next_after_fail345;
1020 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 258, __FILE__, __LINE__, true);
1021 12 : return _r;
1022 : }
1023 : next_after_fail345:;
1024 : }
1025 : return NULL_TREE;
1026 : }
1027 :
1028 : tree
1029 182 : generic_simplify_210 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1030 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1031 : const enum tree_code ARG_UNUSED (op))
1032 : {
1033 182 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1034 364 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1035 364 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
1036 182 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
1037 : && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0])))
1038 182 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1039 546 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
1040 : )
1041 : {
1042 182 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail351;
1043 182 : {
1044 182 : tree res_op0;
1045 182 : res_op0 = captures[2];
1046 182 : tree res_op1;
1047 182 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1048 182 : tree _r;
1049 182 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1050 182 : if (TREE_SIDE_EFFECTS (captures[3]))
1051 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1052 182 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 264, __FILE__, __LINE__, true);
1053 182 : return _r;
1054 : }
1055 0 : next_after_fail351:;
1056 : }
1057 : return NULL_TREE;
1058 : }
1059 :
1060 : tree
1061 1654327 : generic_simplify_220 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1062 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1063 : const enum tree_code ARG_UNUSED (cmp))
1064 : {
1065 1654327 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1066 3308654 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1067 1654327 : && integer_nonzerop (captures[2])
1068 1652737 : && !TREE_OVERFLOW (captures[2])
1069 3307064 : && !TREE_OVERFLOW (captures[3])
1070 : )
1071 : {
1072 1652737 : {
1073 1652737 : tree lo, hi; bool neg_overflow;
1074 1652737 : enum tree_code code = fold_div_compare (cmp, captures[2], captures[3], &lo, &hi,
1075 : &neg_overflow);
1076 1652737 : if (code == LT_EXPR || code == GE_EXPR
1077 : )
1078 : {
1079 40070 : if (TREE_OVERFLOW (lo)
1080 : )
1081 : {
1082 4742 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail364;
1083 4742 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail364;
1084 4742 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail364;
1085 4742 : {
1086 4742 : tree _r;
1087 4742 : _r = build_int_cst (type, (code == LT_EXPR) ^ neg_overflow);
1088 4742 : if (TREE_SIDE_EFFECTS (captures[1]))
1089 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1090 4742 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 276, __FILE__, __LINE__, true);
1091 1652734 : return _r;
1092 : }
1093 3 : next_after_fail364:;
1094 : }
1095 : else
1096 : {
1097 35328 : if (code == LT_EXPR
1098 : )
1099 : {
1100 720 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail365;
1101 720 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail365;
1102 720 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail365;
1103 720 : {
1104 720 : tree res_op0;
1105 720 : res_op0 = captures[1];
1106 720 : tree res_op1;
1107 720 : res_op1 = lo;
1108 720 : tree _r;
1109 720 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1110 720 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 277, __FILE__, __LINE__, true);
1111 720 : return _r;
1112 : }
1113 3 : next_after_fail365:;
1114 : }
1115 : else
1116 : {
1117 34608 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail366;
1118 34608 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail366;
1119 34608 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail366;
1120 34608 : {
1121 34608 : tree res_op0;
1122 34608 : res_op0 = captures[1];
1123 34608 : tree res_op1;
1124 34608 : res_op1 = lo;
1125 34608 : tree _r;
1126 34608 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1127 34608 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 278, __FILE__, __LINE__, true);
1128 34608 : return _r;
1129 : }
1130 3 : next_after_fail366:;
1131 : }
1132 : }
1133 : }
1134 : else
1135 : {
1136 1612667 : if (code == LE_EXPR || code == GT_EXPR
1137 : )
1138 : {
1139 1609571 : if (TREE_OVERFLOW (hi)
1140 : )
1141 : {
1142 531295 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail367;
1143 531295 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail367;
1144 531295 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail367;
1145 531295 : {
1146 531295 : tree _r;
1147 531295 : _r = build_int_cst (type, (code == LE_EXPR) ^ neg_overflow);
1148 531295 : if (TREE_SIDE_EFFECTS (captures[1]))
1149 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1150 531295 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 279, __FILE__, __LINE__, true);
1151 531295 : return _r;
1152 : }
1153 3 : next_after_fail367:;
1154 : }
1155 : else
1156 : {
1157 1078276 : if (code == LE_EXPR
1158 : )
1159 : {
1160 640 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail368;
1161 640 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail368;
1162 640 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail368;
1163 640 : {
1164 640 : tree res_op0;
1165 640 : res_op0 = captures[1];
1166 640 : tree res_op1;
1167 640 : res_op1 = hi;
1168 640 : tree _r;
1169 640 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1170 640 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 280, __FILE__, __LINE__, true);
1171 640 : return _r;
1172 : }
1173 3 : next_after_fail368:;
1174 : }
1175 : else
1176 : {
1177 1077636 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail369;
1178 1077636 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail369;
1179 1077636 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail369;
1180 1077636 : {
1181 1077636 : tree res_op0;
1182 1077636 : res_op0 = captures[1];
1183 1077636 : tree res_op1;
1184 1077636 : res_op1 = hi;
1185 1077636 : tree _r;
1186 1077636 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1187 1077636 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 281, __FILE__, __LINE__, true);
1188 1077636 : return _r;
1189 : }
1190 3 : next_after_fail369:;
1191 : }
1192 : }
1193 : }
1194 : else
1195 : {
1196 3096 : if (!lo && !hi
1197 : )
1198 : {
1199 40 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail370;
1200 40 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail370;
1201 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail370;
1202 40 : {
1203 40 : tree _r;
1204 40 : _r = build_int_cst (type, code == NE_EXPR);
1205 40 : if (TREE_SIDE_EFFECTS (captures[1]))
1206 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1207 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 282, __FILE__, __LINE__, true);
1208 40 : return _r;
1209 : }
1210 3 : next_after_fail370:;
1211 : }
1212 : else
1213 : {
1214 3056 : if (code == EQ_EXPR && !hi
1215 : )
1216 : {
1217 15 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail371;
1218 15 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail371;
1219 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail371;
1220 15 : {
1221 15 : tree res_op0;
1222 15 : res_op0 = captures[1];
1223 15 : tree res_op1;
1224 15 : res_op1 = lo;
1225 15 : tree _r;
1226 15 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1227 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 283, __FILE__, __LINE__, true);
1228 15 : return _r;
1229 : }
1230 3 : next_after_fail371:;
1231 : }
1232 : else
1233 : {
1234 943 : if (code == EQ_EXPR && !lo
1235 : )
1236 : {
1237 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail372;
1238 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail372;
1239 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail372;
1240 11 : {
1241 11 : tree res_op0;
1242 11 : res_op0 = captures[1];
1243 11 : tree res_op1;
1244 11 : res_op1 = hi;
1245 11 : tree _r;
1246 11 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1247 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 284, __FILE__, __LINE__, true);
1248 11 : return _r;
1249 : }
1250 3 : next_after_fail372:;
1251 : }
1252 : else
1253 : {
1254 3030 : if (code == NE_EXPR && !hi
1255 : )
1256 : {
1257 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail373;
1258 4 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail373;
1259 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail373;
1260 4 : {
1261 4 : tree res_op0;
1262 4 : res_op0 = captures[1];
1263 4 : tree res_op1;
1264 4 : res_op1 = lo;
1265 4 : tree _r;
1266 4 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
1267 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 285, __FILE__, __LINE__, true);
1268 4 : return _r;
1269 : }
1270 3 : next_after_fail373:;
1271 : }
1272 : else
1273 : {
1274 2094 : if (code == NE_EXPR && !lo
1275 : )
1276 : {
1277 20 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail374;
1278 20 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail374;
1279 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail374;
1280 20 : {
1281 20 : tree res_op0;
1282 20 : res_op0 = captures[1];
1283 20 : tree res_op1;
1284 20 : res_op1 = hi;
1285 20 : tree _r;
1286 20 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1287 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 286, __FILE__, __LINE__, true);
1288 20 : return _r;
1289 : }
1290 3 : next_after_fail374:;
1291 : }
1292 : else
1293 : {
1294 3006 : if (1
1295 : )
1296 : {
1297 3006 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail375;
1298 3003 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail375;
1299 3003 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail375;
1300 3003 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail375;
1301 3003 : {
1302 3003 : tree _r;
1303 3003 : _r = build_range_check (UNKNOWN_LOCATION, type, captures[1], code == EQ_EXPR,
1304 : lo, hi);
1305 3003 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 287, __FILE__, __LINE__, true);
1306 3003 : return _r;
1307 : }
1308 3 : next_after_fail375:;
1309 : }
1310 : else
1311 : {
1312 : {
1313 : tree etype = range_check_type (TREE_TYPE (captures[1]));
1314 : if (etype)
1315 : {
1316 : hi = fold_convert (etype, hi);
1317 : lo = fold_convert (etype, lo);
1318 : hi = const_binop (MINUS_EXPR, etype, hi, lo);
1319 : }
1320 : if (etype && hi && !TREE_OVERFLOW (hi)
1321 : )
1322 : {
1323 : if (code == EQ_EXPR
1324 : )
1325 : {
1326 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail376;
1327 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail376;
1328 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail376;
1329 : {
1330 : tree res_op0;
1331 : {
1332 : tree _o1[2], _r1;
1333 : {
1334 : tree _o2[1], _r2;
1335 : _o2[0] = captures[1];
1336 : if (TREE_TYPE (_o2[0]) != etype)
1337 : {
1338 : _r2 = fold_build1_loc (loc, NOP_EXPR, etype, _o2[0]);
1339 : }
1340 : else
1341 : _r2 = _o2[0];
1342 : _o1[0] = _r2;
1343 : }
1344 : _o1[1] = lo;
1345 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1346 : res_op0 = _r1;
1347 : }
1348 : tree res_op1;
1349 : res_op1 = hi;
1350 : tree _r;
1351 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1352 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 288, __FILE__, __LINE__, true);
1353 : return _r;
1354 : }
1355 : next_after_fail376:;
1356 : }
1357 : else
1358 : {
1359 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail377;
1360 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail377;
1361 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail377;
1362 : {
1363 : tree res_op0;
1364 : {
1365 : tree _o1[2], _r1;
1366 : {
1367 : tree _o2[1], _r2;
1368 : _o2[0] = captures[1];
1369 : if (TREE_TYPE (_o2[0]) != etype)
1370 : {
1371 : _r2 = fold_build1_loc (loc, NOP_EXPR, etype, _o2[0]);
1372 : }
1373 : else
1374 : _r2 = _o2[0];
1375 : _o1[0] = _r2;
1376 : }
1377 : _o1[1] = lo;
1378 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1379 : res_op0 = _r1;
1380 : }
1381 : tree res_op1;
1382 : res_op1 = hi;
1383 : tree _r;
1384 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1385 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 289, __FILE__, __LINE__, true);
1386 : return _r;
1387 : }
1388 : next_after_fail377:;
1389 : }
1390 : }
1391 : }
1392 : }
1393 : }
1394 : }
1395 : }
1396 : }
1397 : }
1398 : }
1399 : }
1400 : }
1401 : }
1402 : return NULL_TREE;
1403 : }
1404 :
1405 : tree
1406 0 : generic_simplify_277 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1407 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1408 : const enum tree_code ARG_UNUSED (cmp))
1409 : {
1410 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1411 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1412 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1413 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1414 0 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
1415 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1416 0 : && !wi::neg_p (wi::to_wide (captures[3]))
1417 : )
1418 : {
1419 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail510;
1420 0 : {
1421 0 : tree res_op0;
1422 0 : {
1423 0 : tree _o1[2], _r1;
1424 0 : _o1[0] = captures[2];
1425 0 : {
1426 0 : tree _o2[1], _r2;
1427 0 : {
1428 0 : tree _o3[1], _r3;
1429 0 : _o3[0] = captures[3];
1430 0 : _r3 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
1431 0 : _o2[0] = _r3;
1432 : }
1433 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1434 : {
1435 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1436 : }
1437 : else
1438 : _r2 = _o2[0];
1439 0 : _o1[1] = _r2;
1440 : }
1441 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1442 0 : res_op0 = _r1;
1443 : }
1444 0 : tree res_op1;
1445 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1446 0 : tree _r;
1447 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1448 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 411, __FILE__, __LINE__, true);
1449 0 : return _r;
1450 : }
1451 0 : next_after_fail510:;
1452 : }
1453 : return NULL_TREE;
1454 : }
1455 :
1456 : tree
1457 828200 : generic_simplify_284 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1458 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1459 : const enum tree_code ARG_UNUSED (cmp),
1460 : const enum tree_code ARG_UNUSED (ncmp))
1461 : {
1462 828200 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1463 1592105 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1464 828200 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
1465 826904 : && element_precision (captures[0]) >= element_precision (captures[1])
1466 1656400 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
1467 : )
1468 : {
1469 14697 : {
1470 14697 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1471 14697 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail517;
1472 14697 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail517;
1473 14697 : {
1474 14697 : tree res_op0;
1475 14697 : {
1476 14697 : tree _o1[1], _r1;
1477 14697 : _o1[0] = captures[1];
1478 14697 : if (TREE_TYPE (_o1[0]) != stype)
1479 : {
1480 14476 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1481 : }
1482 : else
1483 : _r1 = _o1[0];
1484 14697 : res_op0 = _r1;
1485 : }
1486 14697 : tree res_op1;
1487 14697 : res_op1 = build_zero_cst (stype);
1488 14697 : tree _r;
1489 14697 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1490 14697 : if (TREE_SIDE_EFFECTS (captures[2]))
1491 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1492 14697 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
1493 14697 : return _r;
1494 : }
1495 : next_after_fail517:;
1496 : }
1497 : }
1498 : return NULL_TREE;
1499 : }
1500 :
1501 : tree
1502 8 : generic_simplify_294 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1503 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1504 : const enum tree_code ARG_UNUSED (cmp),
1505 : const enum tree_code ARG_UNUSED (out))
1506 : {
1507 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1508 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1509 8 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1510 8 : && TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1511 8 : && (TYPE_PRECISION (TREE_TYPE (captures[1]))
1512 8 : >= 2 * TYPE_PRECISION (TREE_TYPE (captures[2])))
1513 8 : && tree_fits_uhwi_p (captures[4])
1514 8 : && tree_to_uhwi (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[2]))
1515 8 : && types_match (captures[2], captures[3])
1516 16 : && TYPE_MAX_VALUE (TREE_TYPE (captures[2]))
1517 : )
1518 : {
1519 8 : {
1520 8 : tree utype = unsigned_type_for (TREE_TYPE (captures[1]));
1521 8 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail545;
1522 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail545;
1523 8 : {
1524 8 : tree res_op0;
1525 8 : {
1526 8 : tree _o1[2], _r1;
1527 8 : {
1528 8 : tree _o2[1], _r2;
1529 8 : _o2[0] = captures[2];
1530 8 : if (TREE_TYPE (_o2[0]) != utype)
1531 : {
1532 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1533 : }
1534 : else
1535 : _r2 = _o2[0];
1536 8 : _o1[0] = _r2;
1537 : }
1538 8 : {
1539 8 : tree _o2[1], _r2;
1540 8 : _o2[0] = captures[3];
1541 8 : if (TREE_TYPE (_o2[0]) != utype)
1542 : {
1543 8 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1544 : }
1545 : else
1546 : _r2 = _o2[0];
1547 8 : _o1[1] = _r2;
1548 : }
1549 8 : _r1 = fold_build2_loc (loc, MULT_EXPR, utype, _o1[0], _o1[1]);
1550 8 : res_op0 = _r1;
1551 : }
1552 8 : tree res_op1;
1553 8 : res_op1 = fold_convert (utype, TYPE_MAX_VALUE (TREE_TYPE (captures[2])));
1554 8 : tree _r;
1555 8 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
1556 8 : if (TREE_SIDE_EFFECTS (captures[4]))
1557 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1558 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 436, __FILE__, __LINE__, true);
1559 8 : return _r;
1560 : }
1561 : next_after_fail545:;
1562 : }
1563 : }
1564 : return NULL_TREE;
1565 : }
1566 :
1567 : tree
1568 366 : generic_simplify_297 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1569 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1570 : const enum tree_code ARG_UNUSED (op),
1571 : const enum tree_code ARG_UNUSED (cmp),
1572 : const combined_fn ARG_UNUSED (clz))
1573 : {
1574 366 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1575 366 : if (!sanitize_flags_p (SANITIZE_BUILTIN)
1576 366 : || (cfun && (cfun->curr_properties & PROP_ssa) != 0)
1577 : )
1578 : {
1579 302 : if (integer_zerop (captures[2]) && single_use (captures[0])
1580 : )
1581 : {
1582 59 : {
1583 59 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1584 59 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail557;
1585 59 : {
1586 59 : tree res_op0;
1587 59 : {
1588 59 : tree _o1[1], _r1;
1589 59 : _o1[0] = captures[1];
1590 59 : if (TREE_TYPE (_o1[0]) != stype)
1591 : {
1592 59 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1593 : }
1594 : else
1595 : _r1 = _o1[0];
1596 59 : res_op0 = _r1;
1597 : }
1598 59 : tree res_op1;
1599 59 : res_op1 = build_zero_cst (stype);
1600 59 : tree _r;
1601 59 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1602 59 : if (TREE_SIDE_EFFECTS (captures[2]))
1603 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1604 59 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 448, __FILE__, __LINE__, true);
1605 59 : return _r;
1606 : }
1607 0 : next_after_fail557:;
1608 : }
1609 : }
1610 : else
1611 : {
1612 243 : if (wi::to_wide (captures[2]) == TYPE_PRECISION (TREE_TYPE (captures[1])) - 1
1613 : )
1614 : {
1615 79 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail558;
1616 79 : {
1617 79 : tree res_op0;
1618 79 : res_op0 = captures[1];
1619 79 : tree res_op1;
1620 79 : res_op1 = build_one_cst (TREE_TYPE (captures[1]));
1621 79 : tree _r;
1622 79 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1623 79 : if (TREE_SIDE_EFFECTS (captures[2]))
1624 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1625 79 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 449, __FILE__, __LINE__, true);
1626 79 : return _r;
1627 : }
1628 0 : next_after_fail558:;
1629 : }
1630 : }
1631 : }
1632 : return NULL_TREE;
1633 : }
1634 :
1635 : tree
1636 45 : generic_simplify_301 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1637 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1638 : const enum tree_code ARG_UNUSED (cmp),
1639 : const enum tree_code ARG_UNUSED (rep),
1640 : const combined_fn ARG_UNUSED (popcount))
1641 : {
1642 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1643 45 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail565;
1644 45 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail565;
1645 45 : {
1646 45 : tree res_op0;
1647 45 : res_op0 = captures[0];
1648 45 : tree res_op1;
1649 45 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1650 45 : tree _r;
1651 45 : _r = fold_build2_loc (loc, rep, type, res_op0, res_op1);
1652 45 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 456, __FILE__, __LINE__, true);
1653 : return _r;
1654 : }
1655 : next_after_fail565:;
1656 : return NULL_TREE;
1657 : }
1658 :
1659 : tree
1660 283372 : generic_simplify_306 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1661 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1662 : const enum tree_code ARG_UNUSED (cmp))
1663 : {
1664 283372 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1665 283372 : if (cmp != NE_EXPR
1666 278169 : || ! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1667 295748 : || ! tree_expr_maybe_nan_p (captures[0])
1668 : )
1669 : {
1670 276810 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail573;
1671 276810 : {
1672 276810 : tree _r;
1673 276810 : _r = constant_boolean_node (false, type);
1674 276810 : if (TREE_SIDE_EFFECTS (captures[0]))
1675 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1676 276810 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 464, __FILE__, __LINE__, true);
1677 276810 : return _r;
1678 : }
1679 0 : next_after_fail573:;
1680 : }
1681 : return NULL_TREE;
1682 : }
1683 :
1684 : tree
1685 0 : generic_simplify_310 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1686 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1687 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1688 : {
1689 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1690 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail577;
1691 0 : {
1692 0 : tree _r;
1693 0 : _r = captures[0];
1694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 468, __FILE__, __LINE__, true);
1695 : return _r;
1696 : }
1697 0 : next_after_fail577:;
1698 0 : return NULL_TREE;
1699 : }
1700 :
1701 : tree
1702 14453 : generic_simplify_317 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1703 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1704 : const enum tree_code ARG_UNUSED (div))
1705 : {
1706 14453 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1707 14453 : if (INTEGRAL_TYPE_P (type)
1708 14419 : && ssa_name_has_boolean_range (captures[1])
1709 14453 : && !flag_non_call_exceptions
1710 : )
1711 : {
1712 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail586;
1713 0 : {
1714 0 : tree _r;
1715 0 : _r = captures[0];
1716 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1717 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1718 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 475, __FILE__, __LINE__, true);
1719 0 : return _r;
1720 : }
1721 0 : next_after_fail586:;
1722 : }
1723 : return NULL_TREE;
1724 : }
1725 :
1726 : tree
1727 25285 : generic_simplify_323 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1728 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1729 : const enum tree_code ARG_UNUSED (div))
1730 : {
1731 25285 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1732 25285 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1733 : )
1734 : {
1735 25137 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail593;
1736 25137 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail593;
1737 25137 : {
1738 25137 : tree res_op0;
1739 25137 : res_op0 = captures[0];
1740 25137 : tree res_op1;
1741 25137 : res_op1 = wide_int_to_tree
1742 50274 : (type, wi::mask (TYPE_PRECISION (type)
1743 25137 : - wi::exact_log2 (wi::to_wide (captures[1])),
1744 25137 : false, TYPE_PRECISION (type)));
1745 25137 : tree _r;
1746 25137 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1747 25137 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 482, __FILE__, __LINE__, true);
1748 25137 : return _r;
1749 : }
1750 : next_after_fail593:;
1751 : }
1752 : return NULL_TREE;
1753 : }
1754 :
1755 : tree
1756 922 : generic_simplify_327 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1757 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1758 : const enum tree_code ARG_UNUSED (mod))
1759 : {
1760 922 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1761 922 : if (!integer_zerop (captures[1])
1762 : )
1763 : {
1764 785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail597;
1765 785 : {
1766 785 : tree _r;
1767 785 : _r = captures[0];
1768 785 : if (TREE_SIDE_EFFECTS (captures[1]))
1769 74 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1770 785 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 486, __FILE__, __LINE__, true);
1771 785 : return _r;
1772 : }
1773 0 : next_after_fail597:;
1774 : }
1775 : return NULL_TREE;
1776 : }
1777 :
1778 : tree
1779 0 : generic_simplify_336 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1780 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1781 : const combined_fn ARG_UNUSED (SQRT))
1782 : {
1783 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1784 0 : if (flag_unsafe_math_optimizations
1785 : )
1786 : {
1787 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail608;
1788 0 : {
1789 0 : tree res_op0;
1790 0 : res_op0 = captures[0];
1791 0 : tree _r;
1792 0 : _r = maybe_build_call_expr_loc (loc, SQRT, type, 1, res_op0);
1793 0 : if (!_r)
1794 0 : goto next_after_fail608;
1795 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 497, __FILE__, __LINE__, true);
1796 0 : return _r;
1797 : }
1798 : next_after_fail608:;
1799 : }
1800 : return NULL_TREE;
1801 : }
1802 :
1803 : tree
1804 4 : generic_simplify_343 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1805 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1806 : const combined_fn ARG_UNUSED (POW))
1807 : {
1808 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1809 4 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1810 : )
1811 : {
1812 4 : if (!TREE_OVERFLOW (captures[2])
1813 : )
1814 : {
1815 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail615;
1816 4 : {
1817 4 : tree res_op0;
1818 4 : res_op0 = captures[1];
1819 4 : tree res_op1;
1820 4 : {
1821 4 : tree _o1[2], _r1;
1822 4 : _o1[0] = captures[2];
1823 4 : _o1[1] = build_one_cst (type);
1824 4 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1825 4 : res_op1 = _r1;
1826 : }
1827 4 : tree _r;
1828 4 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1829 4 : if (!_r)
1830 0 : goto next_after_fail615;
1831 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 504, __FILE__, __LINE__, true);
1832 4 : return _r;
1833 : }
1834 : next_after_fail615:;
1835 : }
1836 : }
1837 : return NULL_TREE;
1838 : }
1839 :
1840 : tree
1841 9 : generic_simplify_351 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1842 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1843 : {
1844 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1845 9 : if (INTEGRAL_TYPE_P (type)
1846 9 : && !TYPE_UNSIGNED (type)
1847 : )
1848 : {
1849 9 : {
1850 9 : tree utype = unsigned_type_for (type);
1851 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail629;
1852 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail629;
1853 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail629;
1854 9 : {
1855 9 : tree res_op0;
1856 9 : {
1857 9 : tree _o1[2], _r1;
1858 9 : {
1859 9 : tree _o2[1], _r2;
1860 9 : _o2[0] = captures[0];
1861 9 : if (TREE_TYPE (_o2[0]) != utype)
1862 : {
1863 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1864 : }
1865 : else
1866 : _r2 = _o2[0];
1867 9 : _o1[0] = _r2;
1868 : }
1869 9 : {
1870 9 : tree _o2[1], _r2;
1871 9 : _o2[0] = captures[1];
1872 9 : if (TREE_TYPE (_o2[0]) != utype)
1873 : {
1874 9 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1875 : }
1876 : else
1877 : _r2 = _o2[0];
1878 9 : _o1[1] = _r2;
1879 : }
1880 9 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1881 9 : res_op0 = _r1;
1882 : }
1883 9 : tree _r;
1884 9 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1885 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 518, __FILE__, __LINE__, true);
1886 9 : return _r;
1887 : }
1888 : next_after_fail629:;
1889 : }
1890 : }
1891 : return NULL_TREE;
1892 : }
1893 :
1894 : tree
1895 0 : generic_simplify_358 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1896 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1897 : const enum tree_code ARG_UNUSED (op))
1898 : {
1899 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1900 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail636;
1901 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail636;
1902 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail636;
1903 0 : {
1904 0 : tree _r;
1905 0 : _r = captures[2];
1906 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 525, __FILE__, __LINE__, true);
1907 : return _r;
1908 : }
1909 : next_after_fail636:;
1910 : return NULL_TREE;
1911 : }
1912 :
1913 : tree
1914 0 : generic_simplify_365 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1915 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1916 : {
1917 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1918 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail643;
1919 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail643;
1920 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail643;
1921 0 : {
1922 0 : tree _r;
1923 0 : _r = captures[2];
1924 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 532, __FILE__, __LINE__, true);
1925 : return _r;
1926 : }
1927 : next_after_fail643:;
1928 : return NULL_TREE;
1929 : }
1930 :
1931 : tree
1932 9 : generic_simplify_371 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1933 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1934 : const combined_fn ARG_UNUSED (func))
1935 : {
1936 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1937 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail650;
1938 9 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail650;
1939 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail650;
1940 9 : {
1941 9 : tree _r;
1942 9 : _r = captures[2];
1943 9 : if (TREE_SIDE_EFFECTS (captures[1]))
1944 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1945 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 539, __FILE__, __LINE__, true);
1946 : return _r;
1947 : }
1948 : next_after_fail650:;
1949 : return NULL_TREE;
1950 : }
1951 :
1952 : tree
1953 26 : generic_simplify_379 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1954 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1955 : const enum tree_code ARG_UNUSED (ltge),
1956 : const enum tree_code ARG_UNUSED (gelt))
1957 : {
1958 26 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1959 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail661;
1960 26 : {
1961 26 : tree res_op0;
1962 26 : res_op0 = captures[1];
1963 26 : tree res_op1;
1964 26 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1965 26 : tree _r;
1966 26 : _r = fold_build2_loc (loc, gelt, type, res_op0, res_op1);
1967 26 : if (TREE_SIDE_EFFECTS (captures[0]))
1968 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1969 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 548, __FILE__, __LINE__, true);
1970 : return _r;
1971 : }
1972 0 : next_after_fail661:;
1973 0 : return NULL_TREE;
1974 : }
1975 :
1976 : tree
1977 433 : generic_simplify_385 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1978 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1979 : const enum tree_code ARG_UNUSED (op))
1980 : {
1981 433 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1982 866 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1983 866 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1984 : )
1985 : {
1986 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail668;
1987 0 : {
1988 0 : tree res_op0;
1989 0 : res_op0 = captures[2];
1990 0 : tree res_op1;
1991 0 : res_op1 = captures[1];
1992 0 : tree _r;
1993 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1994 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1995 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1996 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 555, __FILE__, __LINE__, true);
1997 0 : return _r;
1998 : }
1999 0 : next_after_fail668:;
2000 : }
2001 : return NULL_TREE;
2002 : }
2003 :
2004 : tree
2005 6 : generic_simplify_391 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2006 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2007 : const enum tree_code ARG_UNUSED (cmp))
2008 : {
2009 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2010 12 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2011 12 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2012 : )
2013 : {
2014 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail675;
2015 6 : {
2016 6 : tree res_op0;
2017 6 : res_op0 = captures[0];
2018 6 : tree res_op1;
2019 6 : res_op1 = captures[1];
2020 6 : tree _r;
2021 6 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2022 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 562, __FILE__, __LINE__, true);
2023 6 : return _r;
2024 : }
2025 0 : next_after_fail675:;
2026 : }
2027 : return NULL_TREE;
2028 : }
2029 :
2030 : tree
2031 178 : generic_simplify_398 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2032 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2033 : const enum tree_code ARG_UNUSED (cmp),
2034 : const enum tree_code ARG_UNUSED (out))
2035 : {
2036 178 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2037 178 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2038 178 : && types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[0]))
2039 105 : && tree_nop_conversion_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[3]))
2040 178 : && wi::to_wide (captures[4]) != 0
2041 0 : && single_use (captures[1])
2042 : )
2043 : {
2044 105 : {
2045 105 : unsigned int prec = TYPE_PRECISION (TREE_TYPE (captures[3]));
2046 105 : signop sign = TYPE_SIGN (TREE_TYPE (captures[3]));
2047 105 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail714;
2048 105 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail714;
2049 105 : {
2050 105 : tree res_op0;
2051 105 : res_op0 = captures[3];
2052 105 : tree res_op1;
2053 105 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[3]),
2054 105 : wi::max_value (prec, sign)
2055 315 : - wi::to_wide (captures[4]));
2056 105 : tree _r;
2057 105 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2058 105 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 564, __FILE__, __LINE__, true);
2059 105 : return _r;
2060 : }
2061 : next_after_fail714:;
2062 : }
2063 : }
2064 : return NULL_TREE;
2065 : }
2066 :
2067 : tree
2068 50 : generic_simplify_406 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2069 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2070 : const enum tree_code ARG_UNUSED (op),
2071 : const enum tree_code ARG_UNUSED (cmp),
2072 : const combined_fn ARG_UNUSED (ctz))
2073 : {
2074 50 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2075 50 : {
2076 50 : bool ok = true;
2077 50 : HOST_WIDE_INT val = 0;
2078 50 : if (sanitize_flags_p (SANITIZE_BUILTIN)
2079 50 : && (!cfun
2080 32 : || (cfun->curr_properties & PROP_ssa) == 0))
2081 : ok = false;
2082 18 : else if (!tree_fits_shwi_p (captures[2]))
2083 : ok = false;
2084 : else
2085 : {
2086 18 : val = tree_to_shwi (captures[2]);
2087 18 : if (op == GT_EXPR || op == LE_EXPR)
2088 : {
2089 10 : if (val == HOST_WIDE_INT_MAX)
2090 : ok = false;
2091 : else
2092 10 : val++;
2093 : }
2094 : }
2095 50 : tree type0 = TREE_TYPE (captures[1]);
2096 50 : int prec = TYPE_PRECISION (type0);
2097 68 : if (ok && prec <= MAX_FIXED_MODE_SIZE
2098 : )
2099 : {
2100 18 : if (val <= 0
2101 : )
2102 : {
2103 8 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail725;
2104 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail725;
2105 8 : {
2106 8 : tree _r;
2107 8 : _r = constant_boolean_node (cmp == EQ_EXPR ? true : false, type);
2108 8 : if (TREE_SIDE_EFFECTS (captures[1]))
2109 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2110 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 595, __FILE__, __LINE__, true);
2111 8 : return _r;
2112 : }
2113 : next_after_fail725:;
2114 : }
2115 : else
2116 : {
2117 10 : if (val >= prec
2118 : )
2119 : {
2120 5 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail726;
2121 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail726;
2122 5 : {
2123 5 : tree _r;
2124 5 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
2125 5 : if (TREE_SIDE_EFFECTS (captures[1]))
2126 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2127 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 596, __FILE__, __LINE__, true);
2128 5 : return _r;
2129 : }
2130 : next_after_fail726:;
2131 : }
2132 : else
2133 : {
2134 5 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail727;
2135 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail727;
2136 5 : {
2137 5 : tree res_op0;
2138 5 : {
2139 5 : tree _o1[2], _r1;
2140 5 : _o1[0] = captures[1];
2141 5 : _o1[1] = wide_int_to_tree (type0,
2142 5 : wi::mask (val, false, prec));
2143 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2144 5 : res_op0 = _r1;
2145 : }
2146 5 : tree res_op1;
2147 5 : res_op1 = build_zero_cst (type0);
2148 5 : tree _r;
2149 5 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2150 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 597, __FILE__, __LINE__, true);
2151 5 : return _r;
2152 : }
2153 : next_after_fail727:;
2154 : }
2155 : }
2156 : }
2157 : }
2158 : return NULL_TREE;
2159 : }
2160 :
2161 : tree
2162 94 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2163 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2164 : {
2165 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2166 188 : if (INTEGRAL_TYPE_P (type)
2167 93 : && !TYPE_UNSIGNED (type)
2168 93 : && !TYPE_OVERFLOW_TRAPS (type)
2169 93 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2170 281 : && (expr_not_equal_to (captures[0], wi::to_wide (TYPE_MIN_VALUE (type)))
2171 187 : || expr_not_equal_to (captures[2], wi::minus_one (TYPE_PRECISION
2172 : (TREE_TYPE (captures[2]))),
2173 : gimple_match_ctx (captures[1])))
2174 : )
2175 : {
2176 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail746;
2177 0 : {
2178 0 : tree res_op0;
2179 0 : res_op0 = captures[0];
2180 0 : tree res_op1;
2181 0 : {
2182 0 : tree _o1[1], _r1;
2183 0 : _o1[0] = captures[2];
2184 0 : if (TREE_TYPE (_o1[0]) != type)
2185 : {
2186 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2187 : }
2188 : else
2189 : _r1 = _o1[0];
2190 0 : res_op1 = _r1;
2191 : }
2192 0 : tree _r;
2193 0 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
2194 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 612, __FILE__, __LINE__, true);
2195 0 : return _r;
2196 : }
2197 0 : next_after_fail746:;
2198 : }
2199 : return NULL_TREE;
2200 : }
2201 :
2202 : tree
2203 0 : generic_simplify_426 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2204 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2205 : const enum tree_code ARG_UNUSED (shiftrotate))
2206 : {
2207 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2208 0 : {
2209 0 : tree tem = uniform_vector_p (captures[1]);
2210 0 : if (tem
2211 : )
2212 : {
2213 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail753;
2214 0 : {
2215 0 : tree res_op0;
2216 0 : res_op0 = captures[0];
2217 0 : tree res_op1;
2218 0 : res_op1 = tem;
2219 0 : tree _r;
2220 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2221 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2222 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2223 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 618, __FILE__, __LINE__, true);
2224 0 : return _r;
2225 : }
2226 0 : next_after_fail753:;
2227 : }
2228 : }
2229 : return NULL_TREE;
2230 : }
2231 :
2232 : tree
2233 3714681 : generic_simplify_433 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2234 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2235 : const enum tree_code ARG_UNUSED (bitop))
2236 : {
2237 3714681 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2238 3714681 : if (0
2239 : && INTEGRAL_TYPE_P (type)
2240 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2241 : && TREE_CODE (captures[3]) != INTEGER_CST
2242 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2243 : && TYPE_PRECISION (TREE_TYPE (captures[2])) > TYPE_PRECISION (type)
2244 : )
2245 : {
2246 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail767;
2247 : {
2248 : tree res_op0;
2249 : {
2250 : tree _o1[1], _r1;
2251 : _o1[0] = captures[2];
2252 : if (TREE_TYPE (_o1[0]) != type)
2253 : {
2254 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2255 : }
2256 : else
2257 : _r1 = _o1[0];
2258 : res_op0 = _r1;
2259 : }
2260 : tree res_op1;
2261 : {
2262 : tree _o1[1], _r1;
2263 : _o1[0] = captures[3];
2264 : if (TREE_TYPE (_o1[0]) != type)
2265 : {
2266 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2267 : }
2268 : else
2269 : _r1 = _o1[0];
2270 : res_op1 = _r1;
2271 : }
2272 : tree _r;
2273 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 631, __FILE__, __LINE__, true);
2275 : return _r;
2276 : }
2277 : next_after_fail767:;
2278 : }
2279 : else
2280 : {
2281 3714681 : if (0
2282 : && INTEGRAL_TYPE_P (type)
2283 : && types_match (type, TREE_TYPE (captures[2]))
2284 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2285 : )
2286 : {
2287 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail768;
2288 : {
2289 : tree res_op0;
2290 : res_op0 = captures[2];
2291 : tree res_op1;
2292 : {
2293 : tree _o1[1], _r1;
2294 : _o1[0] = captures[3];
2295 : if (TREE_TYPE (_o1[0]) != type)
2296 : {
2297 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2298 : }
2299 : else
2300 : _r1 = _o1[0];
2301 : res_op1 = _r1;
2302 : }
2303 : tree _r;
2304 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2305 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 632, __FILE__, __LINE__, true);
2306 : return _r;
2307 : }
2308 : next_after_fail768:;
2309 : }
2310 : }
2311 3714681 : return NULL_TREE;
2312 : }
2313 :
2314 : tree
2315 22117216 : generic_simplify_440 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2316 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2317 : const enum tree_code ARG_UNUSED (op))
2318 : {
2319 22117216 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2320 22117216 : if (INTEGRAL_TYPE_P (type)
2321 20564713 : && op != MULT_EXPR
2322 20564713 : && op != RDIV_EXPR
2323 11316861 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2324 11316861 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2325 11316861 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2326 11315553 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2327 11315553 : && type_has_mode_precision_p (type)
2328 11281258 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2329 0 : && types_match (captures[2], type)
2330 22117216 : && (types_match (captures[2], captures[4])
2331 0 : || poly_int_tree_p (captures[3]))
2332 : )
2333 : {
2334 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2335 : )
2336 : {
2337 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail785;
2338 0 : {
2339 0 : tree res_op0;
2340 0 : res_op0 = captures[2];
2341 0 : tree res_op1;
2342 0 : {
2343 0 : tree _o1[1], _r1;
2344 0 : _o1[0] = captures[4];
2345 0 : if (TREE_TYPE (_o1[0]) != type)
2346 : {
2347 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2348 : }
2349 : else
2350 : _r1 = _o1[0];
2351 0 : res_op1 = _r1;
2352 : }
2353 0 : tree _r;
2354 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2355 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2356 0 : return _r;
2357 : }
2358 0 : next_after_fail785:;
2359 : }
2360 : else
2361 : {
2362 0 : {
2363 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2364 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail786;
2365 0 : {
2366 0 : tree res_op0;
2367 0 : {
2368 0 : tree _o1[2], _r1;
2369 0 : {
2370 0 : tree _o2[1], _r2;
2371 0 : _o2[0] = captures[2];
2372 0 : if (TREE_TYPE (_o2[0]) != utype)
2373 : {
2374 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2375 : }
2376 : else
2377 : _r2 = _o2[0];
2378 0 : _o1[0] = _r2;
2379 : }
2380 0 : {
2381 0 : tree _o2[1], _r2;
2382 0 : _o2[0] = captures[4];
2383 0 : if (TREE_TYPE (_o2[0]) != utype)
2384 : {
2385 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2386 : }
2387 : else
2388 : _r2 = _o2[0];
2389 0 : _o1[1] = _r2;
2390 : }
2391 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2392 0 : res_op0 = _r1;
2393 : }
2394 0 : tree _r;
2395 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2396 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2397 0 : return _r;
2398 : }
2399 0 : next_after_fail786:;
2400 : }
2401 : }
2402 : }
2403 : else
2404 : {
2405 22065468 : if (FLOAT_TYPE_P (type)
2406 22168964 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2407 51748 : == DECIMAL_FLOAT_TYPE_P (type)
2408 : )
2409 : {
2410 51708 : {
2411 51708 : tree arg0 = strip_float_extensions (captures[2]);
2412 51708 : tree arg1 = strip_float_extensions (captures[4]);
2413 51708 : tree itype = TREE_TYPE (captures[0]);
2414 51708 : tree ty1 = TREE_TYPE (arg0);
2415 51708 : tree ty2 = TREE_TYPE (arg1);
2416 51708 : enum tree_code code = TREE_CODE (itype);
2417 0 : if (FLOAT_TYPE_P (ty1)
2418 51708 : && FLOAT_TYPE_P (ty2)
2419 : )
2420 : {
2421 51708 : {
2422 51708 : tree newtype = type;
2423 51708 : if (TYPE_MODE (ty1) == SDmode
2424 51440 : || TYPE_MODE (ty2) == SDmode
2425 103148 : || TYPE_MODE (type) == SDmode)
2426 283 : newtype = dfloat32_type_node;
2427 51708 : if (TYPE_MODE (ty1) == DDmode
2428 51562 : || TYPE_MODE (ty2) == DDmode
2429 103143 : || TYPE_MODE (type) == DDmode)
2430 275 : newtype = dfloat64_type_node;
2431 51708 : if (TYPE_MODE (ty1) == TDmode
2432 51707 : || TYPE_MODE (ty2) == TDmode
2433 103163 : || TYPE_MODE (type) == TDmode)
2434 268 : newtype = dfloat128_type_node;
2435 51708 : if ((newtype == dfloat32_type_node
2436 51704 : || newtype == dfloat64_type_node
2437 51561 : || newtype == dfloat128_type_node)
2438 415 : && newtype == type
2439 51719 : && types_match (newtype, type)
2440 : )
2441 : {
2442 11 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail787;
2443 5 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail787;
2444 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail787;
2445 5 : {
2446 5 : tree res_op0;
2447 5 : {
2448 5 : tree _o1[1], _r1;
2449 5 : _o1[0] = captures[2];
2450 5 : if (TREE_TYPE (_o1[0]) != newtype)
2451 : {
2452 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2453 : }
2454 : else
2455 : _r1 = _o1[0];
2456 5 : res_op0 = _r1;
2457 : }
2458 5 : tree res_op1;
2459 5 : {
2460 5 : tree _o1[1], _r1;
2461 5 : _o1[0] = captures[4];
2462 5 : if (TREE_TYPE (_o1[0]) != newtype)
2463 : {
2464 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2465 : }
2466 : else
2467 : _r1 = _o1[0];
2468 5 : res_op1 = _r1;
2469 : }
2470 5 : tree _r;
2471 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2472 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2473 5 : return _r;
2474 : }
2475 : next_after_fail787:;
2476 : }
2477 : else
2478 : {
2479 51697 : {
2480 51697 : if (element_precision (ty1) > element_precision (newtype))
2481 11722 : newtype = ty1;
2482 51697 : if (element_precision (ty2) > element_precision (newtype))
2483 4848 : newtype = ty2;
2484 51697 : if (element_precision (newtype) < element_precision (itype)
2485 14505 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2486 0 : || target_supports_op_p (newtype, op, optab_default))
2487 14505 : && (flag_unsafe_math_optimizations
2488 14497 : || (element_precision (newtype) == element_precision (type)
2489 14468 : && real_can_shorten_arithmetic (element_mode (itype),
2490 : element_mode (type))
2491 4559 : && !excess_precision_type (newtype)))
2492 51852 : && !types_match (itype, newtype)
2493 : )
2494 : {
2495 155 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail788;
2496 154 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail788;
2497 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail788;
2498 136 : {
2499 136 : tree res_op0;
2500 136 : {
2501 136 : tree _o1[2], _r1;
2502 136 : {
2503 136 : tree _o2[1], _r2;
2504 136 : _o2[0] = captures[2];
2505 136 : if (TREE_TYPE (_o2[0]) != newtype)
2506 : {
2507 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2508 : }
2509 : else
2510 : _r2 = _o2[0];
2511 136 : _o1[0] = _r2;
2512 : }
2513 136 : {
2514 136 : tree _o2[1], _r2;
2515 136 : _o2[0] = captures[4];
2516 136 : if (TREE_TYPE (_o2[0]) != newtype)
2517 : {
2518 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2519 : }
2520 : else
2521 : _r2 = _o2[0];
2522 136 : _o1[1] = _r2;
2523 : }
2524 136 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2525 136 : res_op0 = _r1;
2526 : }
2527 136 : tree _r;
2528 136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2529 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 640, __FILE__, __LINE__, true);
2530 136 : return _r;
2531 : }
2532 : next_after_fail788:;
2533 : }
2534 : }
2535 : }
2536 : }
2537 : }
2538 : }
2539 : }
2540 : }
2541 : return NULL_TREE;
2542 : }
2543 :
2544 : tree
2545 0 : generic_simplify_472 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2546 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2547 : const enum tree_code ARG_UNUSED (cmp))
2548 : {
2549 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2550 0 : if (fold_before_rtl_expansion_p ()
2551 : )
2552 : {
2553 0 : if (INTEGRAL_TYPE_P (type)
2554 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2555 : )
2556 : {
2557 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail820;
2558 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail820;
2559 0 : {
2560 0 : tree res_op0;
2561 0 : res_op0 = captures[0];
2562 0 : tree res_op1;
2563 0 : res_op1 = captures[3];
2564 0 : tree res_op2;
2565 0 : res_op2 = build_zero_cst (type);
2566 0 : tree _r;
2567 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2568 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 671, __FILE__, __LINE__, true);
2569 0 : return _r;
2570 : }
2571 : next_after_fail820:;
2572 : }
2573 : }
2574 : return NULL_TREE;
2575 : }
2576 :
2577 : tree
2578 0 : generic_simplify_482 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2579 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2580 : const enum tree_code ARG_UNUSED (eqne))
2581 : {
2582 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2583 0 : if (eqne == EQ_EXPR
2584 : )
2585 : {
2586 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail851;
2587 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail851;
2588 0 : {
2589 0 : tree _r;
2590 0 : _r = constant_boolean_node (false, type);
2591 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2592 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2593 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2594 0 : return _r;
2595 : }
2596 : next_after_fail851:;
2597 : }
2598 : else
2599 : {
2600 0 : if (eqne == NE_EXPR
2601 : )
2602 : {
2603 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail852;
2604 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail852;
2605 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail852;
2606 0 : {
2607 0 : tree _r;
2608 0 : _r = captures[0];
2609 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2610 0 : return _r;
2611 : }
2612 : next_after_fail852:;
2613 : }
2614 : }
2615 : return NULL_TREE;
2616 : }
2617 :
2618 : tree
2619 4 : generic_simplify_490 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2620 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2621 : {
2622 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2623 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail872;
2624 4 : {
2625 4 : tree res_op0;
2626 4 : res_op0 = captures[1];
2627 4 : tree res_op1;
2628 4 : {
2629 4 : tree _o1[2], _r1;
2630 4 : _o1[0] = captures[2];
2631 4 : _o1[1] = captures[3];
2632 4 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2633 4 : if (EXPR_P (_r1))
2634 2 : goto next_after_fail872;
2635 2 : res_op1 = _r1;
2636 : }
2637 2 : tree _r;
2638 2 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2639 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
2640 : return _r;
2641 : }
2642 : next_after_fail872:;
2643 : return NULL_TREE;
2644 : }
2645 :
2646 : tree
2647 41220 : generic_simplify_494 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2648 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2649 : const enum tree_code ARG_UNUSED (shift))
2650 : {
2651 41220 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2652 41220 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2653 23631 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2654 23631 : && tree_fits_uhwi_p (captures[4])
2655 23631 : && tree_to_uhwi (captures[4]) > 0
2656 64849 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2657 : )
2658 : {
2659 23629 : {
2660 23629 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2661 23629 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2662 23629 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2663 23629 : tree shift_type = TREE_TYPE (captures[2]);
2664 23629 : unsigned int prec;
2665 23629 : if (shift == LSHIFT_EXPR)
2666 0 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2667 23629 : else if (shift == RSHIFT_EXPR
2668 23629 : && type_has_mode_precision_p (shift_type))
2669 : {
2670 23629 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2671 23629 : tree arg00 = captures[3];
2672 23629 : if (captures[2] != captures[3]
2673 23629 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2674 : {
2675 0 : tree inner_type = TREE_TYPE (captures[3]);
2676 0 : if (type_has_mode_precision_p (inner_type)
2677 0 : && TYPE_PRECISION (inner_type) < prec)
2678 : {
2679 0 : prec = TYPE_PRECISION (inner_type);
2680 0 : if (shiftc < prec)
2681 0 : shift_type = inner_type;
2682 : }
2683 : }
2684 23629 : zerobits = HOST_WIDE_INT_M1U;
2685 23629 : if (shiftc < prec)
2686 : {
2687 23629 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2688 23629 : zerobits <<= prec - shiftc;
2689 : }
2690 23629 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2691 23629 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2692 : {
2693 98 : if ((mask & zerobits) == 0)
2694 82 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2695 : else
2696 : zerobits = 0;
2697 : }
2698 : }
2699 23613 : if ((mask & zerobits) == mask
2700 : )
2701 : {
2702 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail882;
2703 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail882;
2704 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail882;
2705 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail882;
2706 0 : {
2707 0 : tree _r;
2708 0 : _r = build_int_cst (type, 0);
2709 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 695, __FILE__, __LINE__, true);
2710 0 : return _r;
2711 : }
2712 : next_after_fail882:;
2713 : }
2714 : else
2715 : {
2716 23629 : {
2717 23629 : newmask = mask | zerobits;
2718 23629 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2719 : )
2720 : {
2721 : {
2722 109 : for (prec = BITS_PER_UNIT;
2723 181 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2724 171 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2725 : break;
2726 72 : if (prec < HOST_BITS_PER_WIDE_INT
2727 10 : || newmask == HOST_WIDE_INT_M1U
2728 : )
2729 : {
2730 72 : {
2731 72 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2732 72 : if (!tree_int_cst_equal (newmaskt, captures[5])
2733 : )
2734 : {
2735 72 : if (shift_type != TREE_TYPE (captures[2])
2736 : )
2737 : {
2738 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail883;
2739 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail883;
2740 11 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail883;
2741 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail883;
2742 11 : {
2743 11 : tree res_op0;
2744 11 : {
2745 11 : tree _o1[1], _r1;
2746 11 : {
2747 11 : tree _o2[2], _r2;
2748 11 : {
2749 11 : tree _o3[1], _r3;
2750 11 : _o3[0] = captures[2];
2751 11 : if (TREE_TYPE (_o3[0]) != shift_type)
2752 : {
2753 11 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2754 : }
2755 : else
2756 : _r3 = _o3[0];
2757 11 : _o2[0] = _r3;
2758 : }
2759 11 : _o2[1] = captures[4];
2760 11 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2761 11 : _o1[0] = _r2;
2762 : }
2763 11 : if (TREE_TYPE (_o1[0]) != type)
2764 : {
2765 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2766 : }
2767 : else
2768 : _r1 = _o1[0];
2769 11 : res_op0 = _r1;
2770 : }
2771 11 : tree res_op1;
2772 11 : res_op1 = newmaskt;
2773 11 : tree _r;
2774 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2775 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
2776 11 : return _r;
2777 : }
2778 : next_after_fail883:;
2779 : }
2780 : else
2781 : {
2782 61 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail884;
2783 61 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail884;
2784 61 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail884;
2785 61 : {
2786 61 : tree res_op0;
2787 61 : res_op0 = captures[0];
2788 61 : tree res_op1;
2789 61 : res_op1 = newmaskt;
2790 61 : tree _r;
2791 61 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2792 61 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 697, __FILE__, __LINE__, true);
2793 61 : return _r;
2794 : }
2795 : next_after_fail884:;
2796 : }
2797 : }
2798 : }
2799 : }
2800 : }
2801 : }
2802 : }
2803 : }
2804 : }
2805 : }
2806 : return NULL_TREE;
2807 : }
2808 :
2809 : tree
2810 17 : generic_simplify_505 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2811 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2812 : {
2813 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2814 17 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail897;
2815 17 : {
2816 17 : tree res_op0;
2817 17 : res_op0 = captures[0];
2818 17 : tree res_op1;
2819 17 : res_op1 = captures[1];
2820 17 : tree _r;
2821 17 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2822 17 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 709, __FILE__, __LINE__, true);
2823 : return _r;
2824 : }
2825 0 : next_after_fail897:;
2826 0 : return NULL_TREE;
2827 : }
2828 :
2829 : tree
2830 4 : generic_simplify_511 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2831 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2832 : {
2833 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2834 4 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2835 7 : && (element_precision (TREE_TYPE (captures[2]))
2836 3 : <= element_precision (TREE_TYPE (captures[3]))
2837 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2838 : )
2839 : {
2840 3 : {
2841 3 : tree shift_type = TREE_TYPE (captures[2]);
2842 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail903;
2843 3 : {
2844 3 : tree res_op0;
2845 3 : {
2846 3 : tree _o1[2], _r1;
2847 3 : {
2848 3 : tree _o2[1], _r2;
2849 3 : _o2[0] = captures[3];
2850 3 : if (TREE_TYPE (_o2[0]) != shift_type)
2851 : {
2852 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2853 : }
2854 : else
2855 : _r2 = _o2[0];
2856 3 : _o1[0] = _r2;
2857 : }
2858 3 : _o1[1] = captures[4];
2859 3 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2860 3 : res_op0 = _r1;
2861 : }
2862 3 : tree _r;
2863 3 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2864 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 711, __FILE__, __LINE__, true);
2865 3 : return _r;
2866 : }
2867 0 : next_after_fail903:;
2868 : }
2869 : }
2870 : return NULL_TREE;
2871 : }
2872 :
2873 : tree
2874 1829 : generic_simplify_520 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2875 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2876 : {
2877 1829 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2878 1829 : if (! TYPE_UNSIGNED (type)
2879 1434 : && ! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2880 1829 : && single_use (captures[0])
2881 : )
2882 : {
2883 1434 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail913;
2884 1434 : {
2885 1434 : tree res_op0;
2886 1434 : res_op0 = captures[1];
2887 1434 : tree res_op1;
2888 1434 : {
2889 1434 : tree _o1[1], _r1;
2890 1434 : _o1[0] = captures[2];
2891 1434 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2892 1434 : res_op1 = _r1;
2893 : }
2894 1434 : tree _r;
2895 1434 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2896 1434 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 723, __FILE__, __LINE__, true);
2897 1434 : return _r;
2898 : }
2899 0 : next_after_fail913:;
2900 : }
2901 : return NULL_TREE;
2902 : }
2903 :
2904 : tree
2905 0 : generic_simplify_530 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2906 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2907 : const enum tree_code ARG_UNUSED (minmax))
2908 : {
2909 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2910 0 : if (INTEGRAL_TYPE_P (type)
2911 0 : && TYPE_OVERFLOW_UNDEFINED (type)
2912 0 : && !TYPE_OVERFLOW_SANITIZED (type)
2913 : )
2914 : {
2915 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail924;
2916 0 : {
2917 0 : tree res_op0;
2918 0 : {
2919 0 : tree _o1[2], _r1;
2920 0 : _o1[0] = captures[1];
2921 0 : _o1[1] = captures[4];
2922 0 : _r1 = fold_build2_loc (loc, minmax, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2923 0 : res_op0 = _r1;
2924 : }
2925 0 : tree res_op1;
2926 0 : res_op1 = captures[2];
2927 0 : tree _r;
2928 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2929 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 733, __FILE__, __LINE__, true);
2930 0 : return _r;
2931 : }
2932 0 : next_after_fail924:;
2933 : }
2934 : return NULL_TREE;
2935 : }
2936 :
2937 : tree
2938 2 : generic_simplify_539 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2939 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2940 : {
2941 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2942 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail947;
2943 2 : {
2944 2 : tree _r;
2945 2 : _r = captures[1];
2946 2 : if (TREE_SIDE_EFFECTS (captures[0]))
2947 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2948 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
2949 : return _r;
2950 : }
2951 0 : next_after_fail947:;
2952 0 : return NULL_TREE;
2953 : }
2954 :
2955 : tree
2956 0 : generic_simplify_544 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2957 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2958 : const combined_fn ARG_UNUSED (FMAX_ALL))
2959 : {
2960 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2961 0 : if (flag_finite_math_only
2962 : )
2963 : {
2964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail952;
2965 0 : {
2966 0 : tree res_op0;
2967 0 : res_op0 = captures[0];
2968 0 : tree res_op1;
2969 0 : res_op1 = captures[1];
2970 0 : tree _r;
2971 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
2972 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 749, __FILE__, __LINE__, true);
2973 0 : return _r;
2974 : }
2975 0 : next_after_fail952:;
2976 : }
2977 : return NULL_TREE;
2978 : }
2979 :
2980 : tree
2981 0 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2982 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2983 : const combined_fn ARG_UNUSED (cond_op))
2984 : {
2985 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2986 0 : {
2987 0 : tree op_type = TREE_TYPE (captures[3]);
2988 0 : if (element_precision (type) == element_precision (op_type)
2989 : )
2990 : {
2991 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail958;
2992 0 : {
2993 0 : tree res_op0;
2994 0 : {
2995 0 : tree _o1[4], _r1;
2996 0 : _o1[0] = captures[0];
2997 0 : _o1[1] = captures[1];
2998 0 : _o1[2] = captures[2];
2999 0 : {
3000 0 : tree _o2[1], _r2;
3001 0 : _o2[0] = captures[4];
3002 0 : if (TREE_TYPE (_o2[0]) != op_type)
3003 : {
3004 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3005 : }
3006 : else
3007 : _r2 = _o2[0];
3008 0 : _o1[3] = _r2;
3009 : }
3010 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
3011 0 : if (!_r1)
3012 0 : goto next_after_fail958;
3013 0 : res_op0 = _r1;
3014 : }
3015 0 : tree _r;
3016 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3017 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3018 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3019 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 750, __FILE__, __LINE__, true);
3020 0 : return _r;
3021 : }
3022 : next_after_fail958:;
3023 : }
3024 : }
3025 : return NULL_TREE;
3026 : }
3027 :
3028 : tree
3029 0 : generic_simplify_560 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3030 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3031 : const enum tree_code ARG_UNUSED (rotate))
3032 : {
3033 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3034 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail968;
3035 0 : {
3036 0 : tree _r;
3037 0 : _r = captures[0];
3038 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3039 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3040 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 760, __FILE__, __LINE__, true);
3041 : return _r;
3042 : }
3043 0 : next_after_fail968:;
3044 0 : return NULL_TREE;
3045 : }
3046 :
3047 : tree
3048 60 : generic_simplify_569 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3049 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3050 : const enum tree_code ARG_UNUSED (cmp))
3051 : {
3052 60 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3053 60 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail980;
3054 60 : {
3055 60 : tree _r;
3056 60 : _r = constant_boolean_node (true, type);
3057 60 : if (TREE_SIDE_EFFECTS (captures[0]))
3058 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3059 60 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 772, __FILE__, __LINE__, true);
3060 : return _r;
3061 : }
3062 0 : next_after_fail980:;
3063 0 : return NULL_TREE;
3064 : }
3065 :
3066 : tree
3067 0 : generic_simplify_576 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3068 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3069 : const combined_fn ARG_UNUSED (sins),
3070 : const combined_fn ARG_UNUSED (atans),
3071 : const combined_fn ARG_UNUSED (sqrts),
3072 : const combined_fn ARG_UNUSED (copysigns))
3073 : {
3074 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3075 0 : {
3076 0 : REAL_VALUE_TYPE r_cst;
3077 0 : build_sinatan_real (&r_cst, type);
3078 0 : tree t_cst = build_real (type, r_cst);
3079 0 : tree t_one = build_one_cst (type);
3080 0 : if (SCALAR_FLOAT_TYPE_P (type)
3081 : )
3082 : {
3083 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail987;
3084 0 : {
3085 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail987;
3086 0 : tree res_op0;
3087 0 : {
3088 0 : tree _o1[2], _r1;
3089 0 : {
3090 0 : tree _o2[1], _r2;
3091 0 : _o2[0] = unshare_expr (captures[1]);
3092 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3093 0 : _o1[0] = _r2;
3094 : }
3095 0 : _o1[1] = t_cst;
3096 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3097 0 : res_op0 = _r1;
3098 : }
3099 0 : tree res_op1;
3100 0 : {
3101 0 : tree _o1[2], _r1;
3102 0 : _o1[0] = unshare_expr (captures[1]);
3103 0 : {
3104 0 : tree _o2[1], _r2;
3105 0 : {
3106 0 : tree _o3[2], _r3;
3107 0 : {
3108 0 : tree _o4[2], _r4;
3109 0 : _o4[0] = unshare_expr (captures[1]);
3110 0 : _o4[1] = unshare_expr (captures[1]);
3111 0 : _r4 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
3112 0 : _o3[0] = _r4;
3113 : }
3114 0 : _o3[1] = t_one;
3115 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3116 0 : _o2[0] = _r3;
3117 : }
3118 0 : _r2 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o2[0]), 1, _o2[0]);
3119 0 : if (!_r2)
3120 0 : goto next_after_fail987;
3121 0 : _o1[1] = _r2;
3122 : }
3123 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3124 0 : res_op1 = _r1;
3125 : }
3126 0 : tree res_op2;
3127 0 : {
3128 0 : tree _o1[2], _r1;
3129 0 : _o1[0] = t_one;
3130 0 : _o1[1] = captures[1];
3131 0 : _r1 = maybe_build_call_expr_loc (loc, copysigns, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
3132 0 : if (!_r1)
3133 0 : goto next_after_fail987;
3134 0 : res_op2 = _r1;
3135 : }
3136 0 : tree _r;
3137 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
3138 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
3139 0 : return _r;
3140 : }
3141 0 : next_after_fail987:;
3142 : }
3143 : }
3144 0 : return NULL_TREE;
3145 : }
3146 :
3147 : tree
3148 0 : generic_simplify_599 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3149 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3150 : {
3151 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3152 0 : if (canonicalize_math_after_vectorization_p ()
3153 : )
3154 : {
3155 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1010;
3156 : {
3157 : tree res_op0;
3158 : res_op0 = captures[0];
3159 : tree res_op1;
3160 : res_op1 = captures[1];
3161 : tree res_op2;
3162 : res_op2 = captures[2];
3163 : tree _r;
3164 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3165 : if (!_r)
3166 : goto next_after_fail1010;
3167 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 802, __FILE__, __LINE__, true);
3168 : return _r;
3169 : }
3170 0 : next_after_fail1010:;
3171 : }
3172 0 : return NULL_TREE;
3173 : }
3174 :
3175 : tree
3176 0 : generic_simplify_608 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3177 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3178 : {
3179 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3180 0 : if (canonicalize_math_after_vectorization_p ()
3181 : )
3182 : {
3183 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1019;
3184 : {
3185 : tree res_op0;
3186 : res_op0 = captures[0];
3187 : tree res_op1;
3188 : res_op1 = captures[1];
3189 : tree res_op2;
3190 : res_op2 = captures[2];
3191 : tree res_op3;
3192 : res_op3 = captures[3];
3193 : tree res_op4;
3194 : res_op4 = captures[4];
3195 : tree _r;
3196 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3197 : if (!_r)
3198 : goto next_after_fail1019;
3199 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 811, __FILE__, __LINE__, true);
3200 : return _r;
3201 : }
3202 0 : next_after_fail1019:;
3203 : }
3204 0 : return NULL_TREE;
3205 : }
3206 :
3207 : tree
3208 0 : generic_simplify_617 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3209 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3210 : const enum tree_code ARG_UNUSED (rot),
3211 : const combined_fn ARG_UNUSED (popcount))
3212 : {
3213 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3214 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3215 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3216 0 : && (
3217 :
3218 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3219 : )
3220 : {
3221 0 : {
3222 0 : tree type0 = TREE_TYPE (captures[0]);
3223 0 : tree type1 = TREE_TYPE (captures[1]);
3224 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3225 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3226 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3227 : )
3228 : {
3229 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1028;
3230 0 : {
3231 0 : tree res_op0;
3232 0 : {
3233 0 : tree _o1[1], _r1;
3234 0 : _o1[0] = captures[2];
3235 0 : if (TREE_TYPE (_o1[0]) != type0)
3236 : {
3237 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3238 : }
3239 : else
3240 : _r1 = _o1[0];
3241 0 : res_op0 = _r1;
3242 : }
3243 0 : tree _r;
3244 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3245 0 : if (!_r)
3246 0 : goto next_after_fail1028;
3247 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3248 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3249 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 817, __FILE__, __LINE__, true);
3250 0 : return _r;
3251 : }
3252 : next_after_fail1028:;
3253 : }
3254 : }
3255 : }
3256 : return NULL_TREE;
3257 : }
3258 :
3259 : tree
3260 0 : generic_simplify_628 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3261 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3262 : const combined_fn ARG_UNUSED (reduc))
3263 : {
3264 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3265 0 : {
3266 0 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3267 0 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3268 0 : tree elt = ctor_single_nonzero_element (ctor);
3269 0 : if (elt
3270 0 : && types_match (type, TREE_TYPE (elt))
3271 0 : && !HONOR_SNANS (type)
3272 0 : && !HONOR_SIGNED_ZEROS (type)
3273 : )
3274 : {
3275 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1040;
3276 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1040;
3277 0 : {
3278 0 : tree _r;
3279 0 : _r = elt;
3280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 825, __FILE__, __LINE__, true);
3281 0 : return _r;
3282 : }
3283 : next_after_fail1040:;
3284 : }
3285 : }
3286 : return NULL_TREE;
3287 : }
3288 :
3289 : tree
3290 481031236 : generic_simplify_VIEW_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3291 : {
3292 481031236 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3293 481031236 : {
3294 481031236 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3295 962062472 : if ((
3296 :
3297 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3298 : || (
3299 : 1
3300 481031236 : && type == TREE_TYPE (captures[0]))
3301 : )
3302 : {
3303 218551292 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1114;
3304 218551292 : {
3305 218551292 : tree _r;
3306 218551292 : _r = captures[0];
3307 218551292 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 839, __FILE__, __LINE__, true);
3308 218551292 : return _r;
3309 : }
3310 0 : next_after_fail1114:;
3311 : }
3312 : }
3313 262479944 : switch (TREE_CODE (_p0))
3314 : {
3315 28907297 : case VIEW_CONVERT_EXPR:
3316 28907297 : {
3317 28907297 : tree _q20 = TREE_OPERAND (_p0, 0);
3318 28907297 : {
3319 28907297 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3320 28907297 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1115;
3321 28907297 : {
3322 28907297 : tree res_op0;
3323 28907297 : res_op0 = captures[0];
3324 28907297 : tree _r;
3325 28907297 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3326 28907297 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 873, __FILE__, __LINE__, true);
3327 481031236 : return _r;
3328 : }
3329 0 : next_after_fail1115:;
3330 : }
3331 0 : break;
3332 : }
3333 0 : case BIT_FIELD_REF:
3334 0 : {
3335 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3336 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3337 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3338 0 : {
3339 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3340 0 : if (is_gimple_reg_type (type)
3341 0 : && (!INTEGRAL_TYPE_P (type)
3342 0 : || type_has_mode_precision_p (type))
3343 0 : && (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3344 0 : || type_has_mode_precision_p (TREE_TYPE (captures[0])))
3345 : )
3346 : {
3347 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1116;
3348 0 : {
3349 0 : tree res_op0;
3350 0 : res_op0 = captures[1];
3351 0 : tree res_op1;
3352 0 : res_op1 = captures[2];
3353 0 : tree res_op2;
3354 0 : res_op2 = captures[3];
3355 0 : tree _r;
3356 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
3357 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 874, __FILE__, __LINE__, true);
3358 0 : return _r;
3359 : }
3360 0 : next_after_fail1116:;
3361 : }
3362 : }
3363 0 : break;
3364 : }
3365 233572647 : default:;
3366 : }
3367 233572647 : {
3368 233572647 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3369 231769735 : if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
3370 2864686 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3371 236158226 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3372 : )
3373 : {
3374 2205610 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1117;
3375 2205610 : {
3376 2205610 : tree res_op0;
3377 2205610 : res_op0 = captures[0];
3378 2205610 : tree _r;
3379 2205610 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3380 2205610 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 875, __FILE__, __LINE__, true);
3381 2205610 : return _r;
3382 : }
3383 0 : next_after_fail1117:;
3384 : }
3385 : }
3386 231367037 : switch (TREE_CODE (_p0))
3387 : {
3388 3498 : CASE_CONVERT:
3389 3498 : {
3390 3498 : tree _q20 = TREE_OPERAND (_p0, 0);
3391 3498 : {
3392 3498 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3393 3498 : {
3394 3498 : bool extended_bitint = false;
3395 3498 : if (BITINT_TYPE_P (TREE_TYPE (captures[0])))
3396 : {
3397 0 : struct bitint_info info;
3398 0 : extended_bitint
3399 0 : = targetm.c.bitint_type_info (TYPE_PRECISION (TREE_TYPE (captures[0])),
3400 : &info);
3401 0 : extended_bitint = extended_bitint && info.extended;
3402 : }
3403 6996 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3404 71 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1])))
3405 71 : && !extended_bitint
3406 71 : && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1]))
3407 3498 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
3408 0 : || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3409 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
3410 : )
3411 : {
3412 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1118;
3413 0 : {
3414 0 : tree res_op0;
3415 0 : res_op0 = captures[1];
3416 0 : tree _r;
3417 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3418 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3419 0 : return _r;
3420 : }
3421 0 : next_after_fail1118:;
3422 : }
3423 : }
3424 : }
3425 3498 : break;
3426 : }
3427 83614 : case CONSTRUCTOR:
3428 83614 : {
3429 83614 : {
3430 83614 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3431 83614 : {
3432 83614 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3433 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3434 83614 : if (CONSTRUCTOR_NELTS (ctor) == 0
3435 : )
3436 : {
3437 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1119;
3438 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1119;
3439 6 : {
3440 6 : tree _r;
3441 6 : _r = build_zero_cst (type);
3442 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 877, __FILE__, __LINE__, true);
3443 6 : return _r;
3444 : }
3445 : next_after_fail1119:;
3446 : }
3447 : else
3448 : {
3449 83608 : if (CONSTRUCTOR_NELTS (ctor) == 1
3450 40 : && VECTOR_TYPE_P (TREE_TYPE (ctor))
3451 83643 : && operand_equal_p (TYPE_SIZE (type),
3452 35 : TYPE_SIZE (TREE_TYPE
3453 : (CONSTRUCTOR_ELT (ctor, 0)->value)))
3454 : )
3455 : {
3456 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1120;
3457 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1120;
3458 0 : {
3459 0 : tree res_op0;
3460 0 : res_op0 = CONSTRUCTOR_ELT (ctor, 0)->value;
3461 0 : tree _r;
3462 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3463 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
3464 0 : return _r;
3465 : }
3466 : next_after_fail1120:;
3467 : }
3468 : }
3469 : }
3470 : }
3471 : break;
3472 : }
3473 289759 : case VEC_COND_EXPR:
3474 289759 : {
3475 289759 : tree _q20 = TREE_OPERAND (_p0, 0);
3476 289759 : tree _q21 = TREE_OPERAND (_p0, 1);
3477 289759 : tree _q22 = TREE_OPERAND (_p0, 2);
3478 289759 : {
3479 289759 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3480 289710 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3481 290116 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
3482 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[2])))
3483 42260 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[2])))
3484 331662 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
3485 371 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
3486 : )
3487 : {
3488 41903 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1121;
3489 41903 : {
3490 41903 : tree res_op0;
3491 41903 : res_op0 = captures[1];
3492 41903 : tree res_op1;
3493 41903 : {
3494 41903 : tree _o1[1], _r1;
3495 41903 : _o1[0] = captures[2];
3496 41903 : if (TREE_TYPE (_o1[0]) != type)
3497 : {
3498 41903 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3499 41903 : if (EXPR_P (_r1))
3500 166 : goto next_after_fail1121;
3501 : }
3502 : else
3503 : _r1 = _o1[0];
3504 41737 : res_op1 = _r1;
3505 : }
3506 41737 : tree res_op2;
3507 41737 : {
3508 41737 : tree _o1[1], _r1;
3509 41737 : _o1[0] = captures[3];
3510 41737 : if (TREE_TYPE (_o1[0]) != type)
3511 : {
3512 41737 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3513 41737 : if (EXPR_P (_r1))
3514 0 : goto next_after_fail1121;
3515 : }
3516 : else
3517 : _r1 = _o1[0];
3518 41737 : res_op2 = _r1;
3519 : }
3520 41737 : tree _r;
3521 41737 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3522 41737 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3523 41737 : return _r;
3524 : }
3525 248022 : next_after_fail1121:;
3526 : }
3527 : }
3528 248022 : break;
3529 : }
3530 : default:;
3531 : }
3532 : return NULL_TREE;
3533 : }
3534 :
3535 : tree
3536 1756259048 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0)
3537 : {
3538 1756259048 : switch (code)
3539 : {
3540 2777901 : case ABS_EXPR:
3541 2777901 : return generic_simplify_ABS_EXPR (loc, code, type, _p0);
3542 874903615 : CASE_CONVERT:
3543 874903615 : return generic_simplify_CONVERT_EXPR (loc, code, type, _p0);
3544 2715352 : case BIT_NOT_EXPR:
3545 2715352 : return generic_simplify_BIT_NOT_EXPR (loc, code, type, _p0);
3546 943 : case ABSU_EXPR:
3547 943 : return generic_simplify_ABSU_EXPR (loc, code, type, _p0);
3548 4352480 : case NEGATE_EXPR:
3549 4352480 : return generic_simplify_NEGATE_EXPR (loc, code, type, _p0);
3550 6600030 : case FLOAT_EXPR:
3551 6600030 : return generic_simplify_FLOAT_EXPR (loc, code, type, _p0);
3552 481031236 : case VIEW_CONVERT_EXPR:
3553 481031236 : return generic_simplify_VIEW_CONVERT_EXPR (loc, code, type, _p0);
3554 516002 : case FIX_TRUNC_EXPR:
3555 516002 : return generic_simplify_FIX_TRUNC_EXPR (loc, code, type, _p0);
3556 3678 : case PAREN_EXPR:
3557 3678 : return generic_simplify_PAREN_EXPR (loc, code, type, _p0);
3558 1937744 : case REALPART_EXPR:
3559 1937744 : return generic_simplify_REALPART_EXPR (loc, code, type, _p0);
3560 2206243 : case IMAGPART_EXPR:
3561 2206243 : return generic_simplify_IMAGPART_EXPR (loc, code, type, _p0);
3562 1330 : case CONJ_EXPR:
3563 1330 : return generic_simplify_CONJ_EXPR (loc, code, type, _p0);
3564 : default:;
3565 : }
3566 : return NULL_TREE;
3567 : }
3568 :
3569 : tree
3570 80635510 : generic_simplify_POINTER_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3571 : {
3572 80635510 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3573 80635510 : if (integer_zerop (_p1))
3574 : {
3575 2739492 : {
3576 2739492 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3577 2739492 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1263;
3578 2739492 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1263;
3579 2739492 : {
3580 2739492 : tree res_op0;
3581 2739492 : res_op0 = captures[0];
3582 2739492 : tree _r;
3583 2739492 : _r = non_lvalue_loc (loc, res_op0);
3584 2739492 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
3585 2739492 : return _r;
3586 : }
3587 : next_after_fail1263:;
3588 : }
3589 : }
3590 77896018 : switch (TREE_CODE (_p0))
3591 : {
3592 5948740 : case POINTER_PLUS_EXPR:
3593 5948740 : {
3594 5948740 : tree _q20 = TREE_OPERAND (_p0, 0);
3595 5948740 : tree _q21 = TREE_OPERAND (_p0, 1);
3596 5948740 : {
3597 5948740 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3598 5948740 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1264;
3599 5948740 : {
3600 5948740 : tree res_op0;
3601 5948740 : res_op0 = captures[1];
3602 5948740 : tree res_op1;
3603 5948740 : {
3604 5948740 : tree _o1[2], _r1;
3605 5948740 : _o1[0] = captures[2];
3606 5948740 : _o1[1] = captures[3];
3607 5948740 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3608 5948740 : res_op1 = _r1;
3609 : }
3610 5948740 : tree _r;
3611 5948740 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3612 5948740 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
3613 5948740 : return _r;
3614 : }
3615 0 : next_after_fail1264:;
3616 : }
3617 0 : break;
3618 : }
3619 47790510 : CASE_CONVERT:
3620 47790510 : {
3621 47790510 : tree _q20 = TREE_OPERAND (_p0, 0);
3622 47790510 : switch (TREE_CODE (_q20))
3623 : {
3624 27476 : case POINTER_PLUS_EXPR:
3625 27476 : {
3626 27476 : tree _q30 = TREE_OPERAND (_q20, 0);
3627 27476 : tree _q31 = TREE_OPERAND (_q20, 1);
3628 27476 : {
3629 27476 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
3630 27476 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1265;
3631 27476 : {
3632 27476 : tree res_op0;
3633 27476 : {
3634 27476 : tree _o1[1], _r1;
3635 27476 : _o1[0] = captures[2];
3636 27476 : if (TREE_TYPE (_o1[0]) != type)
3637 : {
3638 27368 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3639 : }
3640 : else
3641 : _r1 = _o1[0];
3642 27476 : res_op0 = _r1;
3643 : }
3644 27476 : tree res_op1;
3645 27476 : {
3646 27476 : tree _o1[2], _r1;
3647 27476 : _o1[0] = captures[3];
3648 27476 : _o1[1] = captures[4];
3649 27476 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3650 27476 : res_op1 = _r1;
3651 : }
3652 27476 : tree _r;
3653 27476 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3654 27476 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
3655 27476 : return _r;
3656 : }
3657 0 : next_after_fail1265:;
3658 : }
3659 0 : break;
3660 : }
3661 : default:;
3662 : }
3663 : break;
3664 : }
3665 71919802 : default:;
3666 : }
3667 71919802 : if (integer_zerop (_p0))
3668 : {
3669 649 : {
3670 649 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
3671 649 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1266;
3672 649 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1266;
3673 649 : {
3674 649 : tree res_op0;
3675 649 : {
3676 649 : tree _o1[1], _r1;
3677 649 : _o1[0] = captures[0];
3678 649 : if (TREE_TYPE (_o1[0]) != type)
3679 : {
3680 649 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3681 : }
3682 : else
3683 : _r1 = _o1[0];
3684 649 : res_op0 = _r1;
3685 : }
3686 649 : tree _r;
3687 649 : _r = non_lvalue_loc (loc, res_op0);
3688 649 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3689 649 : return _r;
3690 : }
3691 : next_after_fail1266:;
3692 : }
3693 : }
3694 71919153 : switch (TREE_CODE (_p1))
3695 : {
3696 9576621 : CASE_CONVERT:
3697 9576621 : {
3698 9576621 : tree _q30 = TREE_OPERAND (_p1, 0);
3699 9576621 : switch (TREE_CODE (_q30))
3700 : {
3701 208472 : case MINUS_EXPR:
3702 208472 : {
3703 208472 : tree _q40 = TREE_OPERAND (_q30, 0);
3704 208472 : tree _q41 = TREE_OPERAND (_q30, 1);
3705 208472 : switch (TREE_CODE (_q40))
3706 : {
3707 93977 : CASE_CONVERT:
3708 93977 : {
3709 93977 : tree _q50 = TREE_OPERAND (_q40, 0);
3710 93977 : switch (TREE_CODE (_q41))
3711 : {
3712 7291 : CASE_CONVERT:
3713 7291 : {
3714 7291 : tree _q70 = TREE_OPERAND (_q41, 0);
3715 7291 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3716 : {
3717 4406 : {
3718 4406 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
3719 4406 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3720 4406 : && ((
3721 :
3722 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3723 : || (
3724 : 1
3725 4406 : && type == TREE_TYPE (captures[3])))
3726 : )
3727 : {
3728 2832 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1267;
3729 2832 : {
3730 2832 : tree _r;
3731 2832 : _r = captures[3];
3732 2832 : if (TREE_SIDE_EFFECTS (captures[0]))
3733 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3734 2832 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
3735 2832 : return _r;
3736 : }
3737 0 : next_after_fail1267:;
3738 : }
3739 : }
3740 : }
3741 : break;
3742 : }
3743 : default:;
3744 : }
3745 : break;
3746 : }
3747 : default:;
3748 : }
3749 : break;
3750 : }
3751 596 : case POINTER_DIFF_EXPR:
3752 596 : {
3753 596 : tree _q40 = TREE_OPERAND (_q30, 0);
3754 596 : tree _q41 = TREE_OPERAND (_q30, 1);
3755 596 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
3756 : {
3757 7 : {
3758 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
3759 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3760 : )
3761 : {
3762 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1268;
3763 7 : {
3764 7 : tree res_op0;
3765 7 : res_op0 = captures[3];
3766 7 : tree _r;
3767 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3768 7 : if (TREE_SIDE_EFFECTS (captures[4]))
3769 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3770 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
3771 7 : return _r;
3772 : }
3773 0 : next_after_fail1268:;
3774 : }
3775 : }
3776 : }
3777 : break;
3778 : }
3779 : default:;
3780 : }
3781 : break;
3782 : }
3783 46236 : case MINUS_EXPR:
3784 46236 : {
3785 46236 : tree _q30 = TREE_OPERAND (_p1, 0);
3786 46236 : tree _q31 = TREE_OPERAND (_p1, 1);
3787 46236 : switch (TREE_CODE (_q30))
3788 : {
3789 42779 : CASE_CONVERT:
3790 42779 : {
3791 42779 : tree _q40 = TREE_OPERAND (_q30, 0);
3792 42779 : switch (TREE_CODE (_q31))
3793 : {
3794 25761 : CASE_CONVERT:
3795 25761 : {
3796 25761 : tree _q60 = TREE_OPERAND (_q31, 0);
3797 25761 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3798 : {
3799 24 : {
3800 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
3801 24 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3802 24 : && ((
3803 :
3804 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3805 : || (
3806 : 1
3807 24 : && type == TREE_TYPE (captures[3])))
3808 : )
3809 : {
3810 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1269;
3811 0 : {
3812 0 : tree _r;
3813 0 : _r = captures[3];
3814 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3815 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3816 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
3817 0 : return _r;
3818 : }
3819 0 : next_after_fail1269:;
3820 : }
3821 : }
3822 : }
3823 : break;
3824 : }
3825 : default:;
3826 : }
3827 : break;
3828 : }
3829 438 : case INTEGER_CST:
3830 438 : {
3831 438 : switch (TREE_CODE (_q31))
3832 : {
3833 16 : case BIT_AND_EXPR:
3834 16 : {
3835 16 : tree _q50 = TREE_OPERAND (_q31, 0);
3836 16 : tree _q51 = TREE_OPERAND (_q31, 1);
3837 16 : switch (TREE_CODE (_q50))
3838 : {
3839 16 : CASE_CONVERT:
3840 16 : {
3841 16 : tree _q60 = TREE_OPERAND (_q50, 0);
3842 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3843 : {
3844 0 : switch (TREE_CODE (_q51))
3845 : {
3846 0 : case INTEGER_CST:
3847 0 : {
3848 0 : {
3849 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
3850 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
3851 : )
3852 : {
3853 0 : {
3854 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
3855 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1270;
3856 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1270;
3857 0 : {
3858 0 : tree res_op0;
3859 0 : {
3860 0 : tree _o1[2], _r1;
3861 0 : _o1[0] = captures[0];
3862 0 : _o1[1] = algn;
3863 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3864 0 : res_op0 = _r1;
3865 : }
3866 0 : tree res_op1;
3867 0 : res_op1 = captures[2];
3868 0 : tree _r;
3869 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3870 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
3871 0 : return _r;
3872 : }
3873 0 : next_after_fail1270:;
3874 : }
3875 : }
3876 : }
3877 0 : break;
3878 : }
3879 : default:;
3880 : }
3881 : }
3882 16 : switch (TREE_CODE (_q60))
3883 : {
3884 0 : case POINTER_PLUS_EXPR:
3885 0 : {
3886 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3887 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3888 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3889 : {
3890 0 : switch (TREE_CODE (_q71))
3891 : {
3892 0 : case INTEGER_CST:
3893 0 : {
3894 0 : switch (TREE_CODE (_q51))
3895 : {
3896 0 : case INTEGER_CST:
3897 0 : {
3898 0 : {
3899 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
3900 0 : {
3901 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
3902 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
3903 : )
3904 : {
3905 0 : {
3906 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
3907 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1271;
3908 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1271;
3909 0 : {
3910 0 : tree res_op0;
3911 0 : {
3912 0 : tree _o1[2], _r1;
3913 0 : _o1[0] = captures[0];
3914 0 : _o1[1] = algn;
3915 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3916 0 : res_op0 = _r1;
3917 : }
3918 0 : tree res_op1;
3919 0 : res_op1 = captures[2];
3920 0 : tree _r;
3921 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3922 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3923 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3924 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
3925 0 : return _r;
3926 : }
3927 0 : next_after_fail1271:;
3928 : }
3929 : }
3930 : }
3931 : }
3932 0 : break;
3933 : }
3934 : default:;
3935 : }
3936 : break;
3937 : }
3938 : default:;
3939 : }
3940 : }
3941 : break;
3942 : }
3943 : default:;
3944 : }
3945 : break;
3946 : }
3947 : default:;
3948 : }
3949 : break;
3950 : }
3951 : default:;
3952 : }
3953 : break;
3954 : }
3955 : default:;
3956 : }
3957 : break;
3958 : }
3959 0 : case POINTER_DIFF_EXPR:
3960 0 : {
3961 0 : tree _q30 = TREE_OPERAND (_p1, 0);
3962 0 : tree _q31 = TREE_OPERAND (_p1, 1);
3963 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
3964 : {
3965 0 : {
3966 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
3967 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3968 : )
3969 : {
3970 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1272;
3971 0 : {
3972 0 : tree res_op0;
3973 0 : res_op0 = captures[3];
3974 0 : tree _r;
3975 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3976 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3977 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3978 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
3979 0 : return _r;
3980 : }
3981 0 : next_after_fail1272:;
3982 : }
3983 : }
3984 : }
3985 : break;
3986 : }
3987 369681 : case NEGATE_EXPR:
3988 369681 : {
3989 369681 : tree _q30 = TREE_OPERAND (_p1, 0);
3990 369681 : switch (TREE_CODE (_q30))
3991 : {
3992 22 : case BIT_AND_EXPR:
3993 22 : {
3994 22 : tree _q40 = TREE_OPERAND (_q30, 0);
3995 22 : tree _q41 = TREE_OPERAND (_q30, 1);
3996 22 : switch (TREE_CODE (_q40))
3997 : {
3998 22 : CASE_CONVERT:
3999 22 : {
4000 22 : tree _q50 = TREE_OPERAND (_q40, 0);
4001 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
4002 : {
4003 1 : switch (TREE_CODE (_q41))
4004 : {
4005 1 : case INTEGER_CST:
4006 1 : {
4007 1 : {
4008 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
4009 1 : {
4010 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
4011 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1273;
4012 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1273;
4013 1 : {
4014 1 : tree res_op0;
4015 1 : res_op0 = captures[0];
4016 1 : tree res_op1;
4017 1 : res_op1 = algn;
4018 1 : tree _r;
4019 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4020 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 914, __FILE__, __LINE__, true);
4021 1 : return _r;
4022 : }
4023 0 : next_after_fail1273:;
4024 : }
4025 : }
4026 0 : break;
4027 : }
4028 : default:;
4029 : }
4030 : }
4031 21 : switch (TREE_CODE (_q50))
4032 : {
4033 0 : case POINTER_PLUS_EXPR:
4034 0 : {
4035 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4036 0 : tree _q61 = TREE_OPERAND (_q50, 1);
4037 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
4038 : {
4039 0 : switch (TREE_CODE (_q61))
4040 : {
4041 0 : case INTEGER_CST:
4042 0 : {
4043 0 : switch (TREE_CODE (_q41))
4044 : {
4045 0 : case INTEGER_CST:
4046 0 : {
4047 0 : {
4048 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
4049 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
4050 : )
4051 : {
4052 0 : {
4053 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
4054 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1274;
4055 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1274;
4056 0 : {
4057 0 : tree res_op0;
4058 0 : res_op0 = captures[0];
4059 0 : tree res_op1;
4060 0 : res_op1 = algn;
4061 0 : tree _r;
4062 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4063 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4064 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4065 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
4066 0 : return _r;
4067 : }
4068 0 : next_after_fail1274:;
4069 : }
4070 : }
4071 : }
4072 0 : break;
4073 : }
4074 : default:;
4075 : }
4076 : break;
4077 : }
4078 : default:;
4079 : }
4080 : }
4081 : break;
4082 : }
4083 : default:;
4084 : }
4085 : break;
4086 : }
4087 : default:;
4088 : }
4089 : break;
4090 : }
4091 : default:;
4092 : }
4093 : break;
4094 : }
4095 : default:;
4096 : }
4097 : return NULL_TREE;
4098 : }
4099 :
4100 : tree
4101 38926730 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4102 : {
4103 38926730 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4104 38926730 : switch (TREE_CODE (_p1))
4105 : {
4106 2267 : case NEGATE_EXPR:
4107 2267 : {
4108 2267 : tree _q30 = TREE_OPERAND (_p1, 0);
4109 2267 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4110 : {
4111 0 : {
4112 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4113 0 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
4114 0 : if (res) return res;
4115 : }
4116 : }
4117 : break;
4118 : }
4119 38926730 : default:;
4120 : }
4121 38926730 : switch (TREE_CODE (_p0))
4122 : {
4123 6192 : case NEGATE_EXPR:
4124 6192 : {
4125 6192 : tree _q20 = TREE_OPERAND (_p0, 0);
4126 6192 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4127 : {
4128 88 : {
4129 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4130 88 : tree res = generic_simplify_207 (loc, type, _p0, _p1, captures, NE_EXPR);
4131 88 : if (res) return res;
4132 : }
4133 : }
4134 : break;
4135 : }
4136 0 : case CEIL_MOD_EXPR:
4137 0 : {
4138 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4139 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4140 0 : if (integer_pow2p (_q21))
4141 : {
4142 0 : if (integer_zerop (_p1))
4143 : {
4144 0 : {
4145 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4146 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
4147 0 : if (res) return res;
4148 : }
4149 : }
4150 : }
4151 : break;
4152 : }
4153 1623 : case FLOOR_MOD_EXPR:
4154 1623 : {
4155 1623 : tree _q20 = TREE_OPERAND (_p0, 0);
4156 1623 : tree _q21 = TREE_OPERAND (_p0, 1);
4157 1623 : if (integer_pow2p (_q21))
4158 : {
4159 20 : if (integer_zerop (_p1))
4160 : {
4161 20 : {
4162 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4163 20 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
4164 20 : if (res) return res;
4165 : }
4166 : }
4167 : }
4168 : break;
4169 : }
4170 0 : case ROUND_MOD_EXPR:
4171 0 : {
4172 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4173 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4174 0 : if (integer_pow2p (_q21))
4175 : {
4176 0 : if (integer_zerop (_p1))
4177 : {
4178 0 : {
4179 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4180 0 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
4181 0 : if (res) return res;
4182 : }
4183 : }
4184 : }
4185 : break;
4186 : }
4187 85160 : case TRUNC_MOD_EXPR:
4188 85160 : {
4189 85160 : tree _q20 = TREE_OPERAND (_p0, 0);
4190 85160 : tree _q21 = TREE_OPERAND (_p0, 1);
4191 85160 : if (integer_pow2p (_q21))
4192 : {
4193 21721 : if (integer_zerop (_p1))
4194 : {
4195 20279 : {
4196 20279 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4197 20279 : tree res = generic_simplify_208 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
4198 20279 : if (res) return res;
4199 : }
4200 : }
4201 : }
4202 : break;
4203 : }
4204 8708823 : CASE_CONVERT:
4205 8708823 : {
4206 8708823 : tree _q20 = TREE_OPERAND (_p0, 0);
4207 8708823 : switch (TREE_CODE (_p1))
4208 : {
4209 69 : case LSHIFT_EXPR:
4210 69 : {
4211 69 : tree _q40 = TREE_OPERAND (_p1, 0);
4212 69 : tree _q41 = TREE_OPERAND (_p1, 1);
4213 69 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4214 : {
4215 0 : {
4216 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4217 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4218 0 : if (res) return res;
4219 : }
4220 : }
4221 : break;
4222 : }
4223 8708823 : default:;
4224 : }
4225 8708823 : {
4226 8708823 : tree _p1_pops[1];
4227 8708823 : if (tree_nop_convert (_p1, _p1_pops))
4228 : {
4229 4725990 : tree _q40 = _p1_pops[0];
4230 4725990 : switch (TREE_CODE (_q40))
4231 : {
4232 0 : case LSHIFT_EXPR:
4233 0 : {
4234 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4235 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4236 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4237 : {
4238 0 : {
4239 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4240 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4241 0 : if (res) return res;
4242 : }
4243 : }
4244 : break;
4245 : }
4246 : default:;
4247 : }
4248 : }
4249 : }
4250 8708823 : switch (TREE_CODE (_q20))
4251 : {
4252 0 : case EXACT_DIV_EXPR:
4253 0 : {
4254 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4255 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4256 0 : switch (TREE_CODE (_q31))
4257 : {
4258 0 : case INTEGER_CST:
4259 0 : {
4260 0 : switch (TREE_CODE (_p1))
4261 : {
4262 0 : CASE_CONVERT:
4263 0 : {
4264 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4265 0 : switch (TREE_CODE (_q60))
4266 : {
4267 0 : case EXACT_DIV_EXPR:
4268 0 : {
4269 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4270 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4271 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4272 : {
4273 0 : {
4274 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4275 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4276 0 : if (res) return res;
4277 : }
4278 : }
4279 : break;
4280 : }
4281 : default:;
4282 : }
4283 : break;
4284 : }
4285 : default:;
4286 : }
4287 : break;
4288 : }
4289 : default:;
4290 : }
4291 : break;
4292 : }
4293 8708823 : default:;
4294 : }
4295 8708823 : switch (TREE_CODE (_p1))
4296 : {
4297 20777 : case PLUS_EXPR:
4298 20777 : {
4299 20777 : tree _q40 = TREE_OPERAND (_p1, 0);
4300 20777 : tree _q41 = TREE_OPERAND (_p1, 1);
4301 20777 : switch (TREE_CODE (_q41))
4302 : {
4303 203 : CASE_CONVERT:
4304 203 : {
4305 203 : tree _q60 = TREE_OPERAND (_q41, 0);
4306 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4307 : {
4308 0 : {
4309 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4310 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4311 0 : if (res) return res;
4312 : }
4313 : }
4314 : break;
4315 : }
4316 20777 : default:;
4317 : }
4318 20777 : switch (TREE_CODE (_q40))
4319 : {
4320 800 : CASE_CONVERT:
4321 800 : {
4322 800 : tree _q50 = TREE_OPERAND (_q40, 0);
4323 800 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4324 : {
4325 15 : {
4326 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4327 15 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4328 15 : if (res) return res;
4329 : }
4330 : }
4331 : break;
4332 : }
4333 20770 : default:;
4334 : }
4335 20770 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4336 : {
4337 0 : {
4338 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4339 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4340 0 : if (res) return res;
4341 : }
4342 : }
4343 20770 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4344 : {
4345 0 : {
4346 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4347 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4348 0 : if (res) return res;
4349 : }
4350 : }
4351 : break;
4352 : }
4353 8708816 : default:;
4354 : }
4355 8708816 : {
4356 8708816 : tree _p1_pops[1];
4357 8708816 : if (tree_nop_convert (_p1, _p1_pops))
4358 : {
4359 4725990 : tree _q40 = _p1_pops[0];
4360 4725990 : switch (TREE_CODE (_q40))
4361 : {
4362 174 : case PLUS_EXPR:
4363 174 : {
4364 174 : tree _q50 = TREE_OPERAND (_q40, 0);
4365 174 : tree _q51 = TREE_OPERAND (_q40, 1);
4366 174 : switch (TREE_CODE (_q51))
4367 : {
4368 0 : CASE_CONVERT:
4369 0 : {
4370 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4371 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4372 : {
4373 0 : {
4374 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4375 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4376 0 : if (res) return res;
4377 : }
4378 : }
4379 : break;
4380 : }
4381 174 : default:;
4382 : }
4383 174 : switch (TREE_CODE (_q50))
4384 : {
4385 89 : CASE_CONVERT:
4386 89 : {
4387 89 : tree _q60 = TREE_OPERAND (_q50, 0);
4388 89 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4389 : {
4390 0 : {
4391 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4392 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4393 0 : if (res) return res;
4394 : }
4395 : }
4396 : break;
4397 : }
4398 174 : default:;
4399 : }
4400 174 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4401 : {
4402 0 : {
4403 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4404 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4405 0 : if (res) return res;
4406 : }
4407 : }
4408 174 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4409 : {
4410 0 : {
4411 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4412 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4413 0 : if (res) return res;
4414 : }
4415 : }
4416 : break;
4417 : }
4418 : default:;
4419 : }
4420 : }
4421 : }
4422 8708816 : break;
4423 : }
4424 38906424 : default:;
4425 : }
4426 38906424 : {
4427 38906424 : tree _p0_pops[1];
4428 38906424 : if (tree_nop_convert (_p0, _p0_pops))
4429 : {
4430 6428736 : tree _q20 = _p0_pops[0];
4431 6428736 : switch (TREE_CODE (_q20))
4432 : {
4433 15 : case LSHIFT_EXPR:
4434 15 : {
4435 15 : tree _q30 = TREE_OPERAND (_q20, 0);
4436 15 : tree _q31 = TREE_OPERAND (_q20, 1);
4437 15 : switch (TREE_CODE (_p1))
4438 : {
4439 1 : CASE_CONVERT:
4440 1 : {
4441 1 : tree _q60 = TREE_OPERAND (_p1, 0);
4442 1 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4443 : {
4444 0 : {
4445 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4446 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4447 0 : if (res) return res;
4448 : }
4449 : }
4450 : break;
4451 : }
4452 15 : default:;
4453 : }
4454 15 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4455 : {
4456 1 : {
4457 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4458 1 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4459 1 : if (res) return res;
4460 : }
4461 : }
4462 : break;
4463 : }
4464 30434 : case PLUS_EXPR:
4465 30434 : {
4466 30434 : tree _q30 = TREE_OPERAND (_q20, 0);
4467 30434 : tree _q31 = TREE_OPERAND (_q20, 1);
4468 30434 : switch (TREE_CODE (_q31))
4469 : {
4470 37 : CASE_CONVERT:
4471 37 : {
4472 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4473 37 : switch (TREE_CODE (_p1))
4474 : {
4475 0 : CASE_CONVERT:
4476 0 : {
4477 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4478 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4479 : {
4480 0 : {
4481 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4482 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4483 0 : if (res) return res;
4484 : }
4485 : }
4486 : break;
4487 : }
4488 : default:;
4489 : }
4490 : break;
4491 : }
4492 30434 : default:;
4493 : }
4494 30434 : switch (TREE_CODE (_q30))
4495 : {
4496 26177 : CASE_CONVERT:
4497 26177 : {
4498 26177 : tree _q40 = TREE_OPERAND (_q30, 0);
4499 26177 : switch (TREE_CODE (_p1))
4500 : {
4501 353 : CASE_CONVERT:
4502 353 : {
4503 353 : tree _q70 = TREE_OPERAND (_p1, 0);
4504 353 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4505 : {
4506 100 : {
4507 100 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4508 100 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4509 100 : if (res) return res;
4510 : }
4511 : }
4512 : break;
4513 : }
4514 26077 : default:;
4515 : }
4516 26077 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4517 : {
4518 20 : {
4519 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4520 20 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4521 20 : if (res) return res;
4522 : }
4523 : }
4524 : break;
4525 : }
4526 30314 : default:;
4527 : }
4528 30314 : switch (TREE_CODE (_q31))
4529 : {
4530 37 : CASE_CONVERT:
4531 37 : {
4532 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4533 37 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4534 : {
4535 0 : {
4536 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4537 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4538 0 : if (res) return res;
4539 : }
4540 : }
4541 : break;
4542 : }
4543 30314 : default:;
4544 : }
4545 30314 : switch (TREE_CODE (_p1))
4546 : {
4547 325 : CASE_CONVERT:
4548 325 : {
4549 325 : tree _q60 = TREE_OPERAND (_p1, 0);
4550 325 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4551 : {
4552 0 : {
4553 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4554 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4555 0 : if (res) return res;
4556 : }
4557 : }
4558 325 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4559 : {
4560 62 : {
4561 62 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4562 62 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4563 62 : if (res) return res;
4564 : }
4565 : }
4566 : break;
4567 : }
4568 30252 : default:;
4569 : }
4570 30252 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4571 : {
4572 0 : {
4573 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4574 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4575 0 : if (res) return res;
4576 : }
4577 : }
4578 30252 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4579 : {
4580 0 : {
4581 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4582 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
4583 0 : if (res) return res;
4584 : }
4585 : }
4586 : break;
4587 : }
4588 : default:;
4589 : }
4590 : }
4591 : }
4592 38906241 : {
4593 38906241 : tree _p1_pops[1];
4594 38906241 : if (tree_nop_convert (_p1, _p1_pops))
4595 : {
4596 5094969 : tree _q30 = _p1_pops[0];
4597 5094969 : switch (TREE_CODE (_q30))
4598 : {
4599 0 : case LSHIFT_EXPR:
4600 0 : {
4601 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4602 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4603 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4604 : {
4605 0 : {
4606 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4607 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4608 0 : if (res) return res;
4609 : }
4610 : }
4611 : break;
4612 : }
4613 : default:;
4614 : }
4615 : }
4616 : }
4617 38906241 : switch (TREE_CODE (_p0))
4618 : {
4619 5099 : case LSHIFT_EXPR:
4620 5099 : {
4621 5099 : tree _q20 = TREE_OPERAND (_p0, 0);
4622 5099 : tree _q21 = TREE_OPERAND (_p0, 1);
4623 5099 : switch (TREE_CODE (_p1))
4624 : {
4625 35 : CASE_CONVERT:
4626 35 : {
4627 35 : tree _q50 = TREE_OPERAND (_p1, 0);
4628 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4629 : {
4630 4 : {
4631 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4632 4 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4633 4 : if (res) return res;
4634 : }
4635 : }
4636 : break;
4637 : }
4638 5098 : default:;
4639 : }
4640 5098 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4641 : {
4642 27 : {
4643 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4644 27 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4645 27 : if (res) return res;
4646 : }
4647 : }
4648 5094 : if (tree_zero_one_valued_p (_q20))
4649 : {
4650 479 : switch (TREE_CODE (_q21))
4651 : {
4652 117 : case INTEGER_CST:
4653 117 : {
4654 117 : if (integer_zerop (_p1))
4655 : {
4656 5 : {
4657 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4658 5 : if (tree_fits_shwi_p (captures[1])
4659 5 : && tree_to_shwi (captures[1]) > 0
4660 10 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
4661 : )
4662 : {
4663 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1532;
4664 5 : {
4665 5 : tree res_op0;
4666 5 : res_op0 = captures[0];
4667 5 : tree _r;
4668 5 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4669 5 : if (TREE_SIDE_EFFECTS (captures[1]))
4670 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4671 5 : if (TREE_SIDE_EFFECTS (captures[2]))
4672 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4673 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
4674 5 : return _r;
4675 : }
4676 0 : next_after_fail1532:;
4677 : }
4678 : }
4679 : }
4680 : break;
4681 : }
4682 : default:;
4683 : }
4684 : }
4685 : break;
4686 : }
4687 38906231 : default:;
4688 : }
4689 38906231 : switch (TREE_CODE (_p1))
4690 : {
4691 264 : case LSHIFT_EXPR:
4692 264 : {
4693 264 : tree _q30 = TREE_OPERAND (_p1, 0);
4694 264 : tree _q31 = TREE_OPERAND (_p1, 1);
4695 264 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4696 : {
4697 0 : {
4698 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4699 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4700 0 : if (res) return res;
4701 : }
4702 : }
4703 : break;
4704 : }
4705 38906231 : default:;
4706 : }
4707 38906231 : switch (TREE_CODE (_p0))
4708 : {
4709 255 : case VIEW_CONVERT_EXPR:
4710 255 : {
4711 255 : tree _q20 = TREE_OPERAND (_p0, 0);
4712 255 : if (tree_zero_one_valued_p (_q20))
4713 : {
4714 0 : if (integer_zerop (_p1))
4715 : {
4716 0 : {
4717 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4718 0 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
4719 0 : if (res) return res;
4720 : }
4721 : }
4722 : }
4723 : break;
4724 : }
4725 21014 : case RSHIFT_EXPR:
4726 21014 : {
4727 21014 : tree _q20 = TREE_OPERAND (_p0, 0);
4728 21014 : tree _q21 = TREE_OPERAND (_p0, 1);
4729 21014 : switch (TREE_CODE (_q21))
4730 : {
4731 18664 : case INTEGER_CST:
4732 18664 : {
4733 18664 : switch (TREE_CODE (_p1))
4734 : {
4735 210 : case RSHIFT_EXPR:
4736 210 : {
4737 210 : tree _q50 = TREE_OPERAND (_p1, 0);
4738 210 : tree _q51 = TREE_OPERAND (_p1, 1);
4739 210 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4740 : {
4741 15 : switch (TREE_CODE (_q51))
4742 : {
4743 15 : case INTEGER_CST:
4744 15 : {
4745 15 : {
4746 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4747 15 : tree res = generic_simplify_216 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
4748 15 : if (res) return res;
4749 : }
4750 3 : break;
4751 : }
4752 : default:;
4753 : }
4754 : }
4755 : break;
4756 : }
4757 18652 : default:;
4758 : }
4759 18652 : if (integer_zerop (_p1))
4760 : {
4761 8005 : {
4762 8005 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4763 8005 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
4764 8005 : if (res) return res;
4765 : }
4766 : }
4767 : break;
4768 : }
4769 : default:;
4770 : }
4771 : break;
4772 : }
4773 97784 : case MULT_EXPR:
4774 97784 : {
4775 97784 : tree _q20 = TREE_OPERAND (_p0, 0);
4776 97784 : tree _q21 = TREE_OPERAND (_p0, 1);
4777 97784 : switch (TREE_CODE (_p1))
4778 : {
4779 3343 : case MULT_EXPR:
4780 3343 : {
4781 3343 : tree _q50 = TREE_OPERAND (_p1, 0);
4782 3343 : tree _q51 = TREE_OPERAND (_p1, 1);
4783 3343 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4784 : {
4785 1658 : {
4786 1658 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4787 1658 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4788 1658 : if (res) return res;
4789 : }
4790 : }
4791 3339 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4792 : {
4793 53 : {
4794 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4795 53 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4796 53 : if (res) return res;
4797 : }
4798 : }
4799 3339 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4800 : {
4801 22 : {
4802 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4803 22 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4804 22 : if (res) return res;
4805 : }
4806 : }
4807 3339 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4808 : {
4809 260 : {
4810 260 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4811 260 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4812 260 : if (res) return res;
4813 : }
4814 : }
4815 : break;
4816 : }
4817 97780 : default:;
4818 : }
4819 97780 : switch (TREE_CODE (_q21))
4820 : {
4821 78975 : case INTEGER_CST:
4822 78975 : {
4823 78975 : switch (TREE_CODE (_p1))
4824 : {
4825 2481 : case MULT_EXPR:
4826 2481 : {
4827 2481 : tree _q50 = TREE_OPERAND (_p1, 0);
4828 2481 : tree _q51 = TREE_OPERAND (_p1, 1);
4829 2481 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4830 : {
4831 1126 : {
4832 1126 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4833 1126 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR);
4834 1126 : if (res) return res;
4835 : }
4836 : }
4837 : break;
4838 : }
4839 : default:;
4840 : }
4841 : break;
4842 : }
4843 : default:;
4844 : }
4845 : break;
4846 : }
4847 2043 : case EXACT_DIV_EXPR:
4848 2043 : {
4849 2043 : tree _q20 = TREE_OPERAND (_p0, 0);
4850 2043 : tree _q21 = TREE_OPERAND (_p0, 1);
4851 2043 : switch (TREE_CODE (_q21))
4852 : {
4853 2043 : case INTEGER_CST:
4854 2043 : {
4855 2043 : switch (TREE_CODE (_p1))
4856 : {
4857 22 : case EXACT_DIV_EXPR:
4858 22 : {
4859 22 : tree _q50 = TREE_OPERAND (_p1, 0);
4860 22 : tree _q51 = TREE_OPERAND (_p1, 1);
4861 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4862 : {
4863 12 : {
4864 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
4865 12 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4866 12 : if (res) return res;
4867 : }
4868 : }
4869 : break;
4870 : }
4871 : default:;
4872 : }
4873 : break;
4874 : }
4875 : default:;
4876 : }
4877 : break;
4878 : }
4879 11205 : case TRUNC_DIV_EXPR:
4880 11205 : {
4881 11205 : tree _q20 = TREE_OPERAND (_p0, 0);
4882 11205 : tree _q21 = TREE_OPERAND (_p0, 1);
4883 11205 : switch (TREE_CODE (_q21))
4884 : {
4885 8405 : case INTEGER_CST:
4886 8405 : {
4887 8405 : switch (TREE_CODE (_p1))
4888 : {
4889 2241 : case INTEGER_CST:
4890 2241 : {
4891 2241 : {
4892 2241 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4893 2241 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4894 2241 : if (res) return res;
4895 : }
4896 126 : break;
4897 : }
4898 : default:;
4899 : }
4900 : break;
4901 : }
4902 : default:;
4903 : }
4904 : break;
4905 : }
4906 1545951 : case PLUS_EXPR:
4907 1545951 : {
4908 1545951 : tree _q20 = TREE_OPERAND (_p0, 0);
4909 1545951 : tree _q21 = TREE_OPERAND (_p0, 1);
4910 1545951 : switch (TREE_CODE (_p1))
4911 : {
4912 195064 : case PLUS_EXPR:
4913 195064 : {
4914 195064 : tree _q50 = TREE_OPERAND (_p1, 0);
4915 195064 : tree _q51 = TREE_OPERAND (_p1, 1);
4916 195064 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4917 : {
4918 948 : {
4919 948 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4920 1896 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4921 1865 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4922 834 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4923 : )
4924 : {
4925 917 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1533;
4926 917 : {
4927 917 : tree res_op0;
4928 917 : res_op0 = captures[0];
4929 917 : tree res_op1;
4930 917 : res_op1 = captures[2];
4931 917 : tree _r;
4932 917 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4933 917 : if (TREE_SIDE_EFFECTS (captures[1]))
4934 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4935 917 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
4936 917 : return _r;
4937 : }
4938 0 : next_after_fail1533:;
4939 : }
4940 : }
4941 : }
4942 194147 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4943 : {
4944 0 : {
4945 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4946 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4947 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4948 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4949 : )
4950 : {
4951 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1534;
4952 0 : {
4953 0 : tree res_op0;
4954 0 : res_op0 = captures[0];
4955 0 : tree res_op1;
4956 0 : res_op1 = captures[2];
4957 0 : tree _r;
4958 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4959 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4960 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4961 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
4962 0 : return _r;
4963 : }
4964 0 : next_after_fail1534:;
4965 : }
4966 : }
4967 : }
4968 194147 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4969 : {
4970 96 : {
4971 96 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4972 192 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4973 192 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4974 96 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4975 : )
4976 : {
4977 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1535;
4978 96 : {
4979 96 : tree res_op0;
4980 96 : res_op0 = captures[0];
4981 96 : tree res_op1;
4982 96 : res_op1 = captures[2];
4983 96 : tree _r;
4984 96 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4985 96 : if (TREE_SIDE_EFFECTS (captures[1]))
4986 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4987 96 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
4988 96 : return _r;
4989 : }
4990 0 : next_after_fail1535:;
4991 : }
4992 : }
4993 : }
4994 194051 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4995 : {
4996 110686 : {
4997 110686 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4998 221372 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4999 221349 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5000 110663 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5001 : )
5002 : {
5003 110663 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1536;
5004 110663 : {
5005 110663 : tree res_op0;
5006 110663 : res_op0 = captures[0];
5007 110663 : tree res_op1;
5008 110663 : res_op1 = captures[2];
5009 110663 : tree _r;
5010 110663 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5011 110663 : if (TREE_SIDE_EFFECTS (captures[1]))
5012 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5013 110663 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 930, __FILE__, __LINE__, true);
5014 110663 : return _r;
5015 : }
5016 0 : next_after_fail1536:;
5017 : }
5018 : }
5019 : }
5020 : break;
5021 : }
5022 1434275 : default:;
5023 : }
5024 1434275 : switch (TREE_CODE (_q21))
5025 : {
5026 813 : CASE_CONVERT:
5027 813 : {
5028 813 : tree _q40 = TREE_OPERAND (_q21, 0);
5029 813 : switch (TREE_CODE (_p1))
5030 : {
5031 88 : CASE_CONVERT:
5032 88 : {
5033 88 : tree _q60 = TREE_OPERAND (_p1, 0);
5034 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5035 : {
5036 0 : {
5037 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5038 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5039 0 : if (res) return res;
5040 : }
5041 : }
5042 : break;
5043 : }
5044 : default:;
5045 : }
5046 : break;
5047 : }
5048 1434275 : default:;
5049 : }
5050 1434275 : switch (TREE_CODE (_q20))
5051 : {
5052 143432 : CASE_CONVERT:
5053 143432 : {
5054 143432 : tree _q30 = TREE_OPERAND (_q20, 0);
5055 143432 : switch (TREE_CODE (_p1))
5056 : {
5057 3933 : CASE_CONVERT:
5058 3933 : {
5059 3933 : tree _q60 = TREE_OPERAND (_p1, 0);
5060 3933 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5061 : {
5062 406 : {
5063 406 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5064 406 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5065 406 : if (res) return res;
5066 : }
5067 : }
5068 : break;
5069 : }
5070 143026 : default:;
5071 : }
5072 143026 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5073 : {
5074 0 : {
5075 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5076 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5077 0 : if (res) return res;
5078 : }
5079 : }
5080 : break;
5081 : }
5082 1433869 : default:;
5083 : }
5084 1433869 : switch (TREE_CODE (_q21))
5085 : {
5086 813 : CASE_CONVERT:
5087 813 : {
5088 813 : tree _q40 = TREE_OPERAND (_q21, 0);
5089 813 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5090 : {
5091 0 : {
5092 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5093 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5094 0 : if (res) return res;
5095 : }
5096 : }
5097 : break;
5098 : }
5099 1433869 : default:;
5100 : }
5101 1433869 : switch (TREE_CODE (_p1))
5102 : {
5103 43302 : CASE_CONVERT:
5104 43302 : {
5105 43302 : tree _q50 = TREE_OPERAND (_p1, 0);
5106 43302 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5107 : {
5108 0 : {
5109 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5110 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5111 0 : if (res) return res;
5112 : }
5113 : }
5114 43302 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5115 : {
5116 0 : {
5117 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5118 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5119 0 : if (res) return res;
5120 : }
5121 : }
5122 : break;
5123 : }
5124 1433869 : default:;
5125 : }
5126 1433869 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5127 : {
5128 76111 : {
5129 76111 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5130 76111 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5131 76111 : if (res) return res;
5132 : }
5133 : }
5134 1358466 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5135 : {
5136 19404 : {
5137 19404 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5138 19404 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5139 19404 : if (res) return res;
5140 : }
5141 : }
5142 : break;
5143 : }
5144 548228 : case POINTER_PLUS_EXPR:
5145 548228 : {
5146 548228 : tree _q20 = TREE_OPERAND (_p0, 0);
5147 548228 : tree _q21 = TREE_OPERAND (_p0, 1);
5148 548228 : switch (TREE_CODE (_p1))
5149 : {
5150 36874 : case POINTER_PLUS_EXPR:
5151 36874 : {
5152 36874 : tree _q50 = TREE_OPERAND (_p1, 0);
5153 36874 : tree _q51 = TREE_OPERAND (_p1, 1);
5154 36874 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5155 : {
5156 9609 : {
5157 9609 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5158 9609 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5159 9609 : if (res) return res;
5160 : }
5161 : }
5162 : break;
5163 : }
5164 538619 : default:;
5165 : }
5166 538619 : switch (TREE_CODE (_q20))
5167 : {
5168 78438 : CASE_CONVERT:
5169 78438 : {
5170 78438 : tree _q30 = TREE_OPERAND (_q20, 0);
5171 78438 : switch (TREE_CODE (_p1))
5172 : {
5173 195 : CASE_CONVERT:
5174 195 : {
5175 195 : tree _q60 = TREE_OPERAND (_p1, 0);
5176 195 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5177 : {
5178 0 : {
5179 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5180 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5181 0 : if (res) return res;
5182 : }
5183 : }
5184 : break;
5185 : }
5186 78438 : default:;
5187 : }
5188 78438 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5189 : {
5190 63 : {
5191 63 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5192 63 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5193 63 : if (res) return res;
5194 : }
5195 : }
5196 : break;
5197 : }
5198 538556 : default:;
5199 : }
5200 538556 : switch (TREE_CODE (_p1))
5201 : {
5202 3258 : CASE_CONVERT:
5203 3258 : {
5204 3258 : tree _q50 = TREE_OPERAND (_p1, 0);
5205 3258 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5206 : {
5207 0 : {
5208 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5209 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5210 0 : if (res) return res;
5211 : }
5212 : }
5213 : break;
5214 : }
5215 538556 : default:;
5216 : }
5217 538556 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5218 : {
5219 11290 : {
5220 11290 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5221 11290 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5222 11290 : if (res) return res;
5223 : }
5224 : }
5225 : break;
5226 : }
5227 106958 : case MINUS_EXPR:
5228 106958 : {
5229 106958 : tree _q20 = TREE_OPERAND (_p0, 0);
5230 106958 : tree _q21 = TREE_OPERAND (_p0, 1);
5231 106958 : switch (TREE_CODE (_p1))
5232 : {
5233 5716 : case MINUS_EXPR:
5234 5716 : {
5235 5716 : tree _q50 = TREE_OPERAND (_p1, 0);
5236 5716 : tree _q51 = TREE_OPERAND (_p1, 1);
5237 5716 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5238 : {
5239 170 : {
5240 170 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5241 340 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5242 173 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5243 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5244 : )
5245 : {
5246 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1537;
5247 3 : {
5248 3 : tree res_op0;
5249 3 : res_op0 = captures[0];
5250 3 : tree res_op1;
5251 3 : res_op1 = captures[2];
5252 3 : tree _r;
5253 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5254 3 : if (TREE_SIDE_EFFECTS (captures[1]))
5255 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5256 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 931, __FILE__, __LINE__, true);
5257 3 : return _r;
5258 : }
5259 0 : next_after_fail1537:;
5260 : }
5261 : }
5262 : }
5263 5713 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5264 : {
5265 166 : {
5266 166 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5267 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5268 166 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5269 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5270 : )
5271 : {
5272 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1538;
5273 0 : {
5274 0 : tree res_op0;
5275 0 : res_op0 = captures[2];
5276 0 : tree res_op1;
5277 0 : res_op1 = captures[1];
5278 0 : tree _r;
5279 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5280 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5281 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5282 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 932, __FILE__, __LINE__, true);
5283 0 : return _r;
5284 : }
5285 0 : next_after_fail1538:;
5286 : }
5287 : }
5288 : }
5289 : break;
5290 : }
5291 106955 : default:;
5292 : }
5293 106955 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5294 : {
5295 1754 : {
5296 1754 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5297 1754 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5298 1754 : if (res) return res;
5299 : }
5300 : }
5301 : break;
5302 : }
5303 26081 : case POINTER_DIFF_EXPR:
5304 26081 : {
5305 26081 : tree _q20 = TREE_OPERAND (_p0, 0);
5306 26081 : tree _q21 = TREE_OPERAND (_p0, 1);
5307 26081 : switch (TREE_CODE (_p1))
5308 : {
5309 2314 : case POINTER_DIFF_EXPR:
5310 2314 : {
5311 2314 : tree _q50 = TREE_OPERAND (_p1, 0);
5312 2314 : tree _q51 = TREE_OPERAND (_p1, 1);
5313 2314 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5314 : {
5315 0 : {
5316 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5317 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5318 0 : if (res) return res;
5319 : }
5320 : }
5321 2314 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5322 : {
5323 0 : {
5324 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5325 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5326 0 : if (res) return res;
5327 : }
5328 : }
5329 : break;
5330 : }
5331 : default:;
5332 : }
5333 : break;
5334 : }
5335 38674367 : default:;
5336 : }
5337 38674367 : {
5338 38674367 : tree _p0_pops[1];
5339 38674367 : if (tree_logical_inverted_value (_p0, _p0_pops))
5340 : {
5341 591628 : tree _q20 = _p0_pops[0];
5342 591628 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5343 : {
5344 24 : if (tree_truth_valued_p (_p1))
5345 : {
5346 0 : {
5347 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5348 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR);
5349 0 : if (res) return res;
5350 : }
5351 : }
5352 : }
5353 : }
5354 : }
5355 38674367 : if (tree_truth_valued_p (_p0))
5356 : {
5357 5592138 : {
5358 5592138 : tree _p1_pops[1];
5359 5592138 : if (tree_logical_inverted_value (_p1, _p1_pops))
5360 : {
5361 1153 : tree _q30 = _p1_pops[0];
5362 1153 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5363 : {
5364 0 : {
5365 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5366 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR);
5367 0 : if (res) return res;
5368 : }
5369 : }
5370 : }
5371 : }
5372 : }
5373 38674367 : switch (TREE_CODE (_p1))
5374 : {
5375 124919 : case PLUS_EXPR:
5376 124919 : {
5377 124919 : tree _q30 = TREE_OPERAND (_p1, 0);
5378 124919 : tree _q31 = TREE_OPERAND (_p1, 1);
5379 124919 : switch (TREE_CODE (_q31))
5380 : {
5381 372 : CASE_CONVERT:
5382 372 : {
5383 372 : tree _q50 = TREE_OPERAND (_q31, 0);
5384 372 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5385 : {
5386 0 : {
5387 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5388 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5389 0 : if (res) return res;
5390 : }
5391 : }
5392 : break;
5393 : }
5394 124919 : default:;
5395 : }
5396 124919 : switch (TREE_CODE (_q30))
5397 : {
5398 6246 : CASE_CONVERT:
5399 6246 : {
5400 6246 : tree _q40 = TREE_OPERAND (_q30, 0);
5401 6246 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5402 : {
5403 0 : {
5404 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5405 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5406 0 : if (res) return res;
5407 : }
5408 : }
5409 : break;
5410 : }
5411 124919 : default:;
5412 : }
5413 124919 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5414 : {
5415 0 : {
5416 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5417 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5418 0 : if (res) return res;
5419 : }
5420 : }
5421 124919 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5422 : {
5423 8 : {
5424 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5425 8 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5426 8 : if (res) return res;
5427 : }
5428 : }
5429 : break;
5430 : }
5431 38674359 : default:;
5432 : }
5433 38674359 : {
5434 38674359 : tree _p1_pops[1];
5435 38674359 : if (tree_nop_convert (_p1, _p1_pops))
5436 : {
5437 5094561 : tree _q30 = _p1_pops[0];
5438 5094561 : switch (TREE_CODE (_q30))
5439 : {
5440 1743 : case PLUS_EXPR:
5441 1743 : {
5442 1743 : tree _q40 = TREE_OPERAND (_q30, 0);
5443 1743 : tree _q41 = TREE_OPERAND (_q30, 1);
5444 1743 : switch (TREE_CODE (_q41))
5445 : {
5446 3 : CASE_CONVERT:
5447 3 : {
5448 3 : tree _q60 = TREE_OPERAND (_q41, 0);
5449 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5450 : {
5451 0 : {
5452 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5453 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
5454 0 : if (res) return res;
5455 : }
5456 : }
5457 : break;
5458 : }
5459 1743 : default:;
5460 : }
5461 1743 : switch (TREE_CODE (_q40))
5462 : {
5463 1169 : CASE_CONVERT:
5464 1169 : {
5465 1169 : tree _q50 = TREE_OPERAND (_q40, 0);
5466 1169 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5467 : {
5468 0 : {
5469 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5470 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
5471 0 : if (res) return res;
5472 : }
5473 : }
5474 : break;
5475 : }
5476 1743 : default:;
5477 : }
5478 1743 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5479 : {
5480 0 : {
5481 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5482 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
5483 0 : if (res) return res;
5484 : }
5485 : }
5486 1743 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5487 : {
5488 0 : {
5489 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5490 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR);
5491 0 : if (res) return res;
5492 : }
5493 : }
5494 : break;
5495 : }
5496 : default:;
5497 : }
5498 : }
5499 : }
5500 38674359 : switch (TREE_CODE (_p0))
5501 : {
5502 8708625 : CASE_CONVERT:
5503 8708625 : {
5504 8708625 : tree _q20 = TREE_OPERAND (_p0, 0);
5505 8708625 : switch (TREE_CODE (_p1))
5506 : {
5507 164 : case POINTER_PLUS_EXPR:
5508 164 : {
5509 164 : tree _q40 = TREE_OPERAND (_p1, 0);
5510 164 : tree _q41 = TREE_OPERAND (_p1, 1);
5511 164 : switch (TREE_CODE (_q40))
5512 : {
5513 48 : CASE_CONVERT:
5514 48 : {
5515 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5516 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5517 : {
5518 0 : {
5519 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5520 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5521 0 : if (res) return res;
5522 : }
5523 : }
5524 : break;
5525 : }
5526 164 : default:;
5527 : }
5528 164 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5529 : {
5530 0 : {
5531 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5532 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5533 0 : if (res) return res;
5534 : }
5535 : }
5536 : break;
5537 : }
5538 8708625 : default:;
5539 : }
5540 8708625 : {
5541 8708625 : tree _p1_pops[1];
5542 8708625 : if (tree_nop_convert (_p1, _p1_pops))
5543 : {
5544 4725828 : tree _q40 = _p1_pops[0];
5545 4725828 : switch (TREE_CODE (_q40))
5546 : {
5547 48 : case POINTER_PLUS_EXPR:
5548 48 : {
5549 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5550 48 : tree _q51 = TREE_OPERAND (_q40, 1);
5551 48 : switch (TREE_CODE (_q50))
5552 : {
5553 8 : CASE_CONVERT:
5554 8 : {
5555 8 : tree _q60 = TREE_OPERAND (_q50, 0);
5556 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5557 : {
5558 0 : {
5559 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5560 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5561 0 : if (res) return res;
5562 : }
5563 : }
5564 : break;
5565 : }
5566 48 : default:;
5567 : }
5568 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5569 : {
5570 0 : {
5571 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5572 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5573 0 : if (res) return res;
5574 : }
5575 : }
5576 : break;
5577 : }
5578 : default:;
5579 : }
5580 : }
5581 : }
5582 8708625 : break;
5583 : }
5584 38674359 : default:;
5585 : }
5586 38674359 : {
5587 38674359 : tree _p0_pops[1];
5588 38674359 : if (tree_nop_convert (_p0, _p0_pops))
5589 : {
5590 6428553 : tree _q20 = _p0_pops[0];
5591 6428553 : switch (TREE_CODE (_q20))
5592 : {
5593 185 : case POINTER_PLUS_EXPR:
5594 185 : {
5595 185 : tree _q30 = TREE_OPERAND (_q20, 0);
5596 185 : tree _q31 = TREE_OPERAND (_q20, 1);
5597 185 : switch (TREE_CODE (_q30))
5598 : {
5599 24 : CASE_CONVERT:
5600 24 : {
5601 24 : tree _q40 = TREE_OPERAND (_q30, 0);
5602 24 : switch (TREE_CODE (_p1))
5603 : {
5604 8 : CASE_CONVERT:
5605 8 : {
5606 8 : tree _q70 = TREE_OPERAND (_p1, 0);
5607 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5608 : {
5609 0 : {
5610 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5611 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5612 0 : if (res) return res;
5613 : }
5614 : }
5615 : break;
5616 : }
5617 24 : default:;
5618 : }
5619 24 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5620 : {
5621 0 : {
5622 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5623 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5624 0 : if (res) return res;
5625 : }
5626 : }
5627 : break;
5628 : }
5629 185 : default:;
5630 : }
5631 185 : switch (TREE_CODE (_p1))
5632 : {
5633 50 : CASE_CONVERT:
5634 50 : {
5635 50 : tree _q60 = TREE_OPERAND (_p1, 0);
5636 50 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5637 : {
5638 0 : {
5639 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5640 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5641 0 : if (res) return res;
5642 : }
5643 : }
5644 : break;
5645 : }
5646 185 : default:;
5647 : }
5648 185 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5649 : {
5650 0 : {
5651 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5652 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5653 0 : if (res) return res;
5654 : }
5655 : }
5656 : break;
5657 : }
5658 : default:;
5659 : }
5660 : }
5661 : }
5662 38674359 : switch (TREE_CODE (_p1))
5663 : {
5664 32027 : case POINTER_PLUS_EXPR:
5665 32027 : {
5666 32027 : tree _q30 = TREE_OPERAND (_p1, 0);
5667 32027 : tree _q31 = TREE_OPERAND (_p1, 1);
5668 32027 : switch (TREE_CODE (_q30))
5669 : {
5670 3536 : CASE_CONVERT:
5671 3536 : {
5672 3536 : tree _q40 = TREE_OPERAND (_q30, 0);
5673 3536 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5674 : {
5675 0 : {
5676 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5677 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5678 0 : if (res) return res;
5679 : }
5680 : }
5681 : break;
5682 : }
5683 32027 : default:;
5684 : }
5685 32027 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5686 : {
5687 0 : {
5688 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5689 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5690 0 : if (res) return res;
5691 : }
5692 : }
5693 : break;
5694 : }
5695 38674359 : default:;
5696 : }
5697 38674359 : {
5698 38674359 : tree _p1_pops[1];
5699 38674359 : if (tree_nop_convert (_p1, _p1_pops))
5700 : {
5701 5094561 : tree _q30 = _p1_pops[0];
5702 5094561 : switch (TREE_CODE (_q30))
5703 : {
5704 387 : case POINTER_PLUS_EXPR:
5705 387 : {
5706 387 : tree _q40 = TREE_OPERAND (_q30, 0);
5707 387 : tree _q41 = TREE_OPERAND (_q30, 1);
5708 387 : switch (TREE_CODE (_q40))
5709 : {
5710 8 : CASE_CONVERT:
5711 8 : {
5712 8 : tree _q50 = TREE_OPERAND (_q40, 0);
5713 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5714 : {
5715 0 : {
5716 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5717 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5718 0 : if (res) return res;
5719 : }
5720 : }
5721 : break;
5722 : }
5723 387 : default:;
5724 : }
5725 387 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5726 : {
5727 0 : {
5728 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5729 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5730 0 : if (res) return res;
5731 : }
5732 : }
5733 : break;
5734 : }
5735 : default:;
5736 : }
5737 : }
5738 : }
5739 38674359 : switch (TREE_CODE (_p0))
5740 : {
5741 527266 : case POINTER_PLUS_EXPR:
5742 527266 : {
5743 527266 : tree _q20 = TREE_OPERAND (_p0, 0);
5744 527266 : tree _q21 = TREE_OPERAND (_p0, 1);
5745 527266 : switch (TREE_CODE (_p1))
5746 : {
5747 51964 : case ADDR_EXPR:
5748 51964 : {
5749 51964 : {
5750 51964 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5751 51964 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
5752 51964 : if (res) return res;
5753 : }
5754 36022 : break;
5755 : }
5756 511324 : default:;
5757 : }
5758 511324 : switch (TREE_CODE (_q20))
5759 : {
5760 5407 : case ADDR_EXPR:
5761 5407 : {
5762 5407 : switch (TREE_CODE (_p1))
5763 : {
5764 411 : case POINTER_PLUS_EXPR:
5765 411 : {
5766 411 : tree _q50 = TREE_OPERAND (_p1, 0);
5767 411 : tree _q51 = TREE_OPERAND (_p1, 1);
5768 411 : switch (TREE_CODE (_q50))
5769 : {
5770 0 : case ADDR_EXPR:
5771 0 : {
5772 0 : {
5773 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
5774 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5775 0 : if (res) return res;
5776 : }
5777 0 : break;
5778 : }
5779 : default:;
5780 : }
5781 : break;
5782 : }
5783 : default:;
5784 : }
5785 : break;
5786 : }
5787 : default:;
5788 : }
5789 : break;
5790 : }
5791 207014 : case ADDR_EXPR:
5792 207014 : {
5793 207014 : switch (TREE_CODE (_p1))
5794 : {
5795 0 : case POINTER_PLUS_EXPR:
5796 0 : {
5797 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5798 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5799 0 : {
5800 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5801 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
5802 0 : if (res) return res;
5803 : }
5804 0 : break;
5805 : }
5806 : default:;
5807 : }
5808 : break;
5809 : }
5810 38658417 : default:;
5811 : }
5812 38658417 : switch (TREE_CODE (_p1))
5813 : {
5814 30246 : case MINUS_EXPR:
5815 30246 : {
5816 30246 : tree _q30 = TREE_OPERAND (_p1, 0);
5817 30246 : tree _q31 = TREE_OPERAND (_p1, 1);
5818 30246 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5819 : {
5820 0 : {
5821 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5822 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5823 0 : if (res) return res;
5824 : }
5825 : }
5826 : break;
5827 : }
5828 38658417 : default:;
5829 : }
5830 38658417 : switch (TREE_CODE (_p0))
5831 : {
5832 9090 : case TRUNC_DIV_EXPR:
5833 9090 : {
5834 9090 : tree _q20 = TREE_OPERAND (_p0, 0);
5835 9090 : tree _q21 = TREE_OPERAND (_p0, 1);
5836 9090 : if (tree_expr_nonnegative_p (_q20))
5837 : {
5838 3429 : if (tree_expr_nonnegative_p (_q21))
5839 : {
5840 3205 : if (integer_zerop (_p1))
5841 : {
5842 182 : {
5843 182 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5844 182 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
5845 182 : if (res) return res;
5846 : }
5847 : }
5848 : }
5849 : }
5850 : break;
5851 : }
5852 8708625 : CASE_CONVERT:
5853 8708625 : {
5854 8708625 : tree _q20 = TREE_OPERAND (_p0, 0);
5855 8708625 : switch (TREE_CODE (_p1))
5856 : {
5857 4866477 : CASE_CONVERT:
5858 4866477 : {
5859 4866477 : tree _q40 = TREE_OPERAND (_p1, 0);
5860 4866477 : switch (TREE_CODE (_q40))
5861 : {
5862 0 : case MINUS_EXPR:
5863 0 : {
5864 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5865 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5866 0 : switch (TREE_CODE (_q50))
5867 : {
5868 0 : case INTEGER_CST:
5869 0 : {
5870 0 : switch (TREE_CODE (_q51))
5871 : {
5872 0 : CASE_CONVERT:
5873 0 : {
5874 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5875 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5876 : {
5877 0 : {
5878 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5879 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5880 0 : if (res) return res;
5881 : }
5882 : }
5883 : break;
5884 : }
5885 : default:;
5886 : }
5887 : break;
5888 : }
5889 : default:;
5890 : }
5891 : break;
5892 : }
5893 : default:;
5894 : }
5895 : break;
5896 : }
5897 8708625 : default:;
5898 : }
5899 8708625 : switch (TREE_CODE (_q20))
5900 : {
5901 99 : case MINUS_EXPR:
5902 99 : {
5903 99 : tree _q30 = TREE_OPERAND (_q20, 0);
5904 99 : tree _q31 = TREE_OPERAND (_q20, 1);
5905 99 : switch (TREE_CODE (_q30))
5906 : {
5907 49 : case INTEGER_CST:
5908 49 : {
5909 49 : switch (TREE_CODE (_q31))
5910 : {
5911 0 : CASE_CONVERT:
5912 0 : {
5913 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5914 0 : switch (TREE_CODE (_p1))
5915 : {
5916 0 : CASE_CONVERT:
5917 0 : {
5918 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5919 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
5920 : {
5921 0 : {
5922 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5923 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5924 0 : if (res) return res;
5925 : }
5926 : }
5927 : break;
5928 : }
5929 0 : default:;
5930 : }
5931 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5932 : {
5933 0 : {
5934 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5935 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5936 0 : if (res) return res;
5937 : }
5938 : }
5939 : break;
5940 : }
5941 49 : default:;
5942 : }
5943 49 : switch (TREE_CODE (_p1))
5944 : {
5945 0 : CASE_CONVERT:
5946 0 : {
5947 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5948 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5949 : {
5950 0 : {
5951 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5952 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5953 0 : if (res) return res;
5954 : }
5955 : }
5956 : break;
5957 : }
5958 49 : default:;
5959 : }
5960 49 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5961 : {
5962 0 : {
5963 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5964 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5965 0 : if (res) return res;
5966 : }
5967 : }
5968 : break;
5969 : }
5970 : default:;
5971 : }
5972 : break;
5973 : }
5974 8708625 : default:;
5975 : }
5976 8708625 : switch (TREE_CODE (_p1))
5977 : {
5978 4866477 : CASE_CONVERT:
5979 4866477 : {
5980 4866477 : tree _q40 = TREE_OPERAND (_p1, 0);
5981 4866477 : switch (TREE_CODE (_q40))
5982 : {
5983 0 : case MINUS_EXPR:
5984 0 : {
5985 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5986 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5987 0 : switch (TREE_CODE (_q50))
5988 : {
5989 0 : case INTEGER_CST:
5990 0 : {
5991 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5992 : {
5993 0 : {
5994 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5995 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5996 0 : if (res) return res;
5997 : }
5998 : }
5999 : break;
6000 : }
6001 : default:;
6002 : }
6003 : break;
6004 : }
6005 : default:;
6006 : }
6007 : break;
6008 : }
6009 21620 : case MINUS_EXPR:
6010 21620 : {
6011 21620 : tree _q40 = TREE_OPERAND (_p1, 0);
6012 21620 : tree _q41 = TREE_OPERAND (_p1, 1);
6013 21620 : switch (TREE_CODE (_q40))
6014 : {
6015 401 : case INTEGER_CST:
6016 401 : {
6017 401 : switch (TREE_CODE (_q41))
6018 : {
6019 20 : CASE_CONVERT:
6020 20 : {
6021 20 : tree _q60 = TREE_OPERAND (_q41, 0);
6022 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6023 : {
6024 0 : {
6025 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6026 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6027 0 : if (res) return res;
6028 : }
6029 : }
6030 : break;
6031 : }
6032 401 : default:;
6033 : }
6034 401 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6035 : {
6036 0 : {
6037 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6038 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6039 0 : if (res) return res;
6040 : }
6041 : }
6042 : break;
6043 : }
6044 : default:;
6045 : }
6046 : break;
6047 : }
6048 : default:;
6049 : }
6050 : break;
6051 : }
6052 105243 : case MINUS_EXPR:
6053 105243 : {
6054 105243 : tree _q20 = TREE_OPERAND (_p0, 0);
6055 105243 : tree _q21 = TREE_OPERAND (_p0, 1);
6056 105243 : switch (TREE_CODE (_q20))
6057 : {
6058 2256 : case INTEGER_CST:
6059 2256 : {
6060 2256 : switch (TREE_CODE (_q21))
6061 : {
6062 190 : CASE_CONVERT:
6063 190 : {
6064 190 : tree _q40 = TREE_OPERAND (_q21, 0);
6065 190 : switch (TREE_CODE (_p1))
6066 : {
6067 0 : CASE_CONVERT:
6068 0 : {
6069 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6070 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6071 : {
6072 0 : {
6073 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6074 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6075 0 : if (res) return res;
6076 : }
6077 : }
6078 : break;
6079 : }
6080 190 : default:;
6081 : }
6082 190 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6083 : {
6084 0 : {
6085 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6086 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6087 0 : if (res) return res;
6088 : }
6089 : }
6090 : break;
6091 : }
6092 2256 : default:;
6093 : }
6094 2256 : switch (TREE_CODE (_p1))
6095 : {
6096 306 : CASE_CONVERT:
6097 306 : {
6098 306 : tree _q50 = TREE_OPERAND (_p1, 0);
6099 306 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6100 : {
6101 0 : {
6102 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6103 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6104 0 : if (res) return res;
6105 : }
6106 : }
6107 : break;
6108 : }
6109 2256 : default:;
6110 : }
6111 2256 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6112 : {
6113 19 : {
6114 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6115 19 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6116 19 : if (res) return res;
6117 : }
6118 : }
6119 : break;
6120 : }
6121 : default:;
6122 : }
6123 : break;
6124 : }
6125 38658245 : default:;
6126 : }
6127 38658245 : switch (TREE_CODE (_p1))
6128 : {
6129 5263472 : CASE_CONVERT:
6130 5263472 : {
6131 5263472 : tree _q30 = TREE_OPERAND (_p1, 0);
6132 5263472 : switch (TREE_CODE (_q30))
6133 : {
6134 556 : case MINUS_EXPR:
6135 556 : {
6136 556 : tree _q40 = TREE_OPERAND (_q30, 0);
6137 556 : tree _q41 = TREE_OPERAND (_q30, 1);
6138 556 : switch (TREE_CODE (_q40))
6139 : {
6140 17 : case INTEGER_CST:
6141 17 : {
6142 17 : switch (TREE_CODE (_q41))
6143 : {
6144 0 : CASE_CONVERT:
6145 0 : {
6146 0 : tree _q60 = TREE_OPERAND (_q41, 0);
6147 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6148 : {
6149 0 : {
6150 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6151 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6152 0 : if (res) return res;
6153 : }
6154 : }
6155 : break;
6156 : }
6157 17 : default:;
6158 : }
6159 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6160 : {
6161 0 : {
6162 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6163 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6164 0 : if (res) return res;
6165 : }
6166 : }
6167 : break;
6168 : }
6169 : default:;
6170 : }
6171 : break;
6172 : }
6173 : default:;
6174 : }
6175 : break;
6176 : }
6177 30246 : case MINUS_EXPR:
6178 30246 : {
6179 30246 : tree _q30 = TREE_OPERAND (_p1, 0);
6180 30246 : tree _q31 = TREE_OPERAND (_p1, 1);
6181 30246 : switch (TREE_CODE (_q30))
6182 : {
6183 655 : case INTEGER_CST:
6184 655 : {
6185 655 : switch (TREE_CODE (_q31))
6186 : {
6187 28 : CASE_CONVERT:
6188 28 : {
6189 28 : tree _q50 = TREE_OPERAND (_q31, 0);
6190 28 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6191 : {
6192 0 : {
6193 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6194 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6195 0 : if (res) return res;
6196 : }
6197 : }
6198 : break;
6199 : }
6200 655 : default:;
6201 : }
6202 655 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6203 : {
6204 0 : {
6205 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6206 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
6207 0 : if (res) return res;
6208 : }
6209 : }
6210 : break;
6211 : }
6212 : default:;
6213 : }
6214 : break;
6215 : }
6216 38658245 : default:;
6217 : }
6218 38658245 : switch (TREE_CODE (_p0))
6219 : {
6220 18288 : case LT_EXPR:
6221 18288 : {
6222 18288 : tree _q20 = TREE_OPERAND (_p0, 0);
6223 18288 : tree _q21 = TREE_OPERAND (_p0, 1);
6224 18288 : switch (TREE_CODE (_p1))
6225 : {
6226 18 : case GT_EXPR:
6227 18 : {
6228 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6229 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6230 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6231 : {
6232 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6233 : {
6234 0 : {
6235 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6236 0 : const enum tree_code cmp1 = LT_EXPR;
6237 0 : const enum tree_code cmp2 = GT_EXPR;
6238 0 : const enum tree_code rcmp = NE_EXPR;
6239 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6240 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6241 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6242 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6243 : )
6244 : {
6245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1539;
6246 0 : {
6247 0 : tree res_op0;
6248 0 : res_op0 = captures[0];
6249 0 : tree res_op1;
6250 0 : res_op1 = captures[1];
6251 0 : tree _r;
6252 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6253 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6254 0 : return _r;
6255 : }
6256 0 : next_after_fail1539:;
6257 : }
6258 : }
6259 : }
6260 : }
6261 : break;
6262 : }
6263 23 : case EQ_EXPR:
6264 23 : {
6265 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6266 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6267 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6268 : {
6269 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6270 : {
6271 0 : {
6272 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6273 0 : const enum tree_code cmp1 = LT_EXPR;
6274 0 : const enum tree_code cmp2 = EQ_EXPR;
6275 0 : const enum tree_code rcmp = LE_EXPR;
6276 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6277 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6278 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6279 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6280 : )
6281 : {
6282 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1540;
6283 0 : {
6284 0 : tree res_op0;
6285 0 : res_op0 = captures[0];
6286 0 : tree res_op1;
6287 0 : res_op1 = captures[1];
6288 0 : tree _r;
6289 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6290 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6291 0 : return _r;
6292 : }
6293 0 : next_after_fail1540:;
6294 : }
6295 : }
6296 : }
6297 : }
6298 : break;
6299 : }
6300 23 : case NE_EXPR:
6301 23 : {
6302 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6303 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6304 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6305 : {
6306 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6307 : {
6308 0 : {
6309 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6310 0 : const enum tree_code cmp1 = LT_EXPR;
6311 0 : const enum tree_code cmp2 = NE_EXPR;
6312 0 : const enum tree_code rcmp = GT_EXPR;
6313 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6314 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6315 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6316 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6317 : )
6318 : {
6319 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1541;
6320 0 : {
6321 0 : tree res_op0;
6322 0 : res_op0 = captures[0];
6323 0 : tree res_op1;
6324 0 : res_op1 = captures[1];
6325 0 : tree _r;
6326 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6327 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6328 0 : return _r;
6329 : }
6330 0 : next_after_fail1541:;
6331 : }
6332 : }
6333 : }
6334 : }
6335 : break;
6336 : }
6337 : default:;
6338 : }
6339 : break;
6340 : }
6341 12034 : case LE_EXPR:
6342 12034 : {
6343 12034 : tree _q20 = TREE_OPERAND (_p0, 0);
6344 12034 : tree _q21 = TREE_OPERAND (_p0, 1);
6345 12034 : switch (TREE_CODE (_p1))
6346 : {
6347 25 : case GE_EXPR:
6348 25 : {
6349 25 : tree _q50 = TREE_OPERAND (_p1, 0);
6350 25 : tree _q51 = TREE_OPERAND (_p1, 1);
6351 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6352 : {
6353 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6354 : {
6355 0 : {
6356 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6357 0 : const enum tree_code cmp1 = LE_EXPR;
6358 0 : const enum tree_code cmp2 = GE_EXPR;
6359 0 : const enum tree_code rcmp = NE_EXPR;
6360 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6361 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6362 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6363 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6364 : )
6365 : {
6366 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1542;
6367 0 : {
6368 0 : tree res_op0;
6369 0 : res_op0 = captures[0];
6370 0 : tree res_op1;
6371 0 : res_op1 = captures[1];
6372 0 : tree _r;
6373 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6374 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6375 0 : return _r;
6376 : }
6377 0 : next_after_fail1542:;
6378 : }
6379 : }
6380 : }
6381 : }
6382 : break;
6383 : }
6384 41 : case EQ_EXPR:
6385 41 : {
6386 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6387 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6388 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6389 : {
6390 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6391 : {
6392 0 : {
6393 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6394 0 : const enum tree_code cmp1 = LE_EXPR;
6395 0 : const enum tree_code cmp2 = EQ_EXPR;
6396 0 : const enum tree_code rcmp = LT_EXPR;
6397 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6398 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6399 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6400 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6401 : )
6402 : {
6403 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1543;
6404 0 : {
6405 0 : tree res_op0;
6406 0 : res_op0 = captures[0];
6407 0 : tree res_op1;
6408 0 : res_op1 = captures[1];
6409 0 : tree _r;
6410 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6411 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6412 0 : return _r;
6413 : }
6414 0 : next_after_fail1543:;
6415 : }
6416 : }
6417 : }
6418 : }
6419 : break;
6420 : }
6421 13 : case NE_EXPR:
6422 13 : {
6423 13 : tree _q50 = TREE_OPERAND (_p1, 0);
6424 13 : tree _q51 = TREE_OPERAND (_p1, 1);
6425 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6426 : {
6427 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6428 : {
6429 0 : {
6430 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6431 0 : const enum tree_code cmp1 = LE_EXPR;
6432 0 : const enum tree_code cmp2 = NE_EXPR;
6433 0 : const enum tree_code rcmp = GE_EXPR;
6434 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6435 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6436 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6437 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6438 : )
6439 : {
6440 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1544;
6441 0 : {
6442 0 : tree res_op0;
6443 0 : res_op0 = captures[0];
6444 0 : tree res_op1;
6445 0 : res_op1 = captures[1];
6446 0 : tree _r;
6447 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6448 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6449 0 : return _r;
6450 : }
6451 0 : next_after_fail1544:;
6452 : }
6453 : }
6454 : }
6455 : }
6456 : break;
6457 : }
6458 : default:;
6459 : }
6460 : break;
6461 : }
6462 35985 : case GT_EXPR:
6463 35985 : {
6464 35985 : tree _q20 = TREE_OPERAND (_p0, 0);
6465 35985 : tree _q21 = TREE_OPERAND (_p0, 1);
6466 35985 : switch (TREE_CODE (_p1))
6467 : {
6468 77 : case GT_EXPR:
6469 77 : {
6470 77 : tree _q50 = TREE_OPERAND (_p1, 0);
6471 77 : tree _q51 = TREE_OPERAND (_p1, 1);
6472 77 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6473 : {
6474 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6475 : {
6476 0 : {
6477 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6478 0 : const enum tree_code cmp1 = LT_EXPR;
6479 0 : const enum tree_code cmp2 = GT_EXPR;
6480 0 : const enum tree_code rcmp = NE_EXPR;
6481 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6482 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6483 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6484 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6485 : )
6486 : {
6487 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1545;
6488 0 : {
6489 0 : tree res_op0;
6490 0 : res_op0 = captures[0];
6491 0 : tree res_op1;
6492 0 : res_op1 = captures[1];
6493 0 : tree _r;
6494 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6495 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6496 0 : return _r;
6497 : }
6498 0 : next_after_fail1545:;
6499 : }
6500 : }
6501 0 : {
6502 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6503 0 : const enum tree_code cmp1 = LT_EXPR;
6504 0 : const enum tree_code cmp2 = GT_EXPR;
6505 0 : const enum tree_code rcmp = NE_EXPR;
6506 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6507 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6508 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6509 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6510 : )
6511 : {
6512 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1546;
6513 0 : {
6514 0 : tree res_op0;
6515 0 : res_op0 = captures[0];
6516 0 : tree res_op1;
6517 0 : res_op1 = captures[1];
6518 0 : tree _r;
6519 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6520 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6521 0 : return _r;
6522 : }
6523 0 : next_after_fail1546:;
6524 : }
6525 : }
6526 : }
6527 : }
6528 : break;
6529 : }
6530 29 : case EQ_EXPR:
6531 29 : {
6532 29 : tree _q50 = TREE_OPERAND (_p1, 0);
6533 29 : tree _q51 = TREE_OPERAND (_p1, 1);
6534 29 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6535 : {
6536 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6537 : {
6538 0 : {
6539 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6540 0 : const enum tree_code cmp1 = LT_EXPR;
6541 0 : const enum tree_code cmp2 = EQ_EXPR;
6542 0 : const enum tree_code rcmp = LE_EXPR;
6543 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6544 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6545 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6546 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6547 : )
6548 : {
6549 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1547;
6550 0 : {
6551 0 : tree res_op0;
6552 0 : res_op0 = captures[0];
6553 0 : tree res_op1;
6554 0 : res_op1 = captures[1];
6555 0 : tree _r;
6556 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6557 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6558 0 : return _r;
6559 : }
6560 0 : next_after_fail1547:;
6561 : }
6562 : }
6563 : }
6564 : }
6565 : break;
6566 : }
6567 53 : case NE_EXPR:
6568 53 : {
6569 53 : tree _q50 = TREE_OPERAND (_p1, 0);
6570 53 : tree _q51 = TREE_OPERAND (_p1, 1);
6571 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6572 : {
6573 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6574 : {
6575 0 : {
6576 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6577 0 : const enum tree_code cmp1 = LT_EXPR;
6578 0 : const enum tree_code cmp2 = NE_EXPR;
6579 0 : const enum tree_code rcmp = GT_EXPR;
6580 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6581 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6582 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6583 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6584 : )
6585 : {
6586 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1548;
6587 0 : {
6588 0 : tree res_op0;
6589 0 : res_op0 = captures[0];
6590 0 : tree res_op1;
6591 0 : res_op1 = captures[1];
6592 0 : tree _r;
6593 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6594 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6595 0 : return _r;
6596 : }
6597 0 : next_after_fail1548:;
6598 : }
6599 : }
6600 : }
6601 : }
6602 : break;
6603 : }
6604 32 : case LT_EXPR:
6605 32 : {
6606 32 : tree _q50 = TREE_OPERAND (_p1, 0);
6607 32 : tree _q51 = TREE_OPERAND (_p1, 1);
6608 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6609 : {
6610 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6611 : {
6612 0 : {
6613 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6614 0 : const enum tree_code cmp1 = LT_EXPR;
6615 0 : const enum tree_code cmp2 = GT_EXPR;
6616 0 : const enum tree_code rcmp = NE_EXPR;
6617 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6618 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6619 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6620 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6621 : )
6622 : {
6623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1549;
6624 0 : {
6625 0 : tree res_op0;
6626 0 : res_op0 = captures[0];
6627 0 : tree res_op1;
6628 0 : res_op1 = captures[1];
6629 0 : tree _r;
6630 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6631 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6632 0 : return _r;
6633 : }
6634 0 : next_after_fail1549:;
6635 : }
6636 : }
6637 : }
6638 : }
6639 : break;
6640 : }
6641 : default:;
6642 : }
6643 : break;
6644 : }
6645 6149 : case GE_EXPR:
6646 6149 : {
6647 6149 : tree _q20 = TREE_OPERAND (_p0, 0);
6648 6149 : tree _q21 = TREE_OPERAND (_p0, 1);
6649 6149 : switch (TREE_CODE (_p1))
6650 : {
6651 76 : case GE_EXPR:
6652 76 : {
6653 76 : tree _q50 = TREE_OPERAND (_p1, 0);
6654 76 : tree _q51 = TREE_OPERAND (_p1, 1);
6655 76 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6656 : {
6657 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6658 : {
6659 0 : {
6660 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6661 0 : const enum tree_code cmp1 = LE_EXPR;
6662 0 : const enum tree_code cmp2 = GE_EXPR;
6663 0 : const enum tree_code rcmp = NE_EXPR;
6664 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6665 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6666 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6667 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6668 : )
6669 : {
6670 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1550;
6671 0 : {
6672 0 : tree res_op0;
6673 0 : res_op0 = captures[0];
6674 0 : tree res_op1;
6675 0 : res_op1 = captures[1];
6676 0 : tree _r;
6677 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6678 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6679 0 : return _r;
6680 : }
6681 0 : next_after_fail1550:;
6682 : }
6683 : }
6684 0 : {
6685 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6686 0 : const enum tree_code cmp1 = LE_EXPR;
6687 0 : const enum tree_code cmp2 = GE_EXPR;
6688 0 : const enum tree_code rcmp = NE_EXPR;
6689 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6690 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6691 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6692 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6693 : )
6694 : {
6695 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1551;
6696 0 : {
6697 0 : tree res_op0;
6698 0 : res_op0 = captures[0];
6699 0 : tree res_op1;
6700 0 : res_op1 = captures[1];
6701 0 : tree _r;
6702 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6703 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6704 0 : return _r;
6705 : }
6706 0 : next_after_fail1551:;
6707 : }
6708 : }
6709 : }
6710 : }
6711 : break;
6712 : }
6713 52 : case EQ_EXPR:
6714 52 : {
6715 52 : tree _q50 = TREE_OPERAND (_p1, 0);
6716 52 : tree _q51 = TREE_OPERAND (_p1, 1);
6717 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6718 : {
6719 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6720 : {
6721 0 : {
6722 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6723 0 : const enum tree_code cmp1 = LE_EXPR;
6724 0 : const enum tree_code cmp2 = EQ_EXPR;
6725 0 : const enum tree_code rcmp = LT_EXPR;
6726 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6727 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6728 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6729 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6730 : )
6731 : {
6732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1552;
6733 0 : {
6734 0 : tree res_op0;
6735 0 : res_op0 = captures[0];
6736 0 : tree res_op1;
6737 0 : res_op1 = captures[1];
6738 0 : tree _r;
6739 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6740 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6741 0 : return _r;
6742 : }
6743 0 : next_after_fail1552:;
6744 : }
6745 : }
6746 : }
6747 : }
6748 : break;
6749 : }
6750 11 : case NE_EXPR:
6751 11 : {
6752 11 : tree _q50 = TREE_OPERAND (_p1, 0);
6753 11 : tree _q51 = TREE_OPERAND (_p1, 1);
6754 11 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6755 : {
6756 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6757 : {
6758 0 : {
6759 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6760 0 : const enum tree_code cmp1 = LE_EXPR;
6761 0 : const enum tree_code cmp2 = NE_EXPR;
6762 0 : const enum tree_code rcmp = GE_EXPR;
6763 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6764 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6765 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6766 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6767 : )
6768 : {
6769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1553;
6770 0 : {
6771 0 : tree res_op0;
6772 0 : res_op0 = captures[0];
6773 0 : tree res_op1;
6774 0 : res_op1 = captures[1];
6775 0 : tree _r;
6776 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6777 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6778 0 : return _r;
6779 : }
6780 0 : next_after_fail1553:;
6781 : }
6782 : }
6783 : }
6784 : }
6785 : break;
6786 : }
6787 16 : case LE_EXPR:
6788 16 : {
6789 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6790 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6791 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6792 : {
6793 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6794 : {
6795 0 : {
6796 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6797 0 : const enum tree_code cmp1 = LE_EXPR;
6798 0 : const enum tree_code cmp2 = GE_EXPR;
6799 0 : const enum tree_code rcmp = NE_EXPR;
6800 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6801 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6802 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6803 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6804 : )
6805 : {
6806 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1554;
6807 0 : {
6808 0 : tree res_op0;
6809 0 : res_op0 = captures[0];
6810 0 : tree res_op1;
6811 0 : res_op1 = captures[1];
6812 0 : tree _r;
6813 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6814 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6815 0 : return _r;
6816 : }
6817 0 : next_after_fail1554:;
6818 : }
6819 : }
6820 : }
6821 : }
6822 : break;
6823 : }
6824 : default:;
6825 : }
6826 : break;
6827 : }
6828 64019 : case EQ_EXPR:
6829 64019 : {
6830 64019 : tree _q20 = TREE_OPERAND (_p0, 0);
6831 64019 : tree _q21 = TREE_OPERAND (_p0, 1);
6832 64019 : switch (TREE_CODE (_p1))
6833 : {
6834 5 : case LT_EXPR:
6835 5 : {
6836 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6837 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6838 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6839 : {
6840 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6841 : {
6842 0 : {
6843 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6844 0 : const enum tree_code cmp1 = LT_EXPR;
6845 0 : const enum tree_code cmp2 = EQ_EXPR;
6846 0 : const enum tree_code rcmp = LE_EXPR;
6847 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6848 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6849 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6850 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6851 : )
6852 : {
6853 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1555;
6854 0 : {
6855 0 : tree res_op0;
6856 0 : res_op0 = captures[0];
6857 0 : tree res_op1;
6858 0 : res_op1 = captures[1];
6859 0 : tree _r;
6860 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6862 0 : return _r;
6863 : }
6864 0 : next_after_fail1555:;
6865 : }
6866 : }
6867 : }
6868 : }
6869 : break;
6870 : }
6871 42 : case LE_EXPR:
6872 42 : {
6873 42 : tree _q50 = TREE_OPERAND (_p1, 0);
6874 42 : tree _q51 = TREE_OPERAND (_p1, 1);
6875 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6876 : {
6877 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6878 : {
6879 0 : {
6880 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6881 0 : const enum tree_code cmp1 = LE_EXPR;
6882 0 : const enum tree_code cmp2 = EQ_EXPR;
6883 0 : const enum tree_code rcmp = LT_EXPR;
6884 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6885 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6886 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6887 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6888 : )
6889 : {
6890 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1556;
6891 0 : {
6892 0 : tree res_op0;
6893 0 : res_op0 = captures[0];
6894 0 : tree res_op1;
6895 0 : res_op1 = captures[1];
6896 0 : tree _r;
6897 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6898 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6899 0 : return _r;
6900 : }
6901 0 : next_after_fail1556:;
6902 : }
6903 : }
6904 : }
6905 : }
6906 : break;
6907 : }
6908 7 : case GT_EXPR:
6909 7 : {
6910 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6911 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6912 7 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6913 : {
6914 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6915 : {
6916 0 : {
6917 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6918 0 : const enum tree_code cmp1 = LT_EXPR;
6919 0 : const enum tree_code cmp2 = EQ_EXPR;
6920 0 : const enum tree_code rcmp = LE_EXPR;
6921 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6922 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6923 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6924 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6925 : )
6926 : {
6927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1557;
6928 0 : {
6929 0 : tree res_op0;
6930 0 : res_op0 = captures[0];
6931 0 : tree res_op1;
6932 0 : res_op1 = captures[1];
6933 0 : tree _r;
6934 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6935 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6936 0 : return _r;
6937 : }
6938 0 : next_after_fail1557:;
6939 : }
6940 : }
6941 : }
6942 : }
6943 : break;
6944 : }
6945 14 : case GE_EXPR:
6946 14 : {
6947 14 : tree _q50 = TREE_OPERAND (_p1, 0);
6948 14 : tree _q51 = TREE_OPERAND (_p1, 1);
6949 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6950 : {
6951 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6952 : {
6953 0 : {
6954 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6955 0 : const enum tree_code cmp1 = LE_EXPR;
6956 0 : const enum tree_code cmp2 = EQ_EXPR;
6957 0 : const enum tree_code rcmp = LT_EXPR;
6958 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6959 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6960 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
6961 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6962 : )
6963 : {
6964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1558;
6965 0 : {
6966 0 : tree res_op0;
6967 0 : res_op0 = captures[0];
6968 0 : tree res_op1;
6969 0 : res_op1 = captures[1];
6970 0 : tree _r;
6971 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6972 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
6973 0 : return _r;
6974 : }
6975 0 : next_after_fail1558:;
6976 : }
6977 : }
6978 : }
6979 : }
6980 : break;
6981 : }
6982 : default:;
6983 : }
6984 : break;
6985 : }
6986 69492 : case NE_EXPR:
6987 69492 : {
6988 69492 : tree _q20 = TREE_OPERAND (_p0, 0);
6989 69492 : tree _q21 = TREE_OPERAND (_p0, 1);
6990 69492 : switch (TREE_CODE (_p1))
6991 : {
6992 7 : case LT_EXPR:
6993 7 : {
6994 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6995 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6996 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6997 : {
6998 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6999 : {
7000 0 : {
7001 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7002 0 : const enum tree_code cmp1 = LT_EXPR;
7003 0 : const enum tree_code cmp2 = NE_EXPR;
7004 0 : const enum tree_code rcmp = GT_EXPR;
7005 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7006 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7007 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7008 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7009 : )
7010 : {
7011 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1559;
7012 0 : {
7013 0 : tree res_op0;
7014 0 : res_op0 = captures[0];
7015 0 : tree res_op1;
7016 0 : res_op1 = captures[1];
7017 0 : tree _r;
7018 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7019 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7020 0 : return _r;
7021 : }
7022 0 : next_after_fail1559:;
7023 : }
7024 : }
7025 : }
7026 : }
7027 : break;
7028 : }
7029 302 : case LE_EXPR:
7030 302 : {
7031 302 : tree _q50 = TREE_OPERAND (_p1, 0);
7032 302 : tree _q51 = TREE_OPERAND (_p1, 1);
7033 302 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7034 : {
7035 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7036 : {
7037 0 : {
7038 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7039 0 : const enum tree_code cmp1 = LE_EXPR;
7040 0 : const enum tree_code cmp2 = NE_EXPR;
7041 0 : const enum tree_code rcmp = GE_EXPR;
7042 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7043 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7044 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7045 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7046 : )
7047 : {
7048 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1560;
7049 0 : {
7050 0 : tree res_op0;
7051 0 : res_op0 = captures[0];
7052 0 : tree res_op1;
7053 0 : res_op1 = captures[1];
7054 0 : tree _r;
7055 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7056 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7057 0 : return _r;
7058 : }
7059 0 : next_after_fail1560:;
7060 : }
7061 : }
7062 : }
7063 : }
7064 : break;
7065 : }
7066 323 : case GT_EXPR:
7067 323 : {
7068 323 : tree _q50 = TREE_OPERAND (_p1, 0);
7069 323 : tree _q51 = TREE_OPERAND (_p1, 1);
7070 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7071 : {
7072 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7073 : {
7074 0 : {
7075 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7076 0 : const enum tree_code cmp1 = LT_EXPR;
7077 0 : const enum tree_code cmp2 = NE_EXPR;
7078 0 : const enum tree_code rcmp = GT_EXPR;
7079 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7080 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7081 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7082 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7083 : )
7084 : {
7085 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1561;
7086 0 : {
7087 0 : tree res_op0;
7088 0 : res_op0 = captures[0];
7089 0 : tree res_op1;
7090 0 : res_op1 = captures[1];
7091 0 : tree _r;
7092 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7093 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7094 0 : return _r;
7095 : }
7096 0 : next_after_fail1561:;
7097 : }
7098 : }
7099 : }
7100 : }
7101 : break;
7102 : }
7103 2 : case GE_EXPR:
7104 2 : {
7105 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7106 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7107 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7108 : {
7109 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7110 : {
7111 0 : {
7112 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7113 0 : const enum tree_code cmp1 = LE_EXPR;
7114 0 : const enum tree_code cmp2 = NE_EXPR;
7115 0 : const enum tree_code rcmp = GE_EXPR;
7116 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7117 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7118 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
7119 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7120 : )
7121 : {
7122 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1562;
7123 0 : {
7124 0 : tree res_op0;
7125 0 : res_op0 = captures[0];
7126 0 : tree res_op1;
7127 0 : res_op1 = captures[1];
7128 0 : tree _r;
7129 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7130 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7131 0 : return _r;
7132 : }
7133 0 : next_after_fail1562:;
7134 : }
7135 : }
7136 : }
7137 : }
7138 : break;
7139 : }
7140 : default:;
7141 : }
7142 : break;
7143 : }
7144 8526 : case MIN_EXPR:
7145 8526 : {
7146 8526 : tree _q20 = TREE_OPERAND (_p0, 0);
7147 8526 : tree _q21 = TREE_OPERAND (_p0, 1);
7148 8526 : switch (TREE_CODE (_p1))
7149 : {
7150 0 : case MAX_EXPR:
7151 0 : {
7152 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7153 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7154 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7155 : {
7156 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7157 : {
7158 0 : {
7159 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7160 0 : if (!HONOR_NANS (captures[0])
7161 : )
7162 : {
7163 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1563;
7164 0 : {
7165 0 : tree res_op0;
7166 0 : res_op0 = captures[0];
7167 0 : tree res_op1;
7168 0 : res_op1 = captures[1];
7169 0 : tree _r;
7170 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7171 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
7172 0 : return _r;
7173 : }
7174 0 : next_after_fail1563:;
7175 : }
7176 : }
7177 : }
7178 : }
7179 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7180 : {
7181 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7182 : {
7183 0 : {
7184 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7185 0 : if (!HONOR_NANS (captures[0])
7186 : )
7187 : {
7188 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1564;
7189 0 : {
7190 0 : tree res_op0;
7191 0 : res_op0 = captures[0];
7192 0 : tree res_op1;
7193 0 : res_op1 = captures[1];
7194 0 : tree _r;
7195 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7196 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
7197 0 : return _r;
7198 : }
7199 0 : next_after_fail1564:;
7200 : }
7201 : }
7202 : }
7203 : }
7204 : break;
7205 : }
7206 8526 : default:;
7207 : }
7208 8526 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7209 : {
7210 0 : {
7211 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7212 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7213 0 : if (res) return res;
7214 : }
7215 : }
7216 8526 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7217 : {
7218 616 : {
7219 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7220 616 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7221 616 : if (res) return res;
7222 : }
7223 : }
7224 : break;
7225 : }
7226 7834 : case MAX_EXPR:
7227 7834 : {
7228 7834 : tree _q20 = TREE_OPERAND (_p0, 0);
7229 7834 : tree _q21 = TREE_OPERAND (_p0, 1);
7230 7834 : switch (TREE_CODE (_p1))
7231 : {
7232 0 : case MIN_EXPR:
7233 0 : {
7234 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7235 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7236 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7237 : {
7238 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7239 : {
7240 0 : {
7241 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7242 0 : if (!HONOR_NANS (captures[0])
7243 : )
7244 : {
7245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1565;
7246 0 : {
7247 0 : tree res_op0;
7248 0 : res_op0 = captures[0];
7249 0 : tree res_op1;
7250 0 : res_op1 = captures[1];
7251 0 : tree _r;
7252 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7253 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
7254 0 : return _r;
7255 : }
7256 0 : next_after_fail1565:;
7257 : }
7258 : }
7259 : }
7260 : }
7261 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7262 : {
7263 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7264 : {
7265 0 : {
7266 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7267 0 : if (!HONOR_NANS (captures[0])
7268 : )
7269 : {
7270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1566;
7271 0 : {
7272 0 : tree res_op0;
7273 0 : res_op0 = captures[0];
7274 0 : tree res_op1;
7275 0 : res_op1 = captures[1];
7276 0 : tree _r;
7277 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
7279 0 : return _r;
7280 : }
7281 0 : next_after_fail1566:;
7282 : }
7283 : }
7284 : }
7285 : }
7286 : break;
7287 : }
7288 7834 : default:;
7289 : }
7290 7834 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7291 : {
7292 0 : {
7293 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7294 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7295 0 : if (res) return res;
7296 : }
7297 : }
7298 7834 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7299 : {
7300 425 : {
7301 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7302 425 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7303 425 : if (res) return res;
7304 : }
7305 : }
7306 : break;
7307 : }
7308 38658116 : default:;
7309 : }
7310 38658116 : if (tree_with_possible_nonzero_bits (_p0))
7311 : {
7312 15810142 : if (tree_with_known_nonzero_bits (_p1))
7313 : {
7314 14292834 : {
7315 14292834 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7316 14292834 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR);
7317 14292834 : if (res) return res;
7318 : }
7319 : }
7320 : }
7321 38599613 : if (tree_with_known_nonzero_bits (_p0))
7322 : {
7323 11592112 : if (tree_with_possible_nonzero_bits (_p1))
7324 : {
7325 11543323 : {
7326 11543323 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7327 11543323 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR);
7328 11543323 : if (res) return res;
7329 : }
7330 : }
7331 : }
7332 38598218 : switch (TREE_CODE (_p1))
7333 : {
7334 144 : case MIN_EXPR:
7335 144 : {
7336 144 : tree _q30 = TREE_OPERAND (_p1, 0);
7337 144 : tree _q31 = TREE_OPERAND (_p1, 1);
7338 144 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7339 : {
7340 0 : {
7341 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7342 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7343 0 : if (res) return res;
7344 : }
7345 : }
7346 144 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7347 : {
7348 0 : {
7349 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7350 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7351 0 : if (res) return res;
7352 : }
7353 : }
7354 : break;
7355 : }
7356 1631 : case MAX_EXPR:
7357 1631 : {
7358 1631 : tree _q30 = TREE_OPERAND (_p1, 0);
7359 1631 : tree _q31 = TREE_OPERAND (_p1, 1);
7360 1631 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7361 : {
7362 0 : {
7363 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7364 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7365 0 : if (res) return res;
7366 : }
7367 : }
7368 1631 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7369 : {
7370 0 : {
7371 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7372 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7373 0 : if (res) return res;
7374 : }
7375 : }
7376 : break;
7377 : }
7378 38598218 : default:;
7379 : }
7380 38598218 : switch (TREE_CODE (_p0))
7381 : {
7382 8526 : case MIN_EXPR:
7383 8526 : {
7384 8526 : tree _q20 = TREE_OPERAND (_p0, 0);
7385 8526 : tree _q21 = TREE_OPERAND (_p0, 1);
7386 8526 : switch (TREE_CODE (_q21))
7387 : {
7388 674 : case INTEGER_CST:
7389 674 : {
7390 674 : switch (TREE_CODE (_p1))
7391 : {
7392 0 : case INTEGER_CST:
7393 0 : {
7394 0 : {
7395 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7396 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, NE_EXPR);
7397 0 : if (res) return res;
7398 : }
7399 0 : break;
7400 : }
7401 : default:;
7402 : }
7403 : break;
7404 : }
7405 : default:;
7406 : }
7407 : break;
7408 : }
7409 7705 : case MAX_EXPR:
7410 7705 : {
7411 7705 : tree _q20 = TREE_OPERAND (_p0, 0);
7412 7705 : tree _q21 = TREE_OPERAND (_p0, 1);
7413 7705 : switch (TREE_CODE (_q21))
7414 : {
7415 6665 : case INTEGER_CST:
7416 6665 : {
7417 6665 : switch (TREE_CODE (_p1))
7418 : {
7419 684 : case INTEGER_CST:
7420 684 : {
7421 684 : {
7422 684 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7423 684 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, NE_EXPR);
7424 684 : if (res) return res;
7425 : }
7426 0 : break;
7427 : }
7428 : default:;
7429 : }
7430 : break;
7431 : }
7432 7021 : default:;
7433 : }
7434 7021 : if (tree_expr_nonnegative_p (_q20))
7435 : {
7436 276 : if (tree_expr_nonnegative_p (_q21))
7437 : {
7438 264 : if (integer_zerop (_p1))
7439 : {
7440 0 : {
7441 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7442 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
7443 0 : if (res) return res;
7444 : }
7445 : }
7446 : }
7447 : }
7448 : break;
7449 : }
7450 1306575 : case BIT_AND_EXPR:
7451 1306575 : {
7452 1306575 : tree _q20 = TREE_OPERAND (_p0, 0);
7453 1306575 : tree _q21 = TREE_OPERAND (_p0, 1);
7454 1306575 : switch (TREE_CODE (_q20))
7455 : {
7456 3538 : case LSHIFT_EXPR:
7457 3538 : {
7458 3538 : tree _q30 = TREE_OPERAND (_q20, 0);
7459 3538 : tree _q31 = TREE_OPERAND (_q20, 1);
7460 3538 : if (integer_pow2p (_q30))
7461 : {
7462 3518 : if (integer_pow2p (_q21))
7463 : {
7464 5 : if (integer_zerop (_p1))
7465 : {
7466 5 : {
7467 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7468 5 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7469 5 : if (res) return res;
7470 : }
7471 : }
7472 : }
7473 : }
7474 3533 : switch (TREE_CODE (_q31))
7475 : {
7476 13 : case INTEGER_CST:
7477 13 : {
7478 13 : switch (TREE_CODE (_q21))
7479 : {
7480 13 : case INTEGER_CST:
7481 13 : {
7482 13 : switch (TREE_CODE (_p1))
7483 : {
7484 13 : case INTEGER_CST:
7485 13 : {
7486 13 : {
7487 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7488 13 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR);
7489 13 : if (res) return res;
7490 : }
7491 0 : break;
7492 : }
7493 : default:;
7494 : }
7495 : break;
7496 : }
7497 : default:;
7498 : }
7499 : break;
7500 : }
7501 3520 : default:;
7502 : }
7503 3520 : if (integer_onep (_q30))
7504 : {
7505 3512 : if (integer_pow2p (_q21))
7506 : {
7507 0 : if (integer_zerop (_p1))
7508 : {
7509 0 : {
7510 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7511 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7512 0 : if (res) return res;
7513 : }
7514 : }
7515 : }
7516 : }
7517 : break;
7518 : }
7519 4769 : case RSHIFT_EXPR:
7520 4769 : {
7521 4769 : tree _q30 = TREE_OPERAND (_q20, 0);
7522 4769 : tree _q31 = TREE_OPERAND (_q20, 1);
7523 4769 : if (integer_pow2p (_q30))
7524 : {
7525 33 : if (integer_pow2p (_q21))
7526 : {
7527 1 : if (integer_zerop (_p1))
7528 : {
7529 1 : {
7530 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7531 1 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7532 1 : if (res) return res;
7533 : }
7534 : }
7535 : }
7536 : }
7537 4768 : switch (TREE_CODE (_q31))
7538 : {
7539 329 : case INTEGER_CST:
7540 329 : {
7541 329 : switch (TREE_CODE (_q21))
7542 : {
7543 305 : case INTEGER_CST:
7544 305 : {
7545 305 : switch (TREE_CODE (_p1))
7546 : {
7547 280 : case INTEGER_CST:
7548 280 : {
7549 280 : {
7550 280 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7551 280 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR);
7552 280 : if (res) return res;
7553 : }
7554 14 : break;
7555 : }
7556 : default:;
7557 : }
7558 : break;
7559 : }
7560 : default:;
7561 : }
7562 : break;
7563 : }
7564 : default:;
7565 : }
7566 : break;
7567 : }
7568 1306290 : default:;
7569 : }
7570 1306290 : {
7571 1306290 : tree _q20_pops[1];
7572 1306290 : if (tree_nop_convert (_q20, _q20_pops))
7573 : {
7574 142205 : tree _q30 = _q20_pops[0];
7575 142205 : switch (TREE_CODE (_q30))
7576 : {
7577 37190 : case LSHIFT_EXPR:
7578 37190 : {
7579 37190 : tree _q40 = TREE_OPERAND (_q30, 0);
7580 37190 : tree _q41 = TREE_OPERAND (_q30, 1);
7581 37190 : if (integer_onep (_q40))
7582 : {
7583 37190 : if (integer_pow2p (_q21))
7584 : {
7585 0 : if (integer_zerop (_p1))
7586 : {
7587 0 : {
7588 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7589 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7590 0 : if (res) return res;
7591 : }
7592 : }
7593 : }
7594 : }
7595 : break;
7596 : }
7597 : default:;
7598 : }
7599 : }
7600 : }
7601 1306290 : break;
7602 : }
7603 5089 : case LSHIFT_EXPR:
7604 5089 : {
7605 5089 : tree _q20 = TREE_OPERAND (_p0, 0);
7606 5089 : tree _q21 = TREE_OPERAND (_p0, 1);
7607 5089 : switch (TREE_CODE (_q20))
7608 : {
7609 536 : case INTEGER_CST:
7610 536 : {
7611 536 : switch (TREE_CODE (_p1))
7612 : {
7613 159 : case INTEGER_CST:
7614 159 : {
7615 159 : {
7616 159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7617 159 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
7618 159 : if (res) return res;
7619 : }
7620 88 : break;
7621 : }
7622 : default:;
7623 : }
7624 : break;
7625 : }
7626 : default:;
7627 : }
7628 : break;
7629 : }
7630 393 : case LROTATE_EXPR:
7631 393 : {
7632 393 : tree _q20 = TREE_OPERAND (_p0, 0);
7633 393 : tree _q21 = TREE_OPERAND (_p0, 1);
7634 393 : switch (TREE_CODE (_p1))
7635 : {
7636 0 : case LROTATE_EXPR:
7637 0 : {
7638 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7639 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7640 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7641 : {
7642 0 : {
7643 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7644 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7645 0 : if (res) return res;
7646 : }
7647 : }
7648 : break;
7649 : }
7650 393 : default:;
7651 : }
7652 393 : switch (TREE_CODE (_q21))
7653 : {
7654 112 : case INTEGER_CST:
7655 112 : {
7656 112 : switch (TREE_CODE (_p1))
7657 : {
7658 112 : case INTEGER_CST:
7659 112 : {
7660 112 : {
7661 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7662 112 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7663 112 : if (res) return res;
7664 : }
7665 0 : break;
7666 : }
7667 : default:;
7668 : }
7669 : break;
7670 : }
7671 281 : default:;
7672 : }
7673 281 : switch (TREE_CODE (_p1))
7674 : {
7675 193 : case INTEGER_CST:
7676 193 : {
7677 193 : {
7678 193 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7679 193 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7680 193 : if (res) return res;
7681 : }
7682 193 : break;
7683 : }
7684 : default:;
7685 : }
7686 : break;
7687 : }
7688 439 : case RROTATE_EXPR:
7689 439 : {
7690 439 : tree _q20 = TREE_OPERAND (_p0, 0);
7691 439 : tree _q21 = TREE_OPERAND (_p0, 1);
7692 439 : switch (TREE_CODE (_p1))
7693 : {
7694 0 : case RROTATE_EXPR:
7695 0 : {
7696 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7697 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7698 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7699 : {
7700 0 : {
7701 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7702 0 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7703 0 : if (res) return res;
7704 : }
7705 : }
7706 : break;
7707 : }
7708 439 : default:;
7709 : }
7710 439 : switch (TREE_CODE (_q21))
7711 : {
7712 233 : case INTEGER_CST:
7713 233 : {
7714 233 : switch (TREE_CODE (_p1))
7715 : {
7716 12 : case INTEGER_CST:
7717 12 : {
7718 12 : {
7719 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7720 12 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7721 12 : if (res) return res;
7722 : }
7723 0 : break;
7724 : }
7725 : default:;
7726 : }
7727 : break;
7728 : }
7729 427 : default:;
7730 : }
7731 427 : switch (TREE_CODE (_p1))
7732 : {
7733 190 : case INTEGER_CST:
7734 190 : {
7735 190 : {
7736 190 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7737 190 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7738 190 : if (res) return res;
7739 : }
7740 190 : break;
7741 : }
7742 : default:;
7743 : }
7744 : break;
7745 : }
7746 352 : case VEC_COND_EXPR:
7747 352 : {
7748 352 : tree _q20 = TREE_OPERAND (_p0, 0);
7749 352 : tree _q21 = TREE_OPERAND (_p0, 1);
7750 352 : tree _q22 = TREE_OPERAND (_p0, 2);
7751 352 : switch (TREE_CODE (_p1))
7752 : {
7753 16 : case VEC_COND_EXPR:
7754 16 : {
7755 16 : tree _q60 = TREE_OPERAND (_p1, 0);
7756 16 : tree _q61 = TREE_OPERAND (_p1, 1);
7757 16 : tree _q62 = TREE_OPERAND (_p1, 2);
7758 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7759 : {
7760 0 : {
7761 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7762 0 : if (VECTOR_TYPE_P (type)
7763 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7764 0 : || types_match (type, TREE_TYPE (captures[2]))
7765 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7766 : || (optimize_vectors_before_lowering_p ()
7767 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7768 : )
7769 : {
7770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1567;
7771 0 : {
7772 0 : tree res_op0;
7773 0 : res_op0 = captures[1];
7774 0 : tree res_op1;
7775 0 : {
7776 0 : tree _o1[2], _r1;
7777 0 : _o1[0] = captures[2];
7778 0 : _o1[1] = captures[5];
7779 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7780 0 : if (EXPR_P (_r1))
7781 0 : goto next_after_fail1567;
7782 0 : res_op1 = _r1;
7783 : }
7784 0 : tree res_op2;
7785 0 : {
7786 0 : tree _o1[2], _r1;
7787 0 : _o1[0] = captures[3];
7788 0 : _o1[1] = captures[6];
7789 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7790 0 : if (EXPR_P (_r1))
7791 0 : goto next_after_fail1567;
7792 0 : res_op2 = _r1;
7793 : }
7794 0 : tree _r;
7795 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7796 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
7797 0 : return _r;
7798 : }
7799 0 : next_after_fail1567:;
7800 : }
7801 : }
7802 : }
7803 : break;
7804 : }
7805 352 : default:;
7806 : }
7807 352 : {
7808 352 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7809 352 : if (VECTOR_TYPE_P (type)
7810 352 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7811 350 : || types_match (type, TREE_TYPE (captures[2]))
7812 350 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7813 : || (optimize_vectors_before_lowering_p ()
7814 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7815 : )
7816 : {
7817 350 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1568;
7818 350 : {
7819 350 : if (! tree_invariant_p (captures[4])) goto next_after_fail1568;
7820 88 : tree res_op0;
7821 88 : res_op0 = captures[1];
7822 88 : tree res_op1;
7823 88 : {
7824 88 : tree _o1[2], _r1;
7825 88 : _o1[0] = captures[2];
7826 88 : _o1[1] = unshare_expr (captures[4]);
7827 88 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7828 88 : if (EXPR_P (_r1))
7829 16 : goto next_after_fail1568;
7830 72 : res_op1 = _r1;
7831 : }
7832 72 : tree res_op2;
7833 72 : {
7834 72 : tree _o1[2], _r1;
7835 72 : _o1[0] = captures[3];
7836 72 : _o1[1] = captures[4];
7837 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7838 72 : if (EXPR_P (_r1))
7839 0 : goto next_after_fail1568;
7840 72 : res_op2 = _r1;
7841 : }
7842 72 : tree _r;
7843 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7844 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
7845 72 : return _r;
7846 : }
7847 280 : next_after_fail1568:;
7848 : }
7849 : }
7850 280 : break;
7851 : }
7852 2480767 : case CALL_EXPR:
7853 2480767 : switch (get_call_combined_fn (_p0))
7854 : {
7855 0 : case CFN_BUILT_IN_BITREVERSE128:
7856 0 : if (call_expr_nargs (_p0) == 1)
7857 : {
7858 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7859 0 : switch (TREE_CODE (_p1))
7860 : {
7861 0 : case INTEGER_CST:
7862 0 : {
7863 0 : {
7864 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7865 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7866 0 : if (res) return res;
7867 : }
7868 0 : break;
7869 : }
7870 0 : case CALL_EXPR:
7871 0 : switch (get_call_combined_fn (_p1))
7872 : {
7873 0 : case CFN_BUILT_IN_BITREVERSE128:
7874 0 : if (call_expr_nargs (_p1) == 1)
7875 : {
7876 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7877 0 : {
7878 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7879 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7880 0 : if (res) return res;
7881 : }
7882 : }
7883 : break;
7884 : default:;
7885 : }
7886 : break;
7887 : default:;
7888 : }
7889 : }
7890 : break;
7891 0 : case CFN_BUILT_IN_BITREVERSE16:
7892 0 : if (call_expr_nargs (_p0) == 1)
7893 : {
7894 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7895 0 : switch (TREE_CODE (_p1))
7896 : {
7897 0 : case INTEGER_CST:
7898 0 : {
7899 0 : {
7900 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7901 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7902 0 : if (res) return res;
7903 : }
7904 0 : break;
7905 : }
7906 0 : case CALL_EXPR:
7907 0 : switch (get_call_combined_fn (_p1))
7908 : {
7909 0 : case CFN_BUILT_IN_BITREVERSE16:
7910 0 : if (call_expr_nargs (_p1) == 1)
7911 : {
7912 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7913 0 : {
7914 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7915 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7916 0 : if (res) return res;
7917 : }
7918 : }
7919 : break;
7920 : default:;
7921 : }
7922 : break;
7923 : default:;
7924 : }
7925 : }
7926 : break;
7927 0 : case CFN_BUILT_IN_BITREVERSE32:
7928 0 : if (call_expr_nargs (_p0) == 1)
7929 : {
7930 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7931 0 : switch (TREE_CODE (_p1))
7932 : {
7933 0 : case INTEGER_CST:
7934 0 : {
7935 0 : {
7936 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7937 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7938 0 : if (res) return res;
7939 : }
7940 0 : break;
7941 : }
7942 0 : case CALL_EXPR:
7943 0 : switch (get_call_combined_fn (_p1))
7944 : {
7945 0 : case CFN_BUILT_IN_BITREVERSE32:
7946 0 : if (call_expr_nargs (_p1) == 1)
7947 : {
7948 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7949 0 : {
7950 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7951 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7952 0 : if (res) return res;
7953 : }
7954 : }
7955 : break;
7956 : default:;
7957 : }
7958 : break;
7959 : default:;
7960 : }
7961 : }
7962 : break;
7963 0 : case CFN_BUILT_IN_BITREVERSE64:
7964 0 : if (call_expr_nargs (_p0) == 1)
7965 : {
7966 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7967 0 : switch (TREE_CODE (_p1))
7968 : {
7969 0 : case INTEGER_CST:
7970 0 : {
7971 0 : {
7972 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7973 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7974 0 : if (res) return res;
7975 : }
7976 0 : break;
7977 : }
7978 0 : case CALL_EXPR:
7979 0 : switch (get_call_combined_fn (_p1))
7980 : {
7981 0 : case CFN_BUILT_IN_BITREVERSE64:
7982 0 : if (call_expr_nargs (_p1) == 1)
7983 : {
7984 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7985 0 : {
7986 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7987 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
7988 0 : if (res) return res;
7989 : }
7990 : }
7991 : break;
7992 : default:;
7993 : }
7994 : break;
7995 : default:;
7996 : }
7997 : }
7998 : break;
7999 0 : case CFN_BITREVERSE:
8000 0 : if (call_expr_nargs (_p0) == 1)
8001 : {
8002 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8003 0 : switch (TREE_CODE (_p1))
8004 : {
8005 0 : case INTEGER_CST:
8006 0 : {
8007 0 : {
8008 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8009 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8010 0 : if (res) return res;
8011 : }
8012 0 : break;
8013 : }
8014 0 : case CALL_EXPR:
8015 0 : switch (get_call_combined_fn (_p1))
8016 : {
8017 0 : case CFN_BITREVERSE:
8018 0 : if (call_expr_nargs (_p1) == 1)
8019 : {
8020 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8021 0 : {
8022 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8023 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8024 0 : if (res) return res;
8025 : }
8026 : }
8027 : break;
8028 : default:;
8029 : }
8030 : break;
8031 : default:;
8032 : }
8033 : }
8034 : break;
8035 0 : case CFN_BSWAP:
8036 0 : if (call_expr_nargs (_p0) == 1)
8037 : {
8038 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8039 0 : switch (TREE_CODE (_p1))
8040 : {
8041 0 : case INTEGER_CST:
8042 0 : {
8043 0 : {
8044 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8045 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8046 0 : if (res) return res;
8047 : }
8048 0 : break;
8049 : }
8050 0 : case CALL_EXPR:
8051 0 : switch (get_call_combined_fn (_p1))
8052 : {
8053 0 : case CFN_BSWAP:
8054 0 : if (call_expr_nargs (_p1) == 1)
8055 : {
8056 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8057 0 : {
8058 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8059 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8060 0 : if (res) return res;
8061 : }
8062 : }
8063 : break;
8064 : default:;
8065 : }
8066 : break;
8067 : default:;
8068 : }
8069 : }
8070 : break;
8071 2 : case CFN_BUILT_IN_BSWAP128:
8072 2 : if (call_expr_nargs (_p0) == 1)
8073 : {
8074 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8075 2 : switch (TREE_CODE (_p1))
8076 : {
8077 0 : case INTEGER_CST:
8078 0 : {
8079 0 : {
8080 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8081 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8082 0 : if (res) return res;
8083 : }
8084 0 : break;
8085 : }
8086 1 : case CALL_EXPR:
8087 1 : switch (get_call_combined_fn (_p1))
8088 : {
8089 0 : case CFN_BUILT_IN_BSWAP128:
8090 0 : if (call_expr_nargs (_p1) == 1)
8091 : {
8092 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8093 0 : {
8094 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8095 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8096 0 : if (res) return res;
8097 : }
8098 : }
8099 : break;
8100 : default:;
8101 : }
8102 : break;
8103 : default:;
8104 : }
8105 : }
8106 : break;
8107 0 : case CFN_BUILT_IN_BITREVERSE8:
8108 0 : if (call_expr_nargs (_p0) == 1)
8109 : {
8110 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8111 0 : switch (TREE_CODE (_p1))
8112 : {
8113 0 : case INTEGER_CST:
8114 0 : {
8115 0 : {
8116 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8117 0 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8118 0 : if (res) return res;
8119 : }
8120 0 : break;
8121 : }
8122 0 : case CALL_EXPR:
8123 0 : switch (get_call_combined_fn (_p1))
8124 : {
8125 0 : case CFN_BUILT_IN_BITREVERSE8:
8126 0 : if (call_expr_nargs (_p1) == 1)
8127 : {
8128 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8129 0 : {
8130 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8131 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8132 0 : if (res) return res;
8133 : }
8134 : }
8135 : break;
8136 : default:;
8137 : }
8138 : break;
8139 : default:;
8140 : }
8141 : }
8142 : break;
8143 11 : case CFN_BUILT_IN_BSWAP16:
8144 11 : if (call_expr_nargs (_p0) == 1)
8145 : {
8146 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8147 11 : switch (TREE_CODE (_p1))
8148 : {
8149 9 : case INTEGER_CST:
8150 9 : {
8151 9 : {
8152 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8153 9 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8154 9 : if (res) return res;
8155 : }
8156 9 : break;
8157 : }
8158 1 : case CALL_EXPR:
8159 1 : switch (get_call_combined_fn (_p1))
8160 : {
8161 1 : case CFN_BUILT_IN_BSWAP16:
8162 1 : if (call_expr_nargs (_p1) == 1)
8163 : {
8164 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8165 1 : {
8166 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8167 1 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8168 1 : if (res) return res;
8169 : }
8170 : }
8171 : break;
8172 : default:;
8173 : }
8174 : break;
8175 : default:;
8176 : }
8177 : }
8178 : break;
8179 7 : case CFN_BUILT_IN_BSWAP32:
8180 7 : if (call_expr_nargs (_p0) == 1)
8181 : {
8182 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8183 7 : switch (TREE_CODE (_p1))
8184 : {
8185 3 : case INTEGER_CST:
8186 3 : {
8187 3 : {
8188 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8189 3 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8190 3 : if (res) return res;
8191 : }
8192 3 : break;
8193 : }
8194 3 : case CALL_EXPR:
8195 3 : switch (get_call_combined_fn (_p1))
8196 : {
8197 3 : case CFN_BUILT_IN_BSWAP32:
8198 3 : if (call_expr_nargs (_p1) == 1)
8199 : {
8200 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8201 3 : {
8202 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8203 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8204 3 : if (res) return res;
8205 : }
8206 : }
8207 : break;
8208 : default:;
8209 : }
8210 : break;
8211 : default:;
8212 : }
8213 : }
8214 : break;
8215 7 : case CFN_BUILT_IN_BSWAP64:
8216 7 : if (call_expr_nargs (_p0) == 1)
8217 : {
8218 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8219 7 : switch (TREE_CODE (_p1))
8220 : {
8221 3 : case INTEGER_CST:
8222 3 : {
8223 3 : {
8224 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8225 3 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8226 3 : if (res) return res;
8227 : }
8228 3 : break;
8229 : }
8230 3 : case CALL_EXPR:
8231 3 : switch (get_call_combined_fn (_p1))
8232 : {
8233 3 : case CFN_BUILT_IN_BSWAP64:
8234 3 : if (call_expr_nargs (_p1) == 1)
8235 : {
8236 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8237 3 : {
8238 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8239 3 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8240 3 : if (res) return res;
8241 : }
8242 : }
8243 : break;
8244 : default:;
8245 : }
8246 : break;
8247 : default:;
8248 : }
8249 : }
8250 : break;
8251 : default:;
8252 : }
8253 : break;
8254 38596975 : default:;
8255 : }
8256 38596975 : switch (TREE_CODE (_p1))
8257 : {
8258 40 : case VEC_COND_EXPR:
8259 40 : {
8260 40 : tree _q30 = TREE_OPERAND (_p1, 0);
8261 40 : tree _q31 = TREE_OPERAND (_p1, 1);
8262 40 : tree _q32 = TREE_OPERAND (_p1, 2);
8263 40 : {
8264 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8265 40 : if (VECTOR_TYPE_P (type)
8266 40 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8267 40 : || types_match (type, TREE_TYPE (captures[3]))
8268 40 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8269 : || (optimize_vectors_before_lowering_p ()
8270 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8271 : )
8272 : {
8273 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
8274 40 : {
8275 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1569;
8276 0 : tree res_op0;
8277 0 : res_op0 = captures[2];
8278 0 : tree res_op1;
8279 0 : {
8280 0 : tree _o1[2], _r1;
8281 0 : _o1[0] = unshare_expr (captures[0]);
8282 0 : _o1[1] = captures[3];
8283 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8284 0 : if (EXPR_P (_r1))
8285 0 : goto next_after_fail1569;
8286 0 : res_op1 = _r1;
8287 : }
8288 0 : tree res_op2;
8289 0 : {
8290 0 : tree _o1[2], _r1;
8291 0 : _o1[0] = captures[0];
8292 0 : _o1[1] = captures[4];
8293 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8294 0 : if (EXPR_P (_r1))
8295 0 : goto next_after_fail1569;
8296 0 : res_op2 = _r1;
8297 : }
8298 0 : tree _r;
8299 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
8301 0 : return _r;
8302 : }
8303 40 : next_after_fail1569:;
8304 : }
8305 : }
8306 40 : break;
8307 : }
8308 38596975 : default:;
8309 : }
8310 38596975 : switch (TREE_CODE (_p0))
8311 : {
8312 97958 : case COND_EXPR:
8313 97958 : {
8314 97958 : tree _q20 = TREE_OPERAND (_p0, 0);
8315 97958 : tree _q21 = TREE_OPERAND (_p0, 1);
8316 97958 : tree _q22 = TREE_OPERAND (_p0, 2);
8317 97958 : switch (TREE_CODE (_p1))
8318 : {
8319 276 : case COND_EXPR:
8320 276 : {
8321 276 : tree _q60 = TREE_OPERAND (_p1, 0);
8322 276 : tree _q61 = TREE_OPERAND (_p1, 1);
8323 276 : tree _q62 = TREE_OPERAND (_p1, 2);
8324 276 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8325 : {
8326 72 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8327 : {
8328 72 : {
8329 72 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8330 72 : const enum tree_code eqne = NE_EXPR;
8331 72 : if (!HONOR_NANS (captures[1])
8332 56 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8333 49 : && types_match (type, TREE_TYPE (captures[0]))
8334 49 : && expr_no_side_effects_p (captures[1])
8335 114 : && expr_no_side_effects_p (captures[2])
8336 : )
8337 : {
8338 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1570;
8339 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1570;
8340 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
8341 42 : {
8342 42 : tree res_op0;
8343 42 : {
8344 42 : tree _o1[2], _r1;
8345 42 : {
8346 42 : tree _o2[2], _r2;
8347 42 : _o2[0] = captures[0];
8348 42 : _o2[1] = captures[3];
8349 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8350 42 : _o1[0] = _r2;
8351 : }
8352 42 : {
8353 42 : tree _o2[2], _r2;
8354 42 : _o2[0] = captures[1];
8355 42 : _o2[1] = captures[2];
8356 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8357 42 : _o1[1] = _r2;
8358 : }
8359 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8360 42 : res_op0 = _r1;
8361 : }
8362 42 : tree res_op1;
8363 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8364 42 : tree res_op2;
8365 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8366 42 : tree _r;
8367 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8368 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8369 42 : return _r;
8370 : }
8371 30 : next_after_fail1570:;
8372 : }
8373 : }
8374 : }
8375 : }
8376 234 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8377 : {
8378 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8379 : {
8380 0 : {
8381 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8382 0 : const enum tree_code eqne = NE_EXPR;
8383 0 : if (!HONOR_NANS (captures[1])
8384 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8385 0 : && types_match (type, TREE_TYPE (captures[0]))
8386 0 : && expr_no_side_effects_p (captures[1])
8387 0 : && expr_no_side_effects_p (captures[2])
8388 : )
8389 : {
8390 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1571;
8391 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1571;
8392 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
8393 0 : {
8394 0 : tree res_op0;
8395 0 : {
8396 0 : tree _o1[2], _r1;
8397 0 : {
8398 0 : tree _o2[2], _r2;
8399 0 : _o2[0] = captures[0];
8400 0 : _o2[1] = captures[3];
8401 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8402 0 : _o1[0] = _r2;
8403 : }
8404 0 : {
8405 0 : tree _o2[2], _r2;
8406 0 : _o2[0] = captures[1];
8407 0 : _o2[1] = captures[2];
8408 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8409 0 : _o1[1] = _r2;
8410 : }
8411 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8412 0 : res_op0 = _r1;
8413 : }
8414 0 : tree res_op1;
8415 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8416 0 : tree res_op2;
8417 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8418 0 : tree _r;
8419 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8420 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8421 0 : return _r;
8422 : }
8423 0 : next_after_fail1571:;
8424 : }
8425 : }
8426 : }
8427 : }
8428 : break;
8429 : }
8430 : default:;
8431 : }
8432 : break;
8433 : }
8434 280 : case VEC_COND_EXPR:
8435 280 : {
8436 280 : tree _q20 = TREE_OPERAND (_p0, 0);
8437 280 : tree _q21 = TREE_OPERAND (_p0, 1);
8438 280 : tree _q22 = TREE_OPERAND (_p0, 2);
8439 280 : switch (TREE_CODE (_p1))
8440 : {
8441 16 : case VEC_COND_EXPR:
8442 16 : {
8443 16 : tree _q60 = TREE_OPERAND (_p1, 0);
8444 16 : tree _q61 = TREE_OPERAND (_p1, 1);
8445 16 : tree _q62 = TREE_OPERAND (_p1, 2);
8446 16 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8447 : {
8448 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8449 : {
8450 0 : {
8451 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8452 0 : const enum tree_code eqne = NE_EXPR;
8453 0 : if (!HONOR_NANS (captures[1])
8454 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8455 0 : && types_match (type, TREE_TYPE (captures[0]))
8456 0 : && expr_no_side_effects_p (captures[1])
8457 0 : && expr_no_side_effects_p (captures[2])
8458 : )
8459 : {
8460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
8461 0 : {
8462 0 : tree res_op0;
8463 0 : {
8464 0 : tree _o1[2], _r1;
8465 0 : {
8466 0 : tree _o2[2], _r2;
8467 0 : _o2[0] = captures[0];
8468 0 : _o2[1] = captures[3];
8469 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8470 0 : _o1[0] = _r2;
8471 : }
8472 0 : {
8473 0 : tree _o2[2], _r2;
8474 0 : _o2[0] = captures[1];
8475 0 : _o2[1] = captures[2];
8476 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8477 0 : _o1[1] = _r2;
8478 : }
8479 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8480 0 : res_op0 = _r1;
8481 : }
8482 0 : tree res_op1;
8483 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8484 0 : tree res_op2;
8485 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8486 0 : tree _r;
8487 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8488 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 988, __FILE__, __LINE__, true);
8489 0 : return _r;
8490 : }
8491 0 : next_after_fail1572:;
8492 : }
8493 : }
8494 : }
8495 : }
8496 16 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8497 : {
8498 16 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8499 : {
8500 16 : {
8501 16 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8502 16 : const enum tree_code eqne = NE_EXPR;
8503 16 : if (!HONOR_NANS (captures[1])
8504 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8505 0 : && types_match (type, TREE_TYPE (captures[0]))
8506 0 : && expr_no_side_effects_p (captures[1])
8507 16 : && expr_no_side_effects_p (captures[2])
8508 : )
8509 : {
8510 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1573;
8511 0 : {
8512 0 : tree res_op0;
8513 0 : {
8514 0 : tree _o1[2], _r1;
8515 0 : {
8516 0 : tree _o2[2], _r2;
8517 0 : _o2[0] = captures[0];
8518 0 : _o2[1] = captures[3];
8519 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8520 0 : _o1[0] = _r2;
8521 : }
8522 0 : {
8523 0 : tree _o2[2], _r2;
8524 0 : _o2[0] = captures[1];
8525 0 : _o2[1] = captures[2];
8526 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8527 0 : _o1[1] = _r2;
8528 : }
8529 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8530 0 : res_op0 = _r1;
8531 : }
8532 0 : tree res_op1;
8533 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8534 0 : tree res_op2;
8535 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8536 0 : tree _r;
8537 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8538 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 989, __FILE__, __LINE__, true);
8539 0 : return _r;
8540 : }
8541 0 : next_after_fail1573:;
8542 : }
8543 : }
8544 : }
8545 : }
8546 : break;
8547 : }
8548 : default:;
8549 : }
8550 : break;
8551 : }
8552 18288 : case LT_EXPR:
8553 18288 : {
8554 18288 : tree _q20 = TREE_OPERAND (_p0, 0);
8555 18288 : tree _q21 = TREE_OPERAND (_p0, 1);
8556 18288 : if (integer_zerop (_p1))
8557 : {
8558 16764 : {
8559 16764 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8560 16764 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8561 16764 : if (res) return res;
8562 : }
8563 : }
8564 15334 : if (integer_truep (_p1))
8565 : {
8566 563 : {
8567 563 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8568 563 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8569 563 : if (res) return res;
8570 : }
8571 : }
8572 : break;
8573 : }
8574 12034 : case LE_EXPR:
8575 12034 : {
8576 12034 : tree _q20 = TREE_OPERAND (_p0, 0);
8577 12034 : tree _q21 = TREE_OPERAND (_p0, 1);
8578 12034 : if (integer_zerop (_p1))
8579 : {
8580 9468 : {
8581 9468 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8582 9468 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8583 9468 : if (res) return res;
8584 : }
8585 : }
8586 11242 : if (integer_truep (_p1))
8587 : {
8588 473 : {
8589 473 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8590 473 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8591 473 : if (res) return res;
8592 : }
8593 : }
8594 : break;
8595 : }
8596 64019 : case EQ_EXPR:
8597 64019 : {
8598 64019 : tree _q20 = TREE_OPERAND (_p0, 0);
8599 64019 : tree _q21 = TREE_OPERAND (_p0, 1);
8600 64019 : if (integer_zerop (_p1))
8601 : {
8602 36316 : {
8603 36316 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8604 36316 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8605 36316 : if (res) return res;
8606 : }
8607 : }
8608 62898 : if (integer_truep (_p1))
8609 : {
8610 21941 : {
8611 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8612 21941 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8613 21941 : if (res) return res;
8614 : }
8615 : }
8616 : break;
8617 : }
8618 69492 : case NE_EXPR:
8619 69492 : {
8620 69492 : tree _q20 = TREE_OPERAND (_p0, 0);
8621 69492 : tree _q21 = TREE_OPERAND (_p0, 1);
8622 69492 : if (integer_zerop (_p1))
8623 : {
8624 57493 : {
8625 57493 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8626 57493 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8627 57493 : if (res) return res;
8628 : }
8629 : }
8630 34754 : if (integer_truep (_p1))
8631 : {
8632 141 : {
8633 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8634 141 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8635 141 : if (res) return res;
8636 : }
8637 : }
8638 : break;
8639 : }
8640 6149 : case GE_EXPR:
8641 6149 : {
8642 6149 : tree _q20 = TREE_OPERAND (_p0, 0);
8643 6149 : tree _q21 = TREE_OPERAND (_p0, 1);
8644 6149 : if (integer_zerop (_p1))
8645 : {
8646 4196 : {
8647 4196 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8648 4196 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8649 4196 : if (res) return res;
8650 : }
8651 : }
8652 5491 : if (integer_truep (_p1))
8653 : {
8654 489 : {
8655 489 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8656 489 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8657 489 : if (res) return res;
8658 : }
8659 : }
8660 : break;
8661 : }
8662 35985 : case GT_EXPR:
8663 35985 : {
8664 35985 : tree _q20 = TREE_OPERAND (_p0, 0);
8665 35985 : tree _q21 = TREE_OPERAND (_p0, 1);
8666 35985 : if (integer_zerop (_p1))
8667 : {
8668 33922 : {
8669 33922 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8670 33922 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8671 33922 : if (res) return res;
8672 : }
8673 : }
8674 29940 : if (integer_truep (_p1))
8675 : {
8676 324 : {
8677 324 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8678 324 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8679 324 : if (res) return res;
8680 : }
8681 : }
8682 : break;
8683 : }
8684 138185 : case UNORDERED_EXPR:
8685 138185 : {
8686 138185 : tree _q20 = TREE_OPERAND (_p0, 0);
8687 138185 : tree _q21 = TREE_OPERAND (_p0, 1);
8688 138185 : if (integer_zerop (_p1))
8689 : {
8690 136037 : {
8691 136037 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8692 136037 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8693 136037 : if (res) return res;
8694 : }
8695 : }
8696 137795 : if (integer_truep (_p1))
8697 : {
8698 42 : {
8699 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8700 42 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8701 42 : if (res) return res;
8702 : }
8703 : }
8704 : break;
8705 : }
8706 113 : case ORDERED_EXPR:
8707 113 : {
8708 113 : tree _q20 = TREE_OPERAND (_p0, 0);
8709 113 : tree _q21 = TREE_OPERAND (_p0, 1);
8710 113 : if (integer_zerop (_p1))
8711 : {
8712 42 : {
8713 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8714 42 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8715 42 : if (res) return res;
8716 : }
8717 : }
8718 71 : if (integer_truep (_p1))
8719 : {
8720 0 : {
8721 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8722 0 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8723 0 : if (res) return res;
8724 : }
8725 : }
8726 : break;
8727 : }
8728 213 : case UNLT_EXPR:
8729 213 : {
8730 213 : tree _q20 = TREE_OPERAND (_p0, 0);
8731 213 : tree _q21 = TREE_OPERAND (_p0, 1);
8732 213 : if (integer_zerop (_p1))
8733 : {
8734 28 : {
8735 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8736 28 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8737 28 : if (res) return res;
8738 : }
8739 : }
8740 185 : if (integer_truep (_p1))
8741 : {
8742 161 : {
8743 161 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8744 161 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8745 161 : if (res) return res;
8746 : }
8747 : }
8748 : break;
8749 : }
8750 1474 : case UNLE_EXPR:
8751 1474 : {
8752 1474 : tree _q20 = TREE_OPERAND (_p0, 0);
8753 1474 : tree _q21 = TREE_OPERAND (_p0, 1);
8754 1474 : if (integer_zerop (_p1))
8755 : {
8756 104 : {
8757 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8758 104 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8759 104 : if (res) return res;
8760 : }
8761 : }
8762 1370 : if (integer_truep (_p1))
8763 : {
8764 1346 : {
8765 1346 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8766 1346 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8767 1346 : if (res) return res;
8768 : }
8769 : }
8770 : break;
8771 : }
8772 2652 : case UNGT_EXPR:
8773 2652 : {
8774 2652 : tree _q20 = TREE_OPERAND (_p0, 0);
8775 2652 : tree _q21 = TREE_OPERAND (_p0, 1);
8776 2652 : if (integer_zerop (_p1))
8777 : {
8778 96 : {
8779 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8780 96 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8781 96 : if (res) return res;
8782 : }
8783 : }
8784 2556 : if (integer_truep (_p1))
8785 : {
8786 2421 : {
8787 2421 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8788 2421 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8789 2421 : if (res) return res;
8790 : }
8791 : }
8792 : break;
8793 : }
8794 391 : case UNGE_EXPR:
8795 391 : {
8796 391 : tree _q20 = TREE_OPERAND (_p0, 0);
8797 391 : tree _q21 = TREE_OPERAND (_p0, 1);
8798 391 : if (integer_zerop (_p1))
8799 : {
8800 16 : {
8801 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8802 16 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8803 16 : if (res) return res;
8804 : }
8805 : }
8806 375 : if (integer_truep (_p1))
8807 : {
8808 211 : {
8809 211 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8810 211 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8811 211 : if (res) return res;
8812 : }
8813 : }
8814 : break;
8815 : }
8816 161 : case UNEQ_EXPR:
8817 161 : {
8818 161 : tree _q20 = TREE_OPERAND (_p0, 0);
8819 161 : tree _q21 = TREE_OPERAND (_p0, 1);
8820 161 : if (integer_zerop (_p1))
8821 : {
8822 0 : {
8823 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8824 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8825 0 : if (res) return res;
8826 : }
8827 : }
8828 161 : if (integer_truep (_p1))
8829 : {
8830 124 : {
8831 124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8832 124 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8833 124 : if (res) return res;
8834 : }
8835 : }
8836 : break;
8837 : }
8838 24 : case LTGT_EXPR:
8839 24 : {
8840 24 : tree _q20 = TREE_OPERAND (_p0, 0);
8841 24 : tree _q21 = TREE_OPERAND (_p0, 1);
8842 24 : if (integer_zerop (_p1))
8843 : {
8844 6 : {
8845 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8846 6 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8847 6 : if (res) return res;
8848 : }
8849 : }
8850 24 : if (integer_truep (_p1))
8851 : {
8852 0 : {
8853 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8854 0 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8855 0 : if (res) return res;
8856 : }
8857 : }
8858 : break;
8859 : }
8860 105242 : case MINUS_EXPR:
8861 105242 : {
8862 105242 : tree _q20 = TREE_OPERAND (_p0, 0);
8863 105242 : tree _q21 = TREE_OPERAND (_p0, 1);
8864 105242 : if (integer_zerop (_p1))
8865 : {
8866 36972 : {
8867 36972 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8868 36972 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, NE_EXPR);
8869 36972 : if (res) return res;
8870 : }
8871 : }
8872 : break;
8873 : }
8874 26081 : case POINTER_DIFF_EXPR:
8875 26081 : {
8876 26081 : tree _q20 = TREE_OPERAND (_p0, 0);
8877 26081 : tree _q21 = TREE_OPERAND (_p0, 1);
8878 26081 : if (integer_zerop (_p1))
8879 : {
8880 13294 : {
8881 13294 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8882 13294 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR);
8883 13294 : if (res) return res;
8884 : }
8885 : }
8886 : break;
8887 : }
8888 97770 : case MULT_EXPR:
8889 97770 : {
8890 97770 : tree _q20 = TREE_OPERAND (_p0, 0);
8891 97770 : tree _q21 = TREE_OPERAND (_p0, 1);
8892 97770 : switch (TREE_CODE (_q21))
8893 : {
8894 78965 : case INTEGER_CST:
8895 78965 : {
8896 78965 : switch (TREE_CODE (_p1))
8897 : {
8898 51446 : case INTEGER_CST:
8899 51446 : {
8900 51446 : {
8901 51446 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8902 51446 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR);
8903 51446 : if (res) return res;
8904 : }
8905 34536 : break;
8906 : }
8907 62055 : default:;
8908 : }
8909 62055 : if (integer_zerop (_p1))
8910 : {
8911 10912 : {
8912 10912 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8913 10912 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8914 10912 : if (res) return res;
8915 : }
8916 : }
8917 : break;
8918 : }
8919 : default:;
8920 : }
8921 : break;
8922 : }
8923 38460737 : default:;
8924 : }
8925 38460737 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8926 : {
8927 278169 : {
8928 278169 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8929 278169 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, NE_EXPR);
8930 278169 : if (res) return res;
8931 : }
8932 : }
8933 38189130 : switch (TREE_CODE (_p0))
8934 : {
8935 8456742 : CASE_CONVERT:
8936 8456742 : {
8937 8456742 : tree _q20 = TREE_OPERAND (_p0, 0);
8938 8456742 : switch (TREE_CODE (_p1))
8939 : {
8940 4614652 : CASE_CONVERT:
8941 4614652 : {
8942 4614652 : tree _q40 = TREE_OPERAND (_p1, 0);
8943 4614652 : {
8944 4614652 : tree _q40_pops[1];
8945 4614652 : if (tree_maybe_bit_not (_q40, _q40_pops))
8946 : {
8947 0 : tree _q50 = _q40_pops[0];
8948 0 : {
8949 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8950 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8951 0 : if (res) return res;
8952 : }
8953 : }
8954 : }
8955 4614652 : break;
8956 : }
8957 8456742 : default:;
8958 : }
8959 8456742 : {
8960 8456742 : tree _q20_pops[1];
8961 8456742 : if (tree_maybe_bit_not (_q20, _q20_pops))
8962 : {
8963 13781 : tree _q30 = _q20_pops[0];
8964 13781 : switch (TREE_CODE (_p1))
8965 : {
8966 0 : CASE_CONVERT:
8967 0 : {
8968 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8969 0 : {
8970 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
8971 0 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8972 0 : if (res) return res;
8973 : }
8974 0 : break;
8975 : }
8976 : default:;
8977 : }
8978 : }
8979 : }
8980 8456742 : break;
8981 : }
8982 38189130 : default:;
8983 : }
8984 38189130 : {
8985 38189130 : tree _p1_pops[1];
8986 38189130 : if (tree_maybe_bit_not (_p1, _p1_pops))
8987 : {
8988 26706463 : tree _q30 = _p1_pops[0];
8989 26706463 : {
8990 26706463 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8991 26706463 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8992 26706463 : if (res) return res;
8993 : }
8994 : }
8995 : }
8996 38189130 : switch (TREE_CODE (_p0))
8997 : {
8998 14168 : case BIT_NOT_EXPR:
8999 14168 : {
9000 14168 : tree _q20 = TREE_OPERAND (_p0, 0);
9001 14168 : switch (TREE_CODE (_p1))
9002 : {
9003 1 : case BIT_NOT_EXPR:
9004 1 : {
9005 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9006 1 : {
9007 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
9008 1 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
9009 1 : if (res) return res;
9010 : }
9011 0 : break;
9012 : }
9013 14167 : default:;
9014 : }
9015 14167 : {
9016 14167 : tree _p1_pops[1];
9017 14167 : if (tree_nop_convert (_p1, _p1_pops))
9018 : {
9019 80 : tree _q40 = _p1_pops[0];
9020 80 : switch (TREE_CODE (_q40))
9021 : {
9022 0 : case BIT_NOT_EXPR:
9023 0 : {
9024 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9025 0 : {
9026 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
9027 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
9028 0 : if (res) return res;
9029 : }
9030 0 : break;
9031 : }
9032 : default:;
9033 : }
9034 : }
9035 : }
9036 14167 : if (CONSTANT_CLASS_P (_p1))
9037 : {
9038 13023 : {
9039 13023 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9040 13023 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9041 13023 : if (res) return res;
9042 : }
9043 : }
9044 : break;
9045 : }
9046 38176106 : default:;
9047 : }
9048 38176106 : {
9049 38176106 : tree _p0_pops[1];
9050 38176106 : if (tree_maybe_bit_not (_p0, _p0_pops))
9051 : {
9052 296318 : tree _q20 = _p0_pops[0];
9053 296318 : {
9054 296318 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9055 296318 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
9056 296318 : if (res) return res;
9057 : }
9058 : }
9059 : }
9060 38176104 : {
9061 38176104 : tree _p0_pops[1];
9062 38176104 : if (tree_nop_convert (_p0, _p0_pops))
9063 : {
9064 6176728 : tree _q20 = _p0_pops[0];
9065 6176728 : switch (TREE_CODE (_q20))
9066 : {
9067 1 : case BIT_NOT_EXPR:
9068 1 : {
9069 1 : tree _q30 = TREE_OPERAND (_q20, 0);
9070 1 : switch (TREE_CODE (_p1))
9071 : {
9072 0 : case BIT_NOT_EXPR:
9073 0 : {
9074 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9075 0 : {
9076 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9077 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, NE_EXPR);
9078 0 : if (res) return res;
9079 : }
9080 0 : break;
9081 : }
9082 1 : default:;
9083 : }
9084 1 : {
9085 1 : tree _p1_pops[1];
9086 1 : if (tree_nop_convert (_p1, _p1_pops))
9087 : {
9088 0 : tree _q50 = _p1_pops[0];
9089 0 : switch (TREE_CODE (_q50))
9090 : {
9091 0 : case BIT_NOT_EXPR:
9092 0 : {
9093 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9094 0 : {
9095 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9096 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, NE_EXPR);
9097 0 : if (res) return res;
9098 : }
9099 0 : break;
9100 : }
9101 : default:;
9102 : }
9103 : }
9104 : }
9105 1 : if (CONSTANT_CLASS_P (_p1))
9106 : {
9107 1 : {
9108 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9109 1 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9110 1 : if (res) return res;
9111 : }
9112 : }
9113 : break;
9114 : }
9115 : default:;
9116 : }
9117 : }
9118 : }
9119 38176103 : switch (TREE_CODE (_p1))
9120 : {
9121 712830 : case REAL_CST:
9122 712830 : {
9123 712830 : {
9124 712830 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9125 712830 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
9126 712830 : if (res) return res;
9127 : }
9128 640428 : break;
9129 : }
9130 38103701 : default:;
9131 : }
9132 38103701 : switch (TREE_CODE (_p0))
9133 : {
9134 1339078 : case PLUS_EXPR:
9135 1339078 : {
9136 1339078 : tree _q20 = TREE_OPERAND (_p0, 0);
9137 1339078 : tree _q21 = TREE_OPERAND (_p0, 1);
9138 1339078 : switch (TREE_CODE (_q21))
9139 : {
9140 3849 : case REAL_CST:
9141 3849 : {
9142 3849 : switch (TREE_CODE (_p1))
9143 : {
9144 3073 : case REAL_CST:
9145 3073 : {
9146 3073 : {
9147 3073 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9148 3073 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
9149 3073 : if (res) return res;
9150 : }
9151 3073 : break;
9152 : }
9153 : default:;
9154 : }
9155 : break;
9156 : }
9157 : default:;
9158 : }
9159 : break;
9160 : }
9161 68266 : case MINUS_EXPR:
9162 68266 : {
9163 68266 : tree _q20 = TREE_OPERAND (_p0, 0);
9164 68266 : tree _q21 = TREE_OPERAND (_p0, 1);
9165 68266 : switch (TREE_CODE (_q21))
9166 : {
9167 3215 : case REAL_CST:
9168 3215 : {
9169 3215 : switch (TREE_CODE (_p1))
9170 : {
9171 2849 : case REAL_CST:
9172 2849 : {
9173 2849 : {
9174 2849 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9175 2849 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
9176 2849 : if (res) return res;
9177 : }
9178 2849 : break;
9179 : }
9180 : default:;
9181 : }
9182 : break;
9183 : }
9184 68266 : default:;
9185 : }
9186 68266 : switch (TREE_CODE (_q20))
9187 : {
9188 87 : case REAL_CST:
9189 87 : {
9190 87 : switch (TREE_CODE (_p1))
9191 : {
9192 44 : case REAL_CST:
9193 44 : {
9194 44 : {
9195 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9196 44 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR);
9197 44 : if (res) return res;
9198 : }
9199 44 : break;
9200 : }
9201 : default:;
9202 : }
9203 : break;
9204 : }
9205 : default:;
9206 : }
9207 : break;
9208 : }
9209 10563 : case FLOAT_EXPR:
9210 10563 : {
9211 10563 : tree _q20 = TREE_OPERAND (_p0, 0);
9212 10563 : switch (TREE_CODE (_p1))
9213 : {
9214 1116 : case FLOAT_EXPR:
9215 1116 : {
9216 1116 : tree _q40 = TREE_OPERAND (_p1, 0);
9217 1116 : {
9218 1116 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9219 1116 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9220 1116 : if (res) return res;
9221 : }
9222 972 : break;
9223 : }
9224 2159 : case REAL_CST:
9225 2159 : {
9226 2159 : {
9227 2159 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9228 2159 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9229 2159 : if (res) return res;
9230 : }
9231 1909 : break;
9232 : }
9233 : default:;
9234 : }
9235 : break;
9236 : }
9237 2031 : case EXACT_DIV_EXPR:
9238 2031 : {
9239 2031 : tree _q20 = TREE_OPERAND (_p0, 0);
9240 2031 : tree _q21 = TREE_OPERAND (_p0, 1);
9241 2031 : switch (TREE_CODE (_p1))
9242 : {
9243 36 : case INTEGER_CST:
9244 36 : {
9245 36 : {
9246 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9247 36 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR);
9248 36 : if (res) return res;
9249 : }
9250 0 : break;
9251 : }
9252 : default:;
9253 : }
9254 : break;
9255 : }
9256 6192 : case NEGATE_EXPR:
9257 6192 : {
9258 6192 : tree _q20 = TREE_OPERAND (_p0, 0);
9259 6192 : switch (TREE_CODE (_p1))
9260 : {
9261 4 : case NEGATE_EXPR:
9262 4 : {
9263 4 : tree _q40 = TREE_OPERAND (_p1, 0);
9264 4 : {
9265 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9266 4 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9267 4 : if (res) return res;
9268 : }
9269 0 : break;
9270 : }
9271 6188 : default:;
9272 : }
9273 6188 : if (CONSTANT_CLASS_P (_p1))
9274 : {
9275 577 : {
9276 577 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9277 577 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9278 577 : if (res) return res;
9279 : }
9280 : }
9281 : break;
9282 : }
9283 1940 : case ABS_EXPR:
9284 1940 : {
9285 1940 : tree _q20 = TREE_OPERAND (_p0, 0);
9286 1940 : if (zerop (_p1))
9287 : {
9288 72 : {
9289 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9290 72 : const enum tree_code eqne = NE_EXPR;
9291 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1574;
9292 72 : {
9293 72 : tree res_op0;
9294 72 : res_op0 = captures[0];
9295 72 : tree res_op1;
9296 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9297 72 : tree _r;
9298 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9299 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9300 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9301 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9302 72 : return _r;
9303 : }
9304 0 : next_after_fail1574:;
9305 : }
9306 : }
9307 : break;
9308 : }
9309 1698 : case ABSU_EXPR:
9310 1698 : {
9311 1698 : tree _q20 = TREE_OPERAND (_p0, 0);
9312 1698 : if (zerop (_p1))
9313 : {
9314 65 : {
9315 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9316 65 : const enum tree_code eqne = NE_EXPR;
9317 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1575;
9318 65 : {
9319 65 : tree res_op0;
9320 65 : res_op0 = captures[0];
9321 65 : tree res_op1;
9322 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9323 65 : tree _r;
9324 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9325 65 : if (TREE_SIDE_EFFECTS (captures[1]))
9326 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9327 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 990, __FILE__, __LINE__, true);
9328 65 : return _r;
9329 : }
9330 0 : next_after_fail1575:;
9331 : }
9332 : }
9333 : break;
9334 : }
9335 8456662 : CASE_CONVERT:
9336 8456662 : {
9337 8456662 : tree _q20 = TREE_OPERAND (_p0, 0);
9338 8456662 : switch (TREE_CODE (_p1))
9339 : {
9340 4614652 : CASE_CONVERT:
9341 4614652 : {
9342 4614652 : tree _q40 = TREE_OPERAND (_p1, 0);
9343 4614652 : {
9344 4614652 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9345 4614652 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9346 4614652 : if (res) return res;
9347 : }
9348 4408518 : break;
9349 : }
9350 8250528 : default:;
9351 : }
9352 8250528 : {
9353 8250528 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9354 8250528 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9355 8250528 : if (res) return res;
9356 : }
9357 6056616 : switch (TREE_CODE (_q20))
9358 : {
9359 12 : case BIT_IOR_EXPR:
9360 12 : {
9361 12 : tree _q30 = TREE_OPERAND (_q20, 0);
9362 12 : tree _q31 = TREE_OPERAND (_q20, 1);
9363 12 : switch (TREE_CODE (_q31))
9364 : {
9365 0 : case INTEGER_CST:
9366 0 : {
9367 0 : switch (TREE_CODE (_p1))
9368 : {
9369 0 : case INTEGER_CST:
9370 0 : {
9371 0 : {
9372 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9373 0 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9374 0 : if (res) return res;
9375 : }
9376 0 : break;
9377 : }
9378 : default:;
9379 : }
9380 : break;
9381 : }
9382 : default:;
9383 : }
9384 : break;
9385 : }
9386 : default:;
9387 : }
9388 : break;
9389 : }
9390 15101354 : case SSA_NAME:
9391 15101354 : {
9392 15101354 : switch (TREE_CODE (_p1))
9393 : {
9394 305773 : case ADDR_EXPR:
9395 305773 : {
9396 305773 : {
9397 305773 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9398 305773 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9399 305773 : if (res) return res;
9400 : }
9401 305771 : break;
9402 : }
9403 : default:;
9404 : }
9405 : break;
9406 : }
9407 243788 : case BIT_IOR_EXPR:
9408 243788 : {
9409 243788 : tree _q20 = TREE_OPERAND (_p0, 0);
9410 243788 : tree _q21 = TREE_OPERAND (_p0, 1);
9411 243788 : switch (TREE_CODE (_q21))
9412 : {
9413 960 : case INTEGER_CST:
9414 960 : {
9415 960 : switch (TREE_CODE (_p1))
9416 : {
9417 223 : case INTEGER_CST:
9418 223 : {
9419 223 : {
9420 223 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9421 223 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9422 223 : if (res) return res;
9423 : }
9424 223 : break;
9425 : }
9426 : default:;
9427 : }
9428 : break;
9429 : }
9430 : default:;
9431 : }
9432 : break;
9433 : }
9434 31475 : case BIT_XOR_EXPR:
9435 31475 : {
9436 31475 : tree _q20 = TREE_OPERAND (_p0, 0);
9437 31475 : tree _q21 = TREE_OPERAND (_p0, 1);
9438 31475 : if (integer_zerop (_p1))
9439 : {
9440 27146 : {
9441 27146 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9442 27146 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9443 27146 : if (res) return res;
9444 : }
9445 : }
9446 4329 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9447 : {
9448 1 : {
9449 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9450 1 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9451 1 : if (res) return res;
9452 : }
9453 : }
9454 4328 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9455 : {
9456 2 : {
9457 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9458 2 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9459 2 : if (res) return res;
9460 : }
9461 : }
9462 : break;
9463 : }
9464 2474673 : case CALL_EXPR:
9465 2474673 : switch (get_call_combined_fn (_p0))
9466 : {
9467 42 : case CFN_BUILT_IN_SQRTF:
9468 42 : if (call_expr_nargs (_p0) == 1)
9469 : {
9470 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9471 42 : switch (TREE_CODE (_p1))
9472 : {
9473 0 : case REAL_CST:
9474 0 : {
9475 0 : {
9476 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9477 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9478 0 : if (res) return res;
9479 : }
9480 0 : break;
9481 : }
9482 42 : case CALL_EXPR:
9483 42 : switch (get_call_combined_fn (_p1))
9484 : {
9485 0 : case CFN_BUILT_IN_SQRTF:
9486 0 : if (call_expr_nargs (_p1) == 1)
9487 : {
9488 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9489 0 : {
9490 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9491 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9492 0 : if (res) return res;
9493 : }
9494 : }
9495 : break;
9496 : default:;
9497 : }
9498 : break;
9499 : default:;
9500 : }
9501 : }
9502 : break;
9503 42 : case CFN_BUILT_IN_SQRTL:
9504 42 : if (call_expr_nargs (_p0) == 1)
9505 : {
9506 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9507 42 : switch (TREE_CODE (_p1))
9508 : {
9509 0 : case REAL_CST:
9510 0 : {
9511 0 : {
9512 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9513 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9514 0 : if (res) return res;
9515 : }
9516 0 : break;
9517 : }
9518 42 : case CALL_EXPR:
9519 42 : switch (get_call_combined_fn (_p1))
9520 : {
9521 0 : case CFN_BUILT_IN_SQRTL:
9522 0 : if (call_expr_nargs (_p1) == 1)
9523 : {
9524 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9525 0 : {
9526 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9527 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9528 0 : if (res) return res;
9529 : }
9530 : }
9531 : break;
9532 : default:;
9533 : }
9534 : break;
9535 : default:;
9536 : }
9537 : }
9538 : break;
9539 46 : case CFN_BUILT_IN_SQRT:
9540 46 : if (call_expr_nargs (_p0) == 1)
9541 : {
9542 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9543 46 : switch (TREE_CODE (_p1))
9544 : {
9545 2 : case REAL_CST:
9546 2 : {
9547 2 : {
9548 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9549 2 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9550 2 : if (res) return res;
9551 : }
9552 2 : break;
9553 : }
9554 43 : case CALL_EXPR:
9555 43 : switch (get_call_combined_fn (_p1))
9556 : {
9557 0 : case CFN_BUILT_IN_SQRT:
9558 0 : if (call_expr_nargs (_p1) == 1)
9559 : {
9560 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9561 0 : {
9562 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9563 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9564 0 : if (res) return res;
9565 : }
9566 : }
9567 : break;
9568 : default:;
9569 : }
9570 : break;
9571 : default:;
9572 : }
9573 : }
9574 : break;
9575 0 : case CFN_SQRT:
9576 0 : if (call_expr_nargs (_p0) == 1)
9577 : {
9578 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9579 0 : switch (TREE_CODE (_p1))
9580 : {
9581 0 : case REAL_CST:
9582 0 : {
9583 0 : {
9584 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9585 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9586 0 : if (res) return res;
9587 : }
9588 0 : break;
9589 : }
9590 0 : case CALL_EXPR:
9591 0 : switch (get_call_combined_fn (_p1))
9592 : {
9593 0 : case CFN_SQRT:
9594 0 : if (call_expr_nargs (_p1) == 1)
9595 : {
9596 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9597 0 : {
9598 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9599 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9600 0 : if (res) return res;
9601 : }
9602 : }
9603 : break;
9604 : default:;
9605 : }
9606 : break;
9607 : default:;
9608 : }
9609 : }
9610 : break;
9611 : default:;
9612 : }
9613 : break;
9614 35675374 : default:;
9615 : }
9616 35675374 : switch (TREE_CODE (_p1))
9617 : {
9618 840 : case BIT_XOR_EXPR:
9619 840 : {
9620 840 : tree _q30 = TREE_OPERAND (_p1, 0);
9621 840 : tree _q31 = TREE_OPERAND (_p1, 1);
9622 840 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9623 : {
9624 0 : {
9625 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9626 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9627 0 : if (res) return res;
9628 : }
9629 : }
9630 840 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9631 : {
9632 0 : {
9633 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9634 0 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9635 0 : if (res) return res;
9636 : }
9637 : }
9638 : break;
9639 : }
9640 35675374 : default:;
9641 : }
9642 35675374 : switch (TREE_CODE (_p0))
9643 : {
9644 1306278 : case BIT_AND_EXPR:
9645 1306278 : {
9646 1306278 : tree _q20 = TREE_OPERAND (_p0, 0);
9647 1306278 : tree _q21 = TREE_OPERAND (_p0, 1);
9648 1306278 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9649 : {
9650 179 : {
9651 179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9652 179 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9653 179 : if (res) return res;
9654 : }
9655 : }
9656 1306250 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9657 : {
9658 4906 : {
9659 4906 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9660 4906 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9661 4906 : if (res) return res;
9662 : }
9663 : }
9664 : break;
9665 : }
9666 35675346 : default:;
9667 : }
9668 35675346 : switch (TREE_CODE (_p1))
9669 : {
9670 16313 : case BIT_AND_EXPR:
9671 16313 : {
9672 16313 : tree _q30 = TREE_OPERAND (_p1, 0);
9673 16313 : tree _q31 = TREE_OPERAND (_p1, 1);
9674 16313 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9675 : {
9676 0 : {
9677 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9678 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9679 0 : if (res) return res;
9680 : }
9681 : }
9682 16313 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9683 : {
9684 0 : {
9685 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9686 0 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9687 0 : if (res) return res;
9688 : }
9689 : }
9690 : break;
9691 : }
9692 35675346 : default:;
9693 : }
9694 35675346 : switch (TREE_CODE (_p0))
9695 : {
9696 6056616 : CASE_CONVERT:
9697 6056616 : {
9698 6056616 : tree _q20 = TREE_OPERAND (_p0, 0);
9699 6056616 : switch (TREE_CODE (_q20))
9700 : {
9701 0 : case BIT_AND_EXPR:
9702 0 : {
9703 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9704 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9705 0 : switch (TREE_CODE (_q30))
9706 : {
9707 0 : CASE_CONVERT:
9708 0 : {
9709 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9710 0 : switch (TREE_CODE (_q31))
9711 : {
9712 0 : case INTEGER_CST:
9713 0 : {
9714 0 : switch (TREE_CODE (_p1))
9715 : {
9716 0 : CASE_CONVERT:
9717 0 : {
9718 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9719 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9720 : {
9721 0 : {
9722 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9723 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9724 0 : if (res) return res;
9725 : }
9726 : }
9727 : break;
9728 : }
9729 : default:;
9730 : }
9731 : break;
9732 : }
9733 : default:;
9734 : }
9735 : break;
9736 : }
9737 : default:;
9738 : }
9739 : break;
9740 : }
9741 6056616 : default:;
9742 : }
9743 6056616 : switch (TREE_CODE (_p1))
9744 : {
9745 4408518 : CASE_CONVERT:
9746 4408518 : {
9747 4408518 : tree _q40 = TREE_OPERAND (_p1, 0);
9748 4408518 : switch (TREE_CODE (_q40))
9749 : {
9750 0 : case BIT_AND_EXPR:
9751 0 : {
9752 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9753 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9754 0 : switch (TREE_CODE (_q50))
9755 : {
9756 0 : CASE_CONVERT:
9757 0 : {
9758 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9759 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9760 : {
9761 0 : switch (TREE_CODE (_q51))
9762 : {
9763 0 : case INTEGER_CST:
9764 0 : {
9765 0 : {
9766 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9767 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9768 0 : if (res) return res;
9769 : }
9770 0 : break;
9771 : }
9772 : default:;
9773 : }
9774 : }
9775 : break;
9776 : }
9777 : default:;
9778 : }
9779 : break;
9780 : }
9781 : default:;
9782 : }
9783 : break;
9784 : }
9785 : default:;
9786 : }
9787 : break;
9788 : }
9789 243788 : case BIT_IOR_EXPR:
9790 243788 : {
9791 243788 : tree _q20 = TREE_OPERAND (_p0, 0);
9792 243788 : tree _q21 = TREE_OPERAND (_p0, 1);
9793 243788 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9794 : {
9795 126 : {
9796 126 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9797 126 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9798 126 : if (res) return res;
9799 : }
9800 : }
9801 243780 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9802 : {
9803 255 : {
9804 255 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9805 255 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9806 255 : if (res) return res;
9807 : }
9808 : }
9809 : break;
9810 : }
9811 35675338 : default:;
9812 : }
9813 35675338 : switch (TREE_CODE (_p1))
9814 : {
9815 566 : case BIT_IOR_EXPR:
9816 566 : {
9817 566 : tree _q30 = TREE_OPERAND (_p1, 0);
9818 566 : tree _q31 = TREE_OPERAND (_p1, 1);
9819 566 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9820 : {
9821 0 : {
9822 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9823 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9824 0 : if (res) return res;
9825 : }
9826 : }
9827 566 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9828 : {
9829 0 : {
9830 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9831 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9832 0 : if (res) return res;
9833 : }
9834 : }
9835 : break;
9836 : }
9837 35675338 : default:;
9838 : }
9839 35675338 : switch (TREE_CODE (_p0))
9840 : {
9841 6056616 : CASE_CONVERT:
9842 6056616 : {
9843 6056616 : tree _q20 = TREE_OPERAND (_p0, 0);
9844 6056616 : switch (TREE_CODE (_q20))
9845 : {
9846 698 : case BIT_XOR_EXPR:
9847 698 : {
9848 698 : tree _q30 = TREE_OPERAND (_q20, 0);
9849 698 : tree _q31 = TREE_OPERAND (_q20, 1);
9850 698 : switch (TREE_CODE (_q31))
9851 : {
9852 0 : case INTEGER_CST:
9853 0 : {
9854 0 : switch (TREE_CODE (_p1))
9855 : {
9856 0 : case INTEGER_CST:
9857 0 : {
9858 0 : {
9859 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9860 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9861 0 : if (res) return res;
9862 : }
9863 0 : break;
9864 : }
9865 : default:;
9866 : }
9867 : break;
9868 : }
9869 : default:;
9870 : }
9871 : break;
9872 : }
9873 : default:;
9874 : }
9875 : break;
9876 : }
9877 4326 : case BIT_XOR_EXPR:
9878 4326 : {
9879 4326 : tree _q20 = TREE_OPERAND (_p0, 0);
9880 4326 : tree _q21 = TREE_OPERAND (_p0, 1);
9881 4326 : switch (TREE_CODE (_q21))
9882 : {
9883 881 : case INTEGER_CST:
9884 881 : {
9885 881 : switch (TREE_CODE (_p1))
9886 : {
9887 10 : case INTEGER_CST:
9888 10 : {
9889 10 : {
9890 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9891 10 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9892 10 : if (res) return res;
9893 : }
9894 0 : break;
9895 : }
9896 : default:;
9897 : }
9898 : break;
9899 : }
9900 : default:;
9901 : }
9902 : break;
9903 : }
9904 35675328 : default:;
9905 : }
9906 35675328 : {
9907 35675328 : tree _p0_pops[1];
9908 35675328 : if (tree_nop_convert (_p0, _p0_pops))
9909 : {
9910 5332163 : tree _q20 = _p0_pops[0];
9911 5332163 : if (integer_zerop (_p1))
9912 : {
9913 827210 : {
9914 827210 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9915 827210 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9916 827210 : if (res) return res;
9917 : }
9918 : }
9919 : }
9920 : }
9921 35219264 : if (integer_zerop (_p1))
9922 : {
9923 18921806 : {
9924 18921806 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9925 18921806 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9926 18921806 : if (res) return res;
9927 : }
9928 : }
9929 35037853 : switch (TREE_CODE (_p0))
9930 : {
9931 1306250 : case BIT_AND_EXPR:
9932 1306250 : {
9933 1306250 : tree _q20 = TREE_OPERAND (_p0, 0);
9934 1306250 : tree _q21 = TREE_OPERAND (_p0, 1);
9935 1306250 : switch (TREE_CODE (_p1))
9936 : {
9937 14902 : case BIT_AND_EXPR:
9938 14902 : {
9939 14902 : tree _q50 = TREE_OPERAND (_p1, 0);
9940 14902 : tree _q51 = TREE_OPERAND (_p1, 1);
9941 14902 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9942 : {
9943 14657 : {
9944 14657 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9945 14657 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9946 14657 : if (res) return res;
9947 : }
9948 : }
9949 245 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9950 : {
9951 2 : {
9952 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9953 2 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9954 2 : if (res) return res;
9955 : }
9956 : }
9957 243 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9958 : {
9959 1 : {
9960 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
9961 1 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9962 1 : if (res) return res;
9963 : }
9964 : }
9965 242 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9966 : {
9967 7 : {
9968 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
9969 7 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9970 7 : if (res) return res;
9971 : }
9972 : }
9973 : break;
9974 : }
9975 1291583 : default:;
9976 : }
9977 1291583 : if (integer_pow2p (_q21))
9978 : {
9979 666234 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9980 : {
9981 579 : {
9982 579 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9983 579 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
9984 579 : if (res) return res;
9985 : }
9986 : }
9987 : }
9988 1291008 : switch (TREE_CODE (_q20))
9989 : {
9990 200505 : CASE_CONVERT:
9991 200505 : {
9992 200505 : tree _q30 = TREE_OPERAND (_q20, 0);
9993 200505 : if (integer_pow2p (_q21))
9994 : {
9995 100681 : if (integer_zerop (_p1))
9996 : {
9997 100586 : {
9998 100586 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
9999 100586 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10000 100586 : if (res) return res;
10001 : }
10002 : }
10003 : }
10004 : break;
10005 : }
10006 1285618 : default:;
10007 : }
10008 1285618 : if (integer_pow2p (_q21))
10009 : {
10010 660269 : if (integer_zerop (_p1))
10011 : {
10012 656879 : {
10013 656879 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
10014 656879 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10015 656879 : if (res) return res;
10016 : }
10017 : }
10018 : }
10019 : break;
10020 : }
10021 5438 : case GE_EXPR:
10022 5438 : {
10023 5438 : tree _q20 = TREE_OPERAND (_p0, 0);
10024 5438 : tree _q21 = TREE_OPERAND (_p0, 1);
10025 5438 : if (integer_zerop (_q21))
10026 : {
10027 973 : switch (TREE_CODE (_p1))
10028 : {
10029 1 : case GE_EXPR:
10030 1 : {
10031 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10032 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10033 1 : if (integer_zerop (_q51))
10034 : {
10035 1 : {
10036 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10037 1 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
10038 1 : if (res) return res;
10039 : }
10040 : }
10041 : break;
10042 : }
10043 3 : case LT_EXPR:
10044 3 : {
10045 3 : tree _q50 = TREE_OPERAND (_p1, 0);
10046 3 : tree _q51 = TREE_OPERAND (_p1, 1);
10047 3 : if (integer_zerop (_q51))
10048 : {
10049 3 : {
10050 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10051 3 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10052 3 : if (res) return res;
10053 : }
10054 : }
10055 : break;
10056 : }
10057 : default:;
10058 : }
10059 : }
10060 : break;
10061 : }
10062 15278 : case LT_EXPR:
10063 15278 : {
10064 15278 : tree _q20 = TREE_OPERAND (_p0, 0);
10065 15278 : tree _q21 = TREE_OPERAND (_p0, 1);
10066 15278 : if (integer_zerop (_q21))
10067 : {
10068 8620 : switch (TREE_CODE (_p1))
10069 : {
10070 79 : case LT_EXPR:
10071 79 : {
10072 79 : tree _q50 = TREE_OPERAND (_p1, 0);
10073 79 : tree _q51 = TREE_OPERAND (_p1, 1);
10074 79 : if (integer_zerop (_q51))
10075 : {
10076 79 : {
10077 79 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10078 79 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
10079 79 : if (res) return res;
10080 : }
10081 : }
10082 : break;
10083 : }
10084 17 : case GE_EXPR:
10085 17 : {
10086 17 : tree _q50 = TREE_OPERAND (_p1, 0);
10087 17 : tree _q51 = TREE_OPERAND (_p1, 1);
10088 17 : if (integer_zerop (_q51))
10089 : {
10090 17 : {
10091 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10092 17 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10093 17 : if (res) return res;
10094 : }
10095 : }
10096 : break;
10097 : }
10098 : default:;
10099 : }
10100 : }
10101 : break;
10102 : }
10103 243780 : case BIT_IOR_EXPR:
10104 243780 : {
10105 243780 : tree _q20 = TREE_OPERAND (_p0, 0);
10106 243780 : tree _q21 = TREE_OPERAND (_p0, 1);
10107 243780 : switch (TREE_CODE (_q21))
10108 : {
10109 291 : CASE_CONVERT:
10110 291 : {
10111 291 : tree _q40 = TREE_OPERAND (_q21, 0);
10112 291 : switch (TREE_CODE (_q40))
10113 : {
10114 0 : case NE_EXPR:
10115 0 : {
10116 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10117 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10118 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10119 : {
10120 0 : if (integer_zerop (_q51))
10121 : {
10122 0 : if (integer_zerop (_p1))
10123 : {
10124 0 : {
10125 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10126 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10127 0 : if (res) return res;
10128 : }
10129 : }
10130 : }
10131 : }
10132 : break;
10133 : }
10134 : default:;
10135 : }
10136 : break;
10137 : }
10138 243780 : default:;
10139 : }
10140 243780 : switch (TREE_CODE (_q20))
10141 : {
10142 800 : CASE_CONVERT:
10143 800 : {
10144 800 : tree _q30 = TREE_OPERAND (_q20, 0);
10145 800 : switch (TREE_CODE (_q30))
10146 : {
10147 0 : case NE_EXPR:
10148 0 : {
10149 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10150 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10151 0 : if (integer_zerop (_q41))
10152 : {
10153 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
10154 : {
10155 0 : if (integer_zerop (_p1))
10156 : {
10157 0 : {
10158 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
10159 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10160 0 : if (res) return res;
10161 : }
10162 : }
10163 : }
10164 : }
10165 : break;
10166 : }
10167 : default:;
10168 : }
10169 : break;
10170 : }
10171 243780 : default:;
10172 : }
10173 243780 : switch (TREE_CODE (_q21))
10174 : {
10175 24 : case NE_EXPR:
10176 24 : {
10177 24 : tree _q40 = TREE_OPERAND (_q21, 0);
10178 24 : tree _q41 = TREE_OPERAND (_q21, 1);
10179 24 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10180 : {
10181 0 : if (integer_zerop (_q41))
10182 : {
10183 0 : if (integer_zerop (_p1))
10184 : {
10185 0 : {
10186 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10187 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10188 0 : if (res) return res;
10189 : }
10190 : }
10191 : }
10192 : }
10193 : break;
10194 : }
10195 243780 : default:;
10196 : }
10197 243780 : switch (TREE_CODE (_q20))
10198 : {
10199 2 : case NE_EXPR:
10200 2 : {
10201 2 : tree _q30 = TREE_OPERAND (_q20, 0);
10202 2 : tree _q31 = TREE_OPERAND (_q20, 1);
10203 2 : if (integer_zerop (_q31))
10204 : {
10205 1 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
10206 : {
10207 0 : if (integer_zerop (_p1))
10208 : {
10209 0 : {
10210 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10211 0 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10212 0 : if (res) return res;
10213 : }
10214 : }
10215 : }
10216 : }
10217 : break;
10218 : }
10219 : default:;
10220 : }
10221 : break;
10222 : }
10223 5600552 : CASE_CONVERT:
10224 5600552 : {
10225 5600552 : tree _q20 = TREE_OPERAND (_p0, 0);
10226 5600552 : switch (TREE_CODE (_q20))
10227 : {
10228 4310201 : case ADDR_EXPR:
10229 4310201 : {
10230 4310201 : switch (TREE_CODE (_p1))
10231 : {
10232 4280310 : CASE_CONVERT:
10233 4280310 : {
10234 4280310 : tree _q40 = TREE_OPERAND (_p1, 0);
10235 4280310 : switch (TREE_CODE (_q40))
10236 : {
10237 4280310 : case ADDR_EXPR:
10238 4280310 : {
10239 4280310 : {
10240 4280310 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10241 4280310 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10242 4280310 : if (res) return res;
10243 : }
10244 33 : break;
10245 : }
10246 : default:;
10247 : }
10248 : break;
10249 : }
10250 21272 : case ADDR_EXPR:
10251 21272 : {
10252 21272 : {
10253 21272 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10254 21272 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10255 21272 : if (res) return res;
10256 : }
10257 7935 : break;
10258 : }
10259 : default:;
10260 : }
10261 : break;
10262 : }
10263 : default:;
10264 : }
10265 : break;
10266 : }
10267 65964 : case ADDR_EXPR:
10268 65964 : {
10269 65964 : switch (TREE_CODE (_p1))
10270 : {
10271 383 : CASE_CONVERT:
10272 383 : {
10273 383 : tree _q30 = TREE_OPERAND (_p1, 0);
10274 383 : switch (TREE_CODE (_q30))
10275 : {
10276 383 : case ADDR_EXPR:
10277 383 : {
10278 383 : {
10279 383 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10280 383 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10281 383 : if (res) return res;
10282 : }
10283 143 : break;
10284 : }
10285 : default:;
10286 : }
10287 : break;
10288 : }
10289 56848 : case ADDR_EXPR:
10290 56848 : {
10291 56848 : {
10292 56848 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10293 56848 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10294 56848 : if (res) return res;
10295 : }
10296 4520 : break;
10297 : }
10298 : default:;
10299 : }
10300 : break;
10301 : }
10302 30656550 : default:;
10303 : }
10304 30656550 : {
10305 30656550 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10306 30656550 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10307 30656550 : if (res) return res;
10308 : }
10309 30647571 : switch (TREE_CODE (_p0))
10310 : {
10311 1306938 : CASE_CONVERT:
10312 1306938 : {
10313 1306938 : tree _q20 = TREE_OPERAND (_p0, 0);
10314 1306938 : switch (TREE_CODE (_p1))
10315 : {
10316 845467 : case INTEGER_CST:
10317 845467 : {
10318 845467 : {
10319 845467 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10320 845467 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10321 845467 : if (res) return res;
10322 : }
10323 836326 : break;
10324 : }
10325 1297797 : default:;
10326 : }
10327 1297797 : switch (TREE_CODE (_q20))
10328 : {
10329 8 : case NE_EXPR:
10330 8 : {
10331 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10332 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10333 8 : switch (TREE_CODE (_q31))
10334 : {
10335 8 : case INTEGER_CST:
10336 8 : {
10337 8 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10338 : {
10339 0 : {
10340 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10341 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10342 0 : if (res) return res;
10343 : }
10344 : }
10345 : break;
10346 : }
10347 : default:;
10348 : }
10349 : break;
10350 : }
10351 0 : case EQ_EXPR:
10352 0 : {
10353 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10354 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10355 0 : switch (TREE_CODE (_q31))
10356 : {
10357 0 : case INTEGER_CST:
10358 0 : {
10359 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10360 : {
10361 0 : {
10362 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10363 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10364 0 : if (res) return res;
10365 : }
10366 : }
10367 : break;
10368 : }
10369 : default:;
10370 : }
10371 : break;
10372 : }
10373 : default:;
10374 : }
10375 : break;
10376 : }
10377 30638430 : default:;
10378 : }
10379 30638430 : switch (TREE_CODE (_p1))
10380 : {
10381 524996 : CASE_CONVERT:
10382 524996 : {
10383 524996 : tree _q30 = TREE_OPERAND (_p1, 0);
10384 524996 : switch (TREE_CODE (_q30))
10385 : {
10386 0 : case NE_EXPR:
10387 0 : {
10388 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10389 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10390 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10391 : {
10392 0 : switch (TREE_CODE (_q41))
10393 : {
10394 0 : case INTEGER_CST:
10395 0 : {
10396 0 : {
10397 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10398 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10399 0 : if (res) return res;
10400 : }
10401 0 : break;
10402 : }
10403 : default:;
10404 : }
10405 : }
10406 : break;
10407 : }
10408 0 : case EQ_EXPR:
10409 0 : {
10410 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10411 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10412 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10413 : {
10414 0 : switch (TREE_CODE (_q41))
10415 : {
10416 0 : case INTEGER_CST:
10417 0 : {
10418 0 : {
10419 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10420 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10421 0 : if (res) return res;
10422 : }
10423 0 : break;
10424 : }
10425 : default:;
10426 : }
10427 : }
10428 : break;
10429 : }
10430 : default:;
10431 : }
10432 : break;
10433 : }
10434 30638430 : default:;
10435 : }
10436 30638430 : if (integer_zerop (_p1))
10437 : {
10438 18711554 : {
10439 18711554 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10440 18711554 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10441 18711554 : && types_match (type, TREE_TYPE (captures[0]))
10442 : )
10443 : {
10444 3442102 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1576;
10445 3442102 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1576;
10446 3442102 : {
10447 3442102 : tree res_op0;
10448 3442102 : res_op0 = captures[0];
10449 3442102 : tree _r;
10450 3442102 : _r = non_lvalue_loc (loc, res_op0);
10451 3442102 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
10452 3442102 : return _r;
10453 : }
10454 : next_after_fail1576:;
10455 : }
10456 : }
10457 : }
10458 27196328 : switch (TREE_CODE (_p0))
10459 : {
10460 987664 : case BIT_AND_EXPR:
10461 987664 : {
10462 987664 : tree _q20 = TREE_OPERAND (_p0, 0);
10463 987664 : tree _q21 = TREE_OPERAND (_p0, 1);
10464 987664 : switch (TREE_CODE (_q21))
10465 : {
10466 2052 : case VECTOR_CST:
10467 2052 : {
10468 2052 : if (integer_zerop (_p1))
10469 : {
10470 2052 : {
10471 2052 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10472 2052 : const enum tree_code cmp = NE_EXPR;
10473 2052 : const enum tree_code icmp = GT_EXPR;
10474 2052 : {
10475 2052 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10476 2052 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10477 : )
10478 : {
10479 13 : {
10480 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10481 13 : ? optab_vector : optab_default;
10482 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10483 13 : if (target_supports_op_p (utype, icmp, optab)
10484 13 : || (optimize_vectors_before_lowering_p ()
10485 7 : && (!target_supports_op_p (type, cmp, optab)
10486 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10487 : )
10488 : {
10489 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10490 : )
10491 : {
10492 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1577;
10493 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1577;
10494 0 : {
10495 0 : tree res_op0;
10496 0 : res_op0 = captures[1];
10497 0 : tree res_op1;
10498 0 : res_op1 = csts;
10499 0 : tree _r;
10500 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10501 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10502 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10503 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10504 0 : return _r;
10505 : }
10506 2045 : next_after_fail1577:;
10507 : }
10508 : else
10509 : {
10510 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1578;
10511 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1578;
10512 7 : {
10513 7 : tree res_op0;
10514 7 : {
10515 7 : tree _o1[1], _r1;
10516 7 : _o1[0] = captures[1];
10517 7 : if (TREE_TYPE (_o1[0]) != utype)
10518 : {
10519 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10520 : }
10521 : else
10522 : _r1 = _o1[0];
10523 7 : res_op0 = _r1;
10524 : }
10525 7 : tree res_op1;
10526 7 : res_op1 = csts;
10527 7 : tree _r;
10528 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10529 7 : if (TREE_SIDE_EFFECTS (captures[2]))
10530 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10531 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10532 7 : return _r;
10533 : }
10534 2045 : next_after_fail1578:;
10535 : }
10536 : }
10537 : }
10538 : }
10539 : }
10540 : }
10541 : }
10542 : break;
10543 : }
10544 787920 : case INTEGER_CST:
10545 787920 : {
10546 787920 : if (integer_zerop (_p1))
10547 : {
10548 754072 : {
10549 754072 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10550 754072 : const enum tree_code cmp = NE_EXPR;
10551 754072 : const enum tree_code icmp = GT_EXPR;
10552 754072 : {
10553 754072 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10554 754072 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10555 : )
10556 : {
10557 1272 : {
10558 1272 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10559 1272 : ? optab_vector : optab_default;
10560 1272 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10561 1272 : if (target_supports_op_p (utype, icmp, optab)
10562 1272 : || (optimize_vectors_before_lowering_p ()
10563 1103 : && (!target_supports_op_p (type, cmp, optab)
10564 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10565 : )
10566 : {
10567 1103 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10568 : )
10569 : {
10570 989 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1579;
10571 989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1579;
10572 989 : {
10573 989 : tree res_op0;
10574 989 : res_op0 = captures[1];
10575 989 : tree res_op1;
10576 989 : res_op1 = csts;
10577 989 : tree _r;
10578 989 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10579 989 : if (TREE_SIDE_EFFECTS (captures[2]))
10580 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10581 989 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10582 989 : return _r;
10583 : }
10584 752969 : next_after_fail1579:;
10585 : }
10586 : else
10587 : {
10588 114 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1580;
10589 114 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1580;
10590 114 : {
10591 114 : tree res_op0;
10592 114 : {
10593 114 : tree _o1[1], _r1;
10594 114 : _o1[0] = captures[1];
10595 114 : if (TREE_TYPE (_o1[0]) != utype)
10596 : {
10597 114 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10598 : }
10599 : else
10600 : _r1 = _o1[0];
10601 114 : res_op0 = _r1;
10602 : }
10603 114 : tree res_op1;
10604 114 : res_op1 = csts;
10605 114 : tree _r;
10606 114 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10607 114 : if (TREE_SIDE_EFFECTS (captures[2]))
10608 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10609 114 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10610 114 : return _r;
10611 : }
10612 752969 : next_after_fail1580:;
10613 : }
10614 : }
10615 : }
10616 : }
10617 : }
10618 : }
10619 : }
10620 : break;
10621 : }
10622 986554 : default:;
10623 : }
10624 986554 : switch (TREE_CODE (_q20))
10625 : {
10626 0 : case VECTOR_CST:
10627 0 : {
10628 0 : if (integer_zerop (_p1))
10629 : {
10630 0 : {
10631 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10632 0 : const enum tree_code cmp = NE_EXPR;
10633 0 : const enum tree_code icmp = GT_EXPR;
10634 0 : {
10635 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10636 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10637 : )
10638 : {
10639 0 : {
10640 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10641 0 : ? optab_vector : optab_default;
10642 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10643 0 : if (target_supports_op_p (utype, icmp, optab)
10644 0 : || (optimize_vectors_before_lowering_p ()
10645 0 : && (!target_supports_op_p (type, cmp, optab)
10646 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10647 : )
10648 : {
10649 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10650 : )
10651 : {
10652 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1581;
10653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1581;
10654 0 : {
10655 0 : tree res_op0;
10656 0 : res_op0 = captures[1];
10657 0 : tree res_op1;
10658 0 : res_op1 = csts;
10659 0 : tree _r;
10660 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10661 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10662 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10663 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10664 0 : return _r;
10665 : }
10666 0 : next_after_fail1581:;
10667 : }
10668 : else
10669 : {
10670 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1582;
10671 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1582;
10672 0 : {
10673 0 : tree res_op0;
10674 0 : {
10675 0 : tree _o1[1], _r1;
10676 0 : _o1[0] = captures[1];
10677 0 : if (TREE_TYPE (_o1[0]) != utype)
10678 : {
10679 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10680 : }
10681 : else
10682 : _r1 = _o1[0];
10683 0 : res_op0 = _r1;
10684 : }
10685 0 : tree res_op1;
10686 0 : res_op1 = csts;
10687 0 : tree _r;
10688 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10689 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10690 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10691 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10692 0 : return _r;
10693 : }
10694 0 : next_after_fail1582:;
10695 : }
10696 : }
10697 : }
10698 : }
10699 : }
10700 : }
10701 : }
10702 : break;
10703 : }
10704 0 : case INTEGER_CST:
10705 0 : {
10706 0 : if (integer_zerop (_p1))
10707 : {
10708 0 : {
10709 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10710 0 : const enum tree_code cmp = NE_EXPR;
10711 0 : const enum tree_code icmp = GT_EXPR;
10712 0 : {
10713 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10714 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10715 : )
10716 : {
10717 0 : {
10718 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10719 0 : ? optab_vector : optab_default;
10720 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10721 0 : if (target_supports_op_p (utype, icmp, optab)
10722 0 : || (optimize_vectors_before_lowering_p ()
10723 0 : && (!target_supports_op_p (type, cmp, optab)
10724 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10725 : )
10726 : {
10727 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10728 : )
10729 : {
10730 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1583;
10731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1583;
10732 0 : {
10733 0 : tree res_op0;
10734 0 : res_op0 = captures[1];
10735 0 : tree res_op1;
10736 0 : res_op1 = csts;
10737 0 : tree _r;
10738 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10739 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10740 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10741 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 992, __FILE__, __LINE__, true);
10742 0 : return _r;
10743 : }
10744 0 : next_after_fail1583:;
10745 : }
10746 : else
10747 : {
10748 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1584;
10749 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1584;
10750 0 : {
10751 0 : tree res_op0;
10752 0 : {
10753 0 : tree _o1[1], _r1;
10754 0 : _o1[0] = captures[1];
10755 0 : if (TREE_TYPE (_o1[0]) != utype)
10756 : {
10757 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10758 : }
10759 : else
10760 : _r1 = _o1[0];
10761 0 : res_op0 = _r1;
10762 : }
10763 0 : tree res_op1;
10764 0 : res_op1 = csts;
10765 0 : tree _r;
10766 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10767 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10768 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10769 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
10770 0 : return _r;
10771 : }
10772 0 : next_after_fail1584:;
10773 : }
10774 : }
10775 : }
10776 : }
10777 : }
10778 : }
10779 : }
10780 : break;
10781 : }
10782 : default:;
10783 : }
10784 : break;
10785 : }
10786 20823 : case RSHIFT_EXPR:
10787 20823 : {
10788 20823 : tree _q20 = TREE_OPERAND (_p0, 0);
10789 20823 : tree _q21 = TREE_OPERAND (_p0, 1);
10790 20823 : switch (TREE_CODE (_q20))
10791 : {
10792 7 : case MULT_EXPR:
10793 7 : {
10794 7 : tree _q30 = TREE_OPERAND (_q20, 0);
10795 7 : tree _q31 = TREE_OPERAND (_q20, 1);
10796 7 : switch (TREE_CODE (_q30))
10797 : {
10798 7 : CASE_CONVERT:
10799 7 : {
10800 7 : tree _q40 = TREE_OPERAND (_q30, 0);
10801 7 : switch (TREE_CODE (_q31))
10802 : {
10803 7 : CASE_CONVERT:
10804 7 : {
10805 7 : tree _q60 = TREE_OPERAND (_q31, 0);
10806 7 : switch (TREE_CODE (_q21))
10807 : {
10808 7 : case INTEGER_CST:
10809 7 : {
10810 7 : if (integer_zerop (_p1))
10811 : {
10812 7 : {
10813 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10814 7 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR, GT_EXPR);
10815 7 : if (res) return res;
10816 : }
10817 : }
10818 : break;
10819 : }
10820 : default:;
10821 : }
10822 : break;
10823 : }
10824 : default:;
10825 : }
10826 : break;
10827 : }
10828 : default:;
10829 : }
10830 : break;
10831 : }
10832 : default:;
10833 : }
10834 : break;
10835 : }
10836 1339025 : case PLUS_EXPR:
10837 1339025 : {
10838 1339025 : tree _q20 = TREE_OPERAND (_p0, 0);
10839 1339025 : tree _q21 = TREE_OPERAND (_p0, 1);
10840 1339025 : switch (TREE_CODE (_q21))
10841 : {
10842 1213889 : case INTEGER_CST:
10843 1213889 : {
10844 1213889 : switch (TREE_CODE (_p1))
10845 : {
10846 719642 : case INTEGER_CST:
10847 719642 : {
10848 719642 : {
10849 719642 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10850 719642 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
10851 719642 : if (res) return res;
10852 : }
10853 361 : break;
10854 : }
10855 : default:;
10856 : }
10857 : break;
10858 : }
10859 : default:;
10860 : }
10861 : break;
10862 : }
10863 68266 : case MINUS_EXPR:
10864 68266 : {
10865 68266 : tree _q20 = TREE_OPERAND (_p0, 0);
10866 68266 : tree _q21 = TREE_OPERAND (_p0, 1);
10867 68266 : switch (TREE_CODE (_q21))
10868 : {
10869 193 : case INTEGER_CST:
10870 193 : {
10871 193 : switch (TREE_CODE (_p1))
10872 : {
10873 72 : case INTEGER_CST:
10874 72 : {
10875 72 : {
10876 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10877 72 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
10878 72 : if (res) return res;
10879 : }
10880 72 : break;
10881 : }
10882 : default:;
10883 : }
10884 : break;
10885 : }
10886 68266 : default:;
10887 : }
10888 68266 : switch (TREE_CODE (_q20))
10889 : {
10890 1867 : case INTEGER_CST:
10891 1867 : {
10892 1867 : switch (TREE_CODE (_p1))
10893 : {
10894 61 : case INTEGER_CST:
10895 61 : {
10896 61 : {
10897 61 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10898 61 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10899 61 : if (res) return res;
10900 : }
10901 0 : break;
10902 : }
10903 : default:;
10904 : }
10905 : break;
10906 : }
10907 : default:;
10908 : }
10909 : break;
10910 : }
10911 2471920 : case CALL_EXPR:
10912 2471920 : switch (get_call_combined_fn (_p0))
10913 : {
10914 224 : case CFN_BUILT_IN_CLZ:
10915 224 : if (call_expr_nargs (_p0) == 1)
10916 : {
10917 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10918 224 : switch (TREE_CODE (_p1))
10919 : {
10920 210 : case INTEGER_CST:
10921 210 : {
10922 210 : {
10923 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10924 210 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
10925 210 : if (res) return res;
10926 : }
10927 135 : break;
10928 : }
10929 : default:;
10930 : }
10931 : }
10932 : break;
10933 246 : case CFN_BUILT_IN_CTZ:
10934 246 : if (call_expr_nargs (_p0) == 1)
10935 : {
10936 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10937 246 : switch (TREE_CODE (_p1))
10938 : {
10939 200 : case INTEGER_CST:
10940 200 : {
10941 200 : {
10942 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10943 200 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
10944 200 : if (res) return res;
10945 : }
10946 0 : break;
10947 : }
10948 : default:;
10949 : }
10950 : }
10951 : break;
10952 31 : case CFN_BUILT_IN_FFS:
10953 31 : if (call_expr_nargs (_p0) == 1)
10954 : {
10955 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10956 31 : switch (TREE_CODE (_p1))
10957 : {
10958 11 : case INTEGER_CST:
10959 11 : {
10960 11 : {
10961 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10962 11 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
10963 11 : if (res) return res;
10964 : }
10965 0 : break;
10966 : }
10967 : default:;
10968 : }
10969 : }
10970 : break;
10971 0 : case CFN_REDUC_IOR:
10972 0 : if (call_expr_nargs (_p0) == 1)
10973 : {
10974 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10975 0 : if (integer_zerop (_p1))
10976 : {
10977 0 : {
10978 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10979 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR);
10980 0 : if (res) return res;
10981 : }
10982 : }
10983 : }
10984 : break;
10985 0 : case CFN_BUILT_IN_FFSIMAX:
10986 0 : if (call_expr_nargs (_p0) == 1)
10987 : {
10988 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10989 0 : switch (TREE_CODE (_p1))
10990 : {
10991 0 : case INTEGER_CST:
10992 0 : {
10993 0 : {
10994 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10995 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
10996 0 : if (res) return res;
10997 : }
10998 0 : break;
10999 : }
11000 : default:;
11001 : }
11002 : }
11003 : break;
11004 13 : case CFN_BUILT_IN_POPCOUNT:
11005 13 : if (call_expr_nargs (_p0) == 1)
11006 : {
11007 13 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11008 13 : if (integer_zerop (_p1))
11009 : {
11010 1 : {
11011 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11012 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
11013 1 : if (res) return res;
11014 : }
11015 : }
11016 : }
11017 : break;
11018 87 : case CFN_BUILT_IN_CLZL:
11019 87 : if (call_expr_nargs (_p0) == 1)
11020 : {
11021 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11022 87 : switch (TREE_CODE (_p1))
11023 : {
11024 79 : case INTEGER_CST:
11025 79 : {
11026 79 : {
11027 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11028 79 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
11029 79 : if (res) return res;
11030 : }
11031 43 : break;
11032 : }
11033 : default:;
11034 : }
11035 : }
11036 : break;
11037 85 : case CFN_BUILT_IN_CTZL:
11038 85 : if (call_expr_nargs (_p0) == 1)
11039 : {
11040 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11041 85 : switch (TREE_CODE (_p1))
11042 : {
11043 77 : case INTEGER_CST:
11044 77 : {
11045 77 : {
11046 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11047 77 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
11048 77 : if (res) return res;
11049 : }
11050 16 : break;
11051 : }
11052 : default:;
11053 : }
11054 : }
11055 : break;
11056 8 : case CFN_BUILT_IN_FFSL:
11057 8 : if (call_expr_nargs (_p0) == 1)
11058 : {
11059 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11060 8 : switch (TREE_CODE (_p1))
11061 : {
11062 0 : case INTEGER_CST:
11063 0 : {
11064 0 : {
11065 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11066 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
11067 0 : if (res) return res;
11068 : }
11069 0 : break;
11070 : }
11071 : default:;
11072 : }
11073 : }
11074 : break;
11075 11 : case CFN_BUILT_IN_POPCOUNTLL:
11076 11 : if (call_expr_nargs (_p0) == 1)
11077 : {
11078 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11079 11 : if (integer_zerop (_p1))
11080 : {
11081 1 : {
11082 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11083 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11084 1 : if (res) return res;
11085 : }
11086 : }
11087 : }
11088 : break;
11089 0 : case CFN_BUILT_IN_CTZIMAX:
11090 0 : if (call_expr_nargs (_p0) == 1)
11091 : {
11092 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11093 0 : switch (TREE_CODE (_p1))
11094 : {
11095 0 : case INTEGER_CST:
11096 0 : {
11097 0 : {
11098 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11099 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
11100 0 : if (res) return res;
11101 : }
11102 0 : break;
11103 : }
11104 : default:;
11105 : }
11106 : }
11107 : break;
11108 0 : case CFN_POPCOUNT:
11109 0 : if (call_expr_nargs (_p0) == 1)
11110 : {
11111 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11112 0 : if (integer_zerop (_p1))
11113 : {
11114 0 : {
11115 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11116 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
11117 0 : if (res) return res;
11118 : }
11119 : }
11120 : }
11121 : break;
11122 0 : case CFN_CLZ:
11123 0 : if (call_expr_nargs (_p0) == 1)
11124 : {
11125 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11126 0 : switch (TREE_CODE (_p1))
11127 : {
11128 0 : case INTEGER_CST:
11129 0 : {
11130 0 : {
11131 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11132 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
11133 0 : if (res) return res;
11134 : }
11135 0 : break;
11136 : }
11137 : default:;
11138 : }
11139 : }
11140 0 : if (call_expr_nargs (_p0) == 2)
11141 : {
11142 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11143 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11144 0 : switch (TREE_CODE (_p1))
11145 : {
11146 0 : case INTEGER_CST:
11147 0 : {
11148 0 : {
11149 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11150 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11151 0 : if (res) return res;
11152 : }
11153 0 : break;
11154 : }
11155 : default:;
11156 : }
11157 : }
11158 : break;
11159 0 : case CFN_CTZ:
11160 0 : if (call_expr_nargs (_p0) == 1)
11161 : {
11162 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11163 0 : switch (TREE_CODE (_p1))
11164 : {
11165 0 : case INTEGER_CST:
11166 0 : {
11167 0 : {
11168 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11169 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
11170 0 : if (res) return res;
11171 : }
11172 0 : break;
11173 : }
11174 : default:;
11175 : }
11176 : }
11177 0 : if (call_expr_nargs (_p0) == 2)
11178 : {
11179 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11180 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11181 0 : switch (TREE_CODE (_p1))
11182 : {
11183 0 : case INTEGER_CST:
11184 0 : {
11185 0 : {
11186 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11187 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR);
11188 0 : if (res) return res;
11189 : }
11190 0 : break;
11191 : }
11192 : default:;
11193 : }
11194 : }
11195 : break;
11196 0 : case CFN_FFS:
11197 0 : if (call_expr_nargs (_p0) == 1)
11198 : {
11199 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11200 0 : switch (TREE_CODE (_p1))
11201 : {
11202 0 : case INTEGER_CST:
11203 0 : {
11204 0 : {
11205 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11206 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
11207 0 : if (res) return res;
11208 : }
11209 0 : break;
11210 : }
11211 : default:;
11212 : }
11213 : }
11214 : break;
11215 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11216 0 : if (call_expr_nargs (_p0) == 1)
11217 : {
11218 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11219 0 : if (integer_zerop (_p1))
11220 : {
11221 0 : {
11222 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11223 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11224 0 : if (res) return res;
11225 : }
11226 : }
11227 : }
11228 : break;
11229 0 : case CFN_BUILT_IN_CLZIMAX:
11230 0 : if (call_expr_nargs (_p0) == 1)
11231 : {
11232 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11233 0 : switch (TREE_CODE (_p1))
11234 : {
11235 0 : case INTEGER_CST:
11236 0 : {
11237 0 : {
11238 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11239 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
11240 0 : if (res) return res;
11241 : }
11242 0 : break;
11243 : }
11244 : default:;
11245 : }
11246 : }
11247 : break;
11248 12 : case CFN_BUILT_IN_POPCOUNTL:
11249 12 : if (call_expr_nargs (_p0) == 1)
11250 : {
11251 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11252 12 : if (integer_zerop (_p1))
11253 : {
11254 1 : {
11255 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11256 1 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
11257 1 : if (res) return res;
11258 : }
11259 : }
11260 : }
11261 : break;
11262 52 : case CFN_BUILT_IN_CLZLL:
11263 52 : if (call_expr_nargs (_p0) == 1)
11264 : {
11265 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11266 52 : switch (TREE_CODE (_p1))
11267 : {
11268 42 : case INTEGER_CST:
11269 42 : {
11270 42 : {
11271 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11272 42 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
11273 42 : if (res) return res;
11274 : }
11275 18 : break;
11276 : }
11277 : default:;
11278 : }
11279 : }
11280 : break;
11281 74 : case CFN_BUILT_IN_CTZLL:
11282 74 : if (call_expr_nargs (_p0) == 1)
11283 : {
11284 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11285 74 : switch (TREE_CODE (_p1))
11286 : {
11287 64 : case INTEGER_CST:
11288 64 : {
11289 64 : {
11290 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11291 64 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
11292 64 : if (res) return res;
11293 : }
11294 16 : break;
11295 : }
11296 : default:;
11297 : }
11298 : }
11299 : break;
11300 11 : case CFN_BUILT_IN_FFSLL:
11301 11 : if (call_expr_nargs (_p0) == 1)
11302 : {
11303 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11304 11 : switch (TREE_CODE (_p1))
11305 : {
11306 1 : case INTEGER_CST:
11307 1 : {
11308 1 : {
11309 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11310 1 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
11311 1 : if (res) return res;
11312 : }
11313 0 : break;
11314 : }
11315 : default:;
11316 : }
11317 : }
11318 : break;
11319 : default:;
11320 : }
11321 : break;
11322 : default:;
11323 : }
11324 : return NULL_TREE;
11325 : }
11326 :
11327 : tree
11328 3444296 : generic_simplify_TRUTH_ORIF_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11329 : {
11330 3444296 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11331 3444296 : switch (TREE_CODE (_p0))
11332 : {
11333 365533 : case LE_EXPR:
11334 365533 : {
11335 365533 : tree _q20 = TREE_OPERAND (_p0, 0);
11336 365533 : tree _q21 = TREE_OPERAND (_p0, 1);
11337 365533 : switch (TREE_CODE (_q20))
11338 : {
11339 90 : case POINTER_PLUS_EXPR:
11340 90 : {
11341 90 : tree _q30 = TREE_OPERAND (_q20, 0);
11342 90 : tree _q31 = TREE_OPERAND (_q20, 1);
11343 90 : switch (TREE_CODE (_q31))
11344 : {
11345 2 : case INTEGER_CST:
11346 2 : {
11347 2 : switch (TREE_CODE (_p1))
11348 : {
11349 2 : case LE_EXPR:
11350 2 : {
11351 2 : tree _q70 = TREE_OPERAND (_p1, 0);
11352 2 : tree _q71 = TREE_OPERAND (_p1, 1);
11353 2 : switch (TREE_CODE (_q70))
11354 : {
11355 2 : case POINTER_PLUS_EXPR:
11356 2 : {
11357 2 : tree _q80 = TREE_OPERAND (_q70, 0);
11358 2 : tree _q81 = TREE_OPERAND (_q70, 1);
11359 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11360 : {
11361 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11362 : {
11363 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11364 : {
11365 2 : {
11366 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11367 2 : const enum tree_code cmp = LE_EXPR;
11368 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11369 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
11370 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11371 : )
11372 : {
11373 1 : {
11374 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11375 1 : offset_int rhs = off * 2;
11376 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11377 : )
11378 : {
11379 1 : {
11380 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11381 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11382 1 : if (cmp == LT_EXPR
11383 : )
11384 : {
11385 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1825;
11386 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1825;
11387 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1825;
11388 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1825;
11389 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1825;
11390 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1825;
11391 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1825;
11392 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1825;
11393 : {
11394 : tree res_op0;
11395 : {
11396 : tree _o1[1], _r1;
11397 : {
11398 : tree _o2[2], _r2;
11399 : _o2[0] = swap_p ? captures[6] : captures[1];
11400 : _o2[1] = swap_p ? captures[2] : captures[4];
11401 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11402 : _o1[0] = _r2;
11403 : }
11404 : if (TREE_TYPE (_o1[0]) != sizetype)
11405 : {
11406 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11407 : }
11408 : else
11409 : _r1 = _o1[0];
11410 : res_op0 = _r1;
11411 : }
11412 : tree res_op1;
11413 : res_op1 = rhs_tree;
11414 : tree _r;
11415 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11416 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
11417 1 : return _r;
11418 : }
11419 : next_after_fail1825:;
11420 : }
11421 : else
11422 : {
11423 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1826;
11424 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1826;
11425 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1826;
11426 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1826;
11427 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1826;
11428 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1826;
11429 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1826;
11430 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1826;
11431 1 : {
11432 1 : tree res_op0;
11433 1 : {
11434 1 : tree _o1[1], _r1;
11435 1 : {
11436 1 : tree _o2[2], _r2;
11437 1 : {
11438 1 : tree _o3[2], _r3;
11439 1 : _o3[0] = swap_p ? captures[4] : captures[2];
11440 1 : _o3[1] = wide_int_to_tree (sizetype, off);
11441 1 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11442 1 : _o2[0] = _r3;
11443 : }
11444 1 : _o2[1] = swap_p ? captures[2] : captures[4];
11445 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11446 1 : _o1[0] = _r2;
11447 : }
11448 1 : if (TREE_TYPE (_o1[0]) != sizetype)
11449 : {
11450 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11451 : }
11452 : else
11453 : _r1 = _o1[0];
11454 1 : res_op0 = _r1;
11455 : }
11456 1 : tree res_op1;
11457 1 : res_op1 = rhs_tree;
11458 1 : tree _r;
11459 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11460 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
11461 1 : return _r;
11462 : }
11463 0 : next_after_fail1826:;
11464 : }
11465 : }
11466 : }
11467 : }
11468 : }
11469 : }
11470 : }
11471 : }
11472 : }
11473 : break;
11474 : }
11475 : default:;
11476 : }
11477 : break;
11478 : }
11479 0 : case GE_EXPR:
11480 0 : {
11481 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11482 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11483 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11484 : {
11485 0 : switch (TREE_CODE (_q71))
11486 : {
11487 0 : case POINTER_PLUS_EXPR:
11488 0 : {
11489 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11490 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11491 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11492 : {
11493 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11494 : {
11495 0 : {
11496 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11497 0 : const enum tree_code cmp = LE_EXPR;
11498 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11499 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11500 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11501 : )
11502 : {
11503 0 : {
11504 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11505 0 : offset_int rhs = off * 2;
11506 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11507 : )
11508 : {
11509 0 : {
11510 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11511 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11512 0 : if (cmp == LT_EXPR
11513 : )
11514 : {
11515 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1827;
11516 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1827;
11517 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1827;
11518 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1827;
11519 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1827;
11520 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1827;
11521 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1827;
11522 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1827;
11523 : {
11524 : tree res_op0;
11525 : {
11526 : tree _o1[1], _r1;
11527 : {
11528 : tree _o2[2], _r2;
11529 : _o2[0] = swap_p ? captures[6] : captures[1];
11530 : _o2[1] = swap_p ? captures[2] : captures[4];
11531 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11532 : _o1[0] = _r2;
11533 : }
11534 : if (TREE_TYPE (_o1[0]) != sizetype)
11535 : {
11536 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11537 : }
11538 : else
11539 : _r1 = _o1[0];
11540 : res_op0 = _r1;
11541 : }
11542 : tree res_op1;
11543 : res_op1 = rhs_tree;
11544 : tree _r;
11545 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11546 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
11547 0 : return _r;
11548 : }
11549 : next_after_fail1827:;
11550 : }
11551 : else
11552 : {
11553 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1828;
11554 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1828;
11555 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1828;
11556 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1828;
11557 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1828;
11558 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1828;
11559 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1828;
11560 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1828;
11561 0 : {
11562 0 : tree res_op0;
11563 0 : {
11564 0 : tree _o1[1], _r1;
11565 0 : {
11566 0 : tree _o2[2], _r2;
11567 0 : {
11568 0 : tree _o3[2], _r3;
11569 0 : _o3[0] = swap_p ? captures[4] : captures[2];
11570 0 : _o3[1] = wide_int_to_tree (sizetype, off);
11571 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11572 0 : _o2[0] = _r3;
11573 : }
11574 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11575 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11576 0 : _o1[0] = _r2;
11577 : }
11578 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11579 : {
11580 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11581 : }
11582 : else
11583 : _r1 = _o1[0];
11584 0 : res_op0 = _r1;
11585 : }
11586 0 : tree res_op1;
11587 0 : res_op1 = rhs_tree;
11588 0 : tree _r;
11589 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11590 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
11591 0 : return _r;
11592 : }
11593 0 : next_after_fail1828:;
11594 : }
11595 : }
11596 : }
11597 : }
11598 : }
11599 : }
11600 : }
11601 : }
11602 : break;
11603 : }
11604 : default:;
11605 : }
11606 : }
11607 : break;
11608 : }
11609 : default:;
11610 : }
11611 : break;
11612 : }
11613 : default:;
11614 : }
11615 : break;
11616 : }
11617 : default:;
11618 : }
11619 : break;
11620 : }
11621 790088 : case LT_EXPR:
11622 790088 : {
11623 790088 : tree _q20 = TREE_OPERAND (_p0, 0);
11624 790088 : tree _q21 = TREE_OPERAND (_p0, 1);
11625 790088 : switch (TREE_CODE (_q20))
11626 : {
11627 13 : case POINTER_PLUS_EXPR:
11628 13 : {
11629 13 : tree _q30 = TREE_OPERAND (_q20, 0);
11630 13 : tree _q31 = TREE_OPERAND (_q20, 1);
11631 13 : switch (TREE_CODE (_q31))
11632 : {
11633 7 : case INTEGER_CST:
11634 7 : {
11635 7 : switch (TREE_CODE (_p1))
11636 : {
11637 2 : case LT_EXPR:
11638 2 : {
11639 2 : tree _q70 = TREE_OPERAND (_p1, 0);
11640 2 : tree _q71 = TREE_OPERAND (_p1, 1);
11641 2 : switch (TREE_CODE (_q70))
11642 : {
11643 2 : case POINTER_PLUS_EXPR:
11644 2 : {
11645 2 : tree _q80 = TREE_OPERAND (_q70, 0);
11646 2 : tree _q81 = TREE_OPERAND (_q70, 1);
11647 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11648 : {
11649 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11650 : {
11651 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11652 : {
11653 2 : {
11654 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11655 2 : const enum tree_code cmp = LT_EXPR;
11656 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11657 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
11658 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11659 : )
11660 : {
11661 1 : {
11662 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11663 1 : offset_int rhs = off * 2;
11664 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11665 : )
11666 : {
11667 1 : {
11668 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11669 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11670 1 : if (cmp == LT_EXPR
11671 : )
11672 : {
11673 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1829;
11674 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1829;
11675 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1829;
11676 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1829;
11677 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1829;
11678 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1829;
11679 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1829;
11680 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1829;
11681 1 : {
11682 1 : tree res_op0;
11683 1 : {
11684 1 : tree _o1[1], _r1;
11685 1 : {
11686 1 : tree _o2[2], _r2;
11687 1 : _o2[0] = swap_p ? captures[6] : captures[1];
11688 1 : _o2[1] = swap_p ? captures[2] : captures[4];
11689 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11690 1 : _o1[0] = _r2;
11691 : }
11692 1 : if (TREE_TYPE (_o1[0]) != sizetype)
11693 : {
11694 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11695 : }
11696 : else
11697 : _r1 = _o1[0];
11698 1 : res_op0 = _r1;
11699 : }
11700 1 : tree res_op1;
11701 1 : res_op1 = rhs_tree;
11702 1 : tree _r;
11703 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11704 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
11705 1 : return _r;
11706 : }
11707 0 : next_after_fail1829:;
11708 : }
11709 : else
11710 : {
11711 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1830;
11712 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1830;
11713 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1830;
11714 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1830;
11715 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1830;
11716 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1830;
11717 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1830;
11718 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1830;
11719 : {
11720 : tree res_op0;
11721 : {
11722 : tree _o1[1], _r1;
11723 : {
11724 : tree _o2[2], _r2;
11725 : {
11726 : tree _o3[2], _r3;
11727 : _o3[0] = swap_p ? captures[4] : captures[2];
11728 : _o3[1] = wide_int_to_tree (sizetype, off);
11729 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11730 : _o2[0] = _r3;
11731 : }
11732 : _o2[1] = swap_p ? captures[2] : captures[4];
11733 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11734 : _o1[0] = _r2;
11735 : }
11736 : if (TREE_TYPE (_o1[0]) != sizetype)
11737 : {
11738 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11739 : }
11740 : else
11741 : _r1 = _o1[0];
11742 : res_op0 = _r1;
11743 : }
11744 : tree res_op1;
11745 : res_op1 = rhs_tree;
11746 : tree _r;
11747 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11748 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
11749 : return _r;
11750 : }
11751 : next_after_fail1830:;
11752 : }
11753 : }
11754 : }
11755 : }
11756 : }
11757 : }
11758 : }
11759 : }
11760 : }
11761 : break;
11762 : }
11763 : default:;
11764 : }
11765 : break;
11766 : }
11767 0 : case GT_EXPR:
11768 0 : {
11769 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11770 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11771 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11772 : {
11773 0 : switch (TREE_CODE (_q71))
11774 : {
11775 0 : case POINTER_PLUS_EXPR:
11776 0 : {
11777 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11778 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11779 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11780 : {
11781 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11782 : {
11783 0 : {
11784 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11785 0 : const enum tree_code cmp = LT_EXPR;
11786 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11787 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11788 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11789 : )
11790 : {
11791 0 : {
11792 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11793 0 : offset_int rhs = off * 2;
11794 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11795 : )
11796 : {
11797 0 : {
11798 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11799 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11800 0 : if (cmp == LT_EXPR
11801 : )
11802 : {
11803 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1831;
11804 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1831;
11805 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1831;
11806 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1831;
11807 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1831;
11808 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1831;
11809 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1831;
11810 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1831;
11811 0 : {
11812 0 : tree res_op0;
11813 0 : {
11814 0 : tree _o1[1], _r1;
11815 0 : {
11816 0 : tree _o2[2], _r2;
11817 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11818 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11819 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11820 0 : _o1[0] = _r2;
11821 : }
11822 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11823 : {
11824 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11825 : }
11826 : else
11827 : _r1 = _o1[0];
11828 0 : res_op0 = _r1;
11829 : }
11830 0 : tree res_op1;
11831 0 : res_op1 = rhs_tree;
11832 0 : tree _r;
11833 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11834 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
11835 0 : return _r;
11836 : }
11837 0 : next_after_fail1831:;
11838 : }
11839 : else
11840 : {
11841 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1832;
11842 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1832;
11843 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1832;
11844 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1832;
11845 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1832;
11846 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1832;
11847 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1832;
11848 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1832;
11849 : {
11850 : tree res_op0;
11851 : {
11852 : tree _o1[1], _r1;
11853 : {
11854 : tree _o2[2], _r2;
11855 : {
11856 : tree _o3[2], _r3;
11857 : _o3[0] = swap_p ? captures[4] : captures[2];
11858 : _o3[1] = wide_int_to_tree (sizetype, off);
11859 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11860 : _o2[0] = _r3;
11861 : }
11862 : _o2[1] = swap_p ? captures[2] : captures[4];
11863 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11864 : _o1[0] = _r2;
11865 : }
11866 : if (TREE_TYPE (_o1[0]) != sizetype)
11867 : {
11868 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11869 : }
11870 : else
11871 : _r1 = _o1[0];
11872 : res_op0 = _r1;
11873 : }
11874 : tree res_op1;
11875 : res_op1 = rhs_tree;
11876 : tree _r;
11877 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11878 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
11879 : return _r;
11880 : }
11881 : next_after_fail1832:;
11882 : }
11883 : }
11884 : }
11885 : }
11886 : }
11887 : }
11888 : }
11889 : }
11890 : break;
11891 : }
11892 : default:;
11893 : }
11894 : }
11895 : break;
11896 : }
11897 : default:;
11898 : }
11899 : break;
11900 : }
11901 : default:;
11902 : }
11903 : break;
11904 : }
11905 : default:;
11906 : }
11907 : break;
11908 : }
11909 20752 : case GE_EXPR:
11910 20752 : {
11911 20752 : tree _q20 = TREE_OPERAND (_p0, 0);
11912 20752 : tree _q21 = TREE_OPERAND (_p0, 1);
11913 20752 : switch (TREE_CODE (_q21))
11914 : {
11915 0 : case POINTER_PLUS_EXPR:
11916 0 : {
11917 0 : tree _q40 = TREE_OPERAND (_q21, 0);
11918 0 : tree _q41 = TREE_OPERAND (_q21, 1);
11919 0 : switch (TREE_CODE (_q41))
11920 : {
11921 0 : case INTEGER_CST:
11922 0 : {
11923 0 : switch (TREE_CODE (_p1))
11924 : {
11925 0 : case LE_EXPR:
11926 0 : {
11927 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11928 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11929 0 : switch (TREE_CODE (_q70))
11930 : {
11931 0 : case POINTER_PLUS_EXPR:
11932 0 : {
11933 0 : tree _q80 = TREE_OPERAND (_q70, 0);
11934 0 : tree _q81 = TREE_OPERAND (_q70, 1);
11935 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11936 : {
11937 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11938 : {
11939 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11940 : {
11941 0 : {
11942 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11943 0 : const enum tree_code cmp = LE_EXPR;
11944 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11945 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11946 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11947 : )
11948 : {
11949 0 : {
11950 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11951 0 : offset_int rhs = off * 2;
11952 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11953 : )
11954 : {
11955 0 : {
11956 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11957 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11958 0 : if (cmp == LT_EXPR
11959 : )
11960 : {
11961 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1833;
11962 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1833;
11963 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1833;
11964 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1833;
11965 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1833;
11966 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1833;
11967 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1833;
11968 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1833;
11969 : {
11970 : tree res_op0;
11971 : {
11972 : tree _o1[1], _r1;
11973 : {
11974 : tree _o2[2], _r2;
11975 : _o2[0] = swap_p ? captures[6] : captures[1];
11976 : _o2[1] = swap_p ? captures[2] : captures[4];
11977 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11978 : _o1[0] = _r2;
11979 : }
11980 : if (TREE_TYPE (_o1[0]) != sizetype)
11981 : {
11982 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11983 : }
11984 : else
11985 : _r1 = _o1[0];
11986 : res_op0 = _r1;
11987 : }
11988 : tree res_op1;
11989 : res_op1 = rhs_tree;
11990 : tree _r;
11991 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11992 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
11993 0 : return _r;
11994 : }
11995 : next_after_fail1833:;
11996 : }
11997 : else
11998 : {
11999 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1834;
12000 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1834;
12001 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1834;
12002 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1834;
12003 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1834;
12004 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1834;
12005 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1834;
12006 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1834;
12007 0 : {
12008 0 : tree res_op0;
12009 0 : {
12010 0 : tree _o1[1], _r1;
12011 0 : {
12012 0 : tree _o2[2], _r2;
12013 0 : {
12014 0 : tree _o3[2], _r3;
12015 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12016 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12017 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12018 0 : _o2[0] = _r3;
12019 : }
12020 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12021 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12022 0 : _o1[0] = _r2;
12023 : }
12024 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12025 : {
12026 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12027 : }
12028 : else
12029 : _r1 = _o1[0];
12030 0 : res_op0 = _r1;
12031 : }
12032 0 : tree res_op1;
12033 0 : res_op1 = rhs_tree;
12034 0 : tree _r;
12035 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
12037 0 : return _r;
12038 : }
12039 0 : next_after_fail1834:;
12040 : }
12041 : }
12042 : }
12043 : }
12044 : }
12045 : }
12046 : }
12047 : }
12048 : }
12049 : break;
12050 : }
12051 : default:;
12052 : }
12053 : break;
12054 : }
12055 0 : case GE_EXPR:
12056 0 : {
12057 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12058 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12059 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12060 : {
12061 0 : switch (TREE_CODE (_q71))
12062 : {
12063 0 : case POINTER_PLUS_EXPR:
12064 0 : {
12065 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12066 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12067 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12068 : {
12069 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12070 : {
12071 0 : {
12072 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12073 0 : const enum tree_code cmp = LE_EXPR;
12074 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12075 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12076 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12077 : )
12078 : {
12079 0 : {
12080 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12081 0 : offset_int rhs = off * 2;
12082 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12083 : )
12084 : {
12085 0 : {
12086 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12087 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12088 0 : if (cmp == LT_EXPR
12089 : )
12090 : {
12091 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1835;
12092 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1835;
12093 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1835;
12094 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1835;
12095 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1835;
12096 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1835;
12097 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1835;
12098 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1835;
12099 : {
12100 : tree res_op0;
12101 : {
12102 : tree _o1[1], _r1;
12103 : {
12104 : tree _o2[2], _r2;
12105 : _o2[0] = swap_p ? captures[6] : captures[1];
12106 : _o2[1] = swap_p ? captures[2] : captures[4];
12107 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12108 : _o1[0] = _r2;
12109 : }
12110 : if (TREE_TYPE (_o1[0]) != sizetype)
12111 : {
12112 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12113 : }
12114 : else
12115 : _r1 = _o1[0];
12116 : res_op0 = _r1;
12117 : }
12118 : tree res_op1;
12119 : res_op1 = rhs_tree;
12120 : tree _r;
12121 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12122 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
12123 0 : return _r;
12124 : }
12125 : next_after_fail1835:;
12126 : }
12127 : else
12128 : {
12129 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1836;
12130 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1836;
12131 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1836;
12132 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1836;
12133 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1836;
12134 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1836;
12135 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1836;
12136 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1836;
12137 0 : {
12138 0 : tree res_op0;
12139 0 : {
12140 0 : tree _o1[1], _r1;
12141 0 : {
12142 0 : tree _o2[2], _r2;
12143 0 : {
12144 0 : tree _o3[2], _r3;
12145 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12146 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12147 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12148 0 : _o2[0] = _r3;
12149 : }
12150 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12151 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12152 0 : _o1[0] = _r2;
12153 : }
12154 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12155 : {
12156 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12157 : }
12158 : else
12159 : _r1 = _o1[0];
12160 0 : res_op0 = _r1;
12161 : }
12162 0 : tree res_op1;
12163 0 : res_op1 = rhs_tree;
12164 0 : tree _r;
12165 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12166 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
12167 0 : return _r;
12168 : }
12169 0 : next_after_fail1836:;
12170 : }
12171 : }
12172 : }
12173 : }
12174 : }
12175 : }
12176 : }
12177 : }
12178 : break;
12179 : }
12180 : default:;
12181 : }
12182 : }
12183 : break;
12184 : }
12185 : default:;
12186 : }
12187 : break;
12188 : }
12189 : default:;
12190 : }
12191 : break;
12192 : }
12193 : default:;
12194 : }
12195 : break;
12196 : }
12197 66438 : case GT_EXPR:
12198 66438 : {
12199 66438 : tree _q20 = TREE_OPERAND (_p0, 0);
12200 66438 : tree _q21 = TREE_OPERAND (_p0, 1);
12201 66438 : switch (TREE_CODE (_q21))
12202 : {
12203 0 : case POINTER_PLUS_EXPR:
12204 0 : {
12205 0 : tree _q40 = TREE_OPERAND (_q21, 0);
12206 0 : tree _q41 = TREE_OPERAND (_q21, 1);
12207 0 : switch (TREE_CODE (_q41))
12208 : {
12209 0 : case INTEGER_CST:
12210 0 : {
12211 0 : switch (TREE_CODE (_p1))
12212 : {
12213 0 : case LT_EXPR:
12214 0 : {
12215 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12216 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12217 0 : switch (TREE_CODE (_q70))
12218 : {
12219 0 : case POINTER_PLUS_EXPR:
12220 0 : {
12221 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12222 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12223 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12224 : {
12225 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12226 : {
12227 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12228 : {
12229 0 : {
12230 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12231 0 : const enum tree_code cmp = LT_EXPR;
12232 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12233 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12234 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12235 : )
12236 : {
12237 0 : {
12238 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12239 0 : offset_int rhs = off * 2;
12240 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12241 : )
12242 : {
12243 0 : {
12244 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12245 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12246 0 : if (cmp == LT_EXPR
12247 : )
12248 : {
12249 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1837;
12250 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1837;
12251 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1837;
12252 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1837;
12253 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1837;
12254 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1837;
12255 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1837;
12256 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1837;
12257 0 : {
12258 0 : tree res_op0;
12259 0 : {
12260 0 : tree _o1[1], _r1;
12261 0 : {
12262 0 : tree _o2[2], _r2;
12263 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12264 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12265 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12266 0 : _o1[0] = _r2;
12267 : }
12268 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12269 : {
12270 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12271 : }
12272 : else
12273 : _r1 = _o1[0];
12274 0 : res_op0 = _r1;
12275 : }
12276 0 : tree res_op1;
12277 0 : res_op1 = rhs_tree;
12278 0 : tree _r;
12279 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
12281 0 : return _r;
12282 : }
12283 0 : next_after_fail1837:;
12284 : }
12285 : else
12286 : {
12287 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1838;
12288 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1838;
12289 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1838;
12290 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1838;
12291 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1838;
12292 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1838;
12293 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1838;
12294 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1838;
12295 : {
12296 : tree res_op0;
12297 : {
12298 : tree _o1[1], _r1;
12299 : {
12300 : tree _o2[2], _r2;
12301 : {
12302 : tree _o3[2], _r3;
12303 : _o3[0] = swap_p ? captures[4] : captures[2];
12304 : _o3[1] = wide_int_to_tree (sizetype, off);
12305 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12306 : _o2[0] = _r3;
12307 : }
12308 : _o2[1] = swap_p ? captures[2] : captures[4];
12309 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12310 : _o1[0] = _r2;
12311 : }
12312 : if (TREE_TYPE (_o1[0]) != sizetype)
12313 : {
12314 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12315 : }
12316 : else
12317 : _r1 = _o1[0];
12318 : res_op0 = _r1;
12319 : }
12320 : tree res_op1;
12321 : res_op1 = rhs_tree;
12322 : tree _r;
12323 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12324 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
12325 : return _r;
12326 : }
12327 : next_after_fail1838:;
12328 : }
12329 : }
12330 : }
12331 : }
12332 : }
12333 : }
12334 : }
12335 : }
12336 : }
12337 : break;
12338 : }
12339 : default:;
12340 : }
12341 : break;
12342 : }
12343 0 : case GT_EXPR:
12344 0 : {
12345 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12346 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12347 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12348 : {
12349 0 : switch (TREE_CODE (_q71))
12350 : {
12351 0 : case POINTER_PLUS_EXPR:
12352 0 : {
12353 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12354 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12355 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12356 : {
12357 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12358 : {
12359 0 : {
12360 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12361 0 : const enum tree_code cmp = LT_EXPR;
12362 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12363 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12364 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12365 : )
12366 : {
12367 0 : {
12368 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12369 0 : offset_int rhs = off * 2;
12370 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12371 : )
12372 : {
12373 0 : {
12374 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12375 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12376 0 : if (cmp == LT_EXPR
12377 : )
12378 : {
12379 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1839;
12380 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1839;
12381 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1839;
12382 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1839;
12383 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1839;
12384 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1839;
12385 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1839;
12386 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1839;
12387 0 : {
12388 0 : tree res_op0;
12389 0 : {
12390 0 : tree _o1[1], _r1;
12391 0 : {
12392 0 : tree _o2[2], _r2;
12393 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12394 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12395 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12396 0 : _o1[0] = _r2;
12397 : }
12398 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12399 : {
12400 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12401 : }
12402 : else
12403 : _r1 = _o1[0];
12404 0 : res_op0 = _r1;
12405 : }
12406 0 : tree res_op1;
12407 0 : res_op1 = rhs_tree;
12408 0 : tree _r;
12409 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12410 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
12411 0 : return _r;
12412 : }
12413 0 : next_after_fail1839:;
12414 : }
12415 : else
12416 : {
12417 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1840;
12418 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1840;
12419 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1840;
12420 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1840;
12421 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1840;
12422 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1840;
12423 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1840;
12424 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1840;
12425 : {
12426 : tree res_op0;
12427 : {
12428 : tree _o1[1], _r1;
12429 : {
12430 : tree _o2[2], _r2;
12431 : {
12432 : tree _o3[2], _r3;
12433 : _o3[0] = swap_p ? captures[4] : captures[2];
12434 : _o3[1] = wide_int_to_tree (sizetype, off);
12435 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12436 : _o2[0] = _r3;
12437 : }
12438 : _o2[1] = swap_p ? captures[2] : captures[4];
12439 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12440 : _o1[0] = _r2;
12441 : }
12442 : if (TREE_TYPE (_o1[0]) != sizetype)
12443 : {
12444 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12445 : }
12446 : else
12447 : _r1 = _o1[0];
12448 : res_op0 = _r1;
12449 : }
12450 : tree res_op1;
12451 : res_op1 = rhs_tree;
12452 : tree _r;
12453 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12454 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
12455 : return _r;
12456 : }
12457 : next_after_fail1840:;
12458 : }
12459 : }
12460 : }
12461 : }
12462 : }
12463 : }
12464 : }
12465 : }
12466 : break;
12467 : }
12468 : default:;
12469 : }
12470 : }
12471 : break;
12472 : }
12473 : default:;
12474 : }
12475 : break;
12476 : }
12477 : default:;
12478 : }
12479 : break;
12480 : }
12481 : default:;
12482 : }
12483 : break;
12484 : }
12485 : default:;
12486 : }
12487 : return NULL_TREE;
12488 : }
12489 : #pragma GCC diagnostic pop
|