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 1102532559 : tree_nop_convert (tree t, tree *res_ops)
11 : {
12 1102532559 : const tree type = TREE_TYPE (t);
13 1102532559 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1102532559 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1057944568 : switch (TREE_CODE (t))
16 : {
17 214170334 : CASE_CONVERT:
18 214170334 : {
19 214170334 : tree _p0 = TREE_OPERAND (t, 0);
20 214170334 : {
21 214170334 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 214170334 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
23 : )
24 : {
25 172681997 : {
26 172681997 : res_ops[0] = captures[0];
27 172681997 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 0, __FILE__, __LINE__, false);
28 172681997 : return true;
29 : }
30 : }
31 : }
32 : break;
33 : }
34 4500074 : case VIEW_CONVERT_EXPR:
35 4500074 : {
36 4500074 : tree _p0 = TREE_OPERAND (t, 0);
37 4500074 : {
38 4500074 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
39 3208993 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0]))
40 3208975 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
41 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0])))
42 6717616 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))
43 : )
44 : {
45 2217536 : {
46 2217536 : res_ops[0] = captures[0];
47 2217536 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1, __FILE__, __LINE__, false);
48 2217536 : return true;
49 : }
50 : }
51 : }
52 2282538 : break;
53 : }
54 : default:;
55 : }
56 : return false;
57 : }
58 :
59 : bool
60 87109926 : tree_with_known_nonzero_bits (tree t)
61 : {
62 87109926 : const tree type = TREE_TYPE (t);
63 87109926 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
64 87109926 : if (TREE_SIDE_EFFECTS (t)) return false;
65 82113410 : switch (TREE_CODE (t))
66 : {
67 271956 : case BIT_IOR_EXPR:
68 271956 : {
69 271956 : tree _p0 = TREE_OPERAND (t, 0);
70 271956 : tree _p1 = TREE_OPERAND (t, 1);
71 271956 : if (tree_with_known_nonzero_bits_1 (_p0))
72 : {
73 264442 : {
74 264442 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
75 264442 : {
76 264442 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
77 264442 : return true;
78 : }
79 : }
80 : }
81 7514 : if (tree_with_known_nonzero_bits_1 (_p1))
82 : {
83 186 : {
84 186 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
85 186 : {
86 186 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
87 186 : return true;
88 : }
89 : }
90 : }
91 : break;
92 : }
93 81848782 : default:;
94 : }
95 81848782 : if (tree_with_known_nonzero_bits_1 (t))
96 : {
97 39271434 : {
98 39271434 : tree captures[1] ATTRIBUTE_UNUSED = { t };
99 39271434 : {
100 39271434 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 40, __FILE__, __LINE__, false);
101 39271434 : return true;
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 15 : generic_simplify_4 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 15 : if (INTEGRAL_TYPE_P (type)
115 : )
116 : {
117 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail75;
118 15 : {
119 15 : tree res_op0;
120 15 : {
121 15 : tree _o1[2], _r1;
122 15 : _o1[0] = captures[1];
123 15 : _o1[1] = captures[4];
124 15 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
125 15 : res_op0 = _r1;
126 : }
127 15 : tree res_op1;
128 15 : res_op1 = captures[2];
129 15 : tree _r;
130 15 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
131 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 52, __FILE__, __LINE__, true);
132 15 : return _r;
133 : }
134 0 : next_after_fail75:;
135 : }
136 : return NULL_TREE;
137 : }
138 :
139 : tree
140 589 : generic_simplify_12 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
142 : {
143 589 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
144 589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail87;
145 589 : {
146 589 : if (! tree_invariant_p (captures[3])) goto next_after_fail87;
147 1 : tree res_op0;
148 1 : {
149 1 : tree _o1[2], _r1;
150 1 : _o1[0] = captures[2];
151 1 : _o1[1] = unshare_expr (captures[3]);
152 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
153 1 : res_op0 = _r1;
154 : }
155 1 : tree res_op1;
156 1 : {
157 1 : tree _o1[2], _r1;
158 1 : {
159 1 : tree _o2[1], _r2;
160 1 : _o2[0] = captures[4];
161 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
162 1 : if (EXPR_P (_r2))
163 0 : goto next_after_fail87;
164 1 : _o1[0] = _r2;
165 : }
166 1 : _o1[1] = captures[3];
167 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
168 1 : if (EXPR_P (_r1))
169 0 : goto next_after_fail87;
170 1 : res_op1 = _r1;
171 : }
172 1 : tree _r;
173 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
174 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 60, __FILE__, __LINE__, true);
175 : return _r;
176 : }
177 : next_after_fail87:;
178 : return NULL_TREE;
179 : }
180 :
181 : tree
182 10 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
183 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
184 : {
185 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
186 10 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
187 10 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
188 : )
189 : {
190 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail100;
191 10 : {
192 10 : tree res_op0;
193 10 : {
194 10 : tree _o1[1], _r1;
195 10 : _o1[0] = captures[0];
196 10 : if (TREE_TYPE (_o1[0]) != type)
197 : {
198 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
199 : }
200 : else
201 : _r1 = _o1[0];
202 10 : res_op0 = _r1;
203 : }
204 10 : tree res_op1;
205 10 : {
206 10 : tree _o1[1], _r1;
207 10 : _o1[0] = captures[1];
208 10 : if (TREE_TYPE (_o1[0]) != type)
209 : {
210 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
211 : }
212 : else
213 : _r1 = _o1[0];
214 10 : res_op1 = _r1;
215 : }
216 10 : tree _r;
217 10 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
218 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 73, __FILE__, __LINE__, true);
219 10 : return _r;
220 : }
221 0 : next_after_fail100:;
222 : }
223 : return NULL_TREE;
224 : }
225 :
226 : tree
227 0 : generic_simplify_35 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
228 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
229 : const enum tree_code ARG_UNUSED (op),
230 : const enum tree_code ARG_UNUSED (cmp),
231 : const enum tree_code ARG_UNUSED (icmp))
232 : {
233 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
234 0 : if (INTEGRAL_TYPE_P (type)
235 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
236 0 : && canonicalize_math_after_vectorization_p ()
237 : )
238 : {
239 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail112;
240 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail112;
241 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail112;
242 : {
243 : tree res_op0;
244 : res_op0 = captures[0];
245 : tree res_op1;
246 : res_op1 = captures[3];
247 : tree res_op2;
248 : res_op2 = captures[5];
249 : tree _r;
250 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
251 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 84, __FILE__, __LINE__, true);
252 : return _r;
253 : }
254 0 : next_after_fail112:;
255 : }
256 0 : return NULL_TREE;
257 : }
258 :
259 : tree
260 0 : generic_simplify_43 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
261 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
262 : const enum tree_code ARG_UNUSED (op))
263 : {
264 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
265 0 : if (INTEGRAL_TYPE_P (type)
266 0 : && tree_int_cst_sgn (captures[5]) > 0
267 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
268 : )
269 : {
270 0 : {
271 0 : tree t = type;
272 0 : if (!TYPE_OVERFLOW_WRAPS (t))
273 0 : t = unsigned_type_for (t);
274 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
275 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
276 0 : wi::lshift (wone, wi::to_wide (captures[5])));
277 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail121;
278 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail121;
279 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail121;
280 0 : {
281 0 : tree res_op0;
282 0 : {
283 0 : tree _o1[2], _r1;
284 0 : {
285 0 : tree _o2[1], _r2;
286 0 : _o2[0] = captures[2];
287 0 : if (TREE_TYPE (_o2[0]) != t)
288 : {
289 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
290 : }
291 : else
292 : _r2 = _o2[0];
293 0 : _o1[0] = _r2;
294 : }
295 0 : _o1[1] = wide_int_to_tree (t, c);
296 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
297 0 : res_op0 = _r1;
298 : }
299 0 : tree _r;
300 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 87, __FILE__, __LINE__, true);
302 0 : return _r;
303 : }
304 0 : next_after_fail121:;
305 0 : }
306 : }
307 : return NULL_TREE;
308 : }
309 :
310 : tree
311 312 : generic_simplify_53 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
312 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
313 : const enum tree_code ARG_UNUSED (outer_op),
314 : const enum tree_code ARG_UNUSED (inner_op))
315 : {
316 312 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
317 312 : if (real_zerop (captures[2])
318 34 : && real_zerop (captures[3])
319 346 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
320 : )
321 : {
322 10 : {
323 10 : bool inner_plus = ((inner_op == PLUS_EXPR)
324 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[2])));
325 10 : bool outer_plus
326 10 : = ((outer_op == PLUS_EXPR)
327 10 : ^ REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[3])));
328 10 : if (outer_plus && !inner_plus
329 : )
330 : {
331 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail133;
332 2 : {
333 2 : tree res_op0;
334 2 : res_op0 = captures[1];
335 2 : tree res_op1;
336 2 : res_op1 = captures[3];
337 2 : tree _r;
338 2 : _r = fold_build2_loc (loc, outer_op, type, res_op0, res_op1);
339 2 : if (TREE_SIDE_EFFECTS (captures[2]))
340 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
341 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 101, __FILE__, __LINE__, true);
342 2 : return _r;
343 : }
344 0 : next_after_fail133:;
345 : }
346 : else
347 : {
348 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail134;
349 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail134;
350 8 : {
351 8 : tree _r;
352 8 : _r = captures[0];
353 8 : if (TREE_SIDE_EFFECTS (captures[3]))
354 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
355 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 102, __FILE__, __LINE__, true);
356 8 : return _r;
357 : }
358 : next_after_fail134:;
359 : }
360 : }
361 : }
362 : return NULL_TREE;
363 : }
364 :
365 : tree
366 539 : generic_simplify_67 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
367 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
368 : {
369 539 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
370 539 : if (!TYPE_SATURATING (type)
371 : )
372 : {
373 539 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
374 1078 : && !FIXED_POINT_TYPE_P (type)
375 : )
376 : {
377 539 : if (!TYPE_OVERFLOW_TRAPS (type)
378 : )
379 : {
380 539 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail156;
381 539 : {
382 539 : tree res_op0;
383 539 : res_op0 = build_all_ones_cst (TREE_TYPE (captures[0]));
384 539 : tree _r;
385 539 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
386 539 : if (TREE_SIDE_EFFECTS (captures[0]))
387 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
388 539 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 124, __FILE__, __LINE__, true);
389 539 : return _r;
390 : }
391 0 : next_after_fail156:;
392 : }
393 : }
394 : }
395 : return NULL_TREE;
396 : }
397 :
398 : tree
399 2 : generic_simplify_74 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
400 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
401 : const enum tree_code ARG_UNUSED (div),
402 : const enum tree_code ARG_UNUSED (mod))
403 : {
404 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
405 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail164;
406 2 : {
407 2 : tree _r;
408 2 : _r = captures[0];
409 2 : if (TREE_SIDE_EFFECTS (captures[1]))
410 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
411 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 132, __FILE__, __LINE__, true);
412 : return _r;
413 : }
414 0 : next_after_fail164:;
415 0 : return NULL_TREE;
416 : }
417 :
418 : tree
419 18804 : generic_simplify_77 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
420 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
421 : const enum tree_code ARG_UNUSED (op))
422 : {
423 18804 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
424 18804 : if (flag_unsafe_math_optimizations
425 : )
426 : {
427 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail168;
428 12 : {
429 12 : tree res_op0;
430 12 : {
431 12 : tree _o1[2], _r1;
432 12 : _o1[0] = captures[0];
433 12 : _o1[1] = captures[2];
434 12 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
435 12 : res_op0 = _r1;
436 : }
437 12 : tree res_op1;
438 12 : res_op1 = captures[1];
439 12 : tree _r;
440 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
441 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 136, __FILE__, __LINE__, true);
442 12 : return _r;
443 : }
444 0 : next_after_fail168:;
445 : }
446 : return NULL_TREE;
447 : }
448 :
449 : tree
450 0 : generic_simplify_83 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
451 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
452 : const enum tree_code ARG_UNUSED (op))
453 : {
454 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
455 0 : if (VECTOR_FLOAT_TYPE_P (type)
456 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
457 : )
458 : {
459 0 : {
460 0 : tree perm_cst = captures[1];
461 0 : vec_perm_builder builder;
462 0 : bool full_perm_p = false;
463 0 : if (tree_to_vec_perm_builder (&builder, perm_cst))
464 : {
465 0 : unsigned HOST_WIDE_INT nelts;
466 0 : nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
467 0 : vec_perm_indices sel (builder, 1, nelts);
468 0 : if (sel.encoding ().encoded_full_vector_p ())
469 : {
470 0 : auto_sbitmap seen (nelts);
471 0 : bitmap_clear (seen);
472 0 : unsigned HOST_WIDE_INT count = 0, i;
473 0 : for (i = 0; i < nelts; i++)
474 : {
475 0 : if (!bitmap_set_bit (seen, sel[i].to_constant ()))
476 : break;
477 0 : count++;
478 : }
479 0 : full_perm_p = count == nelts;
480 0 : }
481 0 : }
482 0 : if (full_perm_p
483 : )
484 : {
485 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail174;
486 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail174;
487 0 : {
488 0 : tree res_op0;
489 0 : {
490 0 : tree _o1[2], _r1;
491 0 : _o1[0] = captures[0];
492 0 : _o1[1] = captures[2];
493 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
494 0 : captures[3] = _r1;
495 : }
496 0 : res_op0 = unshare_expr (captures[3]);
497 0 : tree res_op1;
498 0 : res_op1 = captures[3];
499 0 : tree res_op2;
500 0 : res_op2 = captures[1];
501 0 : tree _r;
502 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
503 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 142, __FILE__, __LINE__, true);
504 0 : return _r;
505 : }
506 0 : next_after_fail174:;
507 : }
508 0 : }
509 : }
510 : return NULL_TREE;
511 : }
512 :
513 : tree
514 39730 : generic_simplify_96 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
515 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
516 : {
517 39730 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
518 39730 : if (!TYPE_SATURATING (type)
519 : )
520 : {
521 39730 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
522 79460 : && !FIXED_POINT_TYPE_P (type)
523 : )
524 : {
525 0 : if (!ANY_INTEGRAL_TYPE_P (type)
526 39730 : || TYPE_OVERFLOW_WRAPS (type)
527 : )
528 : {
529 35968 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail188;
530 35968 : {
531 35968 : tree res_op0;
532 35968 : {
533 35968 : tree _o1[1], _r1;
534 35968 : _o1[0] = captures[1];
535 35968 : if (TREE_TYPE (_o1[0]) != type)
536 : {
537 192 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
538 : }
539 : else
540 : _r1 = _o1[0];
541 35968 : res_op0 = _r1;
542 : }
543 35968 : tree _r;
544 35968 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
545 35968 : if (TREE_SIDE_EFFECTS (captures[0]))
546 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
547 35968 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 155, __FILE__, __LINE__, true);
548 35968 : return _r;
549 : }
550 0 : next_after_fail188:;
551 : }
552 : else
553 : {
554 3762 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail189;
555 3762 : {
556 3762 : tree res_op0;
557 3762 : {
558 3762 : tree _o1[1], _r1;
559 3762 : _o1[0] = captures[1];
560 3762 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
561 3762 : res_op0 = _r1;
562 : }
563 3762 : tree _r;
564 3762 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
565 3762 : if (TREE_SIDE_EFFECTS (captures[0]))
566 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
567 3762 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 156, __FILE__, __LINE__, true);
568 3762 : return _r;
569 : }
570 0 : next_after_fail189:;
571 : }
572 : }
573 : }
574 : return NULL_TREE;
575 : }
576 :
577 : tree
578 36 : generic_simplify_109 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
579 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
580 : const enum tree_code ARG_UNUSED (bitop),
581 : const enum tree_code ARG_UNUSED (cmp))
582 : {
583 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
584 72 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
585 36 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
586 72 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
587 : )
588 : {
589 36 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail206;
590 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail206;
591 36 : {
592 36 : tree res_op0;
593 36 : {
594 36 : tree _o1[2], _r1;
595 36 : _o1[0] = captures[0];
596 36 : {
597 36 : tree _o2[1], _r2;
598 36 : _o2[0] = captures[2];
599 36 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
600 : {
601 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
602 : }
603 : else
604 : _r2 = _o2[0];
605 36 : _o1[1] = _r2;
606 : }
607 36 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
608 36 : res_op0 = _r1;
609 : }
610 36 : tree res_op1;
611 36 : res_op1 = captures[1];
612 36 : tree _r;
613 36 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
614 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 173, __FILE__, __LINE__, true);
615 36 : return _r;
616 : }
617 : next_after_fail206:;
618 : }
619 : return NULL_TREE;
620 : }
621 :
622 : tree
623 0 : generic_simplify_118 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
624 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
625 : const enum tree_code ARG_UNUSED (op))
626 : {
627 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
628 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail215;
629 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail215;
630 0 : {
631 0 : tree _r;
632 0 : _r = captures[0];
633 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 181, __FILE__, __LINE__, true);
634 : return _r;
635 : }
636 : next_after_fail215:;
637 : return NULL_TREE;
638 : }
639 :
640 : tree
641 0 : generic_simplify_125 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
642 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
643 : {
644 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
645 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
646 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
647 : )
648 : {
649 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail222;
650 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail222;
651 0 : {
652 0 : tree _r;
653 0 : _r = captures[2];
654 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 183, __FILE__, __LINE__, true);
655 0 : return _r;
656 : }
657 : next_after_fail222:;
658 : }
659 : return NULL_TREE;
660 : }
661 :
662 : tree
663 0 : generic_simplify_136 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
664 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
665 : const enum tree_code ARG_UNUSED (op))
666 : {
667 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
668 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
669 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
670 : )
671 : {
672 0 : if (single_use (captures[4]) && single_use (captures[5])
673 : )
674 : {
675 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail234;
676 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail234;
677 0 : {
678 0 : tree res_op0;
679 0 : res_op0 = captures[0];
680 0 : tree res_op1;
681 0 : {
682 0 : tree _o1[1], _r1;
683 0 : _o1[0] = captures[6];
684 0 : if (TREE_TYPE (_o1[0]) != type)
685 : {
686 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
687 : }
688 : else
689 : _r1 = _o1[0];
690 0 : res_op1 = _r1;
691 : }
692 0 : tree _r;
693 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 192, __FILE__, __LINE__, true);
695 0 : return _r;
696 : }
697 : next_after_fail234:;
698 : }
699 : else
700 : {
701 : if (single_use (captures[0]) && single_use (captures[1])
702 : )
703 : {
704 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail235;
705 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail235;
706 : {
707 : tree res_op0;
708 : {
709 : tree _o1[1], _r1;
710 : _o1[0] = captures[3];
711 : if (TREE_TYPE (_o1[0]) != type)
712 : {
713 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
714 : }
715 : else
716 : _r1 = _o1[0];
717 : res_op0 = _r1;
718 : }
719 : tree res_op1;
720 : res_op1 = captures[4];
721 : tree _r;
722 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
723 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 193, __FILE__, __LINE__, true);
724 : return _r;
725 : }
726 : next_after_fail235:;
727 : }
728 : }
729 : }
730 : return NULL_TREE;
731 : }
732 :
733 : tree
734 0 : generic_simplify_150 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
735 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
736 : const enum tree_code ARG_UNUSED (cmp),
737 : const enum tree_code ARG_UNUSED (icmp))
738 : {
739 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
740 0 : if (INTEGRAL_TYPE_P (type)
741 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
742 0 : && canonicalize_math_after_vectorization_p ()
743 : )
744 : {
745 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail252;
746 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail252;
747 : {
748 : tree res_op0;
749 : {
750 : tree _o1[3], _r1;
751 : _o1[0] = captures[0];
752 : _o1[1] = captures[3];
753 : _o1[2] = captures[5];
754 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
755 : res_op0 = _r1;
756 : }
757 : tree res_op1;
758 : res_op1 = build_one_cst (type);
759 : tree _r;
760 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
761 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 201, __FILE__, __LINE__, true);
762 : return _r;
763 : }
764 0 : next_after_fail252:;
765 : }
766 0 : return NULL_TREE;
767 : }
768 :
769 : tree
770 0 : generic_simplify_162 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
771 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
772 : {
773 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
774 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail285;
775 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail285;
776 0 : {
777 0 : tree _r;
778 0 : _r = constant_boolean_node (true, type);
779 0 : if (TREE_SIDE_EFFECTS (captures[1]))
780 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
781 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 226, __FILE__, __LINE__, true);
782 : return _r;
783 : }
784 : next_after_fail285:;
785 : return NULL_TREE;
786 : }
787 :
788 : tree
789 417 : generic_simplify_166 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
790 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
791 : const enum tree_code ARG_UNUSED (code2),
792 : const enum tree_code ARG_UNUSED (code1))
793 : {
794 417 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
795 417 : if ((TREE_CODE (captures[2]) == INTEGER_CST
796 393 : && TREE_CODE (captures[5]) == INTEGER_CST)
797 417 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
798 1 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
799 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
800 24 : && bitwise_equal_p (captures[2], captures[5]))
801 : )
802 : {
803 393 : {
804 393 : bool one_before = false;
805 393 : bool one_after = false;
806 393 : int cmp = 0;
807 393 : bool allbits = true;
808 393 : if (TREE_CODE (captures[2]) == INTEGER_CST
809 393 : && TREE_CODE (captures[5]) == INTEGER_CST)
810 : {
811 393 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
812 393 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
813 393 : auto t2 = wi::to_wide (captures[5]);
814 393 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
815 393 : if (cmp < 0
816 393 : && t1 == t2 - 1)
817 : one_before = true;
818 393 : if (cmp > 0
819 393 : && t1 == t2 + 1)
820 : one_after = true;
821 : }
822 393 : bool val;
823 393 : switch (code2)
824 : {
825 384 : case EQ_EXPR: val = (cmp == 0); break;
826 0 : case NE_EXPR: val = (cmp != 0); break;
827 0 : case LT_EXPR: val = (cmp < 0); break;
828 9 : case GT_EXPR: val = (cmp > 0); break;
829 0 : case LE_EXPR: val = (cmp <= 0); break;
830 0 : case GE_EXPR: val = (cmp >= 0); break;
831 0 : default: gcc_unreachable ();
832 : }
833 393 : if (code1 == EQ_EXPR && val
834 : )
835 : {
836 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail296;
837 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail296;
838 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail296;
839 0 : {
840 0 : tree _r;
841 0 : _r = captures[3];
842 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 210, __FILE__, __LINE__, true);
843 0 : return _r;
844 : }
845 : next_after_fail296:;
846 : }
847 : else
848 : {
849 393 : if (code1 == NE_EXPR && val && allbits
850 : )
851 : {
852 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail297;
853 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail297;
854 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail297;
855 0 : {
856 0 : tree _r;
857 0 : _r = constant_boolean_node (true, type);
858 0 : if (TREE_SIDE_EFFECTS (captures[4]))
859 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
861 0 : return _r;
862 : }
863 : next_after_fail297:;
864 : }
865 : else
866 : {
867 393 : if (code1 == NE_EXPR && !val && allbits
868 : )
869 : {
870 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail298;
871 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail298;
872 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail298;
873 0 : {
874 0 : tree _r;
875 0 : _r = captures[0];
876 0 : if (TREE_SIDE_EFFECTS (captures[4]))
877 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
878 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
879 0 : return _r;
880 : }
881 : next_after_fail298:;
882 : }
883 : else
884 : {
885 393 : if (code1 == EQ_EXPR
886 393 : && code2 == GT_EXPR
887 9 : && cmp == 0
888 9 : && allbits
889 393 : && ((VECTOR_BOOLEAN_TYPE_P (type)
890 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
891 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
892 : )
893 : {
894 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail299;
895 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail299;
896 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail299;
897 0 : {
898 0 : tree res_op0;
899 0 : res_op0 = captures[4];
900 0 : tree res_op1;
901 0 : res_op1 = captures[5];
902 0 : tree _r;
903 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
904 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
905 0 : return _r;
906 : }
907 : next_after_fail299:;
908 : }
909 : else
910 : {
911 393 : if (code1 == EQ_EXPR
912 393 : && code2 == LT_EXPR
913 0 : && cmp == 0
914 0 : && allbits
915 393 : && ((VECTOR_BOOLEAN_TYPE_P (type)
916 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
917 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
918 : )
919 : {
920 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail300;
921 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail300;
922 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail300;
923 0 : {
924 0 : tree res_op0;
925 0 : res_op0 = captures[4];
926 0 : tree res_op1;
927 0 : res_op1 = captures[5];
928 0 : tree _r;
929 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
930 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
931 0 : return _r;
932 : }
933 : next_after_fail300:;
934 : }
935 : else
936 : {
937 393 : if (code1 == EQ_EXPR
938 393 : && code2 == GE_EXPR
939 : && one_before
940 0 : && allbits
941 393 : && ((VECTOR_BOOLEAN_TYPE_P (type)
942 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
943 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
944 : )
945 : {
946 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail301;
947 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail301;
948 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail301;
949 0 : {
950 0 : tree res_op0;
951 0 : res_op0 = captures[4];
952 0 : tree res_op1;
953 0 : {
954 0 : tree _o1[1], _r1;
955 0 : _o1[0] = captures[2];
956 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
957 : {
958 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
959 : }
960 : else
961 : _r1 = _o1[0];
962 0 : res_op1 = _r1;
963 : }
964 0 : tree _r;
965 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
966 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
967 0 : return _r;
968 : }
969 : next_after_fail301:;
970 : }
971 : else
972 : {
973 393 : if (code1 == EQ_EXPR
974 393 : && code2 == LE_EXPR
975 : && one_after
976 0 : && allbits
977 393 : && ((VECTOR_BOOLEAN_TYPE_P (type)
978 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
979 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
980 : )
981 : {
982 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail302;
983 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail302;
984 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail302;
985 0 : {
986 0 : tree res_op0;
987 0 : res_op0 = captures[4];
988 0 : tree res_op1;
989 0 : {
990 0 : tree _o1[1], _r1;
991 0 : _o1[0] = captures[2];
992 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
993 : {
994 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
995 : }
996 : else
997 : _r1 = _o1[0];
998 0 : res_op1 = _r1;
999 : }
1000 0 : tree _r;
1001 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1002 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
1003 0 : return _r;
1004 : }
1005 : next_after_fail302:;
1006 : }
1007 : }
1008 : }
1009 : }
1010 : }
1011 : }
1012 : }
1013 : }
1014 : }
1015 : return NULL_TREE;
1016 : }
1017 :
1018 : tree
1019 29 : generic_simplify_211 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1020 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1021 : const enum tree_code ARG_UNUSED (cmp),
1022 : const enum tree_code ARG_UNUSED (icmp))
1023 : {
1024 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1025 58 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1026 29 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1027 13 : && type_has_mode_precision_p (TREE_TYPE (captures[0]))
1028 13 : && types_match (captures[0], captures[2])
1029 13 : && tree_fits_shwi_p (captures[1])
1030 13 : && tree_to_shwi (captures[1]) > 0
1031 42 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
1032 : )
1033 : {
1034 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail354;
1035 13 : {
1036 13 : tree res_op0;
1037 13 : {
1038 13 : tree _o1[2], _r1;
1039 13 : _o1[0] = captures[0];
1040 13 : _o1[1] = captures[2];
1041 13 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1042 13 : res_op0 = _r1;
1043 : }
1044 13 : tree res_op1;
1045 13 : {
1046 13 : tree _o1[2], _r1;
1047 13 : _o1[0] = build_one_cst (TREE_TYPE (captures[0]));
1048 13 : _o1[1] = captures[1];
1049 13 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1050 13 : res_op1 = _r1;
1051 : }
1052 13 : tree _r;
1053 13 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1054 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 268, __FILE__, __LINE__, true);
1055 13 : return _r;
1056 : }
1057 0 : next_after_fail354:;
1058 : }
1059 : return NULL_TREE;
1060 : }
1061 :
1062 : tree
1063 43 : generic_simplify_219 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1064 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1065 : const enum tree_code ARG_UNUSED (op))
1066 : {
1067 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1068 43 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
1069 : )
1070 : {
1071 43 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail375;
1072 43 : {
1073 43 : tree res_op0;
1074 43 : res_op0 = captures[1];
1075 43 : tree res_op1;
1076 43 : res_op1 = captures[3];
1077 43 : tree _r;
1078 43 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1079 43 : if (TREE_SIDE_EFFECTS (captures[2]))
1080 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1081 43 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 289, __FILE__, __LINE__, true);
1082 43 : return _r;
1083 : }
1084 0 : next_after_fail375:;
1085 : }
1086 : return NULL_TREE;
1087 : }
1088 :
1089 : tree
1090 0 : generic_simplify_227 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1091 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1092 : const enum tree_code ARG_UNUSED (cmp1),
1093 : const enum tree_code ARG_UNUSED (cmp2),
1094 : const enum tree_code ARG_UNUSED (rcmp))
1095 : {
1096 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1097 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1098 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
1099 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
1100 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
1101 : )
1102 : {
1103 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail383;
1104 0 : {
1105 0 : tree res_op0;
1106 0 : res_op0 = captures[0];
1107 0 : tree res_op1;
1108 0 : res_op1 = captures[1];
1109 0 : tree _r;
1110 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
1111 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 296, __FILE__, __LINE__, true);
1112 0 : return _r;
1113 : }
1114 0 : next_after_fail383:;
1115 : }
1116 : return NULL_TREE;
1117 : }
1118 :
1119 : tree
1120 2 : generic_simplify_235 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1121 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1122 : const enum tree_code ARG_UNUSED (cmp),
1123 : const enum tree_code ARG_UNUSED (icmp))
1124 : {
1125 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1126 2 : if (tree_int_cst_sgn (captures[0]) > 0
1127 : )
1128 : {
1129 2 : {
1130 2 : int c1 = wi::clz (wi::to_wide (captures[0]));
1131 2 : int c2 = wi::clz (wi::to_wide (captures[2]));
1132 2 : if (c1 > c2
1133 : )
1134 : {
1135 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail395;
1136 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail395;
1137 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail395;
1138 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail395;
1139 0 : {
1140 0 : tree _r;
1141 0 : _r = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
1142 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1143 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1144 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 308, __FILE__, __LINE__, true);
1145 0 : return _r;
1146 : }
1147 : next_after_fail395:;
1148 : }
1149 : else
1150 : {
1151 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail396;
1152 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail396;
1153 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail396;
1154 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail396;
1155 2 : {
1156 2 : tree res_op0;
1157 2 : res_op0 = captures[1];
1158 2 : tree res_op1;
1159 2 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c2 - c1);
1160 2 : tree _r;
1161 2 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1162 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 309, __FILE__, __LINE__, true);
1163 2 : return _r;
1164 : }
1165 : next_after_fail396:;
1166 : }
1167 : }
1168 : }
1169 : return NULL_TREE;
1170 : }
1171 :
1172 : tree
1173 179 : generic_simplify_244 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1174 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1175 : const enum tree_code ARG_UNUSED (cmp),
1176 : const enum tree_code ARG_UNUSED (icmp),
1177 : const enum tree_code ARG_UNUSED (ncmp))
1178 : {
1179 179 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1180 179 : if (types_match (type, TREE_TYPE (captures[0]))
1181 : )
1182 : {
1183 125 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail412;
1184 125 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail412;
1185 125 : {
1186 125 : tree res_op0;
1187 125 : res_op0 = captures[1];
1188 125 : tree res_op1;
1189 125 : res_op1 = captures[2];
1190 125 : tree _r;
1191 125 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1192 125 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 325, __FILE__, __LINE__, true);
1193 125 : return _r;
1194 : }
1195 : next_after_fail412:;
1196 : }
1197 : return NULL_TREE;
1198 : }
1199 :
1200 : tree
1201 45029480 : generic_simplify_251 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1202 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1203 : const enum tree_code ARG_UNUSED (cmp))
1204 : {
1205 45029480 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1206 45029480 : {
1207 45029480 : bool wascmp;
1208 45029480 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1209 45029480 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
1210 : )
1211 : {
1212 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail425;
1213 5 : {
1214 5 : tree _r;
1215 5 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1216 5 : if (TREE_SIDE_EFFECTS (captures[0]))
1217 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1218 5 : if (TREE_SIDE_EFFECTS (captures[1]))
1219 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1220 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 337, __FILE__, __LINE__, true);
1221 5 : return _r;
1222 : }
1223 0 : next_after_fail425:;
1224 : }
1225 : }
1226 45029475 : return NULL_TREE;
1227 : }
1228 :
1229 : tree
1230 8847 : generic_simplify_256 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1231 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1232 : const enum tree_code ARG_UNUSED (op),
1233 : const enum tree_code ARG_UNUSED (cmp))
1234 : {
1235 8847 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1236 8847 : if (flag_unsafe_math_optimizations
1237 : )
1238 : {
1239 5 : {
1240 8 : tree tem = const_binop (op == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR,
1241 5 : TREE_TYPE (captures[1]), captures[2], captures[1]);
1242 5 : if (tem && !TREE_OVERFLOW (tem)
1243 : )
1244 : {
1245 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail444;
1246 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail444;
1247 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail444;
1248 4 : {
1249 4 : tree res_op0;
1250 4 : res_op0 = captures[0];
1251 4 : tree res_op1;
1252 4 : res_op1 = tem;
1253 4 : tree _r;
1254 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1255 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 355, __FILE__, __LINE__, true);
1256 4 : return _r;
1257 : }
1258 : next_after_fail444:;
1259 : }
1260 : }
1261 : }
1262 : return NULL_TREE;
1263 : }
1264 :
1265 : tree
1266 69 : generic_simplify_262 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1267 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1268 : const enum tree_code ARG_UNUSED (cmp))
1269 : {
1270 69 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1271 69 : if (!integer_zerop (captures[1])
1272 : )
1273 : {
1274 69 : if (wi::to_wide (captures[2]) == 0
1275 : )
1276 : {
1277 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail475;
1278 22 : {
1279 22 : tree res_op0;
1280 22 : res_op0 = captures[0];
1281 22 : tree res_op1;
1282 22 : res_op1 = captures[2];
1283 22 : tree _r;
1284 22 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1285 22 : if (TREE_SIDE_EFFECTS (captures[1]))
1286 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1287 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 386, __FILE__, __LINE__, true);
1288 22 : return _r;
1289 : }
1290 0 : next_after_fail475:;
1291 : }
1292 : else
1293 : {
1294 47 : if (TREE_CODE (captures[1]) == INTEGER_CST
1295 : )
1296 : {
1297 47 : {
1298 47 : wi::overflow_type ovf;
1299 47 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
1300 94 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
1301 47 : if (ovf
1302 : )
1303 : {
1304 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail476;
1305 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail476;
1306 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail476;
1307 0 : {
1308 0 : tree _r;
1309 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1310 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1311 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1312 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 387, __FILE__, __LINE__, true);
1313 0 : return _r;
1314 : }
1315 0 : next_after_fail476:;
1316 : }
1317 : else
1318 : {
1319 47 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail477;
1320 47 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail477;
1321 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail477;
1322 47 : {
1323 47 : tree res_op0;
1324 47 : res_op0 = captures[0];
1325 47 : tree res_op1;
1326 47 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
1327 47 : tree _r;
1328 47 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1329 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 388, __FILE__, __LINE__, true);
1330 47 : return _r;
1331 : }
1332 0 : next_after_fail477:;
1333 : }
1334 47 : }
1335 : }
1336 : }
1337 : }
1338 : return NULL_TREE;
1339 : }
1340 :
1341 : tree
1342 25296 : generic_simplify_269 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1343 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1344 : const enum tree_code ARG_UNUSED (cmp))
1345 : {
1346 25296 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1347 25296 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail499;
1348 25296 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail499;
1349 25296 : {
1350 25296 : tree res_op0;
1351 25296 : res_op0 = captures[0];
1352 25296 : tree res_op1;
1353 25296 : res_op1 = captures[1];
1354 25296 : tree _r;
1355 25296 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1356 25296 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 403, __FILE__, __LINE__, true);
1357 : return _r;
1358 : }
1359 : next_after_fail499:;
1360 : return NULL_TREE;
1361 : }
1362 :
1363 : tree
1364 145541 : generic_simplify_271 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1365 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1366 : const enum tree_code ARG_UNUSED (cmp))
1367 : {
1368 145541 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1369 145541 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail501;
1370 145541 : {
1371 145541 : tree res_op0;
1372 145541 : {
1373 145541 : tree _o1[2], _r1;
1374 145541 : _o1[0] = captures[0];
1375 145541 : {
1376 145541 : tree _o2[1], _r2;
1377 145541 : _o2[0] = captures[1];
1378 145541 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1379 145541 : if (EXPR_P (_r2))
1380 145512 : goto next_after_fail501;
1381 29 : _o1[1] = _r2;
1382 : }
1383 29 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1384 29 : res_op0 = _r1;
1385 : }
1386 29 : tree res_op1;
1387 29 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1388 29 : tree _r;
1389 29 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1390 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 405, __FILE__, __LINE__, true);
1391 : return _r;
1392 : }
1393 : next_after_fail501:;
1394 : return NULL_TREE;
1395 : }
1396 :
1397 : tree
1398 29129137 : generic_simplify_275 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1399 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1400 : const enum tree_code ARG_UNUSED (cmp))
1401 : {
1402 29129137 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1403 29129137 : if (tree_expr_nonzero_p (captures[0])
1404 : )
1405 : {
1406 1286829 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail505;
1407 1286829 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail505;
1408 1286829 : {
1409 1286829 : tree _r;
1410 1286829 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1411 1286829 : if (TREE_SIDE_EFFECTS (captures[0]))
1412 7786 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1413 1286829 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 409, __FILE__, __LINE__, true);
1414 1286829 : return _r;
1415 : }
1416 : next_after_fail505:;
1417 : }
1418 : return NULL_TREE;
1419 : }
1420 :
1421 : tree
1422 81 : generic_simplify_280 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1423 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1424 : const enum tree_code ARG_UNUSED (sgncmp),
1425 : const enum tree_code ARG_UNUSED (cmp),
1426 : const enum tree_code ARG_UNUSED (ncmp))
1427 : {
1428 81 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1429 162 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1430 81 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1431 162 : && types_match (captures[0], captures[2])
1432 : )
1433 : {
1434 81 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail510;
1435 81 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail510;
1436 81 : {
1437 81 : tree res_op0;
1438 81 : {
1439 81 : tree _o1[2], _r1;
1440 81 : _o1[0] = captures[0];
1441 81 : _o1[1] = captures[2];
1442 81 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1443 81 : res_op0 = _r1;
1444 : }
1445 81 : tree res_op1;
1446 81 : res_op1 = captures[1];
1447 81 : tree _r;
1448 81 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1449 81 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 413, __FILE__, __LINE__, true);
1450 81 : return _r;
1451 : }
1452 : next_after_fail510:;
1453 : }
1454 : return NULL_TREE;
1455 : }
1456 :
1457 : tree
1458 52262800 : generic_simplify_286 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1459 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1460 : const enum tree_code ARG_UNUSED (neeq))
1461 : {
1462 52262800 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1463 93185056 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
1464 52273166 : && ptrs_compare_unequal (captures[0], captures[1])
1465 : )
1466 : {
1467 12773 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail530;
1468 12773 : {
1469 12773 : tree _r;
1470 12773 : _r = constant_boolean_node (neeq != EQ_EXPR, type);
1471 12773 : if (TREE_SIDE_EFFECTS (captures[0]))
1472 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1473 12773 : if (TREE_SIDE_EFFECTS (captures[1]))
1474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1475 12773 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1476 12773 : return _r;
1477 : }
1478 0 : next_after_fail530:;
1479 : }
1480 : return NULL_TREE;
1481 : }
1482 :
1483 : tree
1484 1049460 : generic_simplify_290 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1485 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1486 : const enum tree_code ARG_UNUSED (op),
1487 : const enum tree_code ARG_UNUSED (rop),
1488 : const enum tree_code ARG_UNUSED (cmp))
1489 : {
1490 1049460 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1491 2098920 : if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3])
1492 1049460 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1493 1049147 : && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[1]))
1494 2098463 : && !TYPE_SATURATING (TREE_TYPE (captures[1]))
1495 : )
1496 : {
1497 1049003 : {
1498 1049003 : tree res = int_const_binop (rop, captures[3], captures[2]);
1499 1049003 : if (TREE_OVERFLOW (res)
1500 1049003 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1501 : )
1502 : {
1503 7583 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail538;
1504 7583 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail538;
1505 7583 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail538;
1506 7583 : {
1507 7583 : tree _r;
1508 7583 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1509 7583 : if (TREE_SIDE_EFFECTS (captures[1]))
1510 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1511 7583 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 432, __FILE__, __LINE__, true);
1512 7583 : return _r;
1513 : }
1514 : next_after_fail538:;
1515 : }
1516 : else
1517 : {
1518 1041420 : if (single_use (captures[0]) || wi::to_wide (res) == 0
1519 : )
1520 : {
1521 1041420 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail539;
1522 1041420 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail539;
1523 1041420 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail539;
1524 1041420 : {
1525 1041420 : tree res_op0;
1526 1041420 : res_op0 = captures[1];
1527 1041420 : tree res_op1;
1528 1041420 : res_op1 = TREE_OVERFLOW (res)
1529 1041420 : ? drop_tree_overflow (res) : res;
1530 1041420 : tree _r;
1531 1041420 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1532 1041420 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 433, __FILE__, __LINE__, true);
1533 1041420 : return _r;
1534 : }
1535 : next_after_fail539:;
1536 : }
1537 : }
1538 : }
1539 : }
1540 : return NULL_TREE;
1541 : }
1542 :
1543 : tree
1544 0 : generic_simplify_293 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1545 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1546 : const enum tree_code ARG_UNUSED (op),
1547 : const enum tree_code ARG_UNUSED (cmp))
1548 : {
1549 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1550 0 : if (integer_zerop (captures[3]) && single_use (captures[0])
1551 : )
1552 : {
1553 0 : {
1554 0 : tree type0 = TREE_TYPE (captures[1]);
1555 0 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1556 0 : if (integer_zerop (captures[2]))
1557 : stype = NULL_TREE;
1558 0 : if (stype
1559 : )
1560 : {
1561 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail551;
1562 0 : {
1563 0 : tree res_op0;
1564 0 : {
1565 0 : tree _o1[1], _r1;
1566 0 : _o1[0] = captures[1];
1567 0 : if (TREE_TYPE (_o1[0]) != stype)
1568 : {
1569 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1570 : }
1571 : else
1572 : _r1 = _o1[0];
1573 0 : res_op0 = _r1;
1574 : }
1575 0 : tree res_op1;
1576 0 : res_op1 = build_zero_cst (stype);
1577 0 : tree _r;
1578 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1579 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1580 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1581 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1582 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1583 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 445, __FILE__, __LINE__, true);
1584 0 : return _r;
1585 : }
1586 0 : next_after_fail551:;
1587 : }
1588 : }
1589 : }
1590 : else
1591 : {
1592 0 : {
1593 0 : bool ok = true;
1594 0 : tree type0 = TREE_TYPE (captures[1]);
1595 0 : if (wi::to_widest (captures[2]) == TYPE_PRECISION (type0) - 1)
1596 : ok = false;
1597 0 : if (ok && wi::to_wide (captures[3]) == (TYPE_PRECISION (type0) - 1)
1598 : )
1599 : {
1600 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail552;
1601 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail552;
1602 0 : {
1603 0 : tree res_op0;
1604 0 : res_op0 = captures[1];
1605 0 : tree res_op1;
1606 0 : res_op1 = build_one_cst (type0);
1607 0 : tree _r;
1608 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1609 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1610 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1611 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 446, __FILE__, __LINE__, true);
1612 0 : return _r;
1613 : }
1614 : next_after_fail552:;
1615 : }
1616 : }
1617 : }
1618 : return NULL_TREE;
1619 : }
1620 :
1621 : tree
1622 0 : generic_simplify_302 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1623 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1624 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1625 : {
1626 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1627 0 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[0]))
1628 : )
1629 : {
1630 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail566;
1631 0 : {
1632 0 : tree res_op0;
1633 0 : {
1634 0 : tree _o1[1], _r1;
1635 0 : _o1[0] = captures[0];
1636 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1637 0 : res_op0 = _r1;
1638 : }
1639 0 : tree res_op1;
1640 0 : res_op1 = captures[1];
1641 0 : tree _r;
1642 0 : _r = maybe_build_call_expr_loc (loc, COPYSIGN_ALL, type, 2, res_op0, res_op1);
1643 0 : if (!_r)
1644 0 : goto next_after_fail566;
1645 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 460, __FILE__, __LINE__, true);
1646 0 : return _r;
1647 : }
1648 : next_after_fail566:;
1649 : }
1650 : return NULL_TREE;
1651 : }
1652 :
1653 : tree
1654 23 : generic_simplify_309 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1655 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1656 : const enum tree_code ARG_UNUSED (div))
1657 : {
1658 23 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1659 30 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1660 16 : && (!VECTOR_TYPE_P (type)
1661 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1662 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1663 39 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1664 7 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1665 7 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1666 14 : || (element_precision (type)
1667 7 : == element_precision (TREE_TYPE (captures[2])))
1668 7 : || (INTEGRAL_TYPE_P (type)
1669 14 : && (tree_nonzero_bits (captures[0])
1670 44 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1671 : true,
1672 37 : element_precision (type))) == 0))))
1673 : )
1674 : {
1675 9 : if (!VECTOR_TYPE_P (type)
1676 9 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1677 18 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1678 : )
1679 : {
1680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail574;
1681 0 : {
1682 0 : tree res_op0;
1683 0 : {
1684 0 : tree _o1[2], _r1;
1685 0 : _o1[0] = captures[1];
1686 0 : _o1[1] = captures[3];
1687 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1688 0 : res_op0 = _r1;
1689 : }
1690 0 : tree _r;
1691 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1692 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1693 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 466, __FILE__, __LINE__, true);
1695 0 : return _r;
1696 : }
1697 0 : next_after_fail574:;
1698 : }
1699 : else
1700 : {
1701 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail575;
1702 9 : {
1703 9 : tree res_op0;
1704 9 : res_op0 = captures[0];
1705 9 : tree res_op1;
1706 9 : res_op1 = captures[3];
1707 9 : tree _r;
1708 9 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1709 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1710 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1711 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 467, __FILE__, __LINE__, true);
1712 9 : return _r;
1713 : }
1714 0 : next_after_fail575:;
1715 : }
1716 : }
1717 : return NULL_TREE;
1718 : }
1719 :
1720 : tree
1721 7188 : generic_simplify_327 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1722 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1723 : const enum tree_code ARG_UNUSED (mod))
1724 : {
1725 7188 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1726 0 : if (ANY_INTEGRAL_TYPE_P (type)
1727 7188 : && TYPE_OVERFLOW_UNDEFINED (type)
1728 14376 : && wi::multiple_of_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1729 195 : TYPE_SIGN (type))
1730 : )
1731 : {
1732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail594;
1733 0 : {
1734 0 : tree _r;
1735 0 : _r = build_zero_cst (type);
1736 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1737 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1738 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1739 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1740 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1741 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1742 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 486, __FILE__, __LINE__, true);
1743 0 : return _r;
1744 : }
1745 0 : next_after_fail594:;
1746 : }
1747 : return NULL_TREE;
1748 : }
1749 :
1750 : tree
1751 24 : generic_simplify_339 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1752 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1753 : const combined_fn ARG_UNUSED (POW))
1754 : {
1755 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1756 24 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1757 : )
1758 : {
1759 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail608;
1760 6 : {
1761 6 : tree res_op0;
1762 6 : res_op0 = captures[0];
1763 6 : tree res_op1;
1764 6 : {
1765 6 : tree _o1[2], _r1;
1766 6 : _o1[0] = captures[2];
1767 6 : {
1768 6 : tree _o2[1], _r2;
1769 6 : _o2[0] = captures[3];
1770 6 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1771 6 : _o1[1] = _r2;
1772 : }
1773 6 : _r1 = maybe_build_call_expr_loc (loc, POW, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
1774 6 : if (!_r1)
1775 0 : goto next_after_fail608;
1776 6 : res_op1 = _r1;
1777 : }
1778 6 : tree _r;
1779 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1780 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 500, __FILE__, __LINE__, true);
1781 6 : return _r;
1782 : }
1783 : next_after_fail608:;
1784 : }
1785 : return NULL_TREE;
1786 : }
1787 :
1788 : tree
1789 0 : generic_simplify_348 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1790 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1791 : const enum tree_code ARG_UNUSED (cmp))
1792 : {
1793 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1794 0 : if (INTEGRAL_TYPE_P (type)
1795 : )
1796 : {
1797 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail623;
1798 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail623;
1799 0 : {
1800 0 : tree _r;
1801 0 : _r = captures[2];
1802 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1803 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1804 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 515, __FILE__, __LINE__, true);
1805 0 : return _r;
1806 : }
1807 : next_after_fail623:;
1808 : }
1809 : return NULL_TREE;
1810 : }
1811 :
1812 : tree
1813 0 : generic_simplify_351 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1814 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1815 : const enum tree_code ARG_UNUSED (op))
1816 : {
1817 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1818 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail626;
1819 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail626;
1820 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
1821 0 : {
1822 0 : tree _r;
1823 0 : _r = captures[2];
1824 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 518, __FILE__, __LINE__, true);
1825 : return _r;
1826 : }
1827 : next_after_fail626:;
1828 : return NULL_TREE;
1829 : }
1830 :
1831 : tree
1832 0 : generic_simplify_355 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1833 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1834 : const enum tree_code ARG_UNUSED (op))
1835 : {
1836 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1837 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail630;
1838 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail630;
1839 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail630;
1840 0 : {
1841 0 : tree _r;
1842 0 : _r = captures[2];
1843 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 522, __FILE__, __LINE__, true);
1844 : return _r;
1845 : }
1846 : next_after_fail630:;
1847 : return NULL_TREE;
1848 : }
1849 :
1850 : tree
1851 0 : generic_simplify_362 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1852 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1853 : {
1854 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1855 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail637;
1856 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail637;
1857 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail637;
1858 0 : {
1859 0 : tree _r;
1860 0 : _r = captures[2];
1861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 529, __FILE__, __LINE__, true);
1862 : return _r;
1863 : }
1864 : next_after_fail637:;
1865 : return NULL_TREE;
1866 : }
1867 :
1868 : tree
1869 3 : generic_simplify_369 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1870 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1871 : const combined_fn ARG_UNUSED (func))
1872 : {
1873 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1874 3 : if (wi::to_widest (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[3])) - 1
1875 : )
1876 : {
1877 3 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail645;
1878 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail645;
1879 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail645;
1880 3 : {
1881 3 : tree _r;
1882 3 : _r = captures[2];
1883 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1884 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1885 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
1886 3 : return _r;
1887 : }
1888 : next_after_fail645:;
1889 : }
1890 : return NULL_TREE;
1891 : }
1892 :
1893 : tree
1894 161404 : generic_simplify_377 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1895 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1896 : const enum tree_code ARG_UNUSED (op))
1897 : {
1898 161404 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1899 322808 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1900 322808 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1901 : )
1902 : {
1903 67722 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail657;
1904 67722 : {
1905 67722 : tree res_op0;
1906 67722 : res_op0 = captures[0];
1907 67722 : tree res_op1;
1908 67722 : res_op1 = captures[2];
1909 67722 : tree _r;
1910 67722 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1911 67722 : if (TREE_SIDE_EFFECTS (captures[1]))
1912 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1913 67722 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 547, __FILE__, __LINE__, true);
1914 67722 : return _r;
1915 : }
1916 0 : next_after_fail657:;
1917 : }
1918 : return NULL_TREE;
1919 : }
1920 :
1921 : tree
1922 3936 : generic_simplify_382 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1923 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1924 : const enum tree_code ARG_UNUSED (cmp),
1925 : const enum tree_code ARG_UNUSED (bitop))
1926 : {
1927 3936 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1928 3936 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1929 : )
1930 : {
1931 3936 : if (bitop == BIT_AND_EXPR || tree_expr_nonnegative_p (captures[1])
1932 : )
1933 : {
1934 3936 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail662;
1935 3936 : {
1936 3936 : tree _r;
1937 3936 : _r = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
1938 3936 : if (TREE_SIDE_EFFECTS (captures[0]))
1939 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1940 3936 : if (TREE_SIDE_EFFECTS (captures[1]))
1941 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1942 3936 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 552, __FILE__, __LINE__, true);
1943 3936 : return _r;
1944 : }
1945 0 : next_after_fail662:;
1946 : }
1947 : else
1948 : {
1949 0 : if (TREE_CODE (captures[1]) == INTEGER_CST && wi::neg_p (wi::to_wide (captures[1]))
1950 : )
1951 : {
1952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
1953 0 : {
1954 0 : tree _r;
1955 0 : _r = constant_boolean_node (cmp == LT_EXPR, type);
1956 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1957 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1958 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1959 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1960 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 553, __FILE__, __LINE__, true);
1961 0 : return _r;
1962 : }
1963 0 : next_after_fail663:;
1964 : }
1965 : }
1966 : }
1967 : return NULL_TREE;
1968 : }
1969 :
1970 : tree
1971 2 : generic_simplify_396 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1972 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1973 : const enum tree_code ARG_UNUSED (cmp))
1974 : {
1975 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1976 4 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1977 4 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1978 : )
1979 : {
1980 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail709;
1981 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail709;
1982 2 : {
1983 2 : tree res_op0;
1984 2 : res_op0 = captures[1];
1985 2 : tree res_op1;
1986 2 : res_op1 = captures[0];
1987 2 : tree _r;
1988 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1989 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
1990 2 : return _r;
1991 : }
1992 : next_after_fail709:;
1993 : }
1994 : return NULL_TREE;
1995 : }
1996 :
1997 : tree
1998 2462187 : generic_simplify_401 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1999 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2000 : const enum tree_code ARG_UNUSED (op),
2001 : const enum tree_code ARG_UNUSED (rop),
2002 : const enum tree_code ARG_UNUSED (cmp),
2003 : const enum tree_code ARG_UNUSED (rcmp))
2004 : {
2005 2462187 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2006 4924360 : if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3])
2007 4924348 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2008 : )
2009 : {
2010 878632 : {
2011 878632 : tree res = int_const_binop (rop, captures[3], captures[2]);
2012 878632 : if (TREE_OVERFLOW (res)
2013 : )
2014 : {
2015 12964 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail715;
2016 12964 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail715;
2017 12964 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail715;
2018 12964 : {
2019 12964 : tree _r;
2020 12964 : bool less = cmp == LE_EXPR || cmp == LT_EXPR;
2021 12964 : bool ovf_high = wi::lt_p (wi::to_wide (captures[2]), 0,
2022 12964 : TYPE_SIGN (TREE_TYPE (captures[2])))
2023 12964 : != (op == MINUS_EXPR); _r =
2024 12964 : constant_boolean_node (less == ovf_high, type);
2025 12964 : if (TREE_SIDE_EFFECTS (captures[1]))
2026 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2027 12964 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 588, __FILE__, __LINE__, true);
2028 12964 : return _r;
2029 : }
2030 : next_after_fail715:;
2031 : }
2032 : else
2033 : {
2034 865668 : if (single_use (captures[0])
2035 : )
2036 : {
2037 865668 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail716;
2038 865668 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail716;
2039 865668 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail716;
2040 865668 : {
2041 865668 : tree res_op0;
2042 865668 : res_op0 = captures[1];
2043 865668 : tree res_op1;
2044 865668 : res_op1 = res;
2045 865668 : tree _r;
2046 865668 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2047 865668 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 589, __FILE__, __LINE__, true);
2048 865668 : return _r;
2049 : }
2050 : next_after_fail716:;
2051 : }
2052 : }
2053 : }
2054 : }
2055 : else
2056 : {
2057 1583555 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2058 : )
2059 : {
2060 1583432 : {
2061 1583432 : wide_int max = wi::max_value (TREE_TYPE (captures[1]));
2062 1583432 : wide_int min = wi::min_value (TREE_TYPE (captures[1]));
2063 1583432 : wide_int c2 = rop == PLUS_EXPR
2064 1583432 : ? wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[2]))
2065 1583432 : : wi::sub (wi::to_wide (captures[3]), wi::to_wide (captures[2]));
2066 1511739 : if (((cmp == LE_EXPR || cmp == GT_EXPR) && wi::eq_p (c2, max))
2067 3080227 : || ((cmp == LT_EXPR || cmp == GE_EXPR) && wi::eq_p (c2, min))
2068 : )
2069 : {
2070 15102 : {
2071 15102 : wide_int c1 = rop == PLUS_EXPR
2072 15102 : ? wi::add (wi::bit_not (c2), wi::to_wide (captures[2]))
2073 30204 : : wi::sub (wi::bit_not (c2), wi::to_wide (captures[2]));
2074 15102 : tree c1_cst = wide_int_to_tree (TREE_TYPE (captures[1]), c1);
2075 15102 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail717;
2076 15102 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail717;
2077 15102 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail717;
2078 15102 : {
2079 15102 : tree res_op0;
2080 15102 : res_op0 = captures[1];
2081 15102 : tree res_op1;
2082 15102 : res_op1 = c1_cst;
2083 15102 : tree _r;
2084 15102 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
2085 15102 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
2086 15102 : return _r;
2087 : }
2088 0 : next_after_fail717:;
2089 15102 : }
2090 : }
2091 1583434 : }
2092 : }
2093 : }
2094 : return NULL_TREE;
2095 : }
2096 :
2097 : tree
2098 2546 : generic_simplify_418 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2099 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2100 : const enum tree_code ARG_UNUSED (shiftrotate))
2101 : {
2102 2546 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2103 2546 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail742;
2104 2546 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail742;
2105 2546 : {
2106 2546 : tree res_op0;
2107 2546 : res_op0 = captures[0];
2108 2546 : tree _r;
2109 2546 : _r = non_lvalue_loc (loc, res_op0);
2110 2546 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
2111 : return _r;
2112 : }
2113 : next_after_fail742:;
2114 : return NULL_TREE;
2115 : }
2116 :
2117 : tree
2118 86 : generic_simplify_422 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2119 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2120 : const enum tree_code ARG_UNUSED (op))
2121 : {
2122 86 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2123 86 : {
2124 86 : unsigned int prec = element_precision (type);
2125 86 : if (wi::ge_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2126 86 : && wi::lt_p (wi::to_wide (captures[1]), prec, TYPE_SIGN (TREE_TYPE (captures[1])))
2127 86 : && wi::ge_p (wi::to_wide (captures[2]), 0, TYPE_SIGN (TREE_TYPE (captures[2])))
2128 172 : && wi::lt_p (wi::to_wide (captures[2]), prec, TYPE_SIGN (TREE_TYPE (captures[2])))
2129 : )
2130 : {
2131 86 : {
2132 86 : unsigned int low = (tree_to_uhwi (captures[1])
2133 86 : + tree_to_uhwi (captures[2]));
2134 86 : if (low >= prec
2135 : )
2136 : {
2137 25 : if (op == LROTATE_EXPR || op == RROTATE_EXPR
2138 : )
2139 : {
2140 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail746;
2141 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail746;
2142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail746;
2143 0 : {
2144 0 : tree res_op0;
2145 0 : res_op0 = captures[0];
2146 0 : tree res_op1;
2147 0 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), low % prec);
2148 0 : tree _r;
2149 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 614, __FILE__, __LINE__, true);
2151 86 : return _r;
2152 : }
2153 : next_after_fail746:;
2154 : }
2155 : else
2156 : {
2157 25 : if (TYPE_UNSIGNED (type) || op == LSHIFT_EXPR
2158 : )
2159 : {
2160 24 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail747;
2161 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail747;
2162 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail747;
2163 24 : {
2164 24 : tree _r;
2165 24 : _r = build_zero_cst (type);
2166 24 : if (TREE_SIDE_EFFECTS (captures[0]))
2167 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2168 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 615, __FILE__, __LINE__, true);
2169 24 : return _r;
2170 : }
2171 : next_after_fail747:;
2172 : }
2173 : else
2174 : {
2175 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail748;
2176 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail748;
2177 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail748;
2178 1 : {
2179 1 : tree res_op0;
2180 1 : res_op0 = captures[0];
2181 1 : tree res_op1;
2182 1 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), prec - 1);
2183 1 : tree _r;
2184 1 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2185 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 616, __FILE__, __LINE__, true);
2186 1 : return _r;
2187 : }
2188 : next_after_fail748:;
2189 : }
2190 : }
2191 : }
2192 : else
2193 : {
2194 61 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail749;
2195 61 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail749;
2196 61 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail749;
2197 61 : {
2198 61 : tree res_op0;
2199 61 : res_op0 = captures[0];
2200 61 : tree res_op1;
2201 61 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), low);
2202 61 : tree _r;
2203 61 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2204 61 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2205 61 : return _r;
2206 : }
2207 : next_after_fail749:;
2208 : }
2209 : }
2210 : }
2211 : }
2212 0 : return NULL_TREE;
2213 : }
2214 :
2215 : tree
2216 0 : generic_simplify_437 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2217 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2218 : const combined_fn ARG_UNUSED (coss),
2219 : const combined_fn ARG_UNUSED (atans),
2220 : const combined_fn ARG_UNUSED (sqrts),
2221 : const combined_fn ARG_UNUSED (copysigns))
2222 : {
2223 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2224 0 : {
2225 0 : REAL_VALUE_TYPE r_cst;
2226 0 : build_sinatan_real (&r_cst, type);
2227 0 : tree t_cst = build_real (type, r_cst);
2228 0 : tree t_one = build_one_cst (type);
2229 0 : tree t_zero = build_zero_cst (type);
2230 0 : if (SCALAR_FLOAT_TYPE_P (type)
2231 : )
2232 : {
2233 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2234 0 : {
2235 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail782;
2236 0 : tree res_op0;
2237 0 : {
2238 0 : tree _o1[2], _r1;
2239 0 : {
2240 0 : tree _o2[1], _r2;
2241 0 : _o2[0] = unshare_expr (captures[1]);
2242 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2243 0 : _o1[0] = _r2;
2244 : }
2245 0 : _o1[1] = t_cst;
2246 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
2247 0 : res_op0 = _r1;
2248 : }
2249 0 : tree res_op1;
2250 0 : {
2251 0 : tree _o1[2], _r1;
2252 0 : _o1[0] = t_one;
2253 0 : {
2254 0 : tree _o2[1], _r2;
2255 0 : {
2256 0 : tree _o3[2], _r3;
2257 0 : {
2258 0 : tree _o4[2], _r4;
2259 0 : _o4[0] = unshare_expr (captures[1]);
2260 0 : _o4[1] = unshare_expr (captures[1]);
2261 0 : _r4 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
2262 0 : _o3[0] = _r4;
2263 : }
2264 0 : _o3[1] = t_one;
2265 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2266 0 : _o2[0] = _r3;
2267 : }
2268 0 : _r2 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o2[0]), 1, _o2[0]);
2269 0 : if (!_r2)
2270 0 : goto next_after_fail782;
2271 0 : _o1[1] = _r2;
2272 : }
2273 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2274 0 : res_op1 = _r1;
2275 : }
2276 0 : tree res_op2;
2277 0 : {
2278 0 : tree _o1[2], _r1;
2279 0 : _o1[0] = t_zero;
2280 0 : _o1[1] = captures[1];
2281 0 : _r1 = maybe_build_call_expr_loc (loc, copysigns, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
2282 0 : if (!_r1)
2283 0 : goto next_after_fail782;
2284 0 : res_op2 = _r1;
2285 : }
2286 0 : tree _r;
2287 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2288 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2289 0 : return _r;
2290 : }
2291 0 : next_after_fail782:;
2292 : }
2293 : }
2294 0 : return NULL_TREE;
2295 : }
2296 :
2297 : tree
2298 0 : generic_simplify_443 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2299 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2300 : {
2301 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2302 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail788;
2303 0 : {
2304 0 : tree _r;
2305 0 : _r = captures[0];
2306 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2307 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2308 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
2309 : return _r;
2310 : }
2311 0 : next_after_fail788:;
2312 0 : return NULL_TREE;
2313 : }
2314 :
2315 : tree
2316 0 : generic_simplify_447 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2317 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2318 : const combined_fn ARG_UNUSED (HYPOT))
2319 : {
2320 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2321 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
2322 : )
2323 : {
2324 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail792;
2325 0 : {
2326 0 : tree res_op0;
2327 0 : {
2328 0 : tree _o1[1], _r1;
2329 0 : _o1[0] = captures[0];
2330 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2331 0 : res_op0 = _r1;
2332 : }
2333 0 : tree res_op1;
2334 0 : res_op1 = build_real_truncate (type, dconst_sqrt2 ());
2335 0 : tree _r;
2336 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2337 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 647, __FILE__, __LINE__, true);
2338 0 : return _r;
2339 : }
2340 0 : next_after_fail792:;
2341 : }
2342 : return NULL_TREE;
2343 : }
2344 :
2345 : tree
2346 1 : generic_simplify_452 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2347 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2348 : {
2349 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2350 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail797;
2351 1 : {
2352 1 : tree res_op0;
2353 1 : res_op0 = captures[0];
2354 1 : tree res_op1;
2355 1 : res_op1 = captures[1];
2356 1 : tree _r;
2357 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2358 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 652, __FILE__, __LINE__, true);
2359 : return _r;
2360 : }
2361 0 : next_after_fail797:;
2362 0 : return NULL_TREE;
2363 : }
2364 :
2365 : tree
2366 891249 : generic_simplify_458 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2367 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2368 : const enum tree_code ARG_UNUSED (op))
2369 : {
2370 891249 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2371 891249 : {
2372 891249 : tree pmop[2];
2373 891249 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[3], op, captures[1], ERROR_MARK,
2374 : NULL_TREE, NULL_TREE, captures[2], ERROR_MARK,
2375 : NULL_TREE, NULL_TREE, pmop);
2376 891249 : if (utype
2377 : )
2378 : {
2379 317817 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail803;
2380 317817 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail803;
2381 317817 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail803;
2382 317817 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail803;
2383 317817 : {
2384 317817 : tree res_op0;
2385 317817 : {
2386 317817 : tree _o1[2], _r1;
2387 317817 : {
2388 317817 : tree _o2[2], _r2;
2389 317817 : {
2390 317817 : tree _o3[1], _r3;
2391 317817 : _o3[0] = pmop[0];
2392 317817 : if (TREE_TYPE (_o3[0]) != utype)
2393 : {
2394 202 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2395 : }
2396 : else
2397 : _r3 = _o3[0];
2398 317817 : _o2[0] = _r3;
2399 : }
2400 317817 : {
2401 317817 : tree _o3[1], _r3;
2402 317817 : _o3[0] = pmop[1];
2403 317817 : if (TREE_TYPE (_o3[0]) != utype)
2404 : {
2405 202 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2406 : }
2407 : else
2408 : _r3 = _o3[0];
2409 317817 : _o2[1] = _r3;
2410 : }
2411 317817 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2412 317817 : _o1[0] = _r2;
2413 : }
2414 317817 : {
2415 317817 : tree _o2[1], _r2;
2416 317817 : _o2[0] = captures[3];
2417 317817 : if (TREE_TYPE (_o2[0]) != utype)
2418 : {
2419 202 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2420 : }
2421 : else
2422 : _r2 = _o2[0];
2423 317817 : _o1[1] = _r2;
2424 : }
2425 317817 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2426 317817 : res_op0 = _r1;
2427 : }
2428 317817 : tree _r;
2429 317817 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2430 317817 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 657, __FILE__, __LINE__, true);
2431 317817 : return _r;
2432 : }
2433 573432 : next_after_fail803:;
2434 : }
2435 : }
2436 573432 : return NULL_TREE;
2437 : }
2438 :
2439 : tree
2440 0 : generic_simplify_474 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2441 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2442 : const enum tree_code ARG_UNUSED (eqne))
2443 : {
2444 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2445 0 : if (eqne == EQ_EXPR
2446 : )
2447 : {
2448 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail839;
2449 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail839;
2450 0 : {
2451 0 : tree _r;
2452 0 : _r = constant_boolean_node (false, type);
2453 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2454 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 667, __FILE__, __LINE__, true);
2456 0 : return _r;
2457 : }
2458 : next_after_fail839:;
2459 : }
2460 : else
2461 : {
2462 0 : if (eqne == NE_EXPR
2463 : )
2464 : {
2465 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail840;
2466 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail840;
2467 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail840;
2468 0 : {
2469 0 : tree _r;
2470 0 : _r = captures[0];
2471 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
2472 0 : return _r;
2473 : }
2474 : next_after_fail840:;
2475 : }
2476 : }
2477 : return NULL_TREE;
2478 : }
2479 :
2480 : tree
2481 0 : generic_simplify_483 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2482 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2483 : {
2484 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2485 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2486 0 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2487 : )
2488 : {
2489 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail862;
2490 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail862;
2491 0 : {
2492 0 : tree res_op0;
2493 0 : res_op0 = captures[3];
2494 0 : tree res_op1;
2495 0 : {
2496 0 : tree _o1[2], _r1;
2497 0 : _o1[0] = captures[1];
2498 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
2499 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2500 0 : res_op1 = _r1;
2501 : }
2502 0 : tree _r;
2503 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2504 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
2505 0 : return _r;
2506 : }
2507 : next_after_fail862:;
2508 : }
2509 : return NULL_TREE;
2510 : }
2511 :
2512 : tree
2513 38880 : generic_simplify_488 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2514 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2515 : const enum tree_code ARG_UNUSED (shift))
2516 : {
2517 38880 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2518 38880 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2519 23550 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2520 23550 : && tree_fits_uhwi_p (captures[4])
2521 23550 : && tree_to_uhwi (captures[4]) > 0
2522 62428 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2523 : )
2524 : {
2525 23548 : {
2526 23548 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2527 23548 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2528 23548 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2529 23548 : tree shift_type = TREE_TYPE (captures[2]);
2530 23548 : unsigned int prec;
2531 23548 : if (shift == LSHIFT_EXPR)
2532 0 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2533 23548 : else if (shift == RSHIFT_EXPR
2534 23548 : && type_has_mode_precision_p (shift_type))
2535 : {
2536 23548 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2537 23548 : tree arg00 = captures[3];
2538 23548 : if (captures[2] != captures[3]
2539 23548 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2540 : {
2541 0 : tree inner_type = TREE_TYPE (captures[3]);
2542 0 : if (type_has_mode_precision_p (inner_type)
2543 0 : && TYPE_PRECISION (inner_type) < prec)
2544 : {
2545 0 : prec = TYPE_PRECISION (inner_type);
2546 0 : if (shiftc < prec)
2547 0 : shift_type = inner_type;
2548 : }
2549 : }
2550 23548 : zerobits = HOST_WIDE_INT_M1U;
2551 23548 : if (shiftc < prec)
2552 : {
2553 23548 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2554 23548 : zerobits <<= prec - shiftc;
2555 : }
2556 23548 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2557 23548 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2558 : {
2559 98 : if ((mask & zerobits) == 0)
2560 82 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2561 : else
2562 : zerobits = 0;
2563 : }
2564 : }
2565 23532 : if ((mask & zerobits) == mask
2566 : )
2567 : {
2568 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail873;
2569 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail873;
2570 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail873;
2571 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail873;
2572 0 : {
2573 0 : tree _r;
2574 0 : _r = build_int_cst (type, 0);
2575 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 689, __FILE__, __LINE__, true);
2576 0 : return _r;
2577 : }
2578 : next_after_fail873:;
2579 : }
2580 : else
2581 : {
2582 23548 : {
2583 23548 : newmask = mask | zerobits;
2584 23548 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2585 : )
2586 : {
2587 : {
2588 109 : for (prec = BITS_PER_UNIT;
2589 181 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2590 171 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2591 : break;
2592 72 : if (prec < HOST_BITS_PER_WIDE_INT
2593 10 : || newmask == HOST_WIDE_INT_M1U
2594 : )
2595 : {
2596 72 : {
2597 72 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2598 72 : if (!tree_int_cst_equal (newmaskt, captures[5])
2599 : )
2600 : {
2601 72 : if (shift_type != TREE_TYPE (captures[2])
2602 : )
2603 : {
2604 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail874;
2605 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail874;
2606 11 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail874;
2607 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail874;
2608 11 : {
2609 11 : tree res_op0;
2610 11 : {
2611 11 : tree _o1[1], _r1;
2612 11 : {
2613 11 : tree _o2[2], _r2;
2614 11 : {
2615 11 : tree _o3[1], _r3;
2616 11 : _o3[0] = captures[2];
2617 11 : if (TREE_TYPE (_o3[0]) != shift_type)
2618 : {
2619 11 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2620 : }
2621 : else
2622 : _r3 = _o3[0];
2623 11 : _o2[0] = _r3;
2624 : }
2625 11 : _o2[1] = captures[4];
2626 11 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2627 11 : _o1[0] = _r2;
2628 : }
2629 11 : if (TREE_TYPE (_o1[0]) != type)
2630 : {
2631 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2632 : }
2633 : else
2634 : _r1 = _o1[0];
2635 11 : res_op0 = _r1;
2636 : }
2637 11 : tree res_op1;
2638 11 : res_op1 = newmaskt;
2639 11 : tree _r;
2640 11 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2641 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2642 11 : return _r;
2643 : }
2644 : next_after_fail874:;
2645 : }
2646 : else
2647 : {
2648 61 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail875;
2649 61 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail875;
2650 61 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail875;
2651 61 : {
2652 61 : tree res_op0;
2653 61 : res_op0 = captures[0];
2654 61 : tree res_op1;
2655 61 : res_op1 = newmaskt;
2656 61 : tree _r;
2657 61 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2658 61 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2659 61 : return _r;
2660 : }
2661 : next_after_fail875:;
2662 : }
2663 : }
2664 : }
2665 : }
2666 : }
2667 : }
2668 : }
2669 : }
2670 : }
2671 : }
2672 : return NULL_TREE;
2673 : }
2674 :
2675 : tree
2676 17 : generic_simplify_499 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2677 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2678 : {
2679 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2680 17 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail888;
2681 17 : {
2682 17 : tree res_op0;
2683 17 : res_op0 = captures[0];
2684 17 : tree res_op1;
2685 17 : res_op1 = captures[1];
2686 17 : tree _r;
2687 17 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2688 17 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
2689 : return _r;
2690 : }
2691 0 : next_after_fail888:;
2692 0 : return NULL_TREE;
2693 : }
2694 :
2695 : tree
2696 4 : generic_simplify_505 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2697 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2698 : {
2699 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2700 4 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2701 7 : && (element_precision (TREE_TYPE (captures[2]))
2702 3 : <= element_precision (TREE_TYPE (captures[3]))
2703 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2704 : )
2705 : {
2706 3 : {
2707 3 : tree shift_type = TREE_TYPE (captures[2]);
2708 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail894;
2709 3 : {
2710 3 : tree res_op0;
2711 3 : {
2712 3 : tree _o1[2], _r1;
2713 3 : {
2714 3 : tree _o2[1], _r2;
2715 3 : _o2[0] = captures[3];
2716 3 : if (TREE_TYPE (_o2[0]) != shift_type)
2717 : {
2718 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2719 : }
2720 : else
2721 : _r2 = _o2[0];
2722 3 : _o1[0] = _r2;
2723 : }
2724 3 : _o1[1] = captures[4];
2725 3 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2726 3 : res_op0 = _r1;
2727 : }
2728 3 : tree _r;
2729 3 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2730 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 705, __FILE__, __LINE__, true);
2731 3 : return _r;
2732 : }
2733 0 : next_after_fail894:;
2734 : }
2735 : }
2736 : return NULL_TREE;
2737 : }
2738 :
2739 : tree
2740 419 : generic_simplify_515 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2741 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2742 : {
2743 419 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2744 419 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2745 419 : && wi::to_wide (captures[1]) == element_precision (type) - 1
2746 : )
2747 : {
2748 44 : {
2749 44 : tree stype = TREE_TYPE (captures[0]);
2750 44 : tree ntype = TYPE_UNSIGNED (stype) ? signed_type_for (stype)
2751 9 : : unsigned_type_for (stype);
2752 44 : if (VECTOR_TYPE_P (type)
2753 : )
2754 : {
2755 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail905;
2756 0 : {
2757 0 : tree res_op0;
2758 0 : {
2759 0 : tree _o1[2], _r1;
2760 0 : {
2761 0 : tree _o2[1], _r2;
2762 0 : _o2[0] = captures[0];
2763 0 : if (TREE_TYPE (_o2[0]) != ntype)
2764 : {
2765 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o2[0]);
2766 : }
2767 : else
2768 : _r2 = _o2[0];
2769 0 : _o1[0] = _r2;
2770 : }
2771 0 : _o1[1] = captures[1];
2772 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2773 0 : res_op0 = _r1;
2774 : }
2775 0 : tree _r;
2776 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2777 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 718, __FILE__, __LINE__, true);
2778 0 : return _r;
2779 : }
2780 0 : next_after_fail905:;
2781 : }
2782 : else
2783 : {
2784 44 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail906;
2785 44 : {
2786 44 : tree res_op0;
2787 44 : {
2788 44 : tree _o1[2], _r1;
2789 44 : {
2790 44 : tree _o2[1], _r2;
2791 44 : _o2[0] = captures[0];
2792 44 : if (TREE_TYPE (_o2[0]) != ntype)
2793 : {
2794 44 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2795 : }
2796 : else
2797 : _r2 = _o2[0];
2798 44 : _o1[0] = _r2;
2799 : }
2800 44 : _o1[1] = captures[1];
2801 44 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2802 44 : res_op0 = _r1;
2803 : }
2804 44 : tree _r;
2805 44 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2806 44 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 719, __FILE__, __LINE__, true);
2807 44 : return _r;
2808 : }
2809 0 : next_after_fail906:;
2810 : }
2811 : }
2812 : }
2813 : return NULL_TREE;
2814 : }
2815 :
2816 : tree
2817 2 : generic_simplify_533 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2818 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2819 : {
2820 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2821 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2822 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2823 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2824 : )
2825 : {
2826 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail938;
2827 2 : {
2828 2 : tree res_op0;
2829 2 : res_op0 = captures[0];
2830 2 : tree _r;
2831 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2832 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2833 2 : return _r;
2834 : }
2835 0 : next_after_fail938:;
2836 : }
2837 : return NULL_TREE;
2838 : }
2839 :
2840 : tree
2841 12 : generic_simplify_540 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2842 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2843 : const enum tree_code ARG_UNUSED (op))
2844 : {
2845 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2846 12 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail945;
2847 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail945;
2848 12 : {
2849 12 : tree _r;
2850 12 : _r = captures[2];
2851 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 530, __FILE__, __LINE__, true);
2852 : return _r;
2853 : }
2854 : next_after_fail945:;
2855 : return NULL_TREE;
2856 : }
2857 :
2858 : tree
2859 0 : generic_simplify_545 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2860 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2861 : const combined_fn ARG_UNUSED (cond_op))
2862 : {
2863 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2864 0 : {
2865 0 : tree op_type = TREE_TYPE (captures[4]);
2866 0 : if (element_precision (type) == element_precision (op_type)
2867 : )
2868 : {
2869 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail950;
2870 0 : {
2871 0 : tree res_op0;
2872 0 : {
2873 0 : tree _o1[5], _r1;
2874 0 : _o1[0] = captures[0];
2875 0 : _o1[1] = captures[1];
2876 0 : _o1[2] = captures[2];
2877 0 : _o1[3] = captures[3];
2878 0 : {
2879 0 : tree _o2[1], _r2;
2880 0 : _o2[0] = captures[5];
2881 0 : if (TREE_TYPE (_o2[0]) != op_type)
2882 : {
2883 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2884 : }
2885 : else
2886 : _r2 = _o2[0];
2887 0 : _o1[4] = _r2;
2888 : }
2889 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 5, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4]);
2890 0 : if (!_r1)
2891 0 : goto next_after_fail950;
2892 0 : res_op0 = _r1;
2893 : }
2894 0 : tree _r;
2895 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2896 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2897 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2898 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2899 0 : return _r;
2900 : }
2901 : next_after_fail950:;
2902 : }
2903 : }
2904 : return NULL_TREE;
2905 : }
2906 :
2907 : tree
2908 0 : generic_simplify_554 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2910 : const enum tree_code ARG_UNUSED (rotate),
2911 : const enum tree_code ARG_UNUSED (orotate))
2912 : {
2913 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2914 0 : {
2915 0 : auto prec = element_precision (TREE_TYPE (captures[0]));
2916 0 : if (prec == wi::to_wide (captures[2])
2917 : )
2918 : {
2919 0 : if (expr_not_equal_to (captures[3], wi::uhwi (prec,
2920 0 : TYPE_PRECISION (TREE_TYPE (captures[3]))),
2921 : gimple_match_ctx (captures[1]))
2922 : )
2923 : {
2924 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail959;
2925 0 : {
2926 0 : tree res_op0;
2927 0 : res_op0 = captures[0];
2928 0 : tree res_op1;
2929 0 : res_op1 = captures[3];
2930 0 : tree _r;
2931 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
2932 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2933 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2934 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 754, __FILE__, __LINE__, true);
2935 0 : return _r;
2936 : }
2937 0 : next_after_fail959:;
2938 : }
2939 : else
2940 : {
2941 0 : if (single_use (captures[1])
2942 0 : && pow2p_hwi (prec)
2943 0 : && cfun
2944 0 : && (fold_before_rtl_expansion_p ()
2945 0 : || !flag_tree_vrp
2946 0 : || optimize_debug)
2947 : )
2948 : {
2949 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail960;
2950 0 : {
2951 0 : tree res_op0;
2952 0 : res_op0 = captures[0];
2953 0 : tree res_op1;
2954 0 : {
2955 0 : tree _o1[2], _r1;
2956 0 : _o1[0] = captures[3];
2957 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[3]), prec - 1);
2958 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2959 0 : res_op1 = _r1;
2960 : }
2961 0 : tree _r;
2962 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
2963 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2964 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2965 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 755, __FILE__, __LINE__, true);
2966 0 : return _r;
2967 : }
2968 0 : next_after_fail960:;
2969 : }
2970 : }
2971 : }
2972 : }
2973 0 : return NULL_TREE;
2974 : }
2975 :
2976 : tree
2977 0 : generic_simplify_576 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2978 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2979 : {
2980 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
2982 0 : {
2983 0 : tree _r;
2984 0 : _r = captures[0];
2985 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2986 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 779, __FILE__, __LINE__, true);
2988 : return _r;
2989 : }
2990 0 : next_after_fail984:;
2991 0 : return NULL_TREE;
2992 : }
2993 :
2994 : tree
2995 0 : generic_simplify_581 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2996 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2997 : const combined_fn ARG_UNUSED (fns))
2998 : {
2999 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3000 0 : if (canonicalize_math_p ()
3001 : )
3002 : {
3003 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail989;
3004 0 : {
3005 0 : tree res_op0;
3006 0 : res_op0 = captures[0];
3007 0 : tree _r;
3008 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 784, __FILE__, __LINE__, true);
3010 0 : return _r;
3011 : }
3012 0 : next_after_fail989:;
3013 : }
3014 : return NULL_TREE;
3015 : }
3016 :
3017 : tree
3018 0 : generic_simplify_589 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3019 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3020 : const combined_fn ARG_UNUSED (fmas))
3021 : {
3022 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3023 0 : if (canonicalize_math_after_vectorization_p ()
3024 : )
3025 : {
3026 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail997;
3027 : {
3028 : tree res_op0;
3029 : res_op0 = captures[0];
3030 : tree res_op1;
3031 : res_op1 = captures[1];
3032 : tree res_op2;
3033 : res_op2 = captures[2];
3034 : tree _r;
3035 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3036 : if (!_r)
3037 : goto next_after_fail997;
3038 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 792, __FILE__, __LINE__, true);
3039 : return _r;
3040 : }
3041 0 : next_after_fail997:;
3042 : }
3043 0 : return NULL_TREE;
3044 : }
3045 :
3046 : tree
3047 0 : generic_simplify_599 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3048 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3049 : {
3050 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3051 0 : if (canonicalize_math_after_vectorization_p ()
3052 : )
3053 : {
3054 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1007;
3055 : {
3056 : tree res_op0;
3057 : res_op0 = captures[0];
3058 : tree res_op1;
3059 : res_op1 = captures[1];
3060 : tree res_op2;
3061 : res_op2 = captures[2];
3062 : tree res_op3;
3063 : res_op3 = captures[3];
3064 : tree res_op4;
3065 : res_op4 = captures[4];
3066 : tree _r;
3067 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3068 : if (!_r)
3069 : goto next_after_fail1007;
3070 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 802, __FILE__, __LINE__, true);
3071 : return _r;
3072 : }
3073 0 : next_after_fail1007:;
3074 : }
3075 0 : return NULL_TREE;
3076 : }
3077 :
3078 : tree
3079 0 : generic_simplify_609 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3080 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3081 : const enum tree_code ARG_UNUSED (rot),
3082 : const combined_fn ARG_UNUSED (popcount))
3083 : {
3084 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3085 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3086 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3087 0 : && (
3088 :
3089 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3090 : )
3091 : {
3092 0 : {
3093 0 : tree type0 = TREE_TYPE (captures[0]);
3094 0 : tree type1 = TREE_TYPE (captures[1]);
3095 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3096 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3097 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3098 : )
3099 : {
3100 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1017;
3101 0 : {
3102 0 : tree res_op0;
3103 0 : {
3104 0 : tree _o1[1], _r1;
3105 0 : _o1[0] = captures[2];
3106 0 : if (TREE_TYPE (_o1[0]) != type0)
3107 : {
3108 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3109 : }
3110 : else
3111 : _r1 = _o1[0];
3112 0 : res_op0 = _r1;
3113 : }
3114 0 : tree _r;
3115 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3116 0 : if (!_r)
3117 0 : goto next_after_fail1017;
3118 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3119 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
3121 0 : return _r;
3122 : }
3123 : next_after_fail1017:;
3124 : }
3125 : }
3126 : }
3127 : return NULL_TREE;
3128 : }
3129 :
3130 : tree
3131 0 : generic_simplify_621 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3132 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3133 : const enum tree_code ARG_UNUSED (plusminus),
3134 : const enum tree_code ARG_UNUSED (minusplus))
3135 : {
3136 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3137 0 : if (!VECTOR_INTEGER_TYPE_P (type)
3138 : && !FLOAT_WORDS_BIG_ENDIAN
3139 0 : && (operand_equal_p (captures[0], captures[2], 0)
3140 0 : ? operand_equal_p (captures[1], captures[3], 0)
3141 0 : : operand_equal_p (captures[0], captures[3], 0) && operand_equal_p (captures[1], captures[2], 0))
3142 : )
3143 : {
3144 0 : {
3145 0 : vec_perm_builder builder;
3146 0 : if (tree_to_vec_perm_builder (&builder, captures[4])
3147 : )
3148 : {
3149 0 : {
3150 0 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
3151 0 : vec_perm_indices sel (builder, 2, nelts);
3152 0 : machine_mode vec_mode = TYPE_MODE (type);
3153 0 : machine_mode wide_mode;
3154 0 : scalar_mode wide_elt_mode;
3155 0 : poly_uint64 wide_nunits;
3156 0 : scalar_mode inner_mode = GET_MODE_INNER (vec_mode);
3157 0 : if (VECTOR_MODE_P (vec_mode)
3158 0 : && sel.series_p (0, 2, 0, 2)
3159 0 : && sel.series_p (1, 2, nelts + 1, 2)
3160 0 : && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode)
3161 0 : && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits)
3162 0 : && related_vector_mode (vec_mode, wide_elt_mode,
3163 0 : wide_nunits).exists (&wide_mode)
3164 : )
3165 : {
3166 0 : {
3167 0 : tree stype
3168 0 : = lang_hooks.types.type_for_mode (GET_MODE_INNER (wide_mode),
3169 0 : TYPE_UNSIGNED (type));
3170 0 : tree ntype = build_vector_type_for_mode (stype, wide_mode);
3171 0 : const struct real_format *fmt_old = FLOAT_MODE_FORMAT (vec_mode);
3172 0 : const struct real_format *fmt_new = FLOAT_MODE_FORMAT (wide_mode);
3173 0 : if (TYPE_MODE (stype) != BLKmode
3174 0 : && VECTOR_TYPE_P (ntype)
3175 0 : && fmt_old != NULL
3176 0 : && fmt_new != NULL
3177 : )
3178 : {
3179 0 : {
3180 0 : if (known_eq (GET_MODE_NUNITS (wide_mode), 1)
3181 0 : && !target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3182 : ntype = stype;
3183 0 : if (fmt_new->signbit_rw
3184 0 : == fmt_old->signbit_rw + GET_MODE_UNIT_BITSIZE (vec_mode)
3185 0 : && fmt_new->signbit_rw == fmt_new->signbit_ro
3186 0 : && targetm.can_change_mode_class (TYPE_MODE (ntype),
3187 0 : TYPE_MODE (type), ALL_REGS)
3188 0 : && ((optimize_vectors_before_lowering_p ()
3189 0 : && VECTOR_TYPE_P (ntype))
3190 0 : || target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3191 : )
3192 : {
3193 0 : if (plusminus == PLUS_EXPR
3194 : )
3195 : {
3196 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1030;
3197 0 : {
3198 0 : tree res_op0;
3199 0 : {
3200 0 : tree _o1[1], _r1;
3201 0 : {
3202 0 : tree _o2[1], _r2;
3203 0 : {
3204 0 : tree _o3[1], _r3;
3205 0 : _o3[0] = captures[3];
3206 0 : if (TREE_TYPE (_o3[0]) != ntype)
3207 : {
3208 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3209 : }
3210 : else
3211 : _r3 = _o3[0];
3212 0 : _o2[0] = _r3;
3213 : }
3214 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3215 0 : _o1[0] = _r2;
3216 : }
3217 0 : if (TREE_TYPE (_o1[0]) != type)
3218 : {
3219 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3220 : }
3221 : else
3222 : _r1 = _o1[0];
3223 0 : res_op0 = _r1;
3224 : }
3225 0 : tree res_op1;
3226 0 : res_op1 = captures[2];
3227 0 : tree _r;
3228 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3229 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3230 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3231 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3232 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3233 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3234 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3235 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3236 0 : return _r;
3237 : }
3238 0 : next_after_fail1030:;
3239 : }
3240 : else
3241 : {
3242 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1031;
3243 0 : {
3244 0 : tree res_op0;
3245 0 : res_op0 = captures[0];
3246 0 : tree res_op1;
3247 0 : {
3248 0 : tree _o1[1], _r1;
3249 0 : {
3250 0 : tree _o2[1], _r2;
3251 0 : {
3252 0 : tree _o3[1], _r3;
3253 0 : _o3[0] = captures[1];
3254 0 : if (TREE_TYPE (_o3[0]) != ntype)
3255 : {
3256 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3257 : }
3258 : else
3259 : _r3 = _o3[0];
3260 0 : _o2[0] = _r3;
3261 : }
3262 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3263 0 : _o1[0] = _r2;
3264 : }
3265 0 : if (TREE_TYPE (_o1[0]) != type)
3266 : {
3267 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3268 : }
3269 : else
3270 : _r1 = _o1[0];
3271 0 : res_op1 = _r1;
3272 : }
3273 0 : tree _r;
3274 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3275 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3276 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3277 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3278 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3279 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3280 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3281 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
3282 0 : return _r;
3283 : }
3284 0 : next_after_fail1031:;
3285 : }
3286 : }
3287 : }
3288 : }
3289 : }
3290 : }
3291 0 : }
3292 : }
3293 0 : }
3294 : }
3295 : return NULL_TREE;
3296 : }
3297 :
3298 : tree
3299 1330 : generic_simplify_CONJ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3300 : {
3301 1330 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3302 1330 : switch (TREE_CODE (_p0))
3303 : {
3304 0 : CASE_CONVERT:
3305 0 : {
3306 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3307 0 : switch (TREE_CODE (_q20))
3308 : {
3309 0 : case CONJ_EXPR:
3310 0 : {
3311 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3312 0 : {
3313 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3314 0 : tree res = generic_simplify_556 (loc, type, _p0, captures);
3315 0 : if (res) return res;
3316 : }
3317 0 : break;
3318 : }
3319 0 : case COMPLEX_EXPR:
3320 0 : {
3321 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3322 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3323 0 : {
3324 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3325 0 : {
3326 0 : tree itype = TREE_TYPE (type);
3327 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1154;
3328 0 : {
3329 0 : tree res_op0;
3330 0 : {
3331 0 : tree _o1[1], _r1;
3332 0 : _o1[0] = captures[2];
3333 0 : if (TREE_TYPE (_o1[0]) != itype)
3334 : {
3335 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3336 : }
3337 : else
3338 : _r1 = _o1[0];
3339 0 : res_op0 = _r1;
3340 : }
3341 0 : tree res_op1;
3342 0 : {
3343 0 : tree _o1[1], _r1;
3344 0 : {
3345 0 : tree _o2[1], _r2;
3346 0 : _o2[0] = captures[3];
3347 0 : if (TREE_TYPE (_o2[0]) != itype)
3348 : {
3349 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3350 : }
3351 : else
3352 : _r2 = _o2[0];
3353 0 : _o1[0] = _r2;
3354 : }
3355 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3356 0 : res_op1 = _r1;
3357 : }
3358 0 : tree _r;
3359 0 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3360 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3361 0 : return _r;
3362 : }
3363 0 : next_after_fail1154:;
3364 : }
3365 : }
3366 0 : break;
3367 : }
3368 : default:;
3369 : }
3370 : break;
3371 : }
3372 1 : case CONJ_EXPR:
3373 1 : {
3374 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3375 1 : {
3376 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3377 1 : tree res = generic_simplify_556 (loc, type, _p0, captures);
3378 1 : if (res) return res;
3379 : }
3380 0 : break;
3381 : }
3382 12 : case COMPLEX_EXPR:
3383 12 : {
3384 12 : tree _q20 = TREE_OPERAND (_p0, 0);
3385 12 : tree _q21 = TREE_OPERAND (_p0, 1);
3386 12 : {
3387 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3388 12 : {
3389 12 : tree itype = TREE_TYPE (type);
3390 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1155;
3391 12 : {
3392 12 : tree res_op0;
3393 12 : {
3394 12 : tree _o1[1], _r1;
3395 12 : _o1[0] = captures[2];
3396 12 : if (TREE_TYPE (_o1[0]) != itype)
3397 : {
3398 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3399 : }
3400 : else
3401 : _r1 = _o1[0];
3402 12 : res_op0 = _r1;
3403 : }
3404 12 : tree res_op1;
3405 12 : {
3406 12 : tree _o1[1], _r1;
3407 12 : {
3408 12 : tree _o2[1], _r2;
3409 12 : _o2[0] = captures[3];
3410 12 : if (TREE_TYPE (_o2[0]) != itype)
3411 : {
3412 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3413 : }
3414 : else
3415 : _r2 = _o2[0];
3416 12 : _o1[0] = _r2;
3417 : }
3418 12 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3419 12 : res_op1 = _r1;
3420 : }
3421 12 : tree _r;
3422 12 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3423 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3424 12 : return _r;
3425 : }
3426 0 : next_after_fail1155:;
3427 : }
3428 : }
3429 0 : break;
3430 : }
3431 : default:;
3432 : }
3433 : return NULL_TREE;
3434 : }
3435 :
3436 : tree
3437 95738625 : generic_simplify_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3438 : {
3439 95738625 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3440 95738625 : if (integer_zerop (_p1))
3441 : {
3442 27612383 : {
3443 27612383 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3444 27612383 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1235;
3445 27612383 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1235;
3446 27612383 : {
3447 27612383 : tree res_op0;
3448 27612383 : res_op0 = captures[0];
3449 27612383 : tree _r;
3450 27612383 : _r = non_lvalue_loc (loc, res_op0);
3451 27612383 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3452 27612383 : return _r;
3453 : }
3454 : next_after_fail1235:;
3455 : }
3456 : }
3457 68126242 : if (real_zerop (_p1))
3458 : {
3459 5301 : {
3460 5301 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3461 5301 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
3462 5301 : if (res) return res;
3463 : }
3464 : }
3465 68126147 : switch (TREE_CODE (_p0))
3466 : {
3467 6421215 : case PLUS_EXPR:
3468 6421215 : {
3469 6421215 : tree _q20 = TREE_OPERAND (_p0, 0);
3470 6421215 : tree _q21 = TREE_OPERAND (_p0, 1);
3471 6421215 : switch (TREE_CODE (_q21))
3472 : {
3473 115594 : case REAL_CST:
3474 115594 : {
3475 115594 : switch (TREE_CODE (_p1))
3476 : {
3477 70 : case REAL_CST:
3478 70 : {
3479 70 : {
3480 70 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3481 70 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, PLUS_EXPR, PLUS_EXPR);
3482 70 : if (res) return res;
3483 : }
3484 67 : break;
3485 : }
3486 : default:;
3487 : }
3488 : break;
3489 : }
3490 : default:;
3491 : }
3492 : break;
3493 : }
3494 2008012 : case MINUS_EXPR:
3495 2008012 : {
3496 2008012 : tree _q20 = TREE_OPERAND (_p0, 0);
3497 2008012 : tree _q21 = TREE_OPERAND (_p0, 1);
3498 2008012 : switch (TREE_CODE (_q21))
3499 : {
3500 21873 : case REAL_CST:
3501 21873 : {
3502 21873 : switch (TREE_CODE (_p1))
3503 : {
3504 191 : case REAL_CST:
3505 191 : {
3506 191 : {
3507 191 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3508 191 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR);
3509 191 : if (res) return res;
3510 : }
3511 189 : break;
3512 : }
3513 : default:;
3514 : }
3515 : break;
3516 : }
3517 : default:;
3518 : }
3519 : break;
3520 : }
3521 12142 : case MAX_EXPR:
3522 12142 : {
3523 12142 : tree _q20 = TREE_OPERAND (_p0, 0);
3524 12142 : tree _q21 = TREE_OPERAND (_p0, 1);
3525 12142 : if (integer_zerop (_q21))
3526 : {
3527 4625 : switch (TREE_CODE (_p1))
3528 : {
3529 114 : case MAX_EXPR:
3530 114 : {
3531 114 : tree _q50 = TREE_OPERAND (_p1, 0);
3532 114 : tree _q51 = TREE_OPERAND (_p1, 1);
3533 114 : switch (TREE_CODE (_q50))
3534 : {
3535 48 : case NEGATE_EXPR:
3536 48 : {
3537 48 : tree _q60 = TREE_OPERAND (_q50, 0);
3538 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
3539 : {
3540 48 : if (integer_zerop (_q51))
3541 : {
3542 48 : {
3543 48 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3544 48 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures);
3545 48 : if (res) return res;
3546 : }
3547 : }
3548 : }
3549 : break;
3550 : }
3551 : default:;
3552 : }
3553 : break;
3554 : }
3555 : default:;
3556 : }
3557 : }
3558 12094 : switch (TREE_CODE (_q20))
3559 : {
3560 18 : case NEGATE_EXPR:
3561 18 : {
3562 18 : tree _q30 = TREE_OPERAND (_q20, 0);
3563 18 : if (integer_zerop (_q21))
3564 : {
3565 18 : switch (TREE_CODE (_p1))
3566 : {
3567 18 : case MAX_EXPR:
3568 18 : {
3569 18 : tree _q60 = TREE_OPERAND (_p1, 0);
3570 18 : tree _q61 = TREE_OPERAND (_p1, 1);
3571 18 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
3572 : {
3573 18 : if (integer_zerop (_q61))
3574 : {
3575 18 : {
3576 18 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3577 18 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures);
3578 18 : if (res) return res;
3579 : }
3580 : }
3581 : }
3582 : break;
3583 : }
3584 : default:;
3585 : }
3586 : }
3587 : break;
3588 : }
3589 : default:;
3590 : }
3591 : break;
3592 : }
3593 12877112 : case MULT_EXPR:
3594 12877112 : {
3595 12877112 : tree _q20 = TREE_OPERAND (_p0, 0);
3596 12877112 : tree _q21 = TREE_OPERAND (_p0, 1);
3597 12877112 : switch (TREE_CODE (_q20))
3598 : {
3599 1796971 : case PLUS_EXPR:
3600 1796971 : {
3601 1796971 : tree _q30 = TREE_OPERAND (_q20, 0);
3602 1796971 : tree _q31 = TREE_OPERAND (_q20, 1);
3603 1796971 : switch (TREE_CODE (_q31))
3604 : {
3605 485466 : case INTEGER_CST:
3606 485466 : {
3607 485466 : switch (TREE_CODE (_q21))
3608 : {
3609 172886 : case INTEGER_CST:
3610 172886 : {
3611 172886 : switch (TREE_CODE (_p1))
3612 : {
3613 121281 : case INTEGER_CST:
3614 121281 : {
3615 121281 : {
3616 121281 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
3617 121281 : {
3618 121281 : bool overflowed = true;
3619 121281 : wi::overflow_type ovf1;
3620 121281 : wi::overflow_type ovf2;
3621 121281 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[4]),
3622 242562 : TYPE_SIGN (type), &ovf1);
3623 363843 : wide_int add = wi::add (mul, wi::to_wide (captures[5]),
3624 121281 : TYPE_SIGN (type), &ovf2);
3625 121281 : if (TYPE_OVERFLOW_UNDEFINED (type))
3626 : {
3627 : }
3628 : else
3629 60402 : overflowed = false;
3630 60402 : if (!overflowed
3631 : )
3632 : {
3633 60402 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1236;
3634 60402 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1236;
3635 60402 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1236;
3636 60402 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1236;
3637 60402 : {
3638 60402 : tree res_op0;
3639 60402 : {
3640 60402 : tree _o1[2], _r1;
3641 60402 : _o1[0] = captures[2];
3642 60402 : _o1[1] = captures[4];
3643 60402 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3644 60402 : res_op0 = _r1;
3645 : }
3646 60402 : tree res_op1;
3647 60402 : res_op1 = wide_int_to_tree (type, add);
3648 60402 : tree _r;
3649 60402 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3650 60402 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
3651 60402 : return _r;
3652 : }
3653 60879 : next_after_fail1236:;
3654 : }
3655 121281 : }
3656 : }
3657 60879 : break;
3658 : }
3659 : default:;
3660 : }
3661 : break;
3662 : }
3663 : default:;
3664 : }
3665 : break;
3666 : }
3667 : default:;
3668 : }
3669 : break;
3670 : }
3671 : default:;
3672 : }
3673 : break;
3674 : }
3675 25800 : case LSHIFT_EXPR:
3676 25800 : {
3677 25800 : tree _q20 = TREE_OPERAND (_p0, 0);
3678 25800 : tree _q21 = TREE_OPERAND (_p0, 1);
3679 25800 : switch (TREE_CODE (_p1))
3680 : {
3681 688 : case LSHIFT_EXPR:
3682 688 : {
3683 688 : tree _q50 = TREE_OPERAND (_p1, 0);
3684 688 : tree _q51 = TREE_OPERAND (_p1, 1);
3685 688 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3686 : {
3687 7 : {
3688 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
3689 7 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3690 7 : if (res) return res;
3691 : }
3692 : }
3693 : break;
3694 : }
3695 : default:;
3696 : }
3697 : break;
3698 : }
3699 212329 : case BIT_AND_EXPR:
3700 212329 : {
3701 212329 : tree _q20 = TREE_OPERAND (_p0, 0);
3702 212329 : tree _q21 = TREE_OPERAND (_p0, 1);
3703 212329 : switch (TREE_CODE (_p1))
3704 : {
3705 300 : case BIT_AND_EXPR:
3706 300 : {
3707 300 : tree _q50 = TREE_OPERAND (_p1, 0);
3708 300 : tree _q51 = TREE_OPERAND (_p1, 1);
3709 300 : {
3710 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
3711 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3712 300 : if (res) return res;
3713 : }
3714 300 : {
3715 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q50 };
3716 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3717 300 : if (res) return res;
3718 : }
3719 300 : {
3720 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
3721 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3722 300 : if (res) return res;
3723 : }
3724 300 : {
3725 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q50 };
3726 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3727 300 : if (res) return res;
3728 : }
3729 300 : break;
3730 : }
3731 212329 : default:;
3732 : }
3733 212329 : if (integer_onep (_q21))
3734 : {
3735 119948 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
3736 : {
3737 29 : {
3738 29 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
3739 29 : tree res = generic_simplify_56 (loc, type, _p0, _p1, captures);
3740 29 : if (res) return res;
3741 : }
3742 : }
3743 : }
3744 : break;
3745 : }
3746 68065638 : default:;
3747 : }
3748 68065638 : if (real_zerop (_p0))
3749 : {
3750 0 : {
3751 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
3752 0 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
3753 0 : if (res) return res;
3754 : }
3755 : }
3756 68065638 : switch (TREE_CODE (_p1))
3757 : {
3758 5328 : case BIT_AND_EXPR:
3759 5328 : {
3760 5328 : tree _q30 = TREE_OPERAND (_p1, 0);
3761 5328 : tree _q31 = TREE_OPERAND (_p1, 1);
3762 5328 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
3763 : {
3764 16 : if (integer_onep (_q31))
3765 : {
3766 16 : {
3767 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
3768 16 : tree res = generic_simplify_56 (loc, type, _p0, _p1, captures);
3769 16 : if (res) return res;
3770 : }
3771 : }
3772 : }
3773 : break;
3774 : }
3775 68065622 : default:;
3776 : }
3777 68065622 : switch (TREE_CODE (_p0))
3778 : {
3779 212300 : case BIT_AND_EXPR:
3780 212300 : {
3781 212300 : tree _q20 = TREE_OPERAND (_p0, 0);
3782 212300 : tree _q21 = TREE_OPERAND (_p0, 1);
3783 212300 : switch (TREE_CODE (_p1))
3784 : {
3785 9 : case BIT_XOR_EXPR:
3786 9 : {
3787 9 : tree _q50 = TREE_OPERAND (_p1, 0);
3788 9 : tree _q51 = TREE_OPERAND (_p1, 1);
3789 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3790 : {
3791 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3792 : {
3793 0 : {
3794 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3795 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3796 0 : if (res) return res;
3797 : }
3798 : }
3799 : }
3800 : break;
3801 : }
3802 1 : case BIT_IOR_EXPR:
3803 1 : {
3804 1 : tree _q50 = TREE_OPERAND (_p1, 0);
3805 1 : tree _q51 = TREE_OPERAND (_p1, 1);
3806 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3807 : {
3808 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3809 : {
3810 0 : {
3811 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3812 0 : tree res = generic_simplify_57 (loc, type, _p0, _p1, captures);
3813 0 : if (res) return res;
3814 : }
3815 : }
3816 : }
3817 : break;
3818 : }
3819 212300 : default:;
3820 : }
3821 212300 : switch (TREE_CODE (_q21))
3822 : {
3823 211996 : case INTEGER_CST:
3824 211996 : {
3825 211996 : switch (TREE_CODE (_p1))
3826 : {
3827 14285 : CASE_CONVERT:
3828 14285 : {
3829 14285 : tree _q50 = TREE_OPERAND (_p1, 0);
3830 14285 : switch (TREE_CODE (_q50))
3831 : {
3832 0 : case BIT_AND_EXPR:
3833 0 : {
3834 0 : tree _q60 = TREE_OPERAND (_q50, 0);
3835 0 : tree _q61 = TREE_OPERAND (_q50, 1);
3836 0 : switch (TREE_CODE (_q61))
3837 : {
3838 0 : case INTEGER_CST:
3839 0 : {
3840 0 : {
3841 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q60, _q61 };
3842 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3843 0 : if (res) return res;
3844 : }
3845 0 : break;
3846 : }
3847 : default:;
3848 : }
3849 : break;
3850 : }
3851 : default:;
3852 : }
3853 : break;
3854 : }
3855 300 : case BIT_AND_EXPR:
3856 300 : {
3857 300 : tree _q50 = TREE_OPERAND (_p1, 0);
3858 300 : tree _q51 = TREE_OPERAND (_p1, 1);
3859 300 : switch (TREE_CODE (_q51))
3860 : {
3861 300 : case INTEGER_CST:
3862 300 : {
3863 300 : {
3864 300 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
3865 300 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3866 300 : if (res) return res;
3867 : }
3868 200 : break;
3869 : }
3870 : default:;
3871 : }
3872 : break;
3873 : }
3874 : default:;
3875 : }
3876 : break;
3877 : }
3878 : default:;
3879 : }
3880 : break;
3881 : }
3882 1507 : case BIT_XOR_EXPR:
3883 1507 : {
3884 1507 : tree _q20 = TREE_OPERAND (_p0, 0);
3885 1507 : tree _q21 = TREE_OPERAND (_p0, 1);
3886 1507 : switch (TREE_CODE (_p1))
3887 : {
3888 0 : case BIT_AND_EXPR:
3889 0 : {
3890 0 : tree _q50 = TREE_OPERAND (_p1, 0);
3891 0 : tree _q51 = TREE_OPERAND (_p1, 1);
3892 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3893 : {
3894 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3895 : {
3896 0 : {
3897 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3898 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3899 0 : if (res) return res;
3900 : }
3901 : }
3902 : }
3903 : break;
3904 : }
3905 : default:;
3906 : }
3907 : break;
3908 : }
3909 552 : case BIT_IOR_EXPR:
3910 552 : {
3911 552 : tree _q20 = TREE_OPERAND (_p0, 0);
3912 552 : tree _q21 = TREE_OPERAND (_p0, 1);
3913 552 : switch (TREE_CODE (_p1))
3914 : {
3915 0 : case BIT_AND_EXPR:
3916 0 : {
3917 0 : tree _q50 = TREE_OPERAND (_p1, 0);
3918 0 : tree _q51 = TREE_OPERAND (_p1, 1);
3919 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3920 : {
3921 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3922 : {
3923 0 : {
3924 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3925 0 : tree res = generic_simplify_57 (loc, type, _p0, _p1, captures);
3926 0 : if (res) return res;
3927 : }
3928 : }
3929 : }
3930 : break;
3931 : }
3932 : default:;
3933 : }
3934 : break;
3935 : }
3936 2008010 : case MINUS_EXPR:
3937 2008010 : {
3938 2008010 : tree _q20 = TREE_OPERAND (_p0, 0);
3939 2008010 : tree _q21 = TREE_OPERAND (_p0, 1);
3940 2008010 : switch (TREE_CODE (_q20))
3941 : {
3942 2 : case BIT_AND_EXPR:
3943 2 : {
3944 2 : tree _q30 = TREE_OPERAND (_q20, 0);
3945 2 : tree _q31 = TREE_OPERAND (_q20, 1);
3946 2 : switch (TREE_CODE (_q21))
3947 : {
3948 1 : case BIT_IOR_EXPR:
3949 1 : {
3950 1 : tree _q60 = TREE_OPERAND (_q21, 0);
3951 1 : tree _q61 = TREE_OPERAND (_q21, 1);
3952 1 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
3953 : {
3954 1 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
3955 : {
3956 1 : if (integer_all_onesp (_p1))
3957 : {
3958 1 : {
3959 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
3960 1 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
3961 1 : if (res) return res;
3962 : }
3963 : }
3964 : }
3965 : }
3966 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
3967 : {
3968 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
3969 : {
3970 0 : if (integer_all_onesp (_p1))
3971 : {
3972 0 : {
3973 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
3974 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
3975 0 : if (res) return res;
3976 : }
3977 : }
3978 : }
3979 : }
3980 : break;
3981 : }
3982 : default:;
3983 : }
3984 : break;
3985 : }
3986 2008009 : default:;
3987 : }
3988 2008009 : {
3989 2008009 : tree _q20_pops[1];
3990 2008009 : if (tree_nop_convert (_q20, _q20_pops))
3991 : {
3992 872788 : tree _q30 = _q20_pops[0];
3993 872788 : switch (TREE_CODE (_q30))
3994 : {
3995 0 : case BIT_AND_EXPR:
3996 0 : {
3997 0 : tree _q40 = TREE_OPERAND (_q30, 0);
3998 0 : tree _q41 = TREE_OPERAND (_q30, 1);
3999 0 : {
4000 0 : tree _q21_pops[1];
4001 0 : if (tree_nop_convert (_q21, _q21_pops))
4002 : {
4003 0 : tree _q70 = _q21_pops[0];
4004 0 : switch (TREE_CODE (_q70))
4005 : {
4006 0 : case BIT_IOR_EXPR:
4007 0 : {
4008 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4009 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4010 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4011 : {
4012 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
4013 : {
4014 0 : if (integer_all_onesp (_p1))
4015 : {
4016 0 : {
4017 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
4018 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
4019 0 : if (res) return res;
4020 : }
4021 : }
4022 : }
4023 : }
4024 0 : if ((_q80 == _q41 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q41, 0) && types_match (_q80, _q41)))
4025 : {
4026 0 : if ((_q81 == _q40 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q40, 0) && types_match (_q81, _q40)))
4027 : {
4028 0 : if (integer_all_onesp (_p1))
4029 : {
4030 0 : {
4031 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q40 };
4032 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
4033 0 : if (res) return res;
4034 : }
4035 : }
4036 : }
4037 : }
4038 : break;
4039 : }
4040 : default:;
4041 : }
4042 : }
4043 : }
4044 0 : break;
4045 : }
4046 : default:;
4047 : }
4048 : }
4049 : }
4050 2008009 : {
4051 2008009 : tree _q21_pops[1];
4052 2008009 : if (tree_nop_convert (_q21, _q21_pops))
4053 : {
4054 1106279 : tree _q40 = _q21_pops[0];
4055 1106279 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4056 : {
4057 34 : {
4058 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4059 34 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4060 34 : if (res) return res;
4061 : }
4062 : }
4063 : }
4064 : }
4065 2007979 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4066 : {
4067 46537 : {
4068 46537 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4069 46537 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4070 46537 : if (res) return res;
4071 : }
4072 : }
4073 : break;
4074 : }
4075 18274354 : CASE_CONVERT:
4076 18274354 : {
4077 18274354 : tree _q20 = TREE_OPERAND (_p0, 0);
4078 18274354 : switch (TREE_CODE (_q20))
4079 : {
4080 72 : case BIT_AND_EXPR:
4081 72 : {
4082 72 : tree _q30 = TREE_OPERAND (_q20, 0);
4083 72 : tree _q31 = TREE_OPERAND (_q20, 1);
4084 72 : switch (TREE_CODE (_q31))
4085 : {
4086 8 : case INTEGER_CST:
4087 8 : {
4088 8 : switch (TREE_CODE (_p1))
4089 : {
4090 0 : CASE_CONVERT:
4091 0 : {
4092 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4093 0 : switch (TREE_CODE (_q60))
4094 : {
4095 0 : case BIT_AND_EXPR:
4096 0 : {
4097 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4098 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4099 0 : switch (TREE_CODE (_q71))
4100 : {
4101 0 : case INTEGER_CST:
4102 0 : {
4103 0 : {
4104 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q60, _q70, _q71 };
4105 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4106 0 : if (res) return res;
4107 : }
4108 0 : break;
4109 : }
4110 : default:;
4111 : }
4112 : break;
4113 : }
4114 : default:;
4115 : }
4116 : break;
4117 : }
4118 0 : case BIT_AND_EXPR:
4119 0 : {
4120 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4121 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4122 0 : switch (TREE_CODE (_q61))
4123 : {
4124 0 : case INTEGER_CST:
4125 0 : {
4126 0 : {
4127 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1, _q60, _q61 };
4128 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4129 0 : if (res) return res;
4130 : }
4131 0 : break;
4132 : }
4133 : default:;
4134 : }
4135 : break;
4136 : }
4137 : default:;
4138 : }
4139 : break;
4140 : }
4141 : default:;
4142 : }
4143 : break;
4144 : }
4145 4922 : case NEGATE_EXPR:
4146 4922 : {
4147 4922 : tree _q30 = TREE_OPERAND (_q20, 0);
4148 4922 : {
4149 4922 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q30 };
4150 4922 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4151 4922 : if (res) return res;
4152 : }
4153 1771 : break;
4154 : }
4155 : default:;
4156 : }
4157 : break;
4158 : }
4159 124170 : case COND_EXPR:
4160 124170 : {
4161 124170 : tree _q20 = TREE_OPERAND (_p0, 0);
4162 124170 : tree _q21 = TREE_OPERAND (_p0, 1);
4163 124170 : tree _q22 = TREE_OPERAND (_p0, 2);
4164 124170 : if (integer_zerop (_q22))
4165 : {
4166 115362 : switch (TREE_CODE (_p1))
4167 : {
4168 44 : case COND_EXPR:
4169 44 : {
4170 44 : tree _q60 = TREE_OPERAND (_p1, 0);
4171 44 : tree _q61 = TREE_OPERAND (_p1, 1);
4172 44 : tree _q62 = TREE_OPERAND (_p1, 2);
4173 44 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4174 : {
4175 6 : if (integer_zerop (_q61))
4176 : {
4177 0 : {
4178 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
4179 0 : const enum tree_code op = PLUS_EXPR;
4180 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1237;
4181 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1237;
4182 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1237;
4183 0 : {
4184 0 : tree res_op0;
4185 0 : res_op0 = captures[1];
4186 0 : tree res_op1;
4187 0 : res_op1 = captures[2];
4188 0 : tree res_op2;
4189 0 : res_op2 = captures[4];
4190 0 : tree _r;
4191 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
4193 0 : return _r;
4194 : }
4195 0 : next_after_fail1237:;
4196 : }
4197 : }
4198 : }
4199 : break;
4200 : }
4201 : default:;
4202 : }
4203 : }
4204 124170 : if (integer_zerop (_q21))
4205 : {
4206 1022 : switch (TREE_CODE (_p1))
4207 : {
4208 0 : case COND_EXPR:
4209 0 : {
4210 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4211 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4212 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4213 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4214 : {
4215 0 : if (integer_zerop (_q62))
4216 : {
4217 0 : {
4218 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
4219 0 : const enum tree_code op = PLUS_EXPR;
4220 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1238;
4221 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1238;
4222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1238;
4223 0 : {
4224 0 : tree res_op0;
4225 0 : res_op0 = captures[1];
4226 0 : tree res_op1;
4227 0 : res_op1 = captures[2];
4228 0 : tree res_op2;
4229 0 : res_op2 = captures[4];
4230 0 : tree _r;
4231 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4232 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
4233 0 : return _r;
4234 : }
4235 0 : next_after_fail1238:;
4236 : }
4237 : }
4238 : }
4239 : break;
4240 : }
4241 : default:;
4242 : }
4243 : }
4244 124170 : switch (TREE_CODE (_q20))
4245 : {
4246 29526 : case LT_EXPR:
4247 29526 : {
4248 29526 : tree _q30 = TREE_OPERAND (_q20, 0);
4249 29526 : tree _q31 = TREE_OPERAND (_q20, 1);
4250 29526 : if (zerop (_q22))
4251 : {
4252 29460 : switch (TREE_CODE (_p1))
4253 : {
4254 0 : case COND_EXPR:
4255 0 : {
4256 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4257 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4258 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4259 0 : switch (TREE_CODE (_q80))
4260 : {
4261 0 : case GE_EXPR:
4262 0 : {
4263 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4264 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4265 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4266 : {
4267 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4268 : {
4269 0 : if (zerop (_q82))
4270 : {
4271 0 : {
4272 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4273 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
4274 0 : if (res) return res;
4275 : }
4276 : }
4277 : }
4278 : }
4279 : break;
4280 : }
4281 : default:;
4282 : }
4283 : break;
4284 : }
4285 : default:;
4286 : }
4287 : }
4288 : break;
4289 : }
4290 30555 : case LE_EXPR:
4291 30555 : {
4292 30555 : tree _q30 = TREE_OPERAND (_q20, 0);
4293 30555 : tree _q31 = TREE_OPERAND (_q20, 1);
4294 30555 : if (zerop (_q22))
4295 : {
4296 30297 : switch (TREE_CODE (_p1))
4297 : {
4298 5 : case COND_EXPR:
4299 5 : {
4300 5 : tree _q80 = TREE_OPERAND (_p1, 0);
4301 5 : tree _q81 = TREE_OPERAND (_p1, 1);
4302 5 : tree _q82 = TREE_OPERAND (_p1, 2);
4303 5 : switch (TREE_CODE (_q80))
4304 : {
4305 0 : case GT_EXPR:
4306 0 : {
4307 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4308 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4309 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4310 : {
4311 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4312 : {
4313 0 : if (zerop (_q82))
4314 : {
4315 0 : {
4316 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4317 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
4318 0 : if (res) return res;
4319 : }
4320 : }
4321 : }
4322 : }
4323 : break;
4324 : }
4325 : default:;
4326 : }
4327 : break;
4328 : }
4329 : default:;
4330 : }
4331 : }
4332 : break;
4333 : }
4334 1051 : case EQ_EXPR:
4335 1051 : {
4336 1051 : tree _q30 = TREE_OPERAND (_q20, 0);
4337 1051 : tree _q31 = TREE_OPERAND (_q20, 1);
4338 1051 : if (zerop (_q22))
4339 : {
4340 570 : switch (TREE_CODE (_p1))
4341 : {
4342 32 : case COND_EXPR:
4343 32 : {
4344 32 : tree _q80 = TREE_OPERAND (_p1, 0);
4345 32 : tree _q81 = TREE_OPERAND (_p1, 1);
4346 32 : tree _q82 = TREE_OPERAND (_p1, 2);
4347 32 : switch (TREE_CODE (_q80))
4348 : {
4349 0 : case NE_EXPR:
4350 0 : {
4351 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4352 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4353 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4354 : {
4355 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4356 : {
4357 0 : if (zerop (_q82))
4358 : {
4359 0 : {
4360 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4361 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
4362 0 : if (res) return res;
4363 : }
4364 : }
4365 : }
4366 : }
4367 : break;
4368 : }
4369 : default:;
4370 : }
4371 : break;
4372 : }
4373 : default:;
4374 : }
4375 : }
4376 : break;
4377 : }
4378 7951 : case NE_EXPR:
4379 7951 : {
4380 7951 : tree _q30 = TREE_OPERAND (_q20, 0);
4381 7951 : tree _q31 = TREE_OPERAND (_q20, 1);
4382 7951 : if (zerop (_q22))
4383 : {
4384 5350 : switch (TREE_CODE (_p1))
4385 : {
4386 7 : case COND_EXPR:
4387 7 : {
4388 7 : tree _q80 = TREE_OPERAND (_p1, 0);
4389 7 : tree _q81 = TREE_OPERAND (_p1, 1);
4390 7 : tree _q82 = TREE_OPERAND (_p1, 2);
4391 7 : switch (TREE_CODE (_q80))
4392 : {
4393 0 : case EQ_EXPR:
4394 0 : {
4395 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4396 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4397 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4398 : {
4399 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4400 : {
4401 0 : if (zerop (_q82))
4402 : {
4403 0 : {
4404 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4405 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
4406 0 : if (res) return res;
4407 : }
4408 : }
4409 : }
4410 : }
4411 : break;
4412 : }
4413 : default:;
4414 : }
4415 : break;
4416 : }
4417 : default:;
4418 : }
4419 : }
4420 : break;
4421 : }
4422 20554 : case GE_EXPR:
4423 20554 : {
4424 20554 : tree _q30 = TREE_OPERAND (_q20, 0);
4425 20554 : tree _q31 = TREE_OPERAND (_q20, 1);
4426 20554 : if (zerop (_q22))
4427 : {
4428 19239 : switch (TREE_CODE (_p1))
4429 : {
4430 0 : case COND_EXPR:
4431 0 : {
4432 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4433 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4434 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4435 0 : switch (TREE_CODE (_q80))
4436 : {
4437 0 : case LT_EXPR:
4438 0 : {
4439 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4440 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4441 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4442 : {
4443 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4444 : {
4445 0 : if (zerop (_q82))
4446 : {
4447 0 : {
4448 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4449 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
4450 0 : if (res) return res;
4451 : }
4452 : }
4453 : }
4454 : }
4455 : break;
4456 : }
4457 : default:;
4458 : }
4459 : break;
4460 : }
4461 : default:;
4462 : }
4463 : }
4464 : break;
4465 : }
4466 27725 : case GT_EXPR:
4467 27725 : {
4468 27725 : tree _q30 = TREE_OPERAND (_q20, 0);
4469 27725 : tree _q31 = TREE_OPERAND (_q20, 1);
4470 27725 : if (zerop (_q22))
4471 : {
4472 27696 : switch (TREE_CODE (_p1))
4473 : {
4474 0 : case COND_EXPR:
4475 0 : {
4476 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4477 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4478 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4479 0 : switch (TREE_CODE (_q80))
4480 : {
4481 0 : case LE_EXPR:
4482 0 : {
4483 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4484 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4485 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4486 : {
4487 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4488 : {
4489 0 : if (zerop (_q82))
4490 : {
4491 0 : {
4492 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4493 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
4494 0 : if (res) return res;
4495 : }
4496 : }
4497 : }
4498 : }
4499 : break;
4500 : }
4501 : default:;
4502 : }
4503 : break;
4504 : }
4505 : default:;
4506 : }
4507 : }
4508 : break;
4509 : }
4510 0 : case UNORDERED_EXPR:
4511 0 : {
4512 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4513 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4514 0 : if (zerop (_q22))
4515 : {
4516 0 : switch (TREE_CODE (_p1))
4517 : {
4518 0 : case COND_EXPR:
4519 0 : {
4520 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4521 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4522 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4523 0 : switch (TREE_CODE (_q80))
4524 : {
4525 0 : case ORDERED_EXPR:
4526 0 : {
4527 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4528 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4529 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4530 : {
4531 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4532 : {
4533 0 : if (zerop (_q82))
4534 : {
4535 0 : {
4536 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4537 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
4538 0 : if (res) return res;
4539 : }
4540 : }
4541 : }
4542 : }
4543 : break;
4544 : }
4545 : default:;
4546 : }
4547 : break;
4548 : }
4549 : default:;
4550 : }
4551 : }
4552 : break;
4553 : }
4554 0 : case ORDERED_EXPR:
4555 0 : {
4556 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4557 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4558 0 : if (zerop (_q22))
4559 : {
4560 0 : switch (TREE_CODE (_p1))
4561 : {
4562 0 : case COND_EXPR:
4563 0 : {
4564 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4565 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4566 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4567 0 : switch (TREE_CODE (_q80))
4568 : {
4569 0 : case UNORDERED_EXPR:
4570 0 : {
4571 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4572 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4573 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4574 : {
4575 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4576 : {
4577 0 : if (zerop (_q82))
4578 : {
4579 0 : {
4580 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4581 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
4582 0 : if (res) return res;
4583 : }
4584 : }
4585 : }
4586 : }
4587 : break;
4588 : }
4589 : default:;
4590 : }
4591 : break;
4592 : }
4593 : default:;
4594 : }
4595 : }
4596 : break;
4597 : }
4598 0 : case UNLT_EXPR:
4599 0 : {
4600 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4601 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4602 0 : if (zerop (_q22))
4603 : {
4604 0 : switch (TREE_CODE (_p1))
4605 : {
4606 0 : case COND_EXPR:
4607 0 : {
4608 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4609 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4610 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4611 0 : switch (TREE_CODE (_q80))
4612 : {
4613 0 : case GE_EXPR:
4614 0 : {
4615 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4616 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4617 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4618 : {
4619 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4620 : {
4621 0 : if (zerop (_q82))
4622 : {
4623 0 : {
4624 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4625 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
4626 0 : if (res) return res;
4627 : }
4628 : }
4629 : }
4630 : }
4631 : break;
4632 : }
4633 : default:;
4634 : }
4635 : break;
4636 : }
4637 : default:;
4638 : }
4639 : }
4640 : break;
4641 : }
4642 0 : case UNLE_EXPR:
4643 0 : {
4644 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4645 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4646 0 : if (zerop (_q22))
4647 : {
4648 0 : switch (TREE_CODE (_p1))
4649 : {
4650 0 : case COND_EXPR:
4651 0 : {
4652 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4653 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4654 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4655 0 : switch (TREE_CODE (_q80))
4656 : {
4657 0 : case GT_EXPR:
4658 0 : {
4659 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4660 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4661 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4662 : {
4663 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4664 : {
4665 0 : if (zerop (_q82))
4666 : {
4667 0 : {
4668 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4669 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
4670 0 : if (res) return res;
4671 : }
4672 : }
4673 : }
4674 : }
4675 : break;
4676 : }
4677 : default:;
4678 : }
4679 : break;
4680 : }
4681 : default:;
4682 : }
4683 : }
4684 : break;
4685 : }
4686 0 : case UNGT_EXPR:
4687 0 : {
4688 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4689 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4690 0 : if (zerop (_q22))
4691 : {
4692 0 : switch (TREE_CODE (_p1))
4693 : {
4694 0 : case COND_EXPR:
4695 0 : {
4696 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4697 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4698 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4699 0 : switch (TREE_CODE (_q80))
4700 : {
4701 0 : case LE_EXPR:
4702 0 : {
4703 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4704 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4705 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4706 : {
4707 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4708 : {
4709 0 : if (zerop (_q82))
4710 : {
4711 0 : {
4712 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4713 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
4714 0 : if (res) return res;
4715 : }
4716 : }
4717 : }
4718 : }
4719 : break;
4720 : }
4721 : default:;
4722 : }
4723 : break;
4724 : }
4725 : default:;
4726 : }
4727 : }
4728 : break;
4729 : }
4730 0 : case UNGE_EXPR:
4731 0 : {
4732 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4733 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4734 0 : if (zerop (_q22))
4735 : {
4736 0 : switch (TREE_CODE (_p1))
4737 : {
4738 0 : case COND_EXPR:
4739 0 : {
4740 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4741 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4742 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4743 0 : switch (TREE_CODE (_q80))
4744 : {
4745 0 : case LT_EXPR:
4746 0 : {
4747 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4748 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4749 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4750 : {
4751 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4752 : {
4753 0 : if (zerop (_q82))
4754 : {
4755 0 : {
4756 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4757 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
4758 0 : if (res) return res;
4759 : }
4760 : }
4761 : }
4762 : }
4763 : break;
4764 : }
4765 : default:;
4766 : }
4767 : break;
4768 : }
4769 : default:;
4770 : }
4771 : }
4772 : break;
4773 : }
4774 0 : case UNEQ_EXPR:
4775 0 : {
4776 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4777 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4778 0 : if (zerop (_q22))
4779 : {
4780 0 : switch (TREE_CODE (_p1))
4781 : {
4782 0 : case COND_EXPR:
4783 0 : {
4784 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4785 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4786 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4787 0 : switch (TREE_CODE (_q80))
4788 : {
4789 0 : case LTGT_EXPR:
4790 0 : {
4791 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4792 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4793 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4794 : {
4795 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4796 : {
4797 0 : if (zerop (_q82))
4798 : {
4799 0 : {
4800 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4801 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
4802 0 : if (res) return res;
4803 : }
4804 : }
4805 : }
4806 : }
4807 : break;
4808 : }
4809 : default:;
4810 : }
4811 : break;
4812 : }
4813 : default:;
4814 : }
4815 : }
4816 : break;
4817 : }
4818 0 : case LTGT_EXPR:
4819 0 : {
4820 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4821 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4822 0 : if (zerop (_q22))
4823 : {
4824 0 : switch (TREE_CODE (_p1))
4825 : {
4826 0 : case COND_EXPR:
4827 0 : {
4828 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4829 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4830 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4831 0 : switch (TREE_CODE (_q80))
4832 : {
4833 0 : case UNEQ_EXPR:
4834 0 : {
4835 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4836 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4837 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4838 : {
4839 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4840 : {
4841 0 : if (zerop (_q82))
4842 : {
4843 0 : {
4844 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4845 0 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
4846 0 : if (res) return res;
4847 : }
4848 : }
4849 : }
4850 : }
4851 : break;
4852 : }
4853 : default:;
4854 : }
4855 : break;
4856 : }
4857 : default:;
4858 : }
4859 : }
4860 : break;
4861 : }
4862 : default:;
4863 : }
4864 : break;
4865 : }
4866 168 : case VEC_COND_EXPR:
4867 168 : {
4868 168 : tree _q20 = TREE_OPERAND (_p0, 0);
4869 168 : tree _q21 = TREE_OPERAND (_p0, 1);
4870 168 : tree _q22 = TREE_OPERAND (_p0, 2);
4871 168 : if (integer_zerop (_q22))
4872 : {
4873 106 : switch (TREE_CODE (_p1))
4874 : {
4875 24 : case VEC_COND_EXPR:
4876 24 : {
4877 24 : tree _q60 = TREE_OPERAND (_p1, 0);
4878 24 : tree _q61 = TREE_OPERAND (_p1, 1);
4879 24 : tree _q62 = TREE_OPERAND (_p1, 2);
4880 24 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4881 : {
4882 0 : if (integer_zerop (_q61))
4883 : {
4884 0 : {
4885 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
4886 0 : const enum tree_code op = PLUS_EXPR;
4887 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1239;
4888 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1239;
4889 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1239;
4890 0 : {
4891 0 : tree res_op0;
4892 0 : res_op0 = captures[1];
4893 0 : tree res_op1;
4894 0 : res_op1 = captures[2];
4895 0 : tree res_op2;
4896 0 : res_op2 = captures[4];
4897 0 : tree _r;
4898 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4899 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
4900 0 : return _r;
4901 : }
4902 0 : next_after_fail1239:;
4903 : }
4904 : }
4905 : }
4906 : break;
4907 : }
4908 : default:;
4909 : }
4910 : }
4911 168 : if (integer_zerop (_q21))
4912 : {
4913 0 : switch (TREE_CODE (_p1))
4914 : {
4915 0 : case VEC_COND_EXPR:
4916 0 : {
4917 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4918 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4919 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4920 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4921 : {
4922 0 : if (integer_zerop (_q62))
4923 : {
4924 0 : {
4925 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
4926 0 : const enum tree_code op = PLUS_EXPR;
4927 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1240;
4928 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1240;
4929 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1240;
4930 0 : {
4931 0 : tree res_op0;
4932 0 : res_op0 = captures[1];
4933 0 : tree res_op1;
4934 0 : res_op1 = captures[2];
4935 0 : tree res_op2;
4936 0 : res_op2 = captures[4];
4937 0 : tree _r;
4938 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4939 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
4940 0 : return _r;
4941 : }
4942 0 : next_after_fail1240:;
4943 : }
4944 : }
4945 : }
4946 : break;
4947 : }
4948 : default:;
4949 : }
4950 : }
4951 168 : switch (TREE_CODE (_q20))
4952 : {
4953 8 : case LT_EXPR:
4954 8 : {
4955 8 : tree _q30 = TREE_OPERAND (_q20, 0);
4956 8 : tree _q31 = TREE_OPERAND (_q20, 1);
4957 8 : if (integer_zerop (_q22))
4958 : {
4959 8 : switch (TREE_CODE (_p1))
4960 : {
4961 0 : case VEC_COND_EXPR:
4962 0 : {
4963 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4964 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4965 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4966 0 : switch (TREE_CODE (_q80))
4967 : {
4968 0 : case GE_EXPR:
4969 0 : {
4970 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4971 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4972 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4973 : {
4974 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4975 : {
4976 0 : if (integer_zerop (_q82))
4977 : {
4978 0 : {
4979 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
4980 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
4981 0 : if (res) return res;
4982 : }
4983 : }
4984 : }
4985 : }
4986 : break;
4987 : }
4988 : default:;
4989 : }
4990 : break;
4991 : }
4992 : default:;
4993 : }
4994 : }
4995 : break;
4996 : }
4997 8 : case LE_EXPR:
4998 8 : {
4999 8 : tree _q30 = TREE_OPERAND (_q20, 0);
5000 8 : tree _q31 = TREE_OPERAND (_q20, 1);
5001 8 : if (integer_zerop (_q22))
5002 : {
5003 8 : switch (TREE_CODE (_p1))
5004 : {
5005 0 : case VEC_COND_EXPR:
5006 0 : {
5007 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5008 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5009 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5010 0 : switch (TREE_CODE (_q80))
5011 : {
5012 0 : case GT_EXPR:
5013 0 : {
5014 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5015 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5016 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5017 : {
5018 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5019 : {
5020 0 : if (integer_zerop (_q82))
5021 : {
5022 0 : {
5023 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5024 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
5025 0 : if (res) return res;
5026 : }
5027 : }
5028 : }
5029 : }
5030 : break;
5031 : }
5032 : default:;
5033 : }
5034 : break;
5035 : }
5036 : default:;
5037 : }
5038 : }
5039 : break;
5040 : }
5041 34 : case EQ_EXPR:
5042 34 : {
5043 34 : tree _q30 = TREE_OPERAND (_q20, 0);
5044 34 : tree _q31 = TREE_OPERAND (_q20, 1);
5045 34 : if (integer_zerop (_q22))
5046 : {
5047 34 : switch (TREE_CODE (_p1))
5048 : {
5049 24 : case VEC_COND_EXPR:
5050 24 : {
5051 24 : tree _q80 = TREE_OPERAND (_p1, 0);
5052 24 : tree _q81 = TREE_OPERAND (_p1, 1);
5053 24 : tree _q82 = TREE_OPERAND (_p1, 2);
5054 24 : switch (TREE_CODE (_q80))
5055 : {
5056 24 : case NE_EXPR:
5057 24 : {
5058 24 : tree _q90 = TREE_OPERAND (_q80, 0);
5059 24 : tree _q91 = TREE_OPERAND (_q80, 1);
5060 24 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5061 : {
5062 24 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5063 : {
5064 24 : if (integer_zerop (_q82))
5065 : {
5066 24 : {
5067 24 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5068 24 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
5069 24 : if (res) return res;
5070 : }
5071 : }
5072 : }
5073 : }
5074 : break;
5075 : }
5076 : default:;
5077 : }
5078 : break;
5079 : }
5080 : default:;
5081 : }
5082 : }
5083 : break;
5084 : }
5085 22 : case NE_EXPR:
5086 22 : {
5087 22 : tree _q30 = TREE_OPERAND (_q20, 0);
5088 22 : tree _q31 = TREE_OPERAND (_q20, 1);
5089 22 : if (integer_zerop (_q22))
5090 : {
5091 8 : switch (TREE_CODE (_p1))
5092 : {
5093 0 : case VEC_COND_EXPR:
5094 0 : {
5095 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5096 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5097 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5098 0 : switch (TREE_CODE (_q80))
5099 : {
5100 0 : case EQ_EXPR:
5101 0 : {
5102 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5103 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5104 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5105 : {
5106 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5107 : {
5108 0 : if (integer_zerop (_q82))
5109 : {
5110 0 : {
5111 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5112 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
5113 0 : if (res) return res;
5114 : }
5115 : }
5116 : }
5117 : }
5118 : break;
5119 : }
5120 : default:;
5121 : }
5122 : break;
5123 : }
5124 : default:;
5125 : }
5126 : }
5127 : break;
5128 : }
5129 15 : case GE_EXPR:
5130 15 : {
5131 15 : tree _q30 = TREE_OPERAND (_q20, 0);
5132 15 : tree _q31 = TREE_OPERAND (_q20, 1);
5133 15 : if (integer_zerop (_q22))
5134 : {
5135 15 : switch (TREE_CODE (_p1))
5136 : {
5137 0 : case VEC_COND_EXPR:
5138 0 : {
5139 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5140 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5141 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5142 0 : switch (TREE_CODE (_q80))
5143 : {
5144 0 : case LT_EXPR:
5145 0 : {
5146 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5147 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5148 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5149 : {
5150 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5151 : {
5152 0 : if (integer_zerop (_q82))
5153 : {
5154 0 : {
5155 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5156 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
5157 0 : if (res) return res;
5158 : }
5159 : }
5160 : }
5161 : }
5162 : break;
5163 : }
5164 : default:;
5165 : }
5166 : break;
5167 : }
5168 : default:;
5169 : }
5170 : }
5171 : break;
5172 : }
5173 81 : case GT_EXPR:
5174 81 : {
5175 81 : tree _q30 = TREE_OPERAND (_q20, 0);
5176 81 : tree _q31 = TREE_OPERAND (_q20, 1);
5177 81 : if (integer_zerop (_q22))
5178 : {
5179 33 : switch (TREE_CODE (_p1))
5180 : {
5181 0 : case VEC_COND_EXPR:
5182 0 : {
5183 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5184 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5185 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5186 0 : switch (TREE_CODE (_q80))
5187 : {
5188 0 : case LE_EXPR:
5189 0 : {
5190 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5191 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5192 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5193 : {
5194 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5195 : {
5196 0 : if (integer_zerop (_q82))
5197 : {
5198 0 : {
5199 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5200 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
5201 0 : if (res) return res;
5202 : }
5203 : }
5204 : }
5205 : }
5206 : break;
5207 : }
5208 : default:;
5209 : }
5210 : break;
5211 : }
5212 : default:;
5213 : }
5214 : }
5215 : break;
5216 : }
5217 0 : case UNORDERED_EXPR:
5218 0 : {
5219 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5220 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5221 0 : if (integer_zerop (_q22))
5222 : {
5223 0 : switch (TREE_CODE (_p1))
5224 : {
5225 0 : case VEC_COND_EXPR:
5226 0 : {
5227 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5228 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5229 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5230 0 : switch (TREE_CODE (_q80))
5231 : {
5232 0 : case ORDERED_EXPR:
5233 0 : {
5234 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5235 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5236 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5237 : {
5238 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5239 : {
5240 0 : if (integer_zerop (_q82))
5241 : {
5242 0 : {
5243 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5244 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
5245 0 : if (res) return res;
5246 : }
5247 : }
5248 : }
5249 : }
5250 : break;
5251 : }
5252 : default:;
5253 : }
5254 : break;
5255 : }
5256 : default:;
5257 : }
5258 : }
5259 : break;
5260 : }
5261 0 : case ORDERED_EXPR:
5262 0 : {
5263 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5264 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5265 0 : if (integer_zerop (_q22))
5266 : {
5267 0 : switch (TREE_CODE (_p1))
5268 : {
5269 0 : case VEC_COND_EXPR:
5270 0 : {
5271 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5272 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5273 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5274 0 : switch (TREE_CODE (_q80))
5275 : {
5276 0 : case UNORDERED_EXPR:
5277 0 : {
5278 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5279 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5280 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5281 : {
5282 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5283 : {
5284 0 : if (integer_zerop (_q82))
5285 : {
5286 0 : {
5287 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5288 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
5289 0 : if (res) return res;
5290 : }
5291 : }
5292 : }
5293 : }
5294 : break;
5295 : }
5296 : default:;
5297 : }
5298 : break;
5299 : }
5300 : default:;
5301 : }
5302 : }
5303 : break;
5304 : }
5305 0 : case UNLT_EXPR:
5306 0 : {
5307 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5308 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5309 0 : if (integer_zerop (_q22))
5310 : {
5311 0 : switch (TREE_CODE (_p1))
5312 : {
5313 0 : case VEC_COND_EXPR:
5314 0 : {
5315 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5316 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5317 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5318 0 : switch (TREE_CODE (_q80))
5319 : {
5320 0 : case GE_EXPR:
5321 0 : {
5322 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5323 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5324 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5325 : {
5326 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5327 : {
5328 0 : if (integer_zerop (_q82))
5329 : {
5330 0 : {
5331 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5332 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
5333 0 : if (res) return res;
5334 : }
5335 : }
5336 : }
5337 : }
5338 : break;
5339 : }
5340 : default:;
5341 : }
5342 : break;
5343 : }
5344 : default:;
5345 : }
5346 : }
5347 : break;
5348 : }
5349 0 : case UNLE_EXPR:
5350 0 : {
5351 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5352 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5353 0 : if (integer_zerop (_q22))
5354 : {
5355 0 : switch (TREE_CODE (_p1))
5356 : {
5357 0 : case VEC_COND_EXPR:
5358 0 : {
5359 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5360 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5361 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5362 0 : switch (TREE_CODE (_q80))
5363 : {
5364 0 : case GT_EXPR:
5365 0 : {
5366 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5367 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5368 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5369 : {
5370 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5371 : {
5372 0 : if (integer_zerop (_q82))
5373 : {
5374 0 : {
5375 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5376 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
5377 0 : if (res) return res;
5378 : }
5379 : }
5380 : }
5381 : }
5382 : break;
5383 : }
5384 : default:;
5385 : }
5386 : break;
5387 : }
5388 : default:;
5389 : }
5390 : }
5391 : break;
5392 : }
5393 0 : case UNGT_EXPR:
5394 0 : {
5395 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5396 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5397 0 : if (integer_zerop (_q22))
5398 : {
5399 0 : switch (TREE_CODE (_p1))
5400 : {
5401 0 : case VEC_COND_EXPR:
5402 0 : {
5403 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5404 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5405 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5406 0 : switch (TREE_CODE (_q80))
5407 : {
5408 0 : case LE_EXPR:
5409 0 : {
5410 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5411 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5412 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5413 : {
5414 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5415 : {
5416 0 : if (integer_zerop (_q82))
5417 : {
5418 0 : {
5419 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5420 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
5421 0 : if (res) return res;
5422 : }
5423 : }
5424 : }
5425 : }
5426 : break;
5427 : }
5428 : default:;
5429 : }
5430 : break;
5431 : }
5432 : default:;
5433 : }
5434 : }
5435 : break;
5436 : }
5437 0 : case UNGE_EXPR:
5438 0 : {
5439 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5440 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5441 0 : if (integer_zerop (_q22))
5442 : {
5443 0 : switch (TREE_CODE (_p1))
5444 : {
5445 0 : case VEC_COND_EXPR:
5446 0 : {
5447 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5448 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5449 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5450 0 : switch (TREE_CODE (_q80))
5451 : {
5452 0 : case LT_EXPR:
5453 0 : {
5454 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5455 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5456 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5457 : {
5458 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5459 : {
5460 0 : if (integer_zerop (_q82))
5461 : {
5462 0 : {
5463 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5464 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
5465 0 : if (res) return res;
5466 : }
5467 : }
5468 : }
5469 : }
5470 : break;
5471 : }
5472 : default:;
5473 : }
5474 : break;
5475 : }
5476 : default:;
5477 : }
5478 : }
5479 : break;
5480 : }
5481 0 : case UNEQ_EXPR:
5482 0 : {
5483 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5484 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5485 0 : if (integer_zerop (_q22))
5486 : {
5487 0 : switch (TREE_CODE (_p1))
5488 : {
5489 0 : case VEC_COND_EXPR:
5490 0 : {
5491 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5492 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5493 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5494 0 : switch (TREE_CODE (_q80))
5495 : {
5496 0 : case LTGT_EXPR:
5497 0 : {
5498 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5499 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5500 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5501 : {
5502 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5503 : {
5504 0 : if (integer_zerop (_q82))
5505 : {
5506 0 : {
5507 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5508 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
5509 0 : if (res) return res;
5510 : }
5511 : }
5512 : }
5513 : }
5514 : break;
5515 : }
5516 : default:;
5517 : }
5518 : break;
5519 : }
5520 : default:;
5521 : }
5522 : }
5523 : break;
5524 : }
5525 0 : case LTGT_EXPR:
5526 0 : {
5527 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5528 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5529 0 : if (integer_zerop (_q22))
5530 : {
5531 0 : switch (TREE_CODE (_p1))
5532 : {
5533 0 : case VEC_COND_EXPR:
5534 0 : {
5535 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5536 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5537 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5538 0 : switch (TREE_CODE (_q80))
5539 : {
5540 0 : case UNEQ_EXPR:
5541 0 : {
5542 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5543 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5544 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5545 : {
5546 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5547 : {
5548 0 : if (integer_zerop (_q82))
5549 : {
5550 0 : {
5551 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5552 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
5553 0 : if (res) return res;
5554 : }
5555 : }
5556 : }
5557 : }
5558 : break;
5559 : }
5560 : default:;
5561 : }
5562 : break;
5563 : }
5564 : default:;
5565 : }
5566 : }
5567 : break;
5568 : }
5569 : default:;
5570 : }
5571 : break;
5572 : }
5573 68015845 : default:;
5574 : }
5575 68015845 : {
5576 68015845 : tree _p0_pops[1];
5577 68015845 : if (tree_nop_convert (_p0, _p0_pops))
5578 : {
5579 13549987 : tree _q20 = _p0_pops[0];
5580 13549987 : switch (TREE_CODE (_q20))
5581 : {
5582 138787 : case MINUS_EXPR:
5583 138787 : {
5584 138787 : tree _q30 = TREE_OPERAND (_q20, 0);
5585 138787 : tree _q31 = TREE_OPERAND (_q20, 1);
5586 138787 : switch (TREE_CODE (_q30))
5587 : {
5588 2 : case BIT_AND_EXPR:
5589 2 : {
5590 2 : tree _q40 = TREE_OPERAND (_q30, 0);
5591 2 : tree _q41 = TREE_OPERAND (_q30, 1);
5592 2 : switch (TREE_CODE (_q31))
5593 : {
5594 1 : case BIT_IOR_EXPR:
5595 1 : {
5596 1 : tree _q70 = TREE_OPERAND (_q31, 0);
5597 1 : tree _q71 = TREE_OPERAND (_q31, 1);
5598 1 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5599 : {
5600 1 : if ((_q71 == _q41 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q41, 0) && types_match (_q71, _q41)))
5601 : {
5602 1 : if (integer_all_onesp (_p1))
5603 : {
5604 1 : {
5605 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
5606 1 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
5607 1 : if (res) return res;
5608 : }
5609 : }
5610 : }
5611 : }
5612 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
5613 : {
5614 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
5615 : {
5616 0 : if (integer_all_onesp (_p1))
5617 : {
5618 0 : {
5619 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q40 };
5620 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
5621 0 : if (res) return res;
5622 : }
5623 : }
5624 : }
5625 : }
5626 : break;
5627 : }
5628 : default:;
5629 : }
5630 : break;
5631 : }
5632 138786 : default:;
5633 : }
5634 138786 : {
5635 138786 : tree _q30_pops[1];
5636 138786 : if (tree_nop_convert (_q30, _q30_pops))
5637 : {
5638 90430 : tree _q40 = _q30_pops[0];
5639 90430 : switch (TREE_CODE (_q40))
5640 : {
5641 0 : case BIT_AND_EXPR:
5642 0 : {
5643 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5644 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5645 0 : {
5646 0 : tree _q31_pops[1];
5647 0 : if (tree_nop_convert (_q31, _q31_pops))
5648 : {
5649 0 : tree _q80 = _q31_pops[0];
5650 0 : switch (TREE_CODE (_q80))
5651 : {
5652 0 : case BIT_IOR_EXPR:
5653 0 : {
5654 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5655 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5656 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
5657 : {
5658 0 : if ((_q91 == _q51 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q51, 0) && types_match (_q91, _q51)))
5659 : {
5660 0 : if (integer_all_onesp (_p1))
5661 : {
5662 0 : {
5663 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
5664 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
5665 0 : if (res) return res;
5666 : }
5667 : }
5668 : }
5669 : }
5670 0 : if ((_q90 == _q51 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q51, 0) && types_match (_q90, _q51)))
5671 : {
5672 0 : if ((_q91 == _q50 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q50, 0) && types_match (_q91, _q50)))
5673 : {
5674 0 : if (integer_all_onesp (_p1))
5675 : {
5676 0 : {
5677 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
5678 0 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
5679 0 : if (res) return res;
5680 : }
5681 : }
5682 : }
5683 : }
5684 : break;
5685 : }
5686 : default:;
5687 : }
5688 : }
5689 : }
5690 0 : break;
5691 : }
5692 : default:;
5693 : }
5694 : }
5695 : }
5696 138786 : break;
5697 : }
5698 : default:;
5699 : }
5700 : }
5701 : }
5702 68015844 : switch (TREE_CODE (_p1))
5703 : {
5704 7892722 : CASE_CONVERT:
5705 7892722 : {
5706 7892722 : tree _q30 = TREE_OPERAND (_p1, 0);
5707 7892722 : switch (TREE_CODE (_q30))
5708 : {
5709 1833 : case NEGATE_EXPR:
5710 1833 : {
5711 1833 : tree _q40 = TREE_OPERAND (_q30, 0);
5712 1833 : {
5713 1833 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
5714 1833 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5715 1833 : if (res) return res;
5716 : }
5717 295 : break;
5718 : }
5719 : default:;
5720 : }
5721 : break;
5722 : }
5723 7841 : case NEGATE_EXPR:
5724 7841 : {
5725 7841 : tree _q30 = TREE_OPERAND (_p1, 0);
5726 7841 : {
5727 7841 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5728 7841 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5729 7841 : if (res) return res;
5730 : }
5731 0 : break;
5732 : }
5733 68006465 : default:;
5734 : }
5735 68006465 : switch (TREE_CODE (_p0))
5736 : {
5737 203272 : case NEGATE_EXPR:
5738 203272 : {
5739 203272 : tree _q20 = TREE_OPERAND (_p0, 0);
5740 203272 : {
5741 203272 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
5742 203272 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5743 203272 : if (res) return res;
5744 : }
5745 134 : break;
5746 : }
5747 67803327 : default:;
5748 : }
5749 67803327 : {
5750 67803327 : tree _p0_pops[1];
5751 67803327 : if (tree_nop_convert (_p0, _p0_pops))
5752 : {
5753 13543939 : tree _q20 = _p0_pops[0];
5754 13543939 : switch (TREE_CODE (_q20))
5755 : {
5756 138278 : case MINUS_EXPR:
5757 138278 : {
5758 138278 : tree _q30 = TREE_OPERAND (_q20, 0);
5759 138278 : tree _q31 = TREE_OPERAND (_q20, 1);
5760 138278 : {
5761 138278 : tree _q31_pops[1];
5762 138278 : if (tree_nop_convert (_q31, _q31_pops))
5763 : {
5764 100722 : tree _q50 = _q31_pops[0];
5765 100722 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5766 : {
5767 30 : {
5768 30 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
5769 30 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5770 30 : if (res) return res;
5771 : }
5772 : }
5773 : }
5774 : }
5775 138248 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5776 : {
5777 0 : {
5778 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
5779 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5780 0 : if (res) return res;
5781 : }
5782 : }
5783 138248 : if (CONSTANT_CLASS_P (_q31))
5784 : {
5785 18066 : if (CONSTANT_CLASS_P (_p1))
5786 : {
5787 17903 : {
5788 17903 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5789 17903 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
5790 17903 : if (res) return res;
5791 : }
5792 : }
5793 : }
5794 120345 : if (CONSTANT_CLASS_P (_q30))
5795 : {
5796 14694 : if (CONSTANT_CLASS_P (_p1))
5797 : {
5798 5865 : {
5799 5865 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5800 5865 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, PLUS_EXPR);
5801 5865 : if (res) return res;
5802 : }
5803 : }
5804 : }
5805 : break;
5806 : }
5807 1324006 : case PLUS_EXPR:
5808 1324006 : {
5809 1324006 : tree _q30 = TREE_OPERAND (_q20, 0);
5810 1324006 : tree _q31 = TREE_OPERAND (_q20, 1);
5811 1324006 : if (CONSTANT_CLASS_P (_q31))
5812 : {
5813 1125422 : if (CONSTANT_CLASS_P (_p1))
5814 : {
5815 1037039 : {
5816 1037039 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5817 1037039 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
5818 1037039 : if (res) return res;
5819 : }
5820 : }
5821 : }
5822 : break;
5823 : }
5824 : default:;
5825 : }
5826 : }
5827 : }
5828 66743390 : switch (TREE_CODE (_p1))
5829 : {
5830 171356 : case MINUS_EXPR:
5831 171356 : {
5832 171356 : tree _q30 = TREE_OPERAND (_p1, 0);
5833 171356 : tree _q31 = TREE_OPERAND (_p1, 1);
5834 171356 : {
5835 171356 : tree _q31_pops[1];
5836 171356 : if (tree_nop_convert (_q31, _q31_pops))
5837 : {
5838 60780 : tree _q50 = _q31_pops[0];
5839 60780 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5840 : {
5841 0 : {
5842 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5843 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5844 0 : if (res) return res;
5845 : }
5846 : }
5847 : }
5848 : }
5849 171356 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5850 : {
5851 316 : {
5852 316 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5853 316 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5854 316 : if (res) return res;
5855 : }
5856 : }
5857 : break;
5858 : }
5859 66743074 : default:;
5860 : }
5861 66743074 : {
5862 66743074 : tree _p1_pops[1];
5863 66743074 : if (tree_nop_convert (_p1, _p1_pops))
5864 : {
5865 7608080 : tree _q30 = _p1_pops[0];
5866 7608080 : switch (TREE_CODE (_q30))
5867 : {
5868 3610 : case MINUS_EXPR:
5869 3610 : {
5870 3610 : tree _q40 = TREE_OPERAND (_q30, 0);
5871 3610 : tree _q41 = TREE_OPERAND (_q30, 1);
5872 3610 : {
5873 3610 : tree _q41_pops[1];
5874 3610 : if (tree_nop_convert (_q41, _q41_pops))
5875 : {
5876 530 : tree _q60 = _q41_pops[0];
5877 530 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5878 : {
5879 0 : {
5880 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
5881 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5882 0 : if (res) return res;
5883 : }
5884 : }
5885 : }
5886 : }
5887 3610 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5888 : {
5889 0 : {
5890 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
5891 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
5892 0 : if (res) return res;
5893 : }
5894 : }
5895 : break;
5896 : }
5897 : default:;
5898 : }
5899 : }
5900 : }
5901 66743074 : switch (TREE_CODE (_p0))
5902 : {
5903 6420674 : case PLUS_EXPR:
5904 6420674 : {
5905 6420674 : tree _q20 = TREE_OPERAND (_p0, 0);
5906 6420674 : tree _q21 = TREE_OPERAND (_p0, 1);
5907 6420674 : switch (TREE_CODE (_p1))
5908 : {
5909 46252 : case MINUS_EXPR:
5910 46252 : {
5911 46252 : tree _q50 = TREE_OPERAND (_p1, 0);
5912 46252 : tree _q51 = TREE_OPERAND (_p1, 1);
5913 46252 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5914 : {
5915 142 : {
5916 142 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5917 142 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures);
5918 142 : if (res) return res;
5919 : }
5920 : }
5921 46110 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5922 : {
5923 311 : {
5924 311 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5925 311 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures);
5926 311 : if (res) return res;
5927 : }
5928 : }
5929 : break;
5930 : }
5931 6420221 : default:;
5932 : }
5933 6420221 : if (CONSTANT_CLASS_P (_q21))
5934 : {
5935 2558002 : if (CONSTANT_CLASS_P (_p1))
5936 : {
5937 1887797 : {
5938 1887797 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5939 1887797 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
5940 1887797 : if (res) return res;
5941 : }
5942 : }
5943 : }
5944 : break;
5945 : }
5946 1960512 : case MINUS_EXPR:
5947 1960512 : {
5948 1960512 : tree _q20 = TREE_OPERAND (_p0, 0);
5949 1960512 : tree _q21 = TREE_OPERAND (_p0, 1);
5950 1960512 : switch (TREE_CODE (_p1))
5951 : {
5952 1955 : case PLUS_EXPR:
5953 1955 : {
5954 1955 : tree _q50 = TREE_OPERAND (_p1, 0);
5955 1955 : tree _q51 = TREE_OPERAND (_p1, 1);
5956 1955 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5957 : {
5958 352 : {
5959 352 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
5960 352 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures);
5961 352 : if (res) return res;
5962 : }
5963 : }
5964 1603 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5965 : {
5966 27 : {
5967 27 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q50, _q20 };
5968 27 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures);
5969 27 : if (res) return res;
5970 : }
5971 : }
5972 : break;
5973 : }
5974 460 : case MINUS_EXPR:
5975 460 : {
5976 460 : tree _q50 = TREE_OPERAND (_p1, 0);
5977 460 : tree _q51 = TREE_OPERAND (_p1, 1);
5978 460 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5979 : {
5980 1 : {
5981 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5982 1 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
5983 1 : if (res) return res;
5984 : }
5985 : }
5986 459 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5987 : {
5988 9 : {
5989 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
5990 9 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures);
5991 9 : if (res) return res;
5992 : }
5993 : }
5994 : break;
5995 : }
5996 1960123 : default:;
5997 : }
5998 1960123 : if (CONSTANT_CLASS_P (_q21))
5999 : {
6000 122811 : if (CONSTANT_CLASS_P (_p1))
6001 : {
6002 82673 : {
6003 82673 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6004 82673 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
6005 82673 : if (res) return res;
6006 : }
6007 : }
6008 : }
6009 1877643 : if (CONSTANT_CLASS_P (_q20))
6010 : {
6011 401324 : if (CONSTANT_CLASS_P (_p1))
6012 : {
6013 235559 : {
6014 235559 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6015 235559 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6016 235559 : if (res) return res;
6017 : }
6018 : }
6019 : }
6020 : break;
6021 : }
6022 473 : case POINTER_DIFF_EXPR:
6023 473 : {
6024 473 : tree _q20 = TREE_OPERAND (_p0, 0);
6025 473 : tree _q21 = TREE_OPERAND (_p0, 1);
6026 473 : switch (TREE_CODE (_p1))
6027 : {
6028 7 : case POINTER_DIFF_EXPR:
6029 7 : {
6030 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6031 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6032 7 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6033 : {
6034 7 : {
6035 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6036 7 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6037 7 : if (res) return res;
6038 : }
6039 : }
6040 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6041 : {
6042 0 : {
6043 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6044 0 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6045 0 : if (res) return res;
6046 : }
6047 : }
6048 : break;
6049 : }
6050 : default:;
6051 : }
6052 : break;
6053 : }
6054 17204711 : CASE_CONVERT:
6055 17204711 : {
6056 17204711 : tree _q20 = TREE_OPERAND (_p0, 0);
6057 17204711 : switch (TREE_CODE (_p1))
6058 : {
6059 2740259 : CASE_CONVERT:
6060 2740259 : {
6061 2740259 : tree _q40 = TREE_OPERAND (_p1, 0);
6062 2740259 : {
6063 2740259 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6064 2740259 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6065 2740259 : if (res) return res;
6066 : }
6067 2740110 : break;
6068 : }
6069 17204562 : default:;
6070 : }
6071 17204562 : switch (TREE_CODE (_q20))
6072 : {
6073 113485 : case BIT_NOT_EXPR:
6074 113485 : {
6075 113485 : tree _q30 = TREE_OPERAND (_q20, 0);
6076 113485 : switch (TREE_CODE (_p1))
6077 : {
6078 185 : CASE_CONVERT:
6079 185 : {
6080 185 : tree _q50 = TREE_OPERAND (_p1, 0);
6081 185 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
6082 : {
6083 0 : {
6084 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6085 0 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6086 0 : if (res) return res;
6087 : }
6088 : }
6089 : break;
6090 : }
6091 : default:;
6092 : }
6093 : break;
6094 : }
6095 17204562 : default:;
6096 : }
6097 17204562 : switch (TREE_CODE (_p1))
6098 : {
6099 2740110 : CASE_CONVERT:
6100 2740110 : {
6101 2740110 : tree _q40 = TREE_OPERAND (_p1, 0);
6102 2740110 : switch (TREE_CODE (_q40))
6103 : {
6104 441 : case BIT_NOT_EXPR:
6105 441 : {
6106 441 : tree _q50 = TREE_OPERAND (_q40, 0);
6107 441 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6108 : {
6109 0 : {
6110 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6111 0 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6112 0 : if (res) return res;
6113 : }
6114 : }
6115 : break;
6116 : }
6117 : default:;
6118 : }
6119 : break;
6120 : }
6121 : default:;
6122 : }
6123 : break;
6124 : }
6125 317436 : case BIT_NOT_EXPR:
6126 317436 : {
6127 317436 : tree _q20 = TREE_OPERAND (_p0, 0);
6128 317436 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6129 : {
6130 539 : {
6131 539 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6132 539 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6133 539 : if (res) return res;
6134 : }
6135 : }
6136 316897 : if (integer_each_onep (_p1))
6137 : {
6138 2629 : {
6139 2629 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6140 2629 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6141 2629 : if (res) return res;
6142 : }
6143 : }
6144 : break;
6145 : }
6146 64533428 : default:;
6147 : }
6148 64533428 : switch (TREE_CODE (_p1))
6149 : {
6150 40071 : case BIT_NOT_EXPR:
6151 40071 : {
6152 40071 : tree _q30 = TREE_OPERAND (_p1, 0);
6153 40071 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6154 : {
6155 0 : {
6156 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6157 0 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6158 0 : if (res) return res;
6159 : }
6160 : }
6161 : break;
6162 : }
6163 64533428 : default:;
6164 : }
6165 64533428 : switch (TREE_CODE (_p0))
6166 : {
6167 17204562 : CASE_CONVERT:
6168 17204562 : {
6169 17204562 : tree _q20 = TREE_OPERAND (_p0, 0);
6170 17204562 : switch (TREE_CODE (_q20))
6171 : {
6172 113485 : case BIT_NOT_EXPR:
6173 113485 : {
6174 113485 : tree _q30 = TREE_OPERAND (_q20, 0);
6175 113485 : if (integer_each_onep (_p1))
6176 : {
6177 109894 : {
6178 109894 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6179 109894 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures);
6180 109894 : if (res) return res;
6181 : }
6182 : }
6183 : break;
6184 : }
6185 : default:;
6186 : }
6187 : break;
6188 : }
6189 12816223 : case MULT_EXPR:
6190 12816223 : {
6191 12816223 : tree _q20 = TREE_OPERAND (_p0, 0);
6192 12816223 : tree _q21 = TREE_OPERAND (_p0, 1);
6193 12816223 : switch (TREE_CODE (_p1))
6194 : {
6195 3294385 : case MULT_EXPR:
6196 3294385 : {
6197 3294385 : tree _q50 = TREE_OPERAND (_p1, 0);
6198 3294385 : tree _q51 = TREE_OPERAND (_p1, 1);
6199 3294385 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6200 : {
6201 792173 : {
6202 792173 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
6203 792173 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6204 792173 : if (res) return res;
6205 : }
6206 : }
6207 3289546 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6208 : {
6209 21 : {
6210 21 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
6211 21 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6212 21 : if (res) return res;
6213 : }
6214 : }
6215 3289541 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6216 : {
6217 243 : {
6218 243 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
6219 243 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6220 243 : if (res) return res;
6221 : }
6222 : }
6223 3289368 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6224 : {
6225 1245542 : {
6226 1245542 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
6227 1245542 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6228 1245542 : if (res) return res;
6229 : }
6230 : }
6231 : break;
6232 : }
6233 : default:;
6234 : }
6235 : break;
6236 : }
6237 63174083 : default:;
6238 : }
6239 63174083 : switch (TREE_CODE (_p1))
6240 : {
6241 3455305 : case MULT_EXPR:
6242 3455305 : {
6243 3455305 : tree _q30 = TREE_OPERAND (_p1, 0);
6244 3455305 : tree _q31 = TREE_OPERAND (_p1, 1);
6245 3455305 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6246 : {
6247 3853 : {
6248 3853 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6249 3853 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6250 3853 : if (res) return res;
6251 : }
6252 : }
6253 3451499 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6254 : {
6255 0 : {
6256 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6257 0 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6258 0 : if (res) return res;
6259 : }
6260 : }
6261 : break;
6262 : }
6263 63170277 : default:;
6264 : }
6265 63170277 : switch (TREE_CODE (_p0))
6266 : {
6267 11565912 : case MULT_EXPR:
6268 11565912 : {
6269 11565912 : tree _q20 = TREE_OPERAND (_p0, 0);
6270 11565912 : tree _q21 = TREE_OPERAND (_p0, 1);
6271 11565912 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6272 : {
6273 32755 : {
6274 32755 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6275 32755 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6276 32755 : if (res) return res;
6277 : }
6278 : }
6279 11533803 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6280 : {
6281 326723 : {
6282 326723 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
6283 326723 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6284 326723 : if (res) return res;
6285 : }
6286 : }
6287 11207708 : if (integer_nonzerop (_q20))
6288 : {
6289 102 : switch (TREE_CODE (_p1))
6290 : {
6291 50 : case INTEGER_CST:
6292 50 : {
6293 50 : {
6294 50 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6295 50 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures);
6296 50 : if (res) return res;
6297 : }
6298 50 : break;
6299 : }
6300 : default:;
6301 : }
6302 : }
6303 11207708 : if (integer_nonzerop (_q21))
6304 : {
6305 7429000 : switch (TREE_CODE (_p1))
6306 : {
6307 3705344 : case INTEGER_CST:
6308 3705344 : {
6309 3705344 : {
6310 3705344 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1 };
6311 3705344 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures);
6312 3705344 : if (res) return res;
6313 : }
6314 3256782 : break;
6315 : }
6316 : default:;
6317 : }
6318 : }
6319 10759146 : switch (TREE_CODE (_q20))
6320 : {
6321 201368 : case MINUS_EXPR:
6322 201368 : {
6323 201368 : tree _q30 = TREE_OPERAND (_q20, 0);
6324 201368 : tree _q31 = TREE_OPERAND (_q20, 1);
6325 201368 : if (tree_zero_one_valued_p (_q21))
6326 : {
6327 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6328 : {
6329 0 : {
6330 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q21 };
6331 0 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6332 0 : if (res) return res;
6333 : }
6334 : }
6335 : }
6336 : break;
6337 : }
6338 10759146 : default:;
6339 : }
6340 10759146 : if (tree_zero_one_valued_p (_q20))
6341 : {
6342 38318 : switch (TREE_CODE (_q21))
6343 : {
6344 9 : case MINUS_EXPR:
6345 9 : {
6346 9 : tree _q40 = TREE_OPERAND (_q21, 0);
6347 9 : tree _q41 = TREE_OPERAND (_q21, 1);
6348 9 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
6349 : {
6350 9 : {
6351 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
6352 9 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6353 9 : if (res) return res;
6354 : }
6355 : }
6356 : break;
6357 : }
6358 : default:;
6359 : }
6360 : }
6361 : break;
6362 : }
6363 3112 : case MIN_EXPR:
6364 3112 : {
6365 3112 : tree _q20 = TREE_OPERAND (_p0, 0);
6366 3112 : tree _q21 = TREE_OPERAND (_p0, 1);
6367 3112 : switch (TREE_CODE (_p1))
6368 : {
6369 0 : case MAX_EXPR:
6370 0 : {
6371 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6372 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6373 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6374 : {
6375 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6376 : {
6377 0 : {
6378 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6379 0 : if (!HONOR_NANS (captures[0])
6380 : )
6381 : {
6382 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1241;
6383 0 : {
6384 0 : tree res_op0;
6385 0 : res_op0 = captures[0];
6386 0 : tree res_op1;
6387 0 : res_op1 = captures[1];
6388 0 : tree _r;
6389 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6390 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
6391 0 : return _r;
6392 : }
6393 0 : next_after_fail1241:;
6394 : }
6395 : }
6396 : }
6397 : }
6398 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6399 : {
6400 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6401 : {
6402 0 : {
6403 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6404 0 : if (!HONOR_NANS (captures[0])
6405 : )
6406 : {
6407 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1242;
6408 0 : {
6409 0 : tree res_op0;
6410 0 : res_op0 = captures[0];
6411 0 : tree res_op1;
6412 0 : res_op1 = captures[1];
6413 0 : tree _r;
6414 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
6416 0 : return _r;
6417 : }
6418 0 : next_after_fail1242:;
6419 : }
6420 : }
6421 : }
6422 : }
6423 : break;
6424 : }
6425 : default:;
6426 : }
6427 : break;
6428 : }
6429 12076 : case MAX_EXPR:
6430 12076 : {
6431 12076 : tree _q20 = TREE_OPERAND (_p0, 0);
6432 12076 : tree _q21 = TREE_OPERAND (_p0, 1);
6433 12076 : switch (TREE_CODE (_p1))
6434 : {
6435 0 : case MIN_EXPR:
6436 0 : {
6437 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6438 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6439 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6440 : {
6441 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6442 : {
6443 0 : {
6444 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6445 0 : if (!HONOR_NANS (captures[0])
6446 : )
6447 : {
6448 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1243;
6449 0 : {
6450 0 : tree res_op0;
6451 0 : res_op0 = captures[0];
6452 0 : tree res_op1;
6453 0 : res_op1 = captures[1];
6454 0 : tree _r;
6455 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6456 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
6457 0 : return _r;
6458 : }
6459 0 : next_after_fail1243:;
6460 : }
6461 : }
6462 : }
6463 : }
6464 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6465 : {
6466 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6467 : {
6468 0 : {
6469 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6470 0 : if (!HONOR_NANS (captures[0])
6471 : )
6472 : {
6473 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1244;
6474 0 : {
6475 0 : tree res_op0;
6476 0 : res_op0 = captures[0];
6477 0 : tree res_op1;
6478 0 : res_op1 = captures[1];
6479 0 : tree _r;
6480 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6481 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
6482 0 : return _r;
6483 : }
6484 0 : next_after_fail1244:;
6485 : }
6486 : }
6487 : }
6488 : }
6489 : break;
6490 : }
6491 : default:;
6492 : }
6493 : break;
6494 : }
6495 62363509 : default:;
6496 : }
6497 62363509 : switch (TREE_CODE (_p1))
6498 : {
6499 3451435 : case MULT_EXPR:
6500 3451435 : {
6501 3451435 : tree _q30 = TREE_OPERAND (_p1, 0);
6502 3451435 : tree _q31 = TREE_OPERAND (_p1, 1);
6503 3451435 : switch (TREE_CODE (_q30))
6504 : {
6505 145004 : case MINUS_EXPR:
6506 145004 : {
6507 145004 : tree _q40 = TREE_OPERAND (_q30, 0);
6508 145004 : tree _q41 = TREE_OPERAND (_q30, 1);
6509 145004 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6510 : {
6511 16 : if (tree_zero_one_valued_p (_q31))
6512 : {
6513 0 : {
6514 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q31 };
6515 0 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6516 0 : if (res) return res;
6517 : }
6518 : }
6519 : }
6520 : break;
6521 : }
6522 3451435 : default:;
6523 : }
6524 3451435 : if (tree_zero_one_valued_p (_q30))
6525 : {
6526 13763 : switch (TREE_CODE (_q31))
6527 : {
6528 0 : case MINUS_EXPR:
6529 0 : {
6530 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6531 0 : tree _q51 = TREE_OPERAND (_q31, 1);
6532 0 : if ((_q51 == _p0 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _p0, 0) && types_match (_q51, _p0)))
6533 : {
6534 0 : {
6535 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q50, _q30 };
6536 0 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures);
6537 0 : if (res) return res;
6538 : }
6539 : }
6540 : break;
6541 : }
6542 : default:;
6543 : }
6544 : }
6545 : break;
6546 : }
6547 62363509 : default:;
6548 : }
6549 62363509 : switch (TREE_CODE (_p0))
6550 : {
6551 10759144 : case MULT_EXPR:
6552 10759144 : {
6553 10759144 : tree _q20 = TREE_OPERAND (_p0, 0);
6554 10759144 : tree _q21 = TREE_OPERAND (_p0, 1);
6555 10759144 : switch (TREE_CODE (_q20))
6556 : {
6557 18875 : case TRUNC_DIV_EXPR:
6558 18875 : {
6559 18875 : tree _q30 = TREE_OPERAND (_q20, 0);
6560 18875 : tree _q31 = TREE_OPERAND (_q20, 1);
6561 18875 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6562 : {
6563 2322 : switch (TREE_CODE (_p1))
6564 : {
6565 2 : case TRUNC_MOD_EXPR:
6566 2 : {
6567 2 : tree _q70 = TREE_OPERAND (_p1, 0);
6568 2 : tree _q71 = TREE_OPERAND (_p1, 1);
6569 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6570 : {
6571 2 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6572 : {
6573 2 : {
6574 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6575 2 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6576 2 : if (res) return res;
6577 : }
6578 : }
6579 : }
6580 : break;
6581 : }
6582 : default:;
6583 : }
6584 : }
6585 : break;
6586 : }
6587 0 : case CEIL_DIV_EXPR:
6588 0 : {
6589 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6590 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6591 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6592 : {
6593 0 : switch (TREE_CODE (_p1))
6594 : {
6595 0 : case CEIL_MOD_EXPR:
6596 0 : {
6597 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6598 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6599 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6600 : {
6601 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6602 : {
6603 0 : {
6604 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6605 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6606 0 : if (res) return res;
6607 : }
6608 : }
6609 : }
6610 : break;
6611 : }
6612 : default:;
6613 : }
6614 : }
6615 : break;
6616 : }
6617 0 : case FLOOR_DIV_EXPR:
6618 0 : {
6619 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6620 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6621 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6622 : {
6623 0 : switch (TREE_CODE (_p1))
6624 : {
6625 0 : case FLOOR_MOD_EXPR:
6626 0 : {
6627 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6628 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6629 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6630 : {
6631 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6632 : {
6633 0 : {
6634 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6635 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6636 0 : if (res) return res;
6637 : }
6638 : }
6639 : }
6640 : break;
6641 : }
6642 : default:;
6643 : }
6644 : }
6645 : break;
6646 : }
6647 0 : case ROUND_DIV_EXPR:
6648 0 : {
6649 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6650 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6651 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6652 : {
6653 0 : switch (TREE_CODE (_p1))
6654 : {
6655 0 : case ROUND_MOD_EXPR:
6656 0 : {
6657 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6658 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6659 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6660 : {
6661 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6662 : {
6663 0 : {
6664 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6665 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
6666 0 : if (res) return res;
6667 : }
6668 : }
6669 : }
6670 : break;
6671 : }
6672 : default:;
6673 : }
6674 : }
6675 : break;
6676 : }
6677 10759142 : default:;
6678 : }
6679 10759142 : switch (TREE_CODE (_q21))
6680 : {
6681 6 : case TRUNC_DIV_EXPR:
6682 6 : {
6683 6 : tree _q40 = TREE_OPERAND (_q21, 0);
6684 6 : tree _q41 = TREE_OPERAND (_q21, 1);
6685 6 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6686 : {
6687 0 : switch (TREE_CODE (_p1))
6688 : {
6689 0 : case TRUNC_MOD_EXPR:
6690 0 : {
6691 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6692 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6693 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6694 : {
6695 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6696 : {
6697 0 : {
6698 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6699 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6700 0 : if (res) return res;
6701 : }
6702 : }
6703 : }
6704 : break;
6705 : }
6706 : default:;
6707 : }
6708 : }
6709 : break;
6710 : }
6711 4 : case CEIL_DIV_EXPR:
6712 4 : {
6713 4 : tree _q40 = TREE_OPERAND (_q21, 0);
6714 4 : tree _q41 = TREE_OPERAND (_q21, 1);
6715 4 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6716 : {
6717 0 : switch (TREE_CODE (_p1))
6718 : {
6719 0 : case CEIL_MOD_EXPR:
6720 0 : {
6721 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6722 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6723 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6724 : {
6725 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6726 : {
6727 0 : {
6728 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6729 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6730 0 : if (res) return res;
6731 : }
6732 : }
6733 : }
6734 : break;
6735 : }
6736 : default:;
6737 : }
6738 : }
6739 : break;
6740 : }
6741 0 : case FLOOR_DIV_EXPR:
6742 0 : {
6743 0 : tree _q40 = TREE_OPERAND (_q21, 0);
6744 0 : tree _q41 = TREE_OPERAND (_q21, 1);
6745 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6746 : {
6747 0 : switch (TREE_CODE (_p1))
6748 : {
6749 0 : case FLOOR_MOD_EXPR:
6750 0 : {
6751 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6752 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6753 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6754 : {
6755 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6756 : {
6757 0 : {
6758 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6759 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6760 0 : if (res) return res;
6761 : }
6762 : }
6763 : }
6764 : break;
6765 : }
6766 : default:;
6767 : }
6768 : }
6769 : break;
6770 : }
6771 0 : case ROUND_DIV_EXPR:
6772 0 : {
6773 0 : tree _q40 = TREE_OPERAND (_q21, 0);
6774 0 : tree _q41 = TREE_OPERAND (_q21, 1);
6775 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6776 : {
6777 0 : switch (TREE_CODE (_p1))
6778 : {
6779 0 : case ROUND_MOD_EXPR:
6780 0 : {
6781 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6782 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6783 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6784 : {
6785 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6786 : {
6787 0 : {
6788 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6789 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
6790 0 : if (res) return res;
6791 : }
6792 : }
6793 : }
6794 : break;
6795 : }
6796 : default:;
6797 : }
6798 : }
6799 : break;
6800 : }
6801 : default:;
6802 : }
6803 : break;
6804 : }
6805 29918 : case TRUNC_MOD_EXPR:
6806 29918 : {
6807 29918 : tree _q20 = TREE_OPERAND (_p0, 0);
6808 29918 : tree _q21 = TREE_OPERAND (_p0, 1);
6809 29918 : switch (TREE_CODE (_p1))
6810 : {
6811 119 : case MULT_EXPR:
6812 119 : {
6813 119 : tree _q50 = TREE_OPERAND (_p1, 0);
6814 119 : tree _q51 = TREE_OPERAND (_p1, 1);
6815 119 : switch (TREE_CODE (_q50))
6816 : {
6817 106 : case TRUNC_DIV_EXPR:
6818 106 : {
6819 106 : tree _q60 = TREE_OPERAND (_q50, 0);
6820 106 : tree _q61 = TREE_OPERAND (_q50, 1);
6821 106 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6822 : {
6823 106 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
6824 : {
6825 94 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6826 : {
6827 0 : {
6828 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6829 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6830 0 : if (res) return res;
6831 : }
6832 : }
6833 : }
6834 : }
6835 : break;
6836 : }
6837 119 : default:;
6838 : }
6839 119 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6840 : {
6841 0 : switch (TREE_CODE (_q51))
6842 : {
6843 0 : case TRUNC_DIV_EXPR:
6844 0 : {
6845 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6846 0 : tree _q71 = TREE_OPERAND (_q51, 1);
6847 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6848 : {
6849 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
6850 : {
6851 0 : {
6852 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6853 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6854 0 : if (res) return res;
6855 : }
6856 : }
6857 : }
6858 : break;
6859 : }
6860 : default:;
6861 : }
6862 : }
6863 : break;
6864 : }
6865 : default:;
6866 : }
6867 : break;
6868 : }
6869 0 : case CEIL_MOD_EXPR:
6870 0 : {
6871 0 : tree _q20 = TREE_OPERAND (_p0, 0);
6872 0 : tree _q21 = TREE_OPERAND (_p0, 1);
6873 0 : switch (TREE_CODE (_p1))
6874 : {
6875 0 : case MULT_EXPR:
6876 0 : {
6877 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6878 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6879 0 : switch (TREE_CODE (_q50))
6880 : {
6881 0 : case CEIL_DIV_EXPR:
6882 0 : {
6883 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6884 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6885 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6886 : {
6887 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
6888 : {
6889 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6890 : {
6891 0 : {
6892 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6893 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6894 0 : if (res) return res;
6895 : }
6896 : }
6897 : }
6898 : }
6899 : break;
6900 : }
6901 0 : default:;
6902 : }
6903 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6904 : {
6905 0 : switch (TREE_CODE (_q51))
6906 : {
6907 0 : case CEIL_DIV_EXPR:
6908 0 : {
6909 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6910 0 : tree _q71 = TREE_OPERAND (_q51, 1);
6911 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6912 : {
6913 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
6914 : {
6915 0 : {
6916 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6917 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6918 0 : if (res) return res;
6919 : }
6920 : }
6921 : }
6922 : break;
6923 : }
6924 : default:;
6925 : }
6926 : }
6927 : break;
6928 : }
6929 : default:;
6930 : }
6931 : break;
6932 : }
6933 126 : case FLOOR_MOD_EXPR:
6934 126 : {
6935 126 : tree _q20 = TREE_OPERAND (_p0, 0);
6936 126 : tree _q21 = TREE_OPERAND (_p0, 1);
6937 126 : switch (TREE_CODE (_p1))
6938 : {
6939 0 : case MULT_EXPR:
6940 0 : {
6941 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6942 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6943 0 : switch (TREE_CODE (_q50))
6944 : {
6945 0 : case FLOOR_DIV_EXPR:
6946 0 : {
6947 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6948 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6949 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6950 : {
6951 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
6952 : {
6953 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6954 : {
6955 0 : {
6956 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6957 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6958 0 : if (res) return res;
6959 : }
6960 : }
6961 : }
6962 : }
6963 : break;
6964 : }
6965 0 : default:;
6966 : }
6967 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6968 : {
6969 0 : switch (TREE_CODE (_q51))
6970 : {
6971 0 : case FLOOR_DIV_EXPR:
6972 0 : {
6973 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6974 0 : tree _q71 = TREE_OPERAND (_q51, 1);
6975 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6976 : {
6977 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
6978 : {
6979 0 : {
6980 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6981 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6982 0 : if (res) return res;
6983 : }
6984 : }
6985 : }
6986 : break;
6987 : }
6988 : default:;
6989 : }
6990 : }
6991 : break;
6992 : }
6993 : default:;
6994 : }
6995 : break;
6996 : }
6997 0 : case ROUND_MOD_EXPR:
6998 0 : {
6999 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7000 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7001 0 : switch (TREE_CODE (_p1))
7002 : {
7003 0 : case MULT_EXPR:
7004 0 : {
7005 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7006 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7007 0 : switch (TREE_CODE (_q50))
7008 : {
7009 0 : case ROUND_DIV_EXPR:
7010 0 : {
7011 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7012 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7013 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7014 : {
7015 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7016 : {
7017 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7018 : {
7019 0 : {
7020 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7021 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7022 0 : if (res) return res;
7023 : }
7024 : }
7025 : }
7026 : }
7027 : break;
7028 : }
7029 0 : default:;
7030 : }
7031 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7032 : {
7033 0 : switch (TREE_CODE (_q51))
7034 : {
7035 0 : case ROUND_DIV_EXPR:
7036 0 : {
7037 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7038 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7039 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7040 : {
7041 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7042 : {
7043 0 : {
7044 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7045 0 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7046 0 : if (res) return res;
7047 : }
7048 : }
7049 : }
7050 : break;
7051 : }
7052 : default:;
7053 : }
7054 : }
7055 : break;
7056 : }
7057 : default:;
7058 : }
7059 : break;
7060 : }
7061 62363507 : default:;
7062 : }
7063 62363507 : switch (TREE_CODE (_p1))
7064 : {
7065 3074596 : case REAL_CST:
7066 3074596 : {
7067 3074596 : {
7068 3074596 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7069 3074596 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
7070 : )
7071 : {
7072 113852 : {
7073 113852 : tree tem = const_unop (NEGATE_EXPR, type, captures[1]);
7074 113852 : if (!TREE_OVERFLOW (tem) || !flag_trapping_math
7075 : )
7076 : {
7077 113852 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1245;
7078 113852 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1245;
7079 113852 : {
7080 113852 : tree res_op0;
7081 113852 : res_op0 = captures[0];
7082 113852 : tree res_op1;
7083 113852 : res_op1 = tem;
7084 113852 : tree _r;
7085 113852 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
7086 113852 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7087 113852 : return _r;
7088 : }
7089 2960744 : next_after_fail1245:;
7090 : }
7091 : }
7092 : }
7093 : }
7094 2960744 : break;
7095 : }
7096 62249655 : default:;
7097 : }
7098 62249655 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
7099 : {
7100 1585313 : {
7101 1585313 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7102 1585313 : if (SCALAR_FLOAT_TYPE_P (type)
7103 : )
7104 : {
7105 683 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1246;
7106 683 : {
7107 683 : tree res_op0;
7108 683 : res_op0 = captures[0];
7109 683 : tree res_op1;
7110 683 : res_op1 = build_real (type, dconst2);
7111 683 : tree _r;
7112 683 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7113 683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
7114 683 : return _r;
7115 : }
7116 0 : next_after_fail1246:;
7117 : }
7118 : else
7119 : {
7120 1584630 : if (INTEGRAL_TYPE_P (type)
7121 : )
7122 : {
7123 1584554 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1247;
7124 1584554 : {
7125 1584554 : tree res_op0;
7126 1584554 : res_op0 = captures[0];
7127 1584554 : tree res_op1;
7128 1584554 : res_op1 = build_int_cst (type, 2);
7129 1584554 : tree _r;
7130 1584554 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7131 1584554 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
7132 1584554 : return _r;
7133 : }
7134 0 : next_after_fail1247:;
7135 : }
7136 : }
7137 : }
7138 : }
7139 60664418 : switch (TREE_CODE (_p0))
7140 : {
7141 144 : case VEC_COND_EXPR:
7142 144 : {
7143 144 : tree _q20 = TREE_OPERAND (_p0, 0);
7144 144 : tree _q21 = TREE_OPERAND (_p0, 1);
7145 144 : tree _q22 = TREE_OPERAND (_p0, 2);
7146 144 : switch (TREE_CODE (_p1))
7147 : {
7148 48 : case VEC_COND_EXPR:
7149 48 : {
7150 48 : tree _q60 = TREE_OPERAND (_p1, 0);
7151 48 : tree _q61 = TREE_OPERAND (_p1, 1);
7152 48 : tree _q62 = TREE_OPERAND (_p1, 2);
7153 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7154 : {
7155 24 : {
7156 24 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7157 24 : if (VECTOR_TYPE_P (type)
7158 24 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7159 : || types_match (type, TREE_TYPE (captures[2]))
7160 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7161 : || (optimize_vectors_before_lowering_p ()
7162 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7163 : )
7164 : {
7165 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1248;
7166 24 : {
7167 24 : tree res_op0;
7168 24 : res_op0 = captures[1];
7169 24 : tree res_op1;
7170 24 : {
7171 24 : tree _o1[2], _r1;
7172 24 : _o1[0] = captures[2];
7173 24 : _o1[1] = captures[5];
7174 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7175 24 : if (EXPR_P (_r1))
7176 0 : goto next_after_fail1248;
7177 24 : res_op1 = _r1;
7178 : }
7179 24 : tree res_op2;
7180 24 : {
7181 24 : tree _o1[2], _r1;
7182 24 : _o1[0] = captures[3];
7183 24 : _o1[1] = captures[6];
7184 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7185 24 : if (EXPR_P (_r1))
7186 0 : goto next_after_fail1248;
7187 24 : res_op2 = _r1;
7188 : }
7189 24 : tree _r;
7190 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7191 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
7192 24 : return _r;
7193 : }
7194 0 : next_after_fail1248:;
7195 : }
7196 : }
7197 : }
7198 : break;
7199 : }
7200 120 : default:;
7201 : }
7202 120 : {
7203 120 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7204 120 : if (VECTOR_TYPE_P (type)
7205 120 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7206 : || types_match (type, TREE_TYPE (captures[2]))
7207 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7208 : || (optimize_vectors_before_lowering_p ()
7209 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7210 : )
7211 : {
7212 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1249;
7213 120 : {
7214 120 : if (! tree_invariant_p (captures[4])) goto next_after_fail1249;
7215 26 : tree res_op0;
7216 26 : res_op0 = captures[1];
7217 26 : tree res_op1;
7218 26 : {
7219 26 : tree _o1[2], _r1;
7220 26 : _o1[0] = captures[2];
7221 26 : _o1[1] = unshare_expr (captures[4]);
7222 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7223 26 : if (EXPR_P (_r1))
7224 0 : goto next_after_fail1249;
7225 26 : res_op1 = _r1;
7226 : }
7227 26 : tree res_op2;
7228 26 : {
7229 26 : tree _o1[2], _r1;
7230 26 : _o1[0] = captures[3];
7231 26 : _o1[1] = captures[4];
7232 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7233 26 : if (EXPR_P (_r1))
7234 0 : goto next_after_fail1249;
7235 26 : res_op2 = _r1;
7236 : }
7237 26 : tree _r;
7238 26 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7239 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7240 26 : return _r;
7241 : }
7242 94 : next_after_fail1249:;
7243 : }
7244 : }
7245 94 : if (integer_each_onep (_q21))
7246 : {
7247 0 : if (integer_zerop (_q22))
7248 : {
7249 0 : {
7250 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p0, _q20, _q21, _q22 };
7251 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
7252 0 : if (res) return res;
7253 : }
7254 : }
7255 : }
7256 : break;
7257 : }
7258 60664368 : default:;
7259 : }
7260 60664368 : switch (TREE_CODE (_p1))
7261 : {
7262 40 : case VEC_COND_EXPR:
7263 40 : {
7264 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7265 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7266 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7267 40 : {
7268 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7269 40 : if (VECTOR_TYPE_P (type)
7270 40 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7271 : || types_match (type, TREE_TYPE (captures[3]))
7272 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
7273 : || (optimize_vectors_before_lowering_p ()
7274 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
7275 : )
7276 : {
7277 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1250;
7278 40 : {
7279 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1250;
7280 0 : tree res_op0;
7281 0 : res_op0 = captures[2];
7282 0 : tree res_op1;
7283 0 : {
7284 0 : tree _o1[2], _r1;
7285 0 : _o1[0] = unshare_expr (captures[0]);
7286 0 : _o1[1] = captures[3];
7287 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7288 0 : if (EXPR_P (_r1))
7289 0 : goto next_after_fail1250;
7290 0 : res_op1 = _r1;
7291 : }
7292 0 : tree res_op2;
7293 0 : {
7294 0 : tree _o1[2], _r1;
7295 0 : _o1[0] = captures[0];
7296 0 : _o1[1] = captures[4];
7297 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7298 0 : if (EXPR_P (_r1))
7299 0 : goto next_after_fail1250;
7300 0 : res_op2 = _r1;
7301 : }
7302 0 : tree _r;
7303 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7304 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
7305 0 : return _r;
7306 : }
7307 40 : next_after_fail1250:;
7308 : }
7309 : }
7310 40 : break;
7311 : }
7312 327256 : case VIEW_CONVERT_EXPR:
7313 327256 : {
7314 327256 : tree _q30 = TREE_OPERAND (_p1, 0);
7315 327256 : switch (TREE_CODE (_q30))
7316 : {
7317 0 : case VEC_COND_EXPR:
7318 0 : {
7319 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7320 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7321 0 : tree _q42 = TREE_OPERAND (_q30, 2);
7322 0 : if (integer_each_onep (_q41))
7323 : {
7324 0 : if (integer_zerop (_q42))
7325 : {
7326 0 : {
7327 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42 };
7328 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
7329 0 : if (res) return res;
7330 : }
7331 : }
7332 : }
7333 : break;
7334 : }
7335 : default:;
7336 : }
7337 : break;
7338 : }
7339 60664368 : default:;
7340 : }
7341 60664368 : switch (TREE_CODE (_p0))
7342 : {
7343 316396 : case VIEW_CONVERT_EXPR:
7344 316396 : {
7345 316396 : tree _q20 = TREE_OPERAND (_p0, 0);
7346 316396 : switch (TREE_CODE (_q20))
7347 : {
7348 0 : case VEC_COND_EXPR:
7349 0 : {
7350 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7351 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7352 0 : tree _q32 = TREE_OPERAND (_q20, 2);
7353 0 : if (integer_each_onep (_q31))
7354 : {
7355 0 : if (integer_zerop (_q32))
7356 : {
7357 0 : {
7358 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q30, _q31, _q32 };
7359 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
7360 0 : if (res) return res;
7361 : }
7362 : }
7363 : }
7364 : break;
7365 : }
7366 : default:;
7367 : }
7368 : break;
7369 : }
7370 60664368 : default:;
7371 : }
7372 60664368 : switch (TREE_CODE (_p1))
7373 : {
7374 40 : case VEC_COND_EXPR:
7375 40 : {
7376 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7377 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7378 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7379 40 : if (integer_each_onep (_q31))
7380 : {
7381 0 : if (integer_zerop (_q32))
7382 : {
7383 0 : {
7384 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7385 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
7386 0 : if (res) return res;
7387 : }
7388 : }
7389 : }
7390 : break;
7391 : }
7392 60664368 : default:;
7393 : }
7394 60664368 : switch (TREE_CODE (_p0))
7395 : {
7396 17088975 : CASE_CONVERT:
7397 17088975 : {
7398 17088975 : tree _q20 = TREE_OPERAND (_p0, 0);
7399 17088975 : switch (TREE_CODE (_q20))
7400 : {
7401 0 : case LT_EXPR:
7402 0 : {
7403 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7404 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7405 0 : if (integer_minus_onep (_p1))
7406 : {
7407 0 : {
7408 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7409 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
7410 0 : if (res) return res;
7411 : }
7412 : }
7413 : break;
7414 : }
7415 0 : case LE_EXPR:
7416 0 : {
7417 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7418 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7419 0 : if (integer_minus_onep (_p1))
7420 : {
7421 0 : {
7422 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7423 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
7424 0 : if (res) return res;
7425 : }
7426 : }
7427 : break;
7428 : }
7429 78 : case EQ_EXPR:
7430 78 : {
7431 78 : tree _q30 = TREE_OPERAND (_q20, 0);
7432 78 : tree _q31 = TREE_OPERAND (_q20, 1);
7433 78 : if (integer_minus_onep (_p1))
7434 : {
7435 0 : {
7436 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7437 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
7438 0 : if (res) return res;
7439 : }
7440 : }
7441 : break;
7442 : }
7443 224 : case NE_EXPR:
7444 224 : {
7445 224 : tree _q30 = TREE_OPERAND (_q20, 0);
7446 224 : tree _q31 = TREE_OPERAND (_q20, 1);
7447 224 : if (integer_minus_onep (_p1))
7448 : {
7449 0 : {
7450 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7451 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
7452 0 : if (res) return res;
7453 : }
7454 : }
7455 : break;
7456 : }
7457 12 : case GE_EXPR:
7458 12 : {
7459 12 : tree _q30 = TREE_OPERAND (_q20, 0);
7460 12 : tree _q31 = TREE_OPERAND (_q20, 1);
7461 12 : if (integer_minus_onep (_p1))
7462 : {
7463 0 : {
7464 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7465 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
7466 0 : if (res) return res;
7467 : }
7468 : }
7469 : break;
7470 : }
7471 1 : case GT_EXPR:
7472 1 : {
7473 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7474 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7475 1 : if (integer_minus_onep (_p1))
7476 : {
7477 0 : {
7478 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7479 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
7480 0 : if (res) return res;
7481 : }
7482 : }
7483 : break;
7484 : }
7485 0 : case UNORDERED_EXPR:
7486 0 : {
7487 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7488 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7489 0 : if (integer_minus_onep (_p1))
7490 : {
7491 0 : {
7492 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7493 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
7494 0 : if (res) return res;
7495 : }
7496 : }
7497 : break;
7498 : }
7499 0 : case ORDERED_EXPR:
7500 0 : {
7501 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7502 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7503 0 : if (integer_minus_onep (_p1))
7504 : {
7505 0 : {
7506 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7507 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
7508 0 : if (res) return res;
7509 : }
7510 : }
7511 : break;
7512 : }
7513 0 : case UNLT_EXPR:
7514 0 : {
7515 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7516 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7517 0 : if (integer_minus_onep (_p1))
7518 : {
7519 0 : {
7520 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7521 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
7522 0 : if (res) return res;
7523 : }
7524 : }
7525 : break;
7526 : }
7527 0 : case UNLE_EXPR:
7528 0 : {
7529 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7530 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7531 0 : if (integer_minus_onep (_p1))
7532 : {
7533 0 : {
7534 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7535 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
7536 0 : if (res) return res;
7537 : }
7538 : }
7539 : break;
7540 : }
7541 0 : case UNGT_EXPR:
7542 0 : {
7543 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7544 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7545 0 : if (integer_minus_onep (_p1))
7546 : {
7547 0 : {
7548 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7549 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
7550 0 : if (res) return res;
7551 : }
7552 : }
7553 : break;
7554 : }
7555 0 : case UNGE_EXPR:
7556 0 : {
7557 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7558 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7559 0 : if (integer_minus_onep (_p1))
7560 : {
7561 0 : {
7562 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7563 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
7564 0 : if (res) return res;
7565 : }
7566 : }
7567 : break;
7568 : }
7569 0 : case UNEQ_EXPR:
7570 0 : {
7571 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7572 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7573 0 : if (integer_minus_onep (_p1))
7574 : {
7575 0 : {
7576 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7577 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
7578 0 : if (res) return res;
7579 : }
7580 : }
7581 : break;
7582 : }
7583 0 : case LTGT_EXPR:
7584 0 : {
7585 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7586 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7587 0 : if (integer_minus_onep (_p1))
7588 : {
7589 0 : {
7590 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7591 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
7592 0 : if (res) return res;
7593 : }
7594 : }
7595 : break;
7596 : }
7597 : default:;
7598 : }
7599 : break;
7600 : }
7601 155 : case LT_EXPR:
7602 155 : {
7603 155 : tree _q20 = TREE_OPERAND (_p0, 0);
7604 155 : tree _q21 = TREE_OPERAND (_p0, 1);
7605 155 : if (integer_minus_onep (_p1))
7606 : {
7607 0 : {
7608 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7609 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
7610 0 : if (res) return res;
7611 : }
7612 : }
7613 : break;
7614 : }
7615 49 : case LE_EXPR:
7616 49 : {
7617 49 : tree _q20 = TREE_OPERAND (_p0, 0);
7618 49 : tree _q21 = TREE_OPERAND (_p0, 1);
7619 49 : if (integer_minus_onep (_p1))
7620 : {
7621 0 : {
7622 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7623 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
7624 0 : if (res) return res;
7625 : }
7626 : }
7627 : break;
7628 : }
7629 14901 : case EQ_EXPR:
7630 14901 : {
7631 14901 : tree _q20 = TREE_OPERAND (_p0, 0);
7632 14901 : tree _q21 = TREE_OPERAND (_p0, 1);
7633 14901 : if (integer_minus_onep (_p1))
7634 : {
7635 23 : {
7636 23 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7637 23 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
7638 23 : if (res) return res;
7639 : }
7640 : }
7641 : break;
7642 : }
7643 1677 : case NE_EXPR:
7644 1677 : {
7645 1677 : tree _q20 = TREE_OPERAND (_p0, 0);
7646 1677 : tree _q21 = TREE_OPERAND (_p0, 1);
7647 1677 : if (integer_minus_onep (_p1))
7648 : {
7649 33 : {
7650 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7651 33 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
7652 33 : if (res) return res;
7653 : }
7654 : }
7655 : break;
7656 : }
7657 35 : case GE_EXPR:
7658 35 : {
7659 35 : tree _q20 = TREE_OPERAND (_p0, 0);
7660 35 : tree _q21 = TREE_OPERAND (_p0, 1);
7661 35 : if (integer_minus_onep (_p1))
7662 : {
7663 0 : {
7664 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7665 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
7666 0 : if (res) return res;
7667 : }
7668 : }
7669 : break;
7670 : }
7671 103 : case GT_EXPR:
7672 103 : {
7673 103 : tree _q20 = TREE_OPERAND (_p0, 0);
7674 103 : tree _q21 = TREE_OPERAND (_p0, 1);
7675 103 : if (integer_minus_onep (_p1))
7676 : {
7677 0 : {
7678 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7679 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
7680 0 : if (res) return res;
7681 : }
7682 : }
7683 : break;
7684 : }
7685 0 : case UNORDERED_EXPR:
7686 0 : {
7687 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7688 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7689 0 : if (integer_minus_onep (_p1))
7690 : {
7691 0 : {
7692 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7693 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
7694 0 : if (res) return res;
7695 : }
7696 : }
7697 : break;
7698 : }
7699 0 : case ORDERED_EXPR:
7700 0 : {
7701 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7702 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7703 0 : if (integer_minus_onep (_p1))
7704 : {
7705 0 : {
7706 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7707 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
7708 0 : if (res) return res;
7709 : }
7710 : }
7711 : break;
7712 : }
7713 0 : case UNLT_EXPR:
7714 0 : {
7715 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7716 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7717 0 : if (integer_minus_onep (_p1))
7718 : {
7719 0 : {
7720 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7721 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
7722 0 : if (res) return res;
7723 : }
7724 : }
7725 : break;
7726 : }
7727 0 : case UNLE_EXPR:
7728 0 : {
7729 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7730 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7731 0 : if (integer_minus_onep (_p1))
7732 : {
7733 0 : {
7734 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7735 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
7736 0 : if (res) return res;
7737 : }
7738 : }
7739 : break;
7740 : }
7741 0 : case UNGT_EXPR:
7742 0 : {
7743 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7744 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7745 0 : if (integer_minus_onep (_p1))
7746 : {
7747 0 : {
7748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7749 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
7750 0 : if (res) return res;
7751 : }
7752 : }
7753 : break;
7754 : }
7755 0 : case UNGE_EXPR:
7756 0 : {
7757 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7758 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7759 0 : if (integer_minus_onep (_p1))
7760 : {
7761 0 : {
7762 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7763 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
7764 0 : if (res) return res;
7765 : }
7766 : }
7767 : break;
7768 : }
7769 0 : case UNEQ_EXPR:
7770 0 : {
7771 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7772 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7773 0 : if (integer_minus_onep (_p1))
7774 : {
7775 0 : {
7776 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7777 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
7778 0 : if (res) return res;
7779 : }
7780 : }
7781 : break;
7782 : }
7783 0 : case LTGT_EXPR:
7784 0 : {
7785 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7786 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7787 0 : if (integer_minus_onep (_p1))
7788 : {
7789 0 : {
7790 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7791 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
7792 0 : if (res) return res;
7793 : }
7794 : }
7795 : break;
7796 : }
7797 522051 : case RDIV_EXPR:
7798 522051 : {
7799 522051 : tree _q20 = TREE_OPERAND (_p0, 0);
7800 522051 : tree _q21 = TREE_OPERAND (_p0, 1);
7801 522051 : switch (TREE_CODE (_p1))
7802 : {
7803 111138 : case RDIV_EXPR:
7804 111138 : {
7805 111138 : tree _q50 = TREE_OPERAND (_p1, 0);
7806 111138 : tree _q51 = TREE_OPERAND (_p1, 1);
7807 111138 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7808 : {
7809 1 : {
7810 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7811 1 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures, PLUS_EXPR);
7812 1 : if (res) return res;
7813 : }
7814 : }
7815 : break;
7816 : }
7817 : default:;
7818 : }
7819 : break;
7820 : }
7821 1642089 : case MINUS_EXPR:
7822 1642089 : {
7823 1642089 : tree _q20 = TREE_OPERAND (_p0, 0);
7824 1642089 : tree _q21 = TREE_OPERAND (_p0, 1);
7825 1642089 : switch (TREE_CODE (_q20))
7826 : {
7827 41 : case CALL_EXPR:
7828 41 : switch (get_call_combined_fn (_q20))
7829 : {
7830 4 : case CFN_BUILT_IN_POPCOUNT:
7831 4 : if (call_expr_nargs (_q20) == 1)
7832 : {
7833 4 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7834 4 : switch (TREE_CODE (_q21))
7835 : {
7836 4 : case CALL_EXPR:
7837 4 : switch (get_call_combined_fn (_q21))
7838 : {
7839 4 : case CFN_BUILT_IN_POPCOUNT:
7840 4 : if (call_expr_nargs (_q21) == 1)
7841 : {
7842 4 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7843 4 : switch (TREE_CODE (_q50))
7844 : {
7845 2 : case BIT_AND_EXPR:
7846 2 : {
7847 2 : tree _q60 = TREE_OPERAND (_q50, 0);
7848 2 : tree _q61 = TREE_OPERAND (_q50, 1);
7849 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
7850 : {
7851 1 : switch (TREE_CODE (_p1))
7852 : {
7853 1 : case CALL_EXPR:
7854 1 : switch (get_call_combined_fn (_p1))
7855 : {
7856 1 : case CFN_BUILT_IN_POPCOUNT:
7857 1 : if (call_expr_nargs (_p1) == 1)
7858 : {
7859 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
7860 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
7861 : {
7862 1 : {
7863 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
7864 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
7865 1 : if (res) return res;
7866 : }
7867 : }
7868 : }
7869 : break;
7870 : default:;
7871 : }
7872 : break;
7873 : default:;
7874 : }
7875 : }
7876 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
7877 : {
7878 1 : switch (TREE_CODE (_p1))
7879 : {
7880 1 : case CALL_EXPR:
7881 1 : switch (get_call_combined_fn (_p1))
7882 : {
7883 1 : case CFN_BUILT_IN_POPCOUNT:
7884 1 : if (call_expr_nargs (_p1) == 1)
7885 : {
7886 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
7887 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
7888 : {
7889 1 : {
7890 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
7891 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
7892 1 : if (res) return res;
7893 : }
7894 : }
7895 : }
7896 : break;
7897 : default:;
7898 : }
7899 : break;
7900 : default:;
7901 : }
7902 : }
7903 : break;
7904 : }
7905 2 : case BIT_IOR_EXPR:
7906 2 : {
7907 2 : tree _q60 = TREE_OPERAND (_q50, 0);
7908 2 : tree _q61 = TREE_OPERAND (_q50, 1);
7909 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
7910 : {
7911 1 : switch (TREE_CODE (_p1))
7912 : {
7913 1 : case CALL_EXPR:
7914 1 : switch (get_call_combined_fn (_p1))
7915 : {
7916 1 : case CFN_BUILT_IN_POPCOUNT:
7917 1 : if (call_expr_nargs (_p1) == 1)
7918 : {
7919 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
7920 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
7921 : {
7922 1 : {
7923 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
7924 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
7925 1 : if (res) return res;
7926 : }
7927 : }
7928 : }
7929 : break;
7930 : default:;
7931 : }
7932 : break;
7933 : default:;
7934 : }
7935 : }
7936 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
7937 : {
7938 1 : switch (TREE_CODE (_p1))
7939 : {
7940 1 : case CALL_EXPR:
7941 1 : switch (get_call_combined_fn (_p1))
7942 : {
7943 1 : case CFN_BUILT_IN_POPCOUNT:
7944 1 : if (call_expr_nargs (_p1) == 1)
7945 : {
7946 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
7947 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
7948 : {
7949 1 : {
7950 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
7951 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
7952 1 : if (res) return res;
7953 : }
7954 : }
7955 : }
7956 : break;
7957 : default:;
7958 : }
7959 : break;
7960 : default:;
7961 : }
7962 : }
7963 : break;
7964 : }
7965 : default:;
7966 : }
7967 : }
7968 : break;
7969 : default:;
7970 : }
7971 : break;
7972 : default:;
7973 : }
7974 : }
7975 : break;
7976 0 : case CFN_BUILT_IN_POPCOUNTLL:
7977 0 : if (call_expr_nargs (_q20) == 1)
7978 : {
7979 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7980 0 : switch (TREE_CODE (_q21))
7981 : {
7982 0 : case CALL_EXPR:
7983 0 : switch (get_call_combined_fn (_q21))
7984 : {
7985 0 : case CFN_BUILT_IN_POPCOUNTLL:
7986 0 : if (call_expr_nargs (_q21) == 1)
7987 : {
7988 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7989 0 : switch (TREE_CODE (_q50))
7990 : {
7991 0 : case BIT_AND_EXPR:
7992 0 : {
7993 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7994 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7995 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
7996 : {
7997 0 : switch (TREE_CODE (_p1))
7998 : {
7999 0 : case CALL_EXPR:
8000 0 : switch (get_call_combined_fn (_p1))
8001 : {
8002 0 : case CFN_BUILT_IN_POPCOUNTLL:
8003 0 : if (call_expr_nargs (_p1) == 1)
8004 : {
8005 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8006 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8007 : {
8008 0 : {
8009 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8010 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8011 0 : if (res) return res;
8012 : }
8013 : }
8014 : }
8015 : break;
8016 : default:;
8017 : }
8018 : break;
8019 : default:;
8020 : }
8021 : }
8022 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8023 : {
8024 0 : switch (TREE_CODE (_p1))
8025 : {
8026 0 : case CALL_EXPR:
8027 0 : switch (get_call_combined_fn (_p1))
8028 : {
8029 0 : case CFN_BUILT_IN_POPCOUNTLL:
8030 0 : if (call_expr_nargs (_p1) == 1)
8031 : {
8032 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8033 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8034 : {
8035 0 : {
8036 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8037 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8038 0 : if (res) return res;
8039 : }
8040 : }
8041 : }
8042 : break;
8043 : default:;
8044 : }
8045 : break;
8046 : default:;
8047 : }
8048 : }
8049 : break;
8050 : }
8051 0 : case BIT_IOR_EXPR:
8052 0 : {
8053 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8054 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8055 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8056 : {
8057 0 : switch (TREE_CODE (_p1))
8058 : {
8059 0 : case CALL_EXPR:
8060 0 : switch (get_call_combined_fn (_p1))
8061 : {
8062 0 : case CFN_BUILT_IN_POPCOUNTLL:
8063 0 : if (call_expr_nargs (_p1) == 1)
8064 : {
8065 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8066 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8067 : {
8068 0 : {
8069 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8070 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8071 0 : if (res) return res;
8072 : }
8073 : }
8074 : }
8075 : break;
8076 : default:;
8077 : }
8078 : break;
8079 : default:;
8080 : }
8081 : }
8082 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8083 : {
8084 0 : switch (TREE_CODE (_p1))
8085 : {
8086 0 : case CALL_EXPR:
8087 0 : switch (get_call_combined_fn (_p1))
8088 : {
8089 0 : case CFN_BUILT_IN_POPCOUNTLL:
8090 0 : if (call_expr_nargs (_p1) == 1)
8091 : {
8092 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8093 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8094 : {
8095 0 : {
8096 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8097 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8098 0 : if (res) return res;
8099 : }
8100 : }
8101 : }
8102 : break;
8103 : default:;
8104 : }
8105 : break;
8106 : default:;
8107 : }
8108 : }
8109 : break;
8110 : }
8111 : default:;
8112 : }
8113 : }
8114 : break;
8115 : default:;
8116 : }
8117 : break;
8118 : default:;
8119 : }
8120 : }
8121 : break;
8122 0 : case CFN_POPCOUNT:
8123 0 : if (call_expr_nargs (_q20) == 1)
8124 : {
8125 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8126 0 : switch (TREE_CODE (_q21))
8127 : {
8128 0 : case CALL_EXPR:
8129 0 : switch (get_call_combined_fn (_q21))
8130 : {
8131 0 : case CFN_POPCOUNT:
8132 0 : if (call_expr_nargs (_q21) == 1)
8133 : {
8134 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8135 0 : switch (TREE_CODE (_q50))
8136 : {
8137 0 : case BIT_AND_EXPR:
8138 0 : {
8139 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8140 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8141 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8142 : {
8143 0 : switch (TREE_CODE (_p1))
8144 : {
8145 0 : case CALL_EXPR:
8146 0 : switch (get_call_combined_fn (_p1))
8147 : {
8148 0 : case CFN_POPCOUNT:
8149 0 : if (call_expr_nargs (_p1) == 1)
8150 : {
8151 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8152 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8153 : {
8154 0 : {
8155 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8156 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8157 0 : if (res) return res;
8158 : }
8159 : }
8160 : }
8161 : break;
8162 : default:;
8163 : }
8164 : break;
8165 : default:;
8166 : }
8167 : }
8168 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8169 : {
8170 0 : switch (TREE_CODE (_p1))
8171 : {
8172 0 : case CALL_EXPR:
8173 0 : switch (get_call_combined_fn (_p1))
8174 : {
8175 0 : case CFN_POPCOUNT:
8176 0 : if (call_expr_nargs (_p1) == 1)
8177 : {
8178 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8179 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8180 : {
8181 0 : {
8182 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8183 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8184 0 : if (res) return res;
8185 : }
8186 : }
8187 : }
8188 : break;
8189 : default:;
8190 : }
8191 : break;
8192 : default:;
8193 : }
8194 : }
8195 : break;
8196 : }
8197 0 : case BIT_IOR_EXPR:
8198 0 : {
8199 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8200 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8201 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8202 : {
8203 0 : switch (TREE_CODE (_p1))
8204 : {
8205 0 : case CALL_EXPR:
8206 0 : switch (get_call_combined_fn (_p1))
8207 : {
8208 0 : case CFN_POPCOUNT:
8209 0 : if (call_expr_nargs (_p1) == 1)
8210 : {
8211 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8212 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8213 : {
8214 0 : {
8215 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8216 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8217 0 : if (res) return res;
8218 : }
8219 : }
8220 : }
8221 : break;
8222 : default:;
8223 : }
8224 : break;
8225 : default:;
8226 : }
8227 : }
8228 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8229 : {
8230 0 : switch (TREE_CODE (_p1))
8231 : {
8232 0 : case CALL_EXPR:
8233 0 : switch (get_call_combined_fn (_p1))
8234 : {
8235 0 : case CFN_POPCOUNT:
8236 0 : if (call_expr_nargs (_p1) == 1)
8237 : {
8238 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8239 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8240 : {
8241 0 : {
8242 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8243 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8244 0 : if (res) return res;
8245 : }
8246 : }
8247 : }
8248 : break;
8249 : default:;
8250 : }
8251 : break;
8252 : default:;
8253 : }
8254 : }
8255 : break;
8256 : }
8257 : default:;
8258 : }
8259 : }
8260 : break;
8261 : default:;
8262 : }
8263 : break;
8264 : default:;
8265 : }
8266 : }
8267 : break;
8268 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8269 0 : if (call_expr_nargs (_q20) == 1)
8270 : {
8271 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8272 0 : switch (TREE_CODE (_q21))
8273 : {
8274 0 : case CALL_EXPR:
8275 0 : switch (get_call_combined_fn (_q21))
8276 : {
8277 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8278 0 : if (call_expr_nargs (_q21) == 1)
8279 : {
8280 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8281 0 : switch (TREE_CODE (_q50))
8282 : {
8283 0 : case BIT_AND_EXPR:
8284 0 : {
8285 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8286 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8287 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8288 : {
8289 0 : switch (TREE_CODE (_p1))
8290 : {
8291 0 : case CALL_EXPR:
8292 0 : switch (get_call_combined_fn (_p1))
8293 : {
8294 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8295 0 : if (call_expr_nargs (_p1) == 1)
8296 : {
8297 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8298 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8299 : {
8300 0 : {
8301 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8302 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8303 0 : if (res) return res;
8304 : }
8305 : }
8306 : }
8307 : break;
8308 : default:;
8309 : }
8310 : break;
8311 : default:;
8312 : }
8313 : }
8314 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8315 : {
8316 0 : switch (TREE_CODE (_p1))
8317 : {
8318 0 : case CALL_EXPR:
8319 0 : switch (get_call_combined_fn (_p1))
8320 : {
8321 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8322 0 : if (call_expr_nargs (_p1) == 1)
8323 : {
8324 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8325 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8326 : {
8327 0 : {
8328 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8329 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8330 0 : if (res) return res;
8331 : }
8332 : }
8333 : }
8334 : break;
8335 : default:;
8336 : }
8337 : break;
8338 : default:;
8339 : }
8340 : }
8341 : break;
8342 : }
8343 0 : case BIT_IOR_EXPR:
8344 0 : {
8345 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8346 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8347 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8348 : {
8349 0 : switch (TREE_CODE (_p1))
8350 : {
8351 0 : case CALL_EXPR:
8352 0 : switch (get_call_combined_fn (_p1))
8353 : {
8354 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8355 0 : if (call_expr_nargs (_p1) == 1)
8356 : {
8357 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8358 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8359 : {
8360 0 : {
8361 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8362 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8363 0 : if (res) return res;
8364 : }
8365 : }
8366 : }
8367 : break;
8368 : default:;
8369 : }
8370 : break;
8371 : default:;
8372 : }
8373 : }
8374 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8375 : {
8376 0 : switch (TREE_CODE (_p1))
8377 : {
8378 0 : case CALL_EXPR:
8379 0 : switch (get_call_combined_fn (_p1))
8380 : {
8381 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8382 0 : if (call_expr_nargs (_p1) == 1)
8383 : {
8384 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8385 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8386 : {
8387 0 : {
8388 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8389 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8390 0 : if (res) return res;
8391 : }
8392 : }
8393 : }
8394 : break;
8395 : default:;
8396 : }
8397 : break;
8398 : default:;
8399 : }
8400 : }
8401 : break;
8402 : }
8403 : default:;
8404 : }
8405 : }
8406 : break;
8407 : default:;
8408 : }
8409 : break;
8410 : default:;
8411 : }
8412 : }
8413 : break;
8414 0 : case CFN_BUILT_IN_POPCOUNTL:
8415 0 : if (call_expr_nargs (_q20) == 1)
8416 : {
8417 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8418 0 : switch (TREE_CODE (_q21))
8419 : {
8420 0 : case CALL_EXPR:
8421 0 : switch (get_call_combined_fn (_q21))
8422 : {
8423 0 : case CFN_BUILT_IN_POPCOUNTL:
8424 0 : if (call_expr_nargs (_q21) == 1)
8425 : {
8426 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8427 0 : switch (TREE_CODE (_q50))
8428 : {
8429 0 : case BIT_AND_EXPR:
8430 0 : {
8431 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8432 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8433 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8434 : {
8435 0 : switch (TREE_CODE (_p1))
8436 : {
8437 0 : case CALL_EXPR:
8438 0 : switch (get_call_combined_fn (_p1))
8439 : {
8440 0 : case CFN_BUILT_IN_POPCOUNTL:
8441 0 : if (call_expr_nargs (_p1) == 1)
8442 : {
8443 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8444 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8445 : {
8446 0 : {
8447 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8448 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8449 0 : if (res) return res;
8450 : }
8451 : }
8452 : }
8453 : break;
8454 : default:;
8455 : }
8456 : break;
8457 : default:;
8458 : }
8459 : }
8460 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8461 : {
8462 0 : switch (TREE_CODE (_p1))
8463 : {
8464 0 : case CALL_EXPR:
8465 0 : switch (get_call_combined_fn (_p1))
8466 : {
8467 0 : case CFN_BUILT_IN_POPCOUNTL:
8468 0 : if (call_expr_nargs (_p1) == 1)
8469 : {
8470 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8471 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8472 : {
8473 0 : {
8474 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8475 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8476 0 : if (res) return res;
8477 : }
8478 : }
8479 : }
8480 : break;
8481 : default:;
8482 : }
8483 : break;
8484 : default:;
8485 : }
8486 : }
8487 : break;
8488 : }
8489 0 : case BIT_IOR_EXPR:
8490 0 : {
8491 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8492 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8493 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8494 : {
8495 0 : switch (TREE_CODE (_p1))
8496 : {
8497 0 : case CALL_EXPR:
8498 0 : switch (get_call_combined_fn (_p1))
8499 : {
8500 0 : case CFN_BUILT_IN_POPCOUNTL:
8501 0 : if (call_expr_nargs (_p1) == 1)
8502 : {
8503 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8504 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8505 : {
8506 0 : {
8507 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8508 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8509 0 : if (res) return res;
8510 : }
8511 : }
8512 : }
8513 : break;
8514 : default:;
8515 : }
8516 : break;
8517 : default:;
8518 : }
8519 : }
8520 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8521 : {
8522 0 : switch (TREE_CODE (_p1))
8523 : {
8524 0 : case CALL_EXPR:
8525 0 : switch (get_call_combined_fn (_p1))
8526 : {
8527 0 : case CFN_BUILT_IN_POPCOUNTL:
8528 0 : if (call_expr_nargs (_p1) == 1)
8529 : {
8530 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8531 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8532 : {
8533 0 : {
8534 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8535 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8536 0 : if (res) return res;
8537 : }
8538 : }
8539 : }
8540 : break;
8541 : default:;
8542 : }
8543 : break;
8544 : default:;
8545 : }
8546 : }
8547 : break;
8548 : }
8549 : default:;
8550 : }
8551 : }
8552 : break;
8553 : default:;
8554 : }
8555 : break;
8556 : default:;
8557 : }
8558 : }
8559 : break;
8560 : default:;
8561 : }
8562 : break;
8563 : default:;
8564 : }
8565 : break;
8566 : }
8567 1 : case VEC_PERM_EXPR:
8568 1 : {
8569 1 : tree _q20 = TREE_OPERAND (_p0, 0);
8570 1 : tree _q21 = TREE_OPERAND (_p0, 1);
8571 1 : tree _q22 = TREE_OPERAND (_p0, 2);
8572 1 : switch (TREE_CODE (_q20))
8573 : {
8574 0 : case MULT_EXPR:
8575 0 : {
8576 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8577 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8578 0 : if (tree_vec_same_elem_p (_q31))
8579 : {
8580 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8581 : {
8582 0 : {
8583 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q22, _p1 };
8584 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures);
8585 0 : if (res) return res;
8586 : }
8587 : }
8588 : }
8589 0 : if (tree_vec_same_elem_p (_q30))
8590 : {
8591 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8592 : {
8593 0 : {
8594 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _q22, _p1 };
8595 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures);
8596 0 : if (res) return res;
8597 : }
8598 : }
8599 : }
8600 : break;
8601 : }
8602 1 : default:;
8603 : }
8604 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8605 : {
8606 0 : switch (TREE_CODE (_p1))
8607 : {
8608 0 : case VEC_PERM_EXPR:
8609 0 : {
8610 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8611 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8612 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8613 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8614 : {
8615 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8616 : {
8617 0 : {
8618 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8619 0 : if (VECTOR_INTEGER_TYPE_P (type)
8620 : )
8621 : {
8622 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1251;
8623 0 : {
8624 0 : tree res_op0;
8625 0 : {
8626 0 : tree _o1[2], _r1;
8627 0 : _o1[0] = captures[0];
8628 0 : _o1[1] = captures[2];
8629 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8630 0 : captures[3] = _r1;
8631 : }
8632 0 : res_op0 = unshare_expr (captures[3]);
8633 0 : tree res_op1;
8634 0 : res_op1 = captures[3];
8635 0 : tree res_op2;
8636 0 : res_op2 = captures[1];
8637 0 : tree _r;
8638 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
8639 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
8640 0 : return _r;
8641 : }
8642 0 : next_after_fail1251:;
8643 : }
8644 : }
8645 : }
8646 : }
8647 : break;
8648 : }
8649 0 : default:;
8650 : }
8651 0 : switch (TREE_CODE (_q22))
8652 : {
8653 0 : case VECTOR_CST:
8654 0 : {
8655 0 : switch (TREE_CODE (_p1))
8656 : {
8657 0 : case VEC_PERM_EXPR:
8658 0 : {
8659 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8660 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8661 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8662 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8663 : {
8664 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8665 : {
8666 0 : switch (TREE_CODE (_q62))
8667 : {
8668 0 : case VECTOR_CST:
8669 0 : {
8670 0 : {
8671 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8672 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8673 0 : if (res) return res;
8674 : }
8675 0 : break;
8676 : }
8677 : default:;
8678 : }
8679 : }
8680 : }
8681 : break;
8682 : }
8683 : default:;
8684 : }
8685 : break;
8686 : }
8687 : default:;
8688 : }
8689 : }
8690 : break;
8691 : }
8692 1368351 : case CALL_EXPR:
8693 1368351 : switch (get_call_combined_fn (_p0))
8694 : {
8695 9 : case CFN_BUILT_IN_LOG:
8696 9 : if (call_expr_nargs (_p0) == 1)
8697 : {
8698 9 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8699 9 : switch (TREE_CODE (_p1))
8700 : {
8701 0 : case CALL_EXPR:
8702 0 : switch (get_call_combined_fn (_p1))
8703 : {
8704 0 : case CFN_BUILT_IN_LOG:
8705 0 : if (call_expr_nargs (_p1) == 1)
8706 : {
8707 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8708 0 : {
8709 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8710 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG);
8711 0 : if (res) return res;
8712 : }
8713 : }
8714 : break;
8715 : default:;
8716 : }
8717 : break;
8718 : default:;
8719 : }
8720 : }
8721 : break;
8722 1090 : case CFN_BUILT_IN_POPCOUNT:
8723 1090 : if (call_expr_nargs (_p0) == 1)
8724 : {
8725 1090 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8726 1090 : switch (TREE_CODE (_p1))
8727 : {
8728 22 : case CALL_EXPR:
8729 22 : switch (get_call_combined_fn (_p1))
8730 : {
8731 22 : case CFN_BUILT_IN_POPCOUNT:
8732 22 : if (call_expr_nargs (_p1) == 1)
8733 : {
8734 22 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8735 22 : {
8736 22 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8737 22 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8738 22 : if (res) return res;
8739 : }
8740 : }
8741 : break;
8742 : default:;
8743 : }
8744 : break;
8745 1089 : default:;
8746 : }
8747 1089 : switch (TREE_CODE (_q20))
8748 : {
8749 9 : case BIT_AND_EXPR:
8750 9 : {
8751 9 : tree _q30 = TREE_OPERAND (_q20, 0);
8752 9 : tree _q31 = TREE_OPERAND (_q20, 1);
8753 9 : switch (TREE_CODE (_p1))
8754 : {
8755 9 : case CALL_EXPR:
8756 9 : switch (get_call_combined_fn (_p1))
8757 : {
8758 9 : case CFN_BUILT_IN_POPCOUNT:
8759 9 : if (call_expr_nargs (_p1) == 1)
8760 : {
8761 9 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
8762 9 : switch (TREE_CODE (_q60))
8763 : {
8764 9 : case BIT_IOR_EXPR:
8765 9 : {
8766 9 : tree _q70 = TREE_OPERAND (_q60, 0);
8767 9 : tree _q71 = TREE_OPERAND (_q60, 1);
8768 9 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
8769 : {
8770 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
8771 : {
8772 1 : {
8773 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
8774 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8775 1 : if (res) return res;
8776 : }
8777 : }
8778 : }
8779 8 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
8780 : {
8781 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
8782 : {
8783 1 : {
8784 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
8785 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8786 1 : if (res) return res;
8787 : }
8788 : }
8789 : }
8790 : break;
8791 : }
8792 : default:;
8793 : }
8794 : }
8795 : break;
8796 : default:;
8797 : }
8798 : break;
8799 : default:;
8800 : }
8801 : break;
8802 : }
8803 2 : case BIT_IOR_EXPR:
8804 2 : {
8805 2 : tree _q30 = TREE_OPERAND (_q20, 0);
8806 2 : tree _q31 = TREE_OPERAND (_q20, 1);
8807 2 : switch (TREE_CODE (_p1))
8808 : {
8809 2 : case CALL_EXPR:
8810 2 : switch (get_call_combined_fn (_p1))
8811 : {
8812 2 : case CFN_BUILT_IN_POPCOUNT:
8813 2 : if (call_expr_nargs (_p1) == 1)
8814 : {
8815 2 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
8816 2 : switch (TREE_CODE (_q60))
8817 : {
8818 2 : case BIT_AND_EXPR:
8819 2 : {
8820 2 : tree _q70 = TREE_OPERAND (_q60, 0);
8821 2 : tree _q71 = TREE_OPERAND (_q60, 1);
8822 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
8823 : {
8824 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
8825 : {
8826 1 : {
8827 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
8828 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8829 1 : if (res) return res;
8830 : }
8831 : }
8832 : }
8833 1 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
8834 : {
8835 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
8836 : {
8837 1 : {
8838 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
8839 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8840 1 : if (res) return res;
8841 : }
8842 : }
8843 : }
8844 : break;
8845 : }
8846 : default:;
8847 : }
8848 : }
8849 : break;
8850 : default:;
8851 : }
8852 : break;
8853 : default:;
8854 : }
8855 : break;
8856 : }
8857 1085 : default:;
8858 : }
8859 1085 : switch (TREE_CODE (_p1))
8860 : {
8861 0 : case MINUS_EXPR:
8862 0 : {
8863 0 : tree _q40 = TREE_OPERAND (_p1, 0);
8864 0 : tree _q41 = TREE_OPERAND (_p1, 1);
8865 0 : switch (TREE_CODE (_q40))
8866 : {
8867 0 : case CALL_EXPR:
8868 0 : switch (get_call_combined_fn (_q40))
8869 : {
8870 0 : case CFN_BUILT_IN_POPCOUNT:
8871 0 : if (call_expr_nargs (_q40) == 1)
8872 : {
8873 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
8874 0 : switch (TREE_CODE (_q41))
8875 : {
8876 0 : case CALL_EXPR:
8877 0 : switch (get_call_combined_fn (_q41))
8878 : {
8879 0 : case CFN_BUILT_IN_POPCOUNT:
8880 0 : if (call_expr_nargs (_q41) == 1)
8881 : {
8882 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
8883 0 : switch (TREE_CODE (_q70))
8884 : {
8885 0 : case BIT_AND_EXPR:
8886 0 : {
8887 0 : tree _q80 = TREE_OPERAND (_q70, 0);
8888 0 : tree _q81 = TREE_OPERAND (_q70, 1);
8889 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
8890 : {
8891 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
8892 : {
8893 0 : {
8894 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
8895 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8896 0 : if (res) return res;
8897 : }
8898 : }
8899 : }
8900 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
8901 : {
8902 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
8903 : {
8904 0 : {
8905 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
8906 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8907 0 : if (res) return res;
8908 : }
8909 : }
8910 : }
8911 : break;
8912 : }
8913 0 : case BIT_IOR_EXPR:
8914 0 : {
8915 0 : tree _q80 = TREE_OPERAND (_q70, 0);
8916 0 : tree _q81 = TREE_OPERAND (_q70, 1);
8917 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
8918 : {
8919 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
8920 : {
8921 0 : {
8922 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
8923 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8924 0 : if (res) return res;
8925 : }
8926 : }
8927 : }
8928 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
8929 : {
8930 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
8931 : {
8932 0 : {
8933 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
8934 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8935 0 : if (res) return res;
8936 : }
8937 : }
8938 : }
8939 : break;
8940 : }
8941 : default:;
8942 : }
8943 : }
8944 : break;
8945 : default:;
8946 : }
8947 : break;
8948 : default:;
8949 : }
8950 : }
8951 : break;
8952 : default:;
8953 : }
8954 : break;
8955 : default:;
8956 : }
8957 : break;
8958 : }
8959 : default:;
8960 : }
8961 : }
8962 : break;
8963 1 : case CFN_BUILT_IN_LOG2:
8964 1 : if (call_expr_nargs (_p0) == 1)
8965 : {
8966 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8967 1 : switch (TREE_CODE (_p1))
8968 : {
8969 1 : case CALL_EXPR:
8970 1 : switch (get_call_combined_fn (_p1))
8971 : {
8972 1 : case CFN_BUILT_IN_LOG2:
8973 1 : if (call_expr_nargs (_p1) == 1)
8974 : {
8975 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8976 1 : {
8977 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8978 1 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2);
8979 1 : if (res) return res;
8980 : }
8981 : }
8982 : break;
8983 : default:;
8984 : }
8985 : break;
8986 : default:;
8987 : }
8988 : }
8989 : break;
8990 0 : case CFN_BUILT_IN_LOGF:
8991 0 : if (call_expr_nargs (_p0) == 1)
8992 : {
8993 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8994 0 : switch (TREE_CODE (_p1))
8995 : {
8996 0 : case CALL_EXPR:
8997 0 : switch (get_call_combined_fn (_p1))
8998 : {
8999 0 : case CFN_BUILT_IN_LOGF:
9000 0 : if (call_expr_nargs (_p1) == 1)
9001 : {
9002 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9003 0 : {
9004 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9005 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF);
9006 0 : if (res) return res;
9007 : }
9008 : }
9009 : break;
9010 : default:;
9011 : }
9012 : break;
9013 : default:;
9014 : }
9015 : }
9016 : break;
9017 0 : case CFN_BUILT_IN_LOGL:
9018 0 : if (call_expr_nargs (_p0) == 1)
9019 : {
9020 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9021 0 : switch (TREE_CODE (_p1))
9022 : {
9023 0 : case CALL_EXPR:
9024 0 : switch (get_call_combined_fn (_p1))
9025 : {
9026 0 : case CFN_BUILT_IN_LOGL:
9027 0 : if (call_expr_nargs (_p1) == 1)
9028 : {
9029 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9030 0 : {
9031 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9032 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL);
9033 0 : if (res) return res;
9034 : }
9035 : }
9036 : break;
9037 : default:;
9038 : }
9039 : break;
9040 : default:;
9041 : }
9042 : }
9043 : break;
9044 26 : case CFN_BUILT_IN_POPCOUNTLL:
9045 26 : if (call_expr_nargs (_p0) == 1)
9046 : {
9047 26 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9048 26 : switch (TREE_CODE (_p1))
9049 : {
9050 24 : case CALL_EXPR:
9051 24 : switch (get_call_combined_fn (_p1))
9052 : {
9053 24 : case CFN_BUILT_IN_POPCOUNTLL:
9054 24 : if (call_expr_nargs (_p1) == 1)
9055 : {
9056 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9057 24 : {
9058 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9059 24 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9060 24 : if (res) return res;
9061 : }
9062 : }
9063 : break;
9064 : default:;
9065 : }
9066 : break;
9067 26 : default:;
9068 : }
9069 26 : switch (TREE_CODE (_q20))
9070 : {
9071 0 : case BIT_AND_EXPR:
9072 0 : {
9073 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9074 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9075 0 : switch (TREE_CODE (_p1))
9076 : {
9077 0 : case CALL_EXPR:
9078 0 : switch (get_call_combined_fn (_p1))
9079 : {
9080 0 : case CFN_BUILT_IN_POPCOUNTLL:
9081 0 : if (call_expr_nargs (_p1) == 1)
9082 : {
9083 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9084 0 : switch (TREE_CODE (_q60))
9085 : {
9086 0 : case BIT_IOR_EXPR:
9087 0 : {
9088 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9089 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9090 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9091 : {
9092 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9093 : {
9094 0 : {
9095 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9096 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9097 0 : if (res) return res;
9098 : }
9099 : }
9100 : }
9101 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9102 : {
9103 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9104 : {
9105 0 : {
9106 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9107 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9108 0 : if (res) return res;
9109 : }
9110 : }
9111 : }
9112 : break;
9113 : }
9114 : default:;
9115 : }
9116 : }
9117 : break;
9118 : default:;
9119 : }
9120 : break;
9121 : default:;
9122 : }
9123 : break;
9124 : }
9125 0 : case BIT_IOR_EXPR:
9126 0 : {
9127 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9128 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9129 0 : switch (TREE_CODE (_p1))
9130 : {
9131 0 : case CALL_EXPR:
9132 0 : switch (get_call_combined_fn (_p1))
9133 : {
9134 0 : case CFN_BUILT_IN_POPCOUNTLL:
9135 0 : if (call_expr_nargs (_p1) == 1)
9136 : {
9137 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9138 0 : switch (TREE_CODE (_q60))
9139 : {
9140 0 : case BIT_AND_EXPR:
9141 0 : {
9142 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9143 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9144 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9145 : {
9146 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9147 : {
9148 0 : {
9149 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9150 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9151 0 : if (res) return res;
9152 : }
9153 : }
9154 : }
9155 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9156 : {
9157 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9158 : {
9159 0 : {
9160 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9161 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9162 0 : if (res) return res;
9163 : }
9164 : }
9165 : }
9166 : break;
9167 : }
9168 : default:;
9169 : }
9170 : }
9171 : break;
9172 : default:;
9173 : }
9174 : break;
9175 : default:;
9176 : }
9177 : break;
9178 : }
9179 26 : default:;
9180 : }
9181 26 : switch (TREE_CODE (_p1))
9182 : {
9183 0 : case MINUS_EXPR:
9184 0 : {
9185 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9186 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9187 0 : switch (TREE_CODE (_q40))
9188 : {
9189 0 : case CALL_EXPR:
9190 0 : switch (get_call_combined_fn (_q40))
9191 : {
9192 0 : case CFN_BUILT_IN_POPCOUNTLL:
9193 0 : if (call_expr_nargs (_q40) == 1)
9194 : {
9195 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9196 0 : switch (TREE_CODE (_q41))
9197 : {
9198 0 : case CALL_EXPR:
9199 0 : switch (get_call_combined_fn (_q41))
9200 : {
9201 0 : case CFN_BUILT_IN_POPCOUNTLL:
9202 0 : if (call_expr_nargs (_q41) == 1)
9203 : {
9204 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9205 0 : switch (TREE_CODE (_q70))
9206 : {
9207 0 : case BIT_AND_EXPR:
9208 0 : {
9209 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9210 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9211 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9212 : {
9213 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9214 : {
9215 0 : {
9216 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9217 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9218 0 : if (res) return res;
9219 : }
9220 : }
9221 : }
9222 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9223 : {
9224 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9225 : {
9226 0 : {
9227 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9228 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9229 0 : if (res) return res;
9230 : }
9231 : }
9232 : }
9233 : break;
9234 : }
9235 0 : case BIT_IOR_EXPR:
9236 0 : {
9237 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9238 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9239 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9240 : {
9241 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9242 : {
9243 0 : {
9244 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9245 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9246 0 : if (res) return res;
9247 : }
9248 : }
9249 : }
9250 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9251 : {
9252 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9253 : {
9254 0 : {
9255 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9256 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9257 0 : if (res) return res;
9258 : }
9259 : }
9260 : }
9261 : break;
9262 : }
9263 : default:;
9264 : }
9265 : }
9266 : break;
9267 : default:;
9268 : }
9269 : break;
9270 : default:;
9271 : }
9272 : }
9273 : break;
9274 : default:;
9275 : }
9276 : break;
9277 : default:;
9278 : }
9279 : break;
9280 : }
9281 : default:;
9282 : }
9283 : }
9284 : break;
9285 0 : case CFN_BUILT_IN_LOG10F:
9286 0 : if (call_expr_nargs (_p0) == 1)
9287 : {
9288 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9289 0 : switch (TREE_CODE (_p1))
9290 : {
9291 0 : case CALL_EXPR:
9292 0 : switch (get_call_combined_fn (_p1))
9293 : {
9294 0 : case CFN_BUILT_IN_LOG10F:
9295 0 : if (call_expr_nargs (_p1) == 1)
9296 : {
9297 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9298 0 : {
9299 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9300 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F);
9301 0 : if (res) return res;
9302 : }
9303 : }
9304 : break;
9305 : default:;
9306 : }
9307 : break;
9308 : default:;
9309 : }
9310 : }
9311 : break;
9312 0 : case CFN_BUILT_IN_LOG10L:
9313 0 : if (call_expr_nargs (_p0) == 1)
9314 : {
9315 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9316 0 : switch (TREE_CODE (_p1))
9317 : {
9318 0 : case CALL_EXPR:
9319 0 : switch (get_call_combined_fn (_p1))
9320 : {
9321 0 : case CFN_BUILT_IN_LOG10L:
9322 0 : if (call_expr_nargs (_p1) == 1)
9323 : {
9324 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9325 0 : {
9326 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9327 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L);
9328 0 : if (res) return res;
9329 : }
9330 : }
9331 : break;
9332 : default:;
9333 : }
9334 : break;
9335 : default:;
9336 : }
9337 : }
9338 : break;
9339 4 : case CFN_POPCOUNT:
9340 4 : if (call_expr_nargs (_p0) == 1)
9341 : {
9342 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9343 4 : switch (TREE_CODE (_p1))
9344 : {
9345 1 : case CALL_EXPR:
9346 1 : switch (get_call_combined_fn (_p1))
9347 : {
9348 1 : case CFN_POPCOUNT:
9349 1 : if (call_expr_nargs (_p1) == 1)
9350 : {
9351 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9352 1 : {
9353 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9354 1 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9355 1 : if (res) return res;
9356 : }
9357 : }
9358 : break;
9359 : default:;
9360 : }
9361 : break;
9362 4 : default:;
9363 : }
9364 4 : switch (TREE_CODE (_q20))
9365 : {
9366 0 : case BIT_AND_EXPR:
9367 0 : {
9368 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9369 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9370 0 : switch (TREE_CODE (_p1))
9371 : {
9372 0 : case CALL_EXPR:
9373 0 : switch (get_call_combined_fn (_p1))
9374 : {
9375 0 : case CFN_POPCOUNT:
9376 0 : if (call_expr_nargs (_p1) == 1)
9377 : {
9378 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9379 0 : switch (TREE_CODE (_q60))
9380 : {
9381 0 : case BIT_IOR_EXPR:
9382 0 : {
9383 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9384 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9385 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9386 : {
9387 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9388 : {
9389 0 : {
9390 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9391 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9392 0 : if (res) return res;
9393 : }
9394 : }
9395 : }
9396 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9397 : {
9398 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9399 : {
9400 0 : {
9401 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9402 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9403 0 : if (res) return res;
9404 : }
9405 : }
9406 : }
9407 : break;
9408 : }
9409 : default:;
9410 : }
9411 : }
9412 : break;
9413 : default:;
9414 : }
9415 : break;
9416 : default:;
9417 : }
9418 : break;
9419 : }
9420 0 : case BIT_IOR_EXPR:
9421 0 : {
9422 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9423 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9424 0 : switch (TREE_CODE (_p1))
9425 : {
9426 0 : case CALL_EXPR:
9427 0 : switch (get_call_combined_fn (_p1))
9428 : {
9429 0 : case CFN_POPCOUNT:
9430 0 : if (call_expr_nargs (_p1) == 1)
9431 : {
9432 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9433 0 : switch (TREE_CODE (_q60))
9434 : {
9435 0 : case BIT_AND_EXPR:
9436 0 : {
9437 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9438 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9439 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9440 : {
9441 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9442 : {
9443 0 : {
9444 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9445 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9446 0 : if (res) return res;
9447 : }
9448 : }
9449 : }
9450 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9451 : {
9452 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9453 : {
9454 0 : {
9455 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9456 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9457 0 : if (res) return res;
9458 : }
9459 : }
9460 : }
9461 : break;
9462 : }
9463 : default:;
9464 : }
9465 : }
9466 : break;
9467 : default:;
9468 : }
9469 : break;
9470 : default:;
9471 : }
9472 : break;
9473 : }
9474 4 : default:;
9475 : }
9476 4 : switch (TREE_CODE (_p1))
9477 : {
9478 0 : case MINUS_EXPR:
9479 0 : {
9480 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9481 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9482 0 : switch (TREE_CODE (_q40))
9483 : {
9484 0 : case CALL_EXPR:
9485 0 : switch (get_call_combined_fn (_q40))
9486 : {
9487 0 : case CFN_POPCOUNT:
9488 0 : if (call_expr_nargs (_q40) == 1)
9489 : {
9490 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9491 0 : switch (TREE_CODE (_q41))
9492 : {
9493 0 : case CALL_EXPR:
9494 0 : switch (get_call_combined_fn (_q41))
9495 : {
9496 0 : case CFN_POPCOUNT:
9497 0 : if (call_expr_nargs (_q41) == 1)
9498 : {
9499 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9500 0 : switch (TREE_CODE (_q70))
9501 : {
9502 0 : case BIT_AND_EXPR:
9503 0 : {
9504 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9505 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9506 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9507 : {
9508 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9509 : {
9510 0 : {
9511 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9512 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9513 0 : if (res) return res;
9514 : }
9515 : }
9516 : }
9517 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9518 : {
9519 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9520 : {
9521 0 : {
9522 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9523 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9524 0 : if (res) return res;
9525 : }
9526 : }
9527 : }
9528 : break;
9529 : }
9530 0 : case BIT_IOR_EXPR:
9531 0 : {
9532 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9533 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9534 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9535 : {
9536 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9537 : {
9538 0 : {
9539 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9540 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9541 0 : if (res) return res;
9542 : }
9543 : }
9544 : }
9545 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9546 : {
9547 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9548 : {
9549 0 : {
9550 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9551 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9552 0 : if (res) return res;
9553 : }
9554 : }
9555 : }
9556 : break;
9557 : }
9558 : default:;
9559 : }
9560 : }
9561 : break;
9562 : default:;
9563 : }
9564 : break;
9565 : default:;
9566 : }
9567 : }
9568 : break;
9569 : default:;
9570 : }
9571 : break;
9572 : default:;
9573 : }
9574 : break;
9575 : }
9576 : default:;
9577 : }
9578 : }
9579 : break;
9580 0 : case CFN_LOG:
9581 0 : if (call_expr_nargs (_p0) == 1)
9582 : {
9583 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9584 0 : switch (TREE_CODE (_p1))
9585 : {
9586 0 : case CALL_EXPR:
9587 0 : switch (get_call_combined_fn (_p1))
9588 : {
9589 0 : case CFN_LOG:
9590 0 : if (call_expr_nargs (_p1) == 1)
9591 : {
9592 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9593 0 : {
9594 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9595 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_LOG);
9596 0 : if (res) return res;
9597 : }
9598 : }
9599 : break;
9600 : default:;
9601 : }
9602 : break;
9603 : default:;
9604 : }
9605 : }
9606 : break;
9607 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9608 0 : if (call_expr_nargs (_p0) == 1)
9609 : {
9610 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9611 0 : switch (TREE_CODE (_p1))
9612 : {
9613 0 : case CALL_EXPR:
9614 0 : switch (get_call_combined_fn (_p1))
9615 : {
9616 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9617 0 : if (call_expr_nargs (_p1) == 1)
9618 : {
9619 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9620 0 : {
9621 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9622 0 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9623 0 : if (res) return res;
9624 : }
9625 : }
9626 : break;
9627 : default:;
9628 : }
9629 : break;
9630 0 : default:;
9631 : }
9632 0 : switch (TREE_CODE (_q20))
9633 : {
9634 0 : case BIT_AND_EXPR:
9635 0 : {
9636 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9637 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9638 0 : switch (TREE_CODE (_p1))
9639 : {
9640 0 : case CALL_EXPR:
9641 0 : switch (get_call_combined_fn (_p1))
9642 : {
9643 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9644 0 : if (call_expr_nargs (_p1) == 1)
9645 : {
9646 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9647 0 : switch (TREE_CODE (_q60))
9648 : {
9649 0 : case BIT_IOR_EXPR:
9650 0 : {
9651 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9652 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9653 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9654 : {
9655 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9656 : {
9657 0 : {
9658 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9659 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9660 0 : if (res) return res;
9661 : }
9662 : }
9663 : }
9664 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9665 : {
9666 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9667 : {
9668 0 : {
9669 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9670 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9671 0 : if (res) return res;
9672 : }
9673 : }
9674 : }
9675 : break;
9676 : }
9677 : default:;
9678 : }
9679 : }
9680 : break;
9681 : default:;
9682 : }
9683 : break;
9684 : default:;
9685 : }
9686 : break;
9687 : }
9688 0 : case BIT_IOR_EXPR:
9689 0 : {
9690 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9691 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9692 0 : switch (TREE_CODE (_p1))
9693 : {
9694 0 : case CALL_EXPR:
9695 0 : switch (get_call_combined_fn (_p1))
9696 : {
9697 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9698 0 : if (call_expr_nargs (_p1) == 1)
9699 : {
9700 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9701 0 : switch (TREE_CODE (_q60))
9702 : {
9703 0 : case BIT_AND_EXPR:
9704 0 : {
9705 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9706 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9707 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9708 : {
9709 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9710 : {
9711 0 : {
9712 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9713 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9714 0 : if (res) return res;
9715 : }
9716 : }
9717 : }
9718 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9719 : {
9720 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9721 : {
9722 0 : {
9723 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9724 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9725 0 : if (res) return res;
9726 : }
9727 : }
9728 : }
9729 : break;
9730 : }
9731 : default:;
9732 : }
9733 : }
9734 : break;
9735 : default:;
9736 : }
9737 : break;
9738 : default:;
9739 : }
9740 : break;
9741 : }
9742 0 : default:;
9743 : }
9744 0 : switch (TREE_CODE (_p1))
9745 : {
9746 0 : case MINUS_EXPR:
9747 0 : {
9748 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9749 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9750 0 : switch (TREE_CODE (_q40))
9751 : {
9752 0 : case CALL_EXPR:
9753 0 : switch (get_call_combined_fn (_q40))
9754 : {
9755 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9756 0 : if (call_expr_nargs (_q40) == 1)
9757 : {
9758 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9759 0 : switch (TREE_CODE (_q41))
9760 : {
9761 0 : case CALL_EXPR:
9762 0 : switch (get_call_combined_fn (_q41))
9763 : {
9764 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9765 0 : if (call_expr_nargs (_q41) == 1)
9766 : {
9767 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9768 0 : switch (TREE_CODE (_q70))
9769 : {
9770 0 : case BIT_AND_EXPR:
9771 0 : {
9772 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9773 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9774 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9775 : {
9776 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9777 : {
9778 0 : {
9779 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9780 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9781 0 : if (res) return res;
9782 : }
9783 : }
9784 : }
9785 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9786 : {
9787 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9788 : {
9789 0 : {
9790 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9791 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9792 0 : if (res) return res;
9793 : }
9794 : }
9795 : }
9796 : break;
9797 : }
9798 0 : case BIT_IOR_EXPR:
9799 0 : {
9800 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9801 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9802 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9803 : {
9804 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9805 : {
9806 0 : {
9807 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9808 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9809 0 : if (res) return res;
9810 : }
9811 : }
9812 : }
9813 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9814 : {
9815 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9816 : {
9817 0 : {
9818 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9819 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9820 0 : if (res) return res;
9821 : }
9822 : }
9823 : }
9824 : break;
9825 : }
9826 : default:;
9827 : }
9828 : }
9829 : break;
9830 : default:;
9831 : }
9832 : break;
9833 : default:;
9834 : }
9835 : }
9836 : break;
9837 : default:;
9838 : }
9839 : break;
9840 : default:;
9841 : }
9842 : break;
9843 : }
9844 : default:;
9845 : }
9846 : }
9847 : break;
9848 0 : case CFN_LOG2:
9849 0 : if (call_expr_nargs (_p0) == 1)
9850 : {
9851 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9852 0 : switch (TREE_CODE (_p1))
9853 : {
9854 0 : case CALL_EXPR:
9855 0 : switch (get_call_combined_fn (_p1))
9856 : {
9857 0 : case CFN_LOG2:
9858 0 : if (call_expr_nargs (_p1) == 1)
9859 : {
9860 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9861 0 : {
9862 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9863 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_LOG2);
9864 0 : if (res) return res;
9865 : }
9866 : }
9867 : break;
9868 : default:;
9869 : }
9870 : break;
9871 : default:;
9872 : }
9873 : }
9874 : break;
9875 135 : case CFN_BUILT_IN_POPCOUNTL:
9876 135 : if (call_expr_nargs (_p0) == 1)
9877 : {
9878 135 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9879 135 : switch (TREE_CODE (_p1))
9880 : {
9881 69 : case CALL_EXPR:
9882 69 : switch (get_call_combined_fn (_p1))
9883 : {
9884 69 : case CFN_BUILT_IN_POPCOUNTL:
9885 69 : if (call_expr_nargs (_p1) == 1)
9886 : {
9887 69 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9888 69 : {
9889 69 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9890 69 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
9891 69 : if (res) return res;
9892 : }
9893 : }
9894 : break;
9895 : default:;
9896 : }
9897 : break;
9898 135 : default:;
9899 : }
9900 135 : switch (TREE_CODE (_q20))
9901 : {
9902 0 : case BIT_AND_EXPR:
9903 0 : {
9904 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9905 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9906 0 : switch (TREE_CODE (_p1))
9907 : {
9908 0 : case CALL_EXPR:
9909 0 : switch (get_call_combined_fn (_p1))
9910 : {
9911 0 : case CFN_BUILT_IN_POPCOUNTL:
9912 0 : if (call_expr_nargs (_p1) == 1)
9913 : {
9914 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9915 0 : switch (TREE_CODE (_q60))
9916 : {
9917 0 : case BIT_IOR_EXPR:
9918 0 : {
9919 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9920 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9921 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9922 : {
9923 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9924 : {
9925 0 : {
9926 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9927 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
9928 0 : if (res) return res;
9929 : }
9930 : }
9931 : }
9932 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9933 : {
9934 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9935 : {
9936 0 : {
9937 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9938 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
9939 0 : if (res) return res;
9940 : }
9941 : }
9942 : }
9943 : break;
9944 : }
9945 : default:;
9946 : }
9947 : }
9948 : break;
9949 : default:;
9950 : }
9951 : break;
9952 : default:;
9953 : }
9954 : break;
9955 : }
9956 0 : case BIT_IOR_EXPR:
9957 0 : {
9958 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9959 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9960 0 : switch (TREE_CODE (_p1))
9961 : {
9962 0 : case CALL_EXPR:
9963 0 : switch (get_call_combined_fn (_p1))
9964 : {
9965 0 : case CFN_BUILT_IN_POPCOUNTL:
9966 0 : if (call_expr_nargs (_p1) == 1)
9967 : {
9968 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9969 0 : switch (TREE_CODE (_q60))
9970 : {
9971 0 : case BIT_AND_EXPR:
9972 0 : {
9973 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9974 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9975 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9976 : {
9977 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9978 : {
9979 0 : {
9980 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9981 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
9982 0 : if (res) return res;
9983 : }
9984 : }
9985 : }
9986 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9987 : {
9988 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9989 : {
9990 0 : {
9991 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9992 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
9993 0 : if (res) return res;
9994 : }
9995 : }
9996 : }
9997 : break;
9998 : }
9999 : default:;
10000 : }
10001 : }
10002 : break;
10003 : default:;
10004 : }
10005 : break;
10006 : default:;
10007 : }
10008 : break;
10009 : }
10010 135 : default:;
10011 : }
10012 135 : switch (TREE_CODE (_p1))
10013 : {
10014 0 : case MINUS_EXPR:
10015 0 : {
10016 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10017 0 : tree _q41 = TREE_OPERAND (_p1, 1);
10018 0 : switch (TREE_CODE (_q40))
10019 : {
10020 0 : case CALL_EXPR:
10021 0 : switch (get_call_combined_fn (_q40))
10022 : {
10023 0 : case CFN_BUILT_IN_POPCOUNTL:
10024 0 : if (call_expr_nargs (_q40) == 1)
10025 : {
10026 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
10027 0 : switch (TREE_CODE (_q41))
10028 : {
10029 0 : case CALL_EXPR:
10030 0 : switch (get_call_combined_fn (_q41))
10031 : {
10032 0 : case CFN_BUILT_IN_POPCOUNTL:
10033 0 : if (call_expr_nargs (_q41) == 1)
10034 : {
10035 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
10036 0 : switch (TREE_CODE (_q70))
10037 : {
10038 0 : case BIT_AND_EXPR:
10039 0 : {
10040 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10041 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10042 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10043 : {
10044 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10045 : {
10046 0 : {
10047 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10048 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10049 0 : if (res) return res;
10050 : }
10051 : }
10052 : }
10053 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10054 : {
10055 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10056 : {
10057 0 : {
10058 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10059 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10060 0 : if (res) return res;
10061 : }
10062 : }
10063 : }
10064 : break;
10065 : }
10066 0 : case BIT_IOR_EXPR:
10067 0 : {
10068 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10069 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10070 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10071 : {
10072 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10073 : {
10074 0 : {
10075 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10076 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10077 0 : if (res) return res;
10078 : }
10079 : }
10080 : }
10081 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10082 : {
10083 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10084 : {
10085 0 : {
10086 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10087 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10088 0 : if (res) return res;
10089 : }
10090 : }
10091 : }
10092 : break;
10093 : }
10094 : default:;
10095 : }
10096 : }
10097 : break;
10098 : default:;
10099 : }
10100 : break;
10101 : default:;
10102 : }
10103 : }
10104 : break;
10105 : default:;
10106 : }
10107 : break;
10108 : default:;
10109 : }
10110 : break;
10111 : }
10112 : default:;
10113 : }
10114 : }
10115 : break;
10116 0 : case CFN_LOG10:
10117 0 : if (call_expr_nargs (_p0) == 1)
10118 : {
10119 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10120 0 : switch (TREE_CODE (_p1))
10121 : {
10122 0 : case CALL_EXPR:
10123 0 : switch (get_call_combined_fn (_p1))
10124 : {
10125 0 : case CFN_LOG10:
10126 0 : if (call_expr_nargs (_p1) == 1)
10127 : {
10128 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10129 0 : {
10130 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10131 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_LOG10);
10132 0 : if (res) return res;
10133 : }
10134 : }
10135 : break;
10136 : default:;
10137 : }
10138 : break;
10139 : default:;
10140 : }
10141 : }
10142 : break;
10143 0 : case CFN_BUILT_IN_LOG10:
10144 0 : if (call_expr_nargs (_p0) == 1)
10145 : {
10146 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10147 0 : switch (TREE_CODE (_p1))
10148 : {
10149 0 : case CALL_EXPR:
10150 0 : switch (get_call_combined_fn (_p1))
10151 : {
10152 0 : case CFN_BUILT_IN_LOG10:
10153 0 : if (call_expr_nargs (_p1) == 1)
10154 : {
10155 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10156 0 : {
10157 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10158 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10);
10159 0 : if (res) return res;
10160 : }
10161 : }
10162 : break;
10163 : default:;
10164 : }
10165 : break;
10166 : default:;
10167 : }
10168 : }
10169 : break;
10170 0 : case CFN_BUILT_IN_LOG2F:
10171 0 : if (call_expr_nargs (_p0) == 1)
10172 : {
10173 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10174 0 : switch (TREE_CODE (_p1))
10175 : {
10176 0 : case CALL_EXPR:
10177 0 : switch (get_call_combined_fn (_p1))
10178 : {
10179 0 : case CFN_BUILT_IN_LOG2F:
10180 0 : if (call_expr_nargs (_p1) == 1)
10181 : {
10182 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10183 0 : {
10184 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10185 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F);
10186 0 : if (res) return res;
10187 : }
10188 : }
10189 : break;
10190 : default:;
10191 : }
10192 : break;
10193 : default:;
10194 : }
10195 : }
10196 : break;
10197 0 : case CFN_BUILT_IN_LOG2L:
10198 0 : if (call_expr_nargs (_p0) == 1)
10199 : {
10200 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10201 0 : switch (TREE_CODE (_p1))
10202 : {
10203 0 : case CALL_EXPR:
10204 0 : switch (get_call_combined_fn (_p1))
10205 : {
10206 0 : case CFN_BUILT_IN_LOG2L:
10207 0 : if (call_expr_nargs (_p1) == 1)
10208 : {
10209 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10210 0 : {
10211 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10212 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L);
10213 0 : if (res) return res;
10214 : }
10215 : }
10216 : break;
10217 : default:;
10218 : }
10219 : break;
10220 : default:;
10221 : }
10222 : }
10223 : break;
10224 : default:;
10225 : }
10226 : break;
10227 60664357 : default:;
10228 : }
10229 60664357 : switch (TREE_CODE (_p1))
10230 : {
10231 0 : case VEC_PERM_EXPR:
10232 0 : {
10233 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10234 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10235 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10236 0 : switch (TREE_CODE (_q30))
10237 : {
10238 0 : case MULT_EXPR:
10239 0 : {
10240 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10241 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10242 0 : if (tree_vec_same_elem_p (_q41))
10243 : {
10244 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10245 : {
10246 0 : {
10247 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q41, _q32, _p0 };
10248 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures);
10249 0 : if (res) return res;
10250 : }
10251 : }
10252 : }
10253 0 : if (tree_vec_same_elem_p (_q40))
10254 : {
10255 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10256 : {
10257 0 : {
10258 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _q40, _q32, _p0 };
10259 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures);
10260 0 : if (res) return res;
10261 : }
10262 : }
10263 : }
10264 : break;
10265 : }
10266 : default:;
10267 : }
10268 : break;
10269 : }
10270 : default:;
10271 : }
10272 : return NULL_TREE;
10273 : }
10274 :
10275 : tree
10276 1251190 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10277 : {
10278 1251190 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10279 1251190 : switch (TREE_CODE (_p0))
10280 : {
10281 0 : case VEC_COND_EXPR:
10282 0 : {
10283 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10284 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10285 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10286 0 : switch (TREE_CODE (_p1))
10287 : {
10288 0 : case VEC_COND_EXPR:
10289 0 : {
10290 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10291 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10292 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10293 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10294 : {
10295 0 : {
10296 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10297 0 : if (VECTOR_TYPE_P (type)
10298 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10299 0 : || types_match (type, TREE_TYPE (captures[2]))
10300 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10301 : || (optimize_vectors_before_lowering_p ()
10302 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10303 : )
10304 : {
10305 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1768;
10306 0 : {
10307 0 : tree res_op0;
10308 0 : res_op0 = captures[1];
10309 0 : tree res_op1;
10310 0 : {
10311 0 : tree _o1[2], _r1;
10312 0 : _o1[0] = captures[2];
10313 0 : _o1[1] = captures[5];
10314 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10315 0 : if (EXPR_P (_r1))
10316 0 : goto next_after_fail1768;
10317 0 : res_op1 = _r1;
10318 : }
10319 0 : tree res_op2;
10320 0 : {
10321 0 : tree _o1[2], _r1;
10322 0 : _o1[0] = captures[3];
10323 0 : _o1[1] = captures[6];
10324 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10325 0 : if (EXPR_P (_r1))
10326 0 : goto next_after_fail1768;
10327 0 : res_op2 = _r1;
10328 : }
10329 0 : tree _r;
10330 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10331 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
10332 0 : return _r;
10333 : }
10334 0 : next_after_fail1768:;
10335 : }
10336 : }
10337 : }
10338 : break;
10339 : }
10340 0 : default:;
10341 : }
10342 0 : {
10343 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10344 0 : if (VECTOR_TYPE_P (type)
10345 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10346 0 : || types_match (type, TREE_TYPE (captures[2]))
10347 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10348 : || (optimize_vectors_before_lowering_p ()
10349 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10350 : )
10351 : {
10352 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1769;
10353 0 : {
10354 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1769;
10355 0 : tree res_op0;
10356 0 : res_op0 = captures[1];
10357 0 : tree res_op1;
10358 0 : {
10359 0 : tree _o1[2], _r1;
10360 0 : _o1[0] = captures[2];
10361 0 : _o1[1] = unshare_expr (captures[4]);
10362 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10363 0 : if (EXPR_P (_r1))
10364 0 : goto next_after_fail1769;
10365 0 : res_op1 = _r1;
10366 : }
10367 0 : tree res_op2;
10368 0 : {
10369 0 : tree _o1[2], _r1;
10370 0 : _o1[0] = captures[3];
10371 0 : _o1[1] = captures[4];
10372 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10373 0 : if (EXPR_P (_r1))
10374 0 : goto next_after_fail1769;
10375 0 : res_op2 = _r1;
10376 : }
10377 0 : tree _r;
10378 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10379 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
10380 0 : return _r;
10381 : }
10382 0 : next_after_fail1769:;
10383 : }
10384 : }
10385 0 : break;
10386 : }
10387 1251190 : default:;
10388 : }
10389 1251190 : switch (TREE_CODE (_p1))
10390 : {
10391 0 : case VEC_COND_EXPR:
10392 0 : {
10393 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10394 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10395 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10396 0 : {
10397 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10398 0 : if (VECTOR_TYPE_P (type)
10399 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
10400 0 : || types_match (type, TREE_TYPE (captures[3]))
10401 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10402 : || (optimize_vectors_before_lowering_p ()
10403 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10404 : )
10405 : {
10406 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1770;
10407 0 : {
10408 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1770;
10409 0 : tree res_op0;
10410 0 : res_op0 = captures[2];
10411 0 : tree res_op1;
10412 0 : {
10413 0 : tree _o1[2], _r1;
10414 0 : _o1[0] = unshare_expr (captures[0]);
10415 0 : _o1[1] = captures[3];
10416 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10417 0 : if (EXPR_P (_r1))
10418 0 : goto next_after_fail1770;
10419 0 : res_op1 = _r1;
10420 : }
10421 0 : tree res_op2;
10422 0 : {
10423 0 : tree _o1[2], _r1;
10424 0 : _o1[0] = captures[0];
10425 0 : _o1[1] = captures[4];
10426 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
10427 0 : if (EXPR_P (_r1))
10428 0 : goto next_after_fail1770;
10429 0 : res_op2 = _r1;
10430 : }
10431 0 : tree _r;
10432 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10433 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
10434 0 : return _r;
10435 : }
10436 0 : next_after_fail1770:;
10437 : }
10438 : }
10439 0 : break;
10440 : }
10441 1251190 : default:;
10442 : }
10443 1251190 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10444 : {
10445 0 : {
10446 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10447 0 : tree res = generic_simplify_561 (loc, type, _p0, _p1, captures, UNGT_EXPR);
10448 0 : if (res) return res;
10449 : }
10450 : }
10451 1251190 : switch (TREE_CODE (_p0))
10452 : {
10453 339 : case FLOAT_EXPR:
10454 339 : {
10455 339 : tree _q20 = TREE_OPERAND (_p0, 0);
10456 339 : switch (TREE_CODE (_p1))
10457 : {
10458 0 : case FLOAT_EXPR:
10459 0 : {
10460 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10461 0 : {
10462 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10463 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
10464 0 : if (res) return res;
10465 : }
10466 0 : break;
10467 : }
10468 : default:;
10469 : }
10470 : break;
10471 : }
10472 0 : case NEGATE_EXPR:
10473 0 : {
10474 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10475 0 : switch (TREE_CODE (_p1))
10476 : {
10477 0 : case NEGATE_EXPR:
10478 0 : {
10479 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10480 0 : {
10481 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10482 0 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
10483 0 : if (res) return res;
10484 : }
10485 0 : break;
10486 : }
10487 0 : default:;
10488 : }
10489 0 : if (CONSTANT_CLASS_P (_p1))
10490 : {
10491 0 : {
10492 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10493 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
10494 0 : if (res) return res;
10495 : }
10496 : }
10497 : break;
10498 : }
10499 1251190 : default:;
10500 : }
10501 1251190 : switch (TREE_CODE (_p1))
10502 : {
10503 901431 : case REAL_CST:
10504 901431 : {
10505 901431 : {
10506 901431 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10507 901431 : tree res = generic_simplify_560 (loc, type, _p0, _p1, captures, UNGT_EXPR);
10508 901431 : if (res) return res;
10509 : }
10510 901429 : break;
10511 : }
10512 : default:;
10513 : }
10514 : return NULL_TREE;
10515 : }
10516 :
10517 : tree
10518 9301019 : generic_simplify_TRUTH_OR_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10519 : {
10520 9301019 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10521 9301019 : switch (TREE_CODE (_p0))
10522 : {
10523 1328193 : case LE_EXPR:
10524 1328193 : {
10525 1328193 : tree _q20 = TREE_OPERAND (_p0, 0);
10526 1328193 : tree _q21 = TREE_OPERAND (_p0, 1);
10527 1328193 : switch (TREE_CODE (_q20))
10528 : {
10529 3898 : case POINTER_PLUS_EXPR:
10530 3898 : {
10531 3898 : tree _q30 = TREE_OPERAND (_q20, 0);
10532 3898 : tree _q31 = TREE_OPERAND (_q20, 1);
10533 3898 : switch (TREE_CODE (_q31))
10534 : {
10535 3668 : case INTEGER_CST:
10536 3668 : {
10537 3668 : switch (TREE_CODE (_p1))
10538 : {
10539 1086 : case LE_EXPR:
10540 1086 : {
10541 1086 : tree _q70 = TREE_OPERAND (_p1, 0);
10542 1086 : tree _q71 = TREE_OPERAND (_p1, 1);
10543 1086 : switch (TREE_CODE (_q70))
10544 : {
10545 800 : case POINTER_PLUS_EXPR:
10546 800 : {
10547 800 : tree _q80 = TREE_OPERAND (_q70, 0);
10548 800 : tree _q81 = TREE_OPERAND (_q70, 1);
10549 800 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
10550 : {
10551 514 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
10552 : {
10553 395 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10554 : {
10555 395 : {
10556 395 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
10557 395 : const enum tree_code cmp = LE_EXPR;
10558 395 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10559 394 : && TYPE_OVERFLOW_WRAPS (sizetype)
10560 789 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10561 : )
10562 : {
10563 394 : {
10564 394 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10565 394 : offset_int rhs = off * 2;
10566 394 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10567 : )
10568 : {
10569 394 : {
10570 394 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10571 394 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10572 394 : if (cmp == LT_EXPR
10573 : )
10574 : {
10575 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1797;
10576 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1797;
10577 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1797;
10578 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1797;
10579 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1797;
10580 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
10581 : {
10582 : tree res_op0;
10583 : {
10584 : tree _o1[1], _r1;
10585 : {
10586 : tree _o2[2], _r2;
10587 : _o2[0] = swap_p ? captures[6] : captures[1];
10588 : _o2[1] = swap_p ? captures[2] : captures[4];
10589 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10590 : _o1[0] = _r2;
10591 : }
10592 : if (TREE_TYPE (_o1[0]) != sizetype)
10593 : {
10594 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10595 : }
10596 : else
10597 : _r1 = _o1[0];
10598 : res_op0 = _r1;
10599 : }
10600 : tree res_op1;
10601 : res_op1 = rhs_tree;
10602 : tree _r;
10603 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10604 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
10605 394 : return _r;
10606 : }
10607 : next_after_fail1797:;
10608 : }
10609 : else
10610 : {
10611 394 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1798;
10612 394 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1798;
10613 394 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1798;
10614 394 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1798;
10615 394 : {
10616 394 : tree res_op0;
10617 394 : {
10618 394 : tree _o1[1], _r1;
10619 394 : {
10620 394 : tree _o2[2], _r2;
10621 394 : {
10622 394 : tree _o3[2], _r3;
10623 394 : _o3[0] = swap_p ? captures[4] : captures[2];
10624 394 : _o3[1] = wide_int_to_tree (sizetype, off);
10625 394 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
10626 394 : _o2[0] = _r3;
10627 : }
10628 394 : _o2[1] = swap_p ? captures[2] : captures[4];
10629 394 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10630 394 : _o1[0] = _r2;
10631 : }
10632 394 : if (TREE_TYPE (_o1[0]) != sizetype)
10633 : {
10634 394 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10635 : }
10636 : else
10637 : _r1 = _o1[0];
10638 394 : res_op0 = _r1;
10639 : }
10640 394 : tree res_op1;
10641 394 : res_op1 = rhs_tree;
10642 394 : tree _r;
10643 394 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10644 394 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
10645 394 : return _r;
10646 : }
10647 0 : next_after_fail1798:;
10648 : }
10649 : }
10650 : }
10651 : }
10652 : }
10653 : }
10654 : }
10655 : }
10656 : }
10657 : break;
10658 : }
10659 : default:;
10660 : }
10661 : break;
10662 : }
10663 117 : case GE_EXPR:
10664 117 : {
10665 117 : tree _q70 = TREE_OPERAND (_p1, 0);
10666 117 : tree _q71 = TREE_OPERAND (_p1, 1);
10667 117 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10668 : {
10669 18 : switch (TREE_CODE (_q71))
10670 : {
10671 18 : case POINTER_PLUS_EXPR:
10672 18 : {
10673 18 : tree _q90 = TREE_OPERAND (_q71, 0);
10674 18 : tree _q91 = TREE_OPERAND (_q71, 1);
10675 18 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
10676 : {
10677 16 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
10678 : {
10679 11 : {
10680 11 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
10681 11 : const enum tree_code cmp = LE_EXPR;
10682 11 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10683 11 : && TYPE_OVERFLOW_WRAPS (sizetype)
10684 22 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10685 : )
10686 : {
10687 11 : {
10688 11 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10689 11 : offset_int rhs = off * 2;
10690 11 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10691 : )
10692 : {
10693 11 : {
10694 11 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10695 11 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10696 11 : if (cmp == LT_EXPR
10697 : )
10698 : {
10699 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1799;
10700 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1799;
10701 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1799;
10702 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1799;
10703 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1799;
10704 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1799;
10705 : {
10706 : tree res_op0;
10707 : {
10708 : tree _o1[1], _r1;
10709 : {
10710 : tree _o2[2], _r2;
10711 : _o2[0] = swap_p ? captures[6] : captures[1];
10712 : _o2[1] = swap_p ? captures[2] : captures[4];
10713 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10714 : _o1[0] = _r2;
10715 : }
10716 : if (TREE_TYPE (_o1[0]) != sizetype)
10717 : {
10718 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10719 : }
10720 : else
10721 : _r1 = _o1[0];
10722 : res_op0 = _r1;
10723 : }
10724 : tree res_op1;
10725 : res_op1 = rhs_tree;
10726 : tree _r;
10727 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10728 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
10729 11 : return _r;
10730 : }
10731 : next_after_fail1799:;
10732 : }
10733 : else
10734 : {
10735 11 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1800;
10736 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1800;
10737 11 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1800;
10738 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1800;
10739 11 : {
10740 11 : tree res_op0;
10741 11 : {
10742 11 : tree _o1[1], _r1;
10743 11 : {
10744 11 : tree _o2[2], _r2;
10745 11 : {
10746 11 : tree _o3[2], _r3;
10747 11 : _o3[0] = swap_p ? captures[4] : captures[2];
10748 11 : _o3[1] = wide_int_to_tree (sizetype, off);
10749 11 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
10750 11 : _o2[0] = _r3;
10751 : }
10752 11 : _o2[1] = swap_p ? captures[2] : captures[4];
10753 11 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10754 11 : _o1[0] = _r2;
10755 : }
10756 11 : if (TREE_TYPE (_o1[0]) != sizetype)
10757 : {
10758 11 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10759 : }
10760 : else
10761 : _r1 = _o1[0];
10762 11 : res_op0 = _r1;
10763 : }
10764 11 : tree res_op1;
10765 11 : res_op1 = rhs_tree;
10766 11 : tree _r;
10767 11 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10768 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
10769 11 : return _r;
10770 : }
10771 0 : next_after_fail1800:;
10772 : }
10773 : }
10774 : }
10775 : }
10776 : }
10777 : }
10778 : }
10779 : }
10780 : break;
10781 : }
10782 : default:;
10783 : }
10784 : }
10785 : break;
10786 : }
10787 : default:;
10788 : }
10789 : break;
10790 : }
10791 : default:;
10792 : }
10793 : break;
10794 : }
10795 : default:;
10796 : }
10797 : break;
10798 : }
10799 1045476 : case LT_EXPR:
10800 1045476 : {
10801 1045476 : tree _q20 = TREE_OPERAND (_p0, 0);
10802 1045476 : tree _q21 = TREE_OPERAND (_p0, 1);
10803 1045476 : switch (TREE_CODE (_q20))
10804 : {
10805 2386 : case POINTER_PLUS_EXPR:
10806 2386 : {
10807 2386 : tree _q30 = TREE_OPERAND (_q20, 0);
10808 2386 : tree _q31 = TREE_OPERAND (_q20, 1);
10809 2386 : switch (TREE_CODE (_q31))
10810 : {
10811 2200 : case INTEGER_CST:
10812 2200 : {
10813 2200 : switch (TREE_CODE (_p1))
10814 : {
10815 158 : case LT_EXPR:
10816 158 : {
10817 158 : tree _q70 = TREE_OPERAND (_p1, 0);
10818 158 : tree _q71 = TREE_OPERAND (_p1, 1);
10819 158 : switch (TREE_CODE (_q70))
10820 : {
10821 10 : case POINTER_PLUS_EXPR:
10822 10 : {
10823 10 : tree _q80 = TREE_OPERAND (_q70, 0);
10824 10 : tree _q81 = TREE_OPERAND (_q70, 1);
10825 10 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
10826 : {
10827 1 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
10828 : {
10829 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10830 : {
10831 1 : {
10832 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
10833 1 : const enum tree_code cmp = LT_EXPR;
10834 1 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10835 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
10836 1 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10837 : )
10838 : {
10839 0 : {
10840 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10841 0 : offset_int rhs = off * 2;
10842 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10843 : )
10844 : {
10845 0 : {
10846 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10847 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10848 0 : if (cmp == LT_EXPR
10849 : )
10850 : {
10851 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1801;
10852 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1801;
10853 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1801;
10854 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1801;
10855 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1801;
10856 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1801;
10857 0 : {
10858 0 : tree res_op0;
10859 0 : {
10860 0 : tree _o1[1], _r1;
10861 0 : {
10862 0 : tree _o2[2], _r2;
10863 0 : _o2[0] = swap_p ? captures[6] : captures[1];
10864 0 : _o2[1] = swap_p ? captures[2] : captures[4];
10865 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10866 0 : _o1[0] = _r2;
10867 : }
10868 0 : if (TREE_TYPE (_o1[0]) != sizetype)
10869 : {
10870 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10871 : }
10872 : else
10873 : _r1 = _o1[0];
10874 0 : res_op0 = _r1;
10875 : }
10876 0 : tree res_op1;
10877 0 : res_op1 = rhs_tree;
10878 0 : tree _r;
10879 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
10881 0 : return _r;
10882 : }
10883 0 : next_after_fail1801:;
10884 : }
10885 : else
10886 : {
10887 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1802;
10888 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1802;
10889 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1802;
10890 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1802;
10891 : {
10892 : tree res_op0;
10893 : {
10894 : tree _o1[1], _r1;
10895 : {
10896 : tree _o2[2], _r2;
10897 : {
10898 : tree _o3[2], _r3;
10899 : _o3[0] = swap_p ? captures[4] : captures[2];
10900 : _o3[1] = wide_int_to_tree (sizetype, off);
10901 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
10902 : _o2[0] = _r3;
10903 : }
10904 : _o2[1] = swap_p ? captures[2] : captures[4];
10905 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10906 : _o1[0] = _r2;
10907 : }
10908 : if (TREE_TYPE (_o1[0]) != sizetype)
10909 : {
10910 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10911 : }
10912 : else
10913 : _r1 = _o1[0];
10914 : res_op0 = _r1;
10915 : }
10916 : tree res_op1;
10917 : res_op1 = rhs_tree;
10918 : tree _r;
10919 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10920 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
10921 : return _r;
10922 : }
10923 : next_after_fail1802:;
10924 : }
10925 : }
10926 : }
10927 : }
10928 : }
10929 : }
10930 : }
10931 : }
10932 : }
10933 : break;
10934 : }
10935 : default:;
10936 : }
10937 : break;
10938 : }
10939 778 : case GT_EXPR:
10940 778 : {
10941 778 : tree _q70 = TREE_OPERAND (_p1, 0);
10942 778 : tree _q71 = TREE_OPERAND (_p1, 1);
10943 778 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10944 : {
10945 0 : switch (TREE_CODE (_q71))
10946 : {
10947 0 : case POINTER_PLUS_EXPR:
10948 0 : {
10949 0 : tree _q90 = TREE_OPERAND (_q71, 0);
10950 0 : tree _q91 = TREE_OPERAND (_q71, 1);
10951 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
10952 : {
10953 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
10954 : {
10955 0 : {
10956 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
10957 0 : const enum tree_code cmp = LT_EXPR;
10958 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10959 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
10960 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10961 : )
10962 : {
10963 0 : {
10964 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10965 0 : offset_int rhs = off * 2;
10966 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10967 : )
10968 : {
10969 0 : {
10970 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10971 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10972 0 : if (cmp == LT_EXPR
10973 : )
10974 : {
10975 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1803;
10976 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1803;
10977 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1803;
10978 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1803;
10979 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1803;
10980 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1803;
10981 0 : {
10982 0 : tree res_op0;
10983 0 : {
10984 0 : tree _o1[1], _r1;
10985 0 : {
10986 0 : tree _o2[2], _r2;
10987 0 : _o2[0] = swap_p ? captures[6] : captures[1];
10988 0 : _o2[1] = swap_p ? captures[2] : captures[4];
10989 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10990 0 : _o1[0] = _r2;
10991 : }
10992 0 : if (TREE_TYPE (_o1[0]) != sizetype)
10993 : {
10994 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10995 : }
10996 : else
10997 : _r1 = _o1[0];
10998 0 : res_op0 = _r1;
10999 : }
11000 0 : tree res_op1;
11001 0 : res_op1 = rhs_tree;
11002 0 : tree _r;
11003 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11004 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
11005 0 : return _r;
11006 : }
11007 0 : next_after_fail1803:;
11008 : }
11009 : else
11010 : {
11011 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1804;
11012 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1804;
11013 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1804;
11014 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1804;
11015 : {
11016 : tree res_op0;
11017 : {
11018 : tree _o1[1], _r1;
11019 : {
11020 : tree _o2[2], _r2;
11021 : {
11022 : tree _o3[2], _r3;
11023 : _o3[0] = swap_p ? captures[4] : captures[2];
11024 : _o3[1] = wide_int_to_tree (sizetype, off);
11025 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11026 : _o2[0] = _r3;
11027 : }
11028 : _o2[1] = swap_p ? captures[2] : captures[4];
11029 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11030 : _o1[0] = _r2;
11031 : }
11032 : if (TREE_TYPE (_o1[0]) != sizetype)
11033 : {
11034 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11035 : }
11036 : else
11037 : _r1 = _o1[0];
11038 : res_op0 = _r1;
11039 : }
11040 : tree res_op1;
11041 : res_op1 = rhs_tree;
11042 : tree _r;
11043 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11044 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
11045 : return _r;
11046 : }
11047 : next_after_fail1804:;
11048 : }
11049 : }
11050 : }
11051 : }
11052 : }
11053 : }
11054 : }
11055 : }
11056 : break;
11057 : }
11058 : default:;
11059 : }
11060 : }
11061 : break;
11062 : }
11063 : default:;
11064 : }
11065 : break;
11066 : }
11067 : default:;
11068 : }
11069 : break;
11070 : }
11071 : default:;
11072 : }
11073 : break;
11074 : }
11075 794956 : case GE_EXPR:
11076 794956 : {
11077 794956 : tree _q20 = TREE_OPERAND (_p0, 0);
11078 794956 : tree _q21 = TREE_OPERAND (_p0, 1);
11079 794956 : switch (TREE_CODE (_q21))
11080 : {
11081 52 : case POINTER_PLUS_EXPR:
11082 52 : {
11083 52 : tree _q40 = TREE_OPERAND (_q21, 0);
11084 52 : tree _q41 = TREE_OPERAND (_q21, 1);
11085 52 : switch (TREE_CODE (_q41))
11086 : {
11087 52 : case INTEGER_CST:
11088 52 : {
11089 52 : switch (TREE_CODE (_p1))
11090 : {
11091 52 : case LE_EXPR:
11092 52 : {
11093 52 : tree _q70 = TREE_OPERAND (_p1, 0);
11094 52 : tree _q71 = TREE_OPERAND (_p1, 1);
11095 52 : switch (TREE_CODE (_q70))
11096 : {
11097 42 : case POINTER_PLUS_EXPR:
11098 42 : {
11099 42 : tree _q80 = TREE_OPERAND (_q70, 0);
11100 42 : tree _q81 = TREE_OPERAND (_q70, 1);
11101 42 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11102 : {
11103 27 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11104 : {
11105 3 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11106 : {
11107 3 : {
11108 3 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11109 3 : const enum tree_code cmp = LE_EXPR;
11110 3 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11111 3 : && TYPE_OVERFLOW_WRAPS (sizetype)
11112 6 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11113 : )
11114 : {
11115 3 : {
11116 3 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11117 3 : offset_int rhs = off * 2;
11118 3 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11119 : )
11120 : {
11121 3 : {
11122 3 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11123 3 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11124 3 : if (cmp == LT_EXPR
11125 : )
11126 : {
11127 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1805;
11128 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1805;
11129 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1805;
11130 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1805;
11131 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1805;
11132 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1805;
11133 : {
11134 : tree res_op0;
11135 : {
11136 : tree _o1[1], _r1;
11137 : {
11138 : tree _o2[2], _r2;
11139 : _o2[0] = swap_p ? captures[6] : captures[1];
11140 : _o2[1] = swap_p ? captures[2] : captures[4];
11141 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11142 : _o1[0] = _r2;
11143 : }
11144 : if (TREE_TYPE (_o1[0]) != sizetype)
11145 : {
11146 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11147 : }
11148 : else
11149 : _r1 = _o1[0];
11150 : res_op0 = _r1;
11151 : }
11152 : tree res_op1;
11153 : res_op1 = rhs_tree;
11154 : tree _r;
11155 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11156 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
11157 3 : return _r;
11158 : }
11159 : next_after_fail1805:;
11160 : }
11161 : else
11162 : {
11163 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1806;
11164 3 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1806;
11165 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1806;
11166 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1806;
11167 3 : {
11168 3 : tree res_op0;
11169 3 : {
11170 3 : tree _o1[1], _r1;
11171 3 : {
11172 3 : tree _o2[2], _r2;
11173 3 : {
11174 3 : tree _o3[2], _r3;
11175 3 : _o3[0] = swap_p ? captures[4] : captures[2];
11176 3 : _o3[1] = wide_int_to_tree (sizetype, off);
11177 3 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11178 3 : _o2[0] = _r3;
11179 : }
11180 3 : _o2[1] = swap_p ? captures[2] : captures[4];
11181 3 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11182 3 : _o1[0] = _r2;
11183 : }
11184 3 : if (TREE_TYPE (_o1[0]) != sizetype)
11185 : {
11186 3 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11187 : }
11188 : else
11189 : _r1 = _o1[0];
11190 3 : res_op0 = _r1;
11191 : }
11192 3 : tree res_op1;
11193 3 : res_op1 = rhs_tree;
11194 3 : tree _r;
11195 3 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11196 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
11197 3 : return _r;
11198 : }
11199 0 : next_after_fail1806:;
11200 : }
11201 : }
11202 : }
11203 : }
11204 : }
11205 : }
11206 : }
11207 : }
11208 : }
11209 : break;
11210 : }
11211 : default:;
11212 : }
11213 : break;
11214 : }
11215 0 : case GE_EXPR:
11216 0 : {
11217 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11218 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11219 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11220 : {
11221 0 : switch (TREE_CODE (_q71))
11222 : {
11223 0 : case POINTER_PLUS_EXPR:
11224 0 : {
11225 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11226 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11227 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11228 : {
11229 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11230 : {
11231 0 : {
11232 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11233 0 : const enum tree_code cmp = LE_EXPR;
11234 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11235 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11236 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11237 : )
11238 : {
11239 0 : {
11240 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11241 0 : offset_int rhs = off * 2;
11242 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11243 : )
11244 : {
11245 0 : {
11246 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11247 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11248 0 : if (cmp == LT_EXPR
11249 : )
11250 : {
11251 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1807;
11252 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1807;
11253 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1807;
11254 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1807;
11255 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1807;
11256 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1807;
11257 : {
11258 : tree res_op0;
11259 : {
11260 : tree _o1[1], _r1;
11261 : {
11262 : tree _o2[2], _r2;
11263 : _o2[0] = swap_p ? captures[6] : captures[1];
11264 : _o2[1] = swap_p ? captures[2] : captures[4];
11265 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11266 : _o1[0] = _r2;
11267 : }
11268 : if (TREE_TYPE (_o1[0]) != sizetype)
11269 : {
11270 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11271 : }
11272 : else
11273 : _r1 = _o1[0];
11274 : res_op0 = _r1;
11275 : }
11276 : tree res_op1;
11277 : res_op1 = rhs_tree;
11278 : tree _r;
11279 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11280 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
11281 0 : return _r;
11282 : }
11283 : next_after_fail1807:;
11284 : }
11285 : else
11286 : {
11287 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1808;
11288 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1808;
11289 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1808;
11290 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1808;
11291 0 : {
11292 0 : tree res_op0;
11293 0 : {
11294 0 : tree _o1[1], _r1;
11295 0 : {
11296 0 : tree _o2[2], _r2;
11297 0 : {
11298 0 : tree _o3[2], _r3;
11299 0 : _o3[0] = swap_p ? captures[4] : captures[2];
11300 0 : _o3[1] = wide_int_to_tree (sizetype, off);
11301 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11302 0 : _o2[0] = _r3;
11303 : }
11304 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11305 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11306 0 : _o1[0] = _r2;
11307 : }
11308 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11309 : {
11310 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11311 : }
11312 : else
11313 : _r1 = _o1[0];
11314 0 : res_op0 = _r1;
11315 : }
11316 0 : tree res_op1;
11317 0 : res_op1 = rhs_tree;
11318 0 : tree _r;
11319 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11320 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
11321 0 : return _r;
11322 : }
11323 0 : next_after_fail1808:;
11324 : }
11325 : }
11326 : }
11327 : }
11328 : }
11329 : }
11330 : }
11331 : }
11332 : break;
11333 : }
11334 : default:;
11335 : }
11336 : }
11337 : break;
11338 : }
11339 : default:;
11340 : }
11341 : break;
11342 : }
11343 : default:;
11344 : }
11345 : break;
11346 : }
11347 : default:;
11348 : }
11349 : break;
11350 : }
11351 1162545 : case GT_EXPR:
11352 1162545 : {
11353 1162545 : tree _q20 = TREE_OPERAND (_p0, 0);
11354 1162545 : tree _q21 = TREE_OPERAND (_p0, 1);
11355 1162545 : switch (TREE_CODE (_q21))
11356 : {
11357 46 : case POINTER_PLUS_EXPR:
11358 46 : {
11359 46 : tree _q40 = TREE_OPERAND (_q21, 0);
11360 46 : tree _q41 = TREE_OPERAND (_q21, 1);
11361 46 : switch (TREE_CODE (_q41))
11362 : {
11363 46 : case INTEGER_CST:
11364 46 : {
11365 46 : switch (TREE_CODE (_p1))
11366 : {
11367 0 : case LT_EXPR:
11368 0 : {
11369 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11370 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11371 0 : switch (TREE_CODE (_q70))
11372 : {
11373 0 : case POINTER_PLUS_EXPR:
11374 0 : {
11375 0 : tree _q80 = TREE_OPERAND (_q70, 0);
11376 0 : tree _q81 = TREE_OPERAND (_q70, 1);
11377 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11378 : {
11379 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11380 : {
11381 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11382 : {
11383 0 : {
11384 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11385 0 : const enum tree_code cmp = LT_EXPR;
11386 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11387 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11388 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11389 : )
11390 : {
11391 0 : {
11392 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11393 0 : offset_int rhs = off * 2;
11394 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11395 : )
11396 : {
11397 0 : {
11398 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11399 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11400 0 : if (cmp == LT_EXPR
11401 : )
11402 : {
11403 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1809;
11404 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1809;
11405 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1809;
11406 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1809;
11407 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1809;
11408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1809;
11409 0 : {
11410 0 : tree res_op0;
11411 0 : {
11412 0 : tree _o1[1], _r1;
11413 0 : {
11414 0 : tree _o2[2], _r2;
11415 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11416 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11417 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11418 0 : _o1[0] = _r2;
11419 : }
11420 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11421 : {
11422 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11423 : }
11424 : else
11425 : _r1 = _o1[0];
11426 0 : res_op0 = _r1;
11427 : }
11428 0 : tree res_op1;
11429 0 : res_op1 = rhs_tree;
11430 0 : tree _r;
11431 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11432 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
11433 0 : return _r;
11434 : }
11435 0 : next_after_fail1809:;
11436 : }
11437 : else
11438 : {
11439 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1810;
11440 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1810;
11441 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1810;
11442 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1810;
11443 : {
11444 : tree res_op0;
11445 : {
11446 : tree _o1[1], _r1;
11447 : {
11448 : tree _o2[2], _r2;
11449 : {
11450 : tree _o3[2], _r3;
11451 : _o3[0] = swap_p ? captures[4] : captures[2];
11452 : _o3[1] = wide_int_to_tree (sizetype, off);
11453 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11454 : _o2[0] = _r3;
11455 : }
11456 : _o2[1] = swap_p ? captures[2] : captures[4];
11457 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11458 : _o1[0] = _r2;
11459 : }
11460 : if (TREE_TYPE (_o1[0]) != sizetype)
11461 : {
11462 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11463 : }
11464 : else
11465 : _r1 = _o1[0];
11466 : res_op0 = _r1;
11467 : }
11468 : tree res_op1;
11469 : res_op1 = rhs_tree;
11470 : tree _r;
11471 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11472 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
11473 : return _r;
11474 : }
11475 : next_after_fail1810:;
11476 : }
11477 : }
11478 : }
11479 : }
11480 : }
11481 : }
11482 : }
11483 : }
11484 : }
11485 : break;
11486 : }
11487 : default:;
11488 : }
11489 : break;
11490 : }
11491 18 : case GT_EXPR:
11492 18 : {
11493 18 : tree _q70 = TREE_OPERAND (_p1, 0);
11494 18 : tree _q71 = TREE_OPERAND (_p1, 1);
11495 18 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11496 : {
11497 0 : switch (TREE_CODE (_q71))
11498 : {
11499 0 : case POINTER_PLUS_EXPR:
11500 0 : {
11501 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11502 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11503 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11504 : {
11505 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11506 : {
11507 0 : {
11508 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11509 0 : const enum tree_code cmp = LT_EXPR;
11510 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11511 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11512 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11513 : )
11514 : {
11515 0 : {
11516 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11517 0 : offset_int rhs = off * 2;
11518 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11519 : )
11520 : {
11521 0 : {
11522 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11523 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11524 0 : if (cmp == LT_EXPR
11525 : )
11526 : {
11527 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1811;
11528 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1811;
11529 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1811;
11530 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1811;
11531 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1811;
11532 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1811;
11533 0 : {
11534 0 : tree res_op0;
11535 0 : {
11536 0 : tree _o1[1], _r1;
11537 0 : {
11538 0 : tree _o2[2], _r2;
11539 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11540 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11541 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11542 0 : _o1[0] = _r2;
11543 : }
11544 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11545 : {
11546 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11547 : }
11548 : else
11549 : _r1 = _o1[0];
11550 0 : res_op0 = _r1;
11551 : }
11552 0 : tree res_op1;
11553 0 : res_op1 = rhs_tree;
11554 0 : tree _r;
11555 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11556 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
11557 0 : return _r;
11558 : }
11559 0 : next_after_fail1811:;
11560 : }
11561 : else
11562 : {
11563 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1812;
11564 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1812;
11565 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1812;
11566 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1812;
11567 : {
11568 : tree res_op0;
11569 : {
11570 : tree _o1[1], _r1;
11571 : {
11572 : tree _o2[2], _r2;
11573 : {
11574 : tree _o3[2], _r3;
11575 : _o3[0] = swap_p ? captures[4] : captures[2];
11576 : _o3[1] = wide_int_to_tree (sizetype, off);
11577 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11578 : _o2[0] = _r3;
11579 : }
11580 : _o2[1] = swap_p ? captures[2] : captures[4];
11581 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11582 : _o1[0] = _r2;
11583 : }
11584 : if (TREE_TYPE (_o1[0]) != sizetype)
11585 : {
11586 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11587 : }
11588 : else
11589 : _r1 = _o1[0];
11590 : res_op0 = _r1;
11591 : }
11592 : tree res_op1;
11593 : res_op1 = rhs_tree;
11594 : tree _r;
11595 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11596 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
11597 : return _r;
11598 : }
11599 : next_after_fail1812:;
11600 : }
11601 : }
11602 : }
11603 : }
11604 : }
11605 : }
11606 : }
11607 : }
11608 : break;
11609 : }
11610 : default:;
11611 : }
11612 : }
11613 : break;
11614 : }
11615 : default:;
11616 : }
11617 : break;
11618 : }
11619 : default:;
11620 : }
11621 : break;
11622 : }
11623 : default:;
11624 : }
11625 : break;
11626 : }
11627 : default:;
11628 : }
11629 : return NULL_TREE;
11630 : }
11631 : #pragma GCC diagnostic pop
|