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 107679858 : tree_logical_inverted_value (tree t, tree *res_ops)
11 : {
12 107679858 : const tree type = TREE_TYPE (t);
13 107679858 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 107679858 : if (TREE_SIDE_EFFECTS (t)) return false;
15 98677794 : switch (TREE_CODE (t))
16 : {
17 533199 : case TRUTH_NOT_EXPR:
18 533199 : {
19 533199 : tree _p0 = TREE_OPERAND (t, 0);
20 533199 : {
21 533199 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 533199 : {
23 533199 : res_ops[0] = captures[0];
24 533199 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 23, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 160571 : break;
29 : }
30 160571 : case BIT_NOT_EXPR:
31 160571 : {
32 160571 : tree _p0 = TREE_OPERAND (t, 0);
33 160571 : if (tree_truth_valued_p (_p0))
34 : {
35 12206 : {
36 12206 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
37 12206 : {
38 12206 : res_ops[0] = captures[0];
39 12206 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 24, __FILE__, __LINE__, false);
40 12206 : return true;
41 : }
42 : }
43 : }
44 : break;
45 : }
46 1401298 : case EQ_EXPR:
47 1401298 : {
48 1401298 : tree _p0 = TREE_OPERAND (t, 0);
49 1401298 : tree _p1 = TREE_OPERAND (t, 1);
50 1401298 : if (integer_zerop (_p1))
51 : {
52 553458 : {
53 553458 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
54 553458 : {
55 553458 : res_ops[0] = captures[0];
56 553458 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 25, __FILE__, __LINE__, false);
57 553458 : return true;
58 : }
59 : }
60 : }
61 : break;
62 : }
63 2156134 : case NE_EXPR:
64 2156134 : {
65 2156134 : tree _p0 = TREE_OPERAND (t, 0);
66 2156134 : tree _p1 = TREE_OPERAND (t, 1);
67 2156134 : if (tree_truth_valued_p (_p0))
68 : {
69 2706 : if (integer_truep (_p1))
70 : {
71 0 : {
72 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
73 0 : {
74 0 : res_ops[0] = captures[0];
75 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 26, __FILE__, __LINE__, false);
76 0 : return true;
77 : }
78 : }
79 : }
80 : }
81 : break;
82 : }
83 110111 : case BIT_XOR_EXPR:
84 110111 : {
85 110111 : tree _p0 = TREE_OPERAND (t, 0);
86 110111 : tree _p1 = TREE_OPERAND (t, 1);
87 110111 : if (tree_truth_valued_p (_p0))
88 : {
89 15766 : if (integer_truep (_p1))
90 : {
91 0 : {
92 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
93 0 : {
94 0 : res_ops[0] = captures[0];
95 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 27, __FILE__, __LINE__, false);
96 0 : return true;
97 : }
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 3 : generic_simplify_3 (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 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 3 : if (INTEGRAL_TYPE_P (type)
115 : )
116 : {
117 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail74;
118 3 : {
119 3 : tree res_op0;
120 3 : {
121 3 : tree _o1[2], _r1;
122 3 : _o1[0] = captures[1];
123 3 : _o1[1] = captures[4];
124 3 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
125 3 : res_op0 = _r1;
126 : }
127 3 : tree res_op1;
128 3 : res_op1 = captures[2];
129 3 : tree _r;
130 3 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
131 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 51, __FILE__, __LINE__, true);
132 3 : return _r;
133 : }
134 0 : next_after_fail74:;
135 : }
136 : return NULL_TREE;
137 : }
138 :
139 : tree
140 0 : generic_simplify_11 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
142 : const enum tree_code ARG_UNUSED (bit_op))
143 : {
144 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
145 0 : if (bit_op == BIT_AND_EXPR
146 : )
147 : {
148 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail85;
149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail85;
150 0 : {
151 0 : tree _r;
152 0 : _r = build_zero_cst (type);
153 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 58, __FILE__, __LINE__, true);
154 0 : return _r;
155 : }
156 : next_after_fail85:;
157 : }
158 : else
159 : {
160 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail86;
161 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail86;
162 0 : {
163 0 : tree _r;
164 0 : _r = build_minus_one_cst (type);
165 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 59, __FILE__, __LINE__, true);
166 0 : return _r;
167 : }
168 : next_after_fail86:;
169 : }
170 : return NULL_TREE;
171 : }
172 :
173 : tree
174 0 : generic_simplify_20 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
175 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
176 : {
177 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
178 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail95;
179 0 : {
180 0 : tree res_op0;
181 0 : res_op0 = captures[0];
182 0 : tree res_op1;
183 0 : res_op1 = captures[1];
184 0 : tree _r;
185 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
186 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 68, __FILE__, __LINE__, true);
187 : return _r;
188 : }
189 0 : next_after_fail95:;
190 0 : return NULL_TREE;
191 : }
192 :
193 : tree
194 57 : generic_simplify_27 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
195 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
196 : {
197 57 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
198 57 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
199 : )
200 : {
201 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail102;
202 33 : {
203 33 : tree res_op0;
204 33 : {
205 33 : tree _o1[1], _r1;
206 33 : _o1[0] = captures[0];
207 33 : if (TREE_TYPE (_o1[0]) != type)
208 : {
209 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
210 : }
211 : else
212 : _r1 = _o1[0];
213 33 : res_op0 = _r1;
214 : }
215 33 : tree res_op1;
216 33 : {
217 33 : tree _o1[1], _r1;
218 33 : _o1[0] = captures[1];
219 33 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
220 33 : res_op1 = _r1;
221 : }
222 33 : tree _r;
223 33 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
224 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 75, __FILE__, __LINE__, true);
225 33 : return _r;
226 : }
227 0 : next_after_fail102:;
228 : }
229 : return NULL_TREE;
230 : }
231 :
232 : tree
233 599 : generic_simplify_35 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
234 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
235 : const enum tree_code ARG_UNUSED (bitop))
236 : {
237 599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
238 599 : if (!CONSTANT_CLASS_P (captures[0])
239 : )
240 : {
241 599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail110;
242 599 : {
243 599 : tree res_op0;
244 599 : res_op0 = captures[0];
245 599 : tree res_op1;
246 599 : {
247 599 : tree _o1[2], _r1;
248 599 : _o1[0] = captures[1];
249 599 : _o1[1] = captures[2];
250 599 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
251 599 : if (EXPR_P (_r1))
252 0 : goto next_after_fail110;
253 599 : res_op1 = _r1;
254 : }
255 599 : tree _r;
256 599 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
257 599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 82, __FILE__, __LINE__, true);
258 599 : return _r;
259 : }
260 : next_after_fail110:;
261 : }
262 : else
263 : {
264 0 : {
265 0 : tree cst1 = const_binop (bitop, type, captures[0], captures[2]);
266 0 : if (cst1
267 : )
268 : {
269 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail111;
270 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail111;
271 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail111;
272 0 : {
273 0 : tree res_op0;
274 0 : res_op0 = captures[1];
275 0 : tree res_op1;
276 0 : res_op1 = cst1;
277 0 : tree _r;
278 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 83, __FILE__, __LINE__, true);
280 0 : return _r;
281 : }
282 : next_after_fail111:;
283 : }
284 : else
285 : {
286 0 : {
287 0 : tree cst2 = const_binop (bitop, type, captures[1], captures[2]);
288 0 : if (cst2
289 : )
290 : {
291 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail112;
292 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail112;
293 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail112;
294 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail112;
295 0 : {
296 0 : tree res_op0;
297 0 : res_op0 = captures[0];
298 0 : tree res_op1;
299 0 : res_op1 = cst2;
300 0 : tree _r;
301 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
302 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 84, __FILE__, __LINE__, true);
303 0 : return _r;
304 : }
305 : next_after_fail112:;
306 : }
307 : }
308 : }
309 : }
310 : }
311 : return NULL_TREE;
312 : }
313 :
314 : tree
315 579 : generic_simplify_49 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
316 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
317 : const enum tree_code ARG_UNUSED (op))
318 : {
319 579 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
320 1158 : if (INTEGRAL_TYPE_P (type)
321 577 : && tree_int_cst_sgn (captures[2]) > 0
322 2312 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[1])) == 0
323 : )
324 : {
325 6 : {
326 6 : tree t = type;
327 6 : if (!TYPE_OVERFLOW_WRAPS (t))
328 6 : t = unsigned_type_for (t);
329 6 : wide_int wone = wi::one (TYPE_PRECISION (t));
330 6 : wide_int c = wi::add (wi::lshift (wone, wi::to_wide (captures[2])), wone);
331 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail127;
332 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail127;
333 6 : {
334 6 : tree res_op0;
335 6 : {
336 6 : tree _o1[2], _r1;
337 6 : {
338 6 : tree _o2[1], _r2;
339 6 : _o2[0] = captures[1];
340 6 : if (TREE_TYPE (_o2[0]) != t)
341 : {
342 6 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
343 : }
344 : else
345 : _r2 = _o2[0];
346 6 : _o1[0] = _r2;
347 : }
348 6 : _o1[1] = wide_int_to_tree (t, c);
349 6 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
350 6 : res_op0 = _r1;
351 : }
352 6 : tree _r;
353 6 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
354 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 95, __FILE__, __LINE__, true);
355 6 : return _r;
356 : }
357 0 : next_after_fail127:;
358 6 : }
359 : }
360 : return NULL_TREE;
361 : }
362 :
363 : tree
364 3013929 : generic_simplify_63 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
365 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
366 : const enum tree_code ARG_UNUSED (inner_op),
367 : const enum tree_code ARG_UNUSED (neg_inner_op),
368 : const enum tree_code ARG_UNUSED (outer_op))
369 : {
370 3013929 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
371 3013929 : if (!TYPE_SATURATING (type)
372 : )
373 : {
374 3013929 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
375 6027613 : && !FIXED_POINT_TYPE_P (type)
376 : )
377 : {
378 3013684 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
379 : )
380 : {
381 2038161 : if (!CONSTANT_CLASS_P (captures[0])
382 : )
383 : {
384 2038154 : if (outer_op == PLUS_EXPR
385 : )
386 : {
387 2038154 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail144;
388 2038154 : {
389 2038154 : tree res_op0;
390 2038154 : {
391 2038154 : tree _o1[1], _r1;
392 2038154 : _o1[0] = captures[0];
393 2038154 : if (TREE_TYPE (_o1[0]) != type)
394 : {
395 862406 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
396 : }
397 : else
398 : _r1 = _o1[0];
399 2038154 : res_op0 = _r1;
400 : }
401 2038154 : tree res_op1;
402 2038154 : {
403 2038154 : tree _o1[2], _r1;
404 2038154 : _o1[0] = captures[2];
405 2038154 : {
406 2038154 : tree _o2[1], _r2;
407 2038154 : _o2[0] = captures[1];
408 2038154 : if (TREE_TYPE (_o2[0]) != type)
409 : {
410 853332 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
411 : }
412 : else
413 : _r2 = _o2[0];
414 2038154 : _o1[1] = _r2;
415 : }
416 2038154 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
417 2038154 : if (EXPR_P (_r1))
418 0 : goto next_after_fail144;
419 2038154 : res_op1 = _r1;
420 : }
421 2038154 : tree _r;
422 2038154 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
423 2038154 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 112, __FILE__, __LINE__, true);
424 2038154 : return _r;
425 : }
426 : next_after_fail144:;
427 : }
428 : else
429 : {
430 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail145;
431 0 : {
432 0 : tree res_op0;
433 0 : {
434 0 : tree _o1[1], _r1;
435 0 : _o1[0] = captures[0];
436 0 : if (TREE_TYPE (_o1[0]) != type)
437 : {
438 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
439 : }
440 : else
441 : _r1 = _o1[0];
442 0 : res_op0 = _r1;
443 : }
444 0 : tree res_op1;
445 0 : {
446 0 : tree _o1[2], _r1;
447 0 : _o1[0] = captures[2];
448 0 : {
449 0 : tree _o2[1], _r2;
450 0 : _o2[0] = captures[1];
451 0 : if (TREE_TYPE (_o2[0]) != type)
452 : {
453 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
454 : }
455 : else
456 : _r2 = _o2[0];
457 0 : _o1[1] = _r2;
458 : }
459 0 : _r1 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
460 0 : if (EXPR_P (_r1))
461 0 : goto next_after_fail145;
462 0 : res_op1 = _r1;
463 : }
464 0 : tree _r;
465 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
466 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 113, __FILE__, __LINE__, true);
467 0 : return _r;
468 : }
469 : next_after_fail145:;
470 : }
471 : }
472 : }
473 : else
474 : {
475 1951046 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
476 1951046 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
477 : )
478 : {
479 177199 : if (outer_op == PLUS_EXPR
480 : )
481 : {
482 177172 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail146;
483 177172 : {
484 177172 : tree res_op0;
485 177172 : {
486 177172 : tree _o1[2], _r1;
487 177172 : _o1[0] = captures[0];
488 177172 : {
489 177172 : tree _o2[2], _r2;
490 177172 : {
491 177172 : tree _o3[1], _r3;
492 177172 : _o3[0] = captures[2];
493 177172 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
494 : {
495 177172 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
496 : }
497 : else
498 : _r3 = _o3[0];
499 177172 : _o2[0] = _r3;
500 : }
501 177172 : _o2[1] = captures[1];
502 177172 : _r2 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
503 177172 : if (EXPR_P (_r2))
504 0 : goto next_after_fail146;
505 177172 : _o1[1] = _r2;
506 : }
507 177172 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
508 177172 : res_op0 = _r1;
509 : }
510 177172 : tree _r;
511 177172 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
512 177172 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 114, __FILE__, __LINE__, true);
513 177172 : return _r;
514 : }
515 : next_after_fail146:;
516 : }
517 : else
518 : {
519 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail147;
520 27 : {
521 27 : tree res_op0;
522 27 : {
523 27 : tree _o1[2], _r1;
524 27 : _o1[0] = captures[0];
525 27 : {
526 27 : tree _o2[2], _r2;
527 27 : {
528 27 : tree _o3[1], _r3;
529 27 : _o3[0] = captures[2];
530 27 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
531 : {
532 27 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
533 : }
534 : else
535 : _r3 = _o3[0];
536 27 : _o2[0] = _r3;
537 : }
538 27 : _o2[1] = captures[1];
539 27 : _r2 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
540 27 : if (EXPR_P (_r2))
541 0 : goto next_after_fail147;
542 27 : _o1[1] = _r2;
543 : }
544 27 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
545 27 : res_op0 = _r1;
546 : }
547 27 : tree _r;
548 27 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
549 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 115, __FILE__, __LINE__, true);
550 27 : return _r;
551 : }
552 : next_after_fail147:;
553 : }
554 : }
555 : else
556 : {
557 798324 : if (types_match (type, captures[0]) && !TYPE_OVERFLOW_SANITIZED (type)
558 : )
559 : {
560 797081 : {
561 797081 : tree cst = const_binop (outer_op == inner_op
562 : ? PLUS_EXPR : MINUS_EXPR,
563 : type, captures[1], captures[2]);
564 797081 : if (cst
565 : )
566 : {
567 797081 : if (INTEGRAL_TYPE_P (type) && !TREE_OVERFLOW (cst)
568 : )
569 : {
570 797067 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail148;
571 797067 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail148;
572 797067 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail148;
573 797067 : {
574 797067 : tree res_op0;
575 797067 : res_op0 = captures[0];
576 797067 : tree res_op1;
577 797067 : res_op1 = cst;
578 797067 : tree _r;
579 797067 : _r = fold_build2_loc (loc, inner_op, type, res_op0, res_op1);
580 797067 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 116, __FILE__, __LINE__, true);
581 797067 : return _r;
582 : }
583 : next_after_fail148:;
584 : }
585 : else
586 : {
587 28 : if (INTEGRAL_TYPE_P (type)
588 28 : && wi::to_wide (cst) == wi::min_value (type)
589 : )
590 : {
591 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail149;
592 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail149;
593 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail149;
594 7 : {
595 7 : tree res_op0;
596 7 : res_op0 = captures[0];
597 7 : tree res_op1;
598 7 : res_op1 = wide_int_to_tree (type, wi::to_wide (cst));
599 7 : tree _r;
600 7 : _r = fold_build2_loc (loc, neg_inner_op, type, res_op0, res_op1);
601 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 117, __FILE__, __LINE__, true);
602 7 : return _r;
603 : }
604 : next_after_fail149:;
605 : }
606 : else
607 : {
608 7 : {
609 7 : tree utype = unsigned_type_for (type);
610 7 : if (utype
611 : )
612 : {
613 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail150;
614 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail150;
615 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail150;
616 7 : {
617 7 : tree res_op0;
618 7 : {
619 7 : tree _o1[2], _r1;
620 7 : {
621 7 : tree _o2[1], _r2;
622 7 : _o2[0] = captures[0];
623 7 : if (TREE_TYPE (_o2[0]) != utype)
624 : {
625 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
626 : }
627 : else
628 : _r2 = _o2[0];
629 7 : _o1[0] = _r2;
630 : }
631 7 : {
632 7 : tree _o2[1], _r2;
633 7 : _o2[0] = TREE_OVERFLOW (cst)
634 7 : ? drop_tree_overflow (cst) : cst;
635 7 : if (TREE_TYPE (_o2[0]) != utype)
636 : {
637 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
638 : }
639 : else
640 : _r2 = _o2[0];
641 7 : _o1[1] = _r2;
642 : }
643 7 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
644 7 : res_op0 = _r1;
645 : }
646 7 : tree _r;
647 7 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
648 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 118, __FILE__, __LINE__, true);
649 7 : return _r;
650 : }
651 : next_after_fail150:;
652 : }
653 : }
654 : }
655 : }
656 : }
657 : }
658 : }
659 : }
660 : }
661 : }
662 : }
663 : return NULL_TREE;
664 : }
665 :
666 : tree
667 0 : generic_simplify_121 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
668 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
669 : const enum tree_code ARG_UNUSED (op))
670 : {
671 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
672 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail218;
673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail218;
674 0 : {
675 0 : tree _r;
676 0 : _r = captures[0];
677 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 182, __FILE__, __LINE__, true);
678 : return _r;
679 : }
680 : next_after_fail218:;
681 : return NULL_TREE;
682 : }
683 :
684 : tree
685 253 : generic_simplify_128 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
686 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
687 : const enum tree_code ARG_UNUSED (bitop))
688 : {
689 253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
690 253 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail225;
691 253 : {
692 253 : tree res_op0;
693 253 : res_op0 = captures[0];
694 253 : tree _r;
695 253 : _r = non_lvalue_loc (loc, res_op0);
696 253 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
697 : return _r;
698 : }
699 0 : next_after_fail225:;
700 0 : return NULL_TREE;
701 : }
702 :
703 : tree
704 0 : generic_simplify_137 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
705 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
706 : const enum tree_code ARG_UNUSED (op))
707 : {
708 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
709 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
710 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
711 : )
712 : {
713 0 : if (single_use (captures[4]) && single_use (captures[5])
714 : )
715 : {
716 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail234;
717 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail234;
718 0 : {
719 0 : tree res_op0;
720 0 : res_op0 = captures[0];
721 0 : tree res_op1;
722 0 : {
723 0 : tree _o1[1], _r1;
724 0 : _o1[0] = captures[6];
725 0 : if (TREE_TYPE (_o1[0]) != type)
726 : {
727 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
728 : }
729 : else
730 : _r1 = _o1[0];
731 0 : res_op1 = _r1;
732 : }
733 0 : tree _r;
734 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
735 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 194, __FILE__, __LINE__, true);
736 0 : return _r;
737 : }
738 : next_after_fail234:;
739 : }
740 : else
741 : {
742 : if (single_use (captures[0]) && single_use (captures[1])
743 : )
744 : {
745 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail235;
746 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail235;
747 : {
748 : tree res_op0;
749 : {
750 : tree _o1[1], _r1;
751 : _o1[0] = captures[3];
752 : if (TREE_TYPE (_o1[0]) != type)
753 : {
754 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
755 : }
756 : else
757 : _r1 = _o1[0];
758 : res_op0 = _r1;
759 : }
760 : tree res_op1;
761 : res_op1 = captures[4];
762 : tree _r;
763 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
764 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
765 : return _r;
766 : }
767 : next_after_fail235:;
768 : }
769 : }
770 : }
771 : return NULL_TREE;
772 : }
773 :
774 : tree
775 0 : generic_simplify_151 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
776 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
777 : const enum tree_code ARG_UNUSED (cmp),
778 : const enum tree_code ARG_UNUSED (icmp))
779 : {
780 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
781 0 : if (INTEGRAL_TYPE_P (type)
782 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
783 0 : && canonicalize_math_after_vectorization_p ()
784 : )
785 : {
786 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail253;
787 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail253;
788 : {
789 : tree res_op0;
790 : {
791 : tree _o1[3], _r1;
792 : _o1[0] = captures[0];
793 : _o1[1] = captures[3];
794 : _o1[2] = captures[5];
795 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
796 : res_op0 = _r1;
797 : }
798 : tree res_op1;
799 : res_op1 = build_one_cst (type);
800 : tree _r;
801 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
802 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 202, __FILE__, __LINE__, true);
803 : return _r;
804 : }
805 0 : next_after_fail253:;
806 : }
807 0 : return NULL_TREE;
808 : }
809 :
810 : tree
811 0 : generic_simplify_164 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
812 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
813 : {
814 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
815 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail288;
816 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail288;
817 0 : {
818 0 : tree _r;
819 0 : _r = constant_boolean_node (true, type);
820 0 : if (TREE_SIDE_EFFECTS (captures[1]))
821 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
823 : return _r;
824 : }
825 : next_after_fail288:;
826 : return NULL_TREE;
827 : }
828 :
829 : tree
830 0 : generic_simplify_167 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
831 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
832 : const enum tree_code ARG_UNUSED (code2),
833 : const enum tree_code ARG_UNUSED (code1))
834 : {
835 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
836 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
837 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
838 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
839 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
840 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
841 0 : && bitwise_equal_p (captures[2], captures[5]))
842 : )
843 : {
844 0 : {
845 0 : bool one_before = false;
846 0 : bool one_after = false;
847 0 : int cmp = 0;
848 0 : bool allbits = true;
849 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
850 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
851 : {
852 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
853 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
854 0 : auto t2 = wi::to_wide (captures[5]);
855 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
856 0 : if (cmp < 0
857 0 : && t1 == t2 - 1)
858 : one_before = true;
859 0 : if (cmp > 0
860 0 : && t1 == t2 + 1)
861 : one_after = true;
862 : }
863 0 : bool val;
864 0 : switch (code2)
865 : {
866 0 : case EQ_EXPR: val = (cmp == 0); break;
867 0 : case NE_EXPR: val = (cmp != 0); break;
868 0 : case LT_EXPR: val = (cmp < 0); break;
869 0 : case GT_EXPR: val = (cmp > 0); break;
870 0 : case LE_EXPR: val = (cmp <= 0); break;
871 0 : case GE_EXPR: val = (cmp >= 0); break;
872 0 : default: gcc_unreachable ();
873 : }
874 0 : if (code1 == EQ_EXPR && val
875 : )
876 : {
877 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail292;
878 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail292;
879 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail292;
880 0 : {
881 0 : tree _r;
882 0 : _r = captures[3];
883 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
884 0 : return _r;
885 : }
886 : next_after_fail292:;
887 : }
888 : else
889 : {
890 0 : if (code1 == NE_EXPR && val && allbits
891 : )
892 : {
893 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail293;
894 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail293;
895 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail293;
896 0 : {
897 0 : tree _r;
898 0 : _r = constant_boolean_node (true, type);
899 0 : if (TREE_SIDE_EFFECTS (captures[1]))
900 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
901 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
902 0 : return _r;
903 : }
904 : next_after_fail293:;
905 : }
906 : else
907 : {
908 0 : if (code1 == NE_EXPR && !val && allbits
909 : )
910 : {
911 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail294;
912 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail294;
913 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail294;
914 0 : {
915 0 : tree _r;
916 0 : _r = captures[0];
917 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
918 0 : return _r;
919 : }
920 : next_after_fail294:;
921 : }
922 : else
923 : {
924 0 : if (code1 == EQ_EXPR
925 0 : && code2 == GT_EXPR
926 0 : && cmp == 0
927 0 : && allbits
928 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
929 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
930 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
931 : )
932 : {
933 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail295;
934 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail295;
935 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail295;
936 0 : {
937 0 : tree res_op0;
938 0 : res_op0 = captures[4];
939 0 : tree res_op1;
940 0 : res_op1 = captures[5];
941 0 : tree _r;
942 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
943 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
944 0 : return _r;
945 : }
946 : next_after_fail295:;
947 : }
948 : else
949 : {
950 0 : if (code1 == EQ_EXPR
951 0 : && code2 == LT_EXPR
952 0 : && cmp == 0
953 0 : && allbits
954 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
955 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
956 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
957 : )
958 : {
959 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail296;
960 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail296;
961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail296;
962 0 : {
963 0 : tree res_op0;
964 0 : res_op0 = captures[4];
965 0 : tree res_op1;
966 0 : res_op1 = captures[5];
967 0 : tree _r;
968 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
969 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
970 0 : return _r;
971 : }
972 : next_after_fail296:;
973 : }
974 : else
975 : {
976 0 : if (code1 == EQ_EXPR
977 0 : && code2 == GE_EXPR
978 : && one_before
979 0 : && allbits
980 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
981 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
982 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
983 : )
984 : {
985 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail297;
986 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail297;
987 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail297;
988 0 : {
989 0 : tree res_op0;
990 0 : res_op0 = captures[4];
991 0 : tree res_op1;
992 0 : {
993 0 : tree _o1[1], _r1;
994 0 : _o1[0] = captures[2];
995 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
996 : {
997 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
998 : }
999 : else
1000 : _r1 = _o1[0];
1001 0 : res_op1 = _r1;
1002 : }
1003 0 : tree _r;
1004 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
1005 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
1006 0 : return _r;
1007 : }
1008 : next_after_fail297:;
1009 : }
1010 : else
1011 : {
1012 0 : if (code1 == EQ_EXPR
1013 0 : && code2 == LE_EXPR
1014 : && one_after
1015 0 : && allbits
1016 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
1017 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
1018 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
1019 : )
1020 : {
1021 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail298;
1022 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail298;
1023 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail298;
1024 0 : {
1025 0 : tree res_op0;
1026 0 : res_op0 = captures[4];
1027 0 : tree res_op1;
1028 0 : {
1029 0 : tree _o1[1], _r1;
1030 0 : _o1[0] = captures[2];
1031 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1032 : {
1033 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1034 : }
1035 : else
1036 : _r1 = _o1[0];
1037 0 : res_op1 = _r1;
1038 : }
1039 0 : tree _r;
1040 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1041 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
1042 0 : return _r;
1043 : }
1044 : next_after_fail298:;
1045 : }
1046 : }
1047 : }
1048 : }
1049 : }
1050 : }
1051 : }
1052 : }
1053 : }
1054 : return NULL_TREE;
1055 : }
1056 :
1057 : tree
1058 189 : generic_simplify_207 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1059 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1060 : const enum tree_code ARG_UNUSED (cmp))
1061 : {
1062 189 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1063 378 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1064 356 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE(captures[0]))
1065 : )
1066 : {
1067 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail348;
1068 3 : {
1069 3 : tree res_op0;
1070 3 : res_op0 = captures[0];
1071 3 : tree res_op1;
1072 3 : res_op1 = build_zero_cst (TREE_TYPE(captures[0]));
1073 3 : tree _r;
1074 3 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1075 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 261, __FILE__, __LINE__, true);
1076 3 : return _r;
1077 : }
1078 0 : next_after_fail348:;
1079 : }
1080 : return NULL_TREE;
1081 : }
1082 :
1083 : tree
1084 33 : generic_simplify_216 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1085 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1086 : const enum tree_code ARG_UNUSED (cmp),
1087 : const enum tree_code ARG_UNUSED (icmp))
1088 : {
1089 33 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1090 66 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1091 29 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1092 13 : && type_has_mode_precision_p (TREE_TYPE (captures[0]))
1093 13 : && types_match (captures[0], captures[2])
1094 13 : && tree_fits_shwi_p (captures[1])
1095 13 : && tree_to_shwi (captures[1]) > 0
1096 46 : && tree_to_shwi (captures[1]) < TYPE_PRECISION (TREE_TYPE (captures[0]))
1097 : )
1098 : {
1099 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail360;
1100 13 : {
1101 13 : tree res_op0;
1102 13 : {
1103 13 : tree _o1[2], _r1;
1104 13 : _o1[0] = captures[0];
1105 13 : _o1[1] = captures[2];
1106 13 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1107 13 : res_op0 = _r1;
1108 : }
1109 13 : tree res_op1;
1110 13 : {
1111 13 : tree _o1[2], _r1;
1112 13 : _o1[0] = build_one_cst (TREE_TYPE (captures[0]));
1113 13 : _o1[1] = captures[1];
1114 13 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1115 13 : res_op1 = _r1;
1116 : }
1117 13 : tree _r;
1118 13 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1119 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 272, __FILE__, __LINE__, true);
1120 13 : return _r;
1121 : }
1122 0 : next_after_fail360:;
1123 : }
1124 : return NULL_TREE;
1125 : }
1126 :
1127 : tree
1128 0 : generic_simplify_226 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1129 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1130 : const enum tree_code ARG_UNUSED (op))
1131 : {
1132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1133 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1134 0 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1135 0 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1136 : )
1137 : {
1138 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail383;
1139 0 : {
1140 0 : tree res_op0;
1141 0 : res_op0 = captures[3];
1142 0 : tree res_op1;
1143 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1144 0 : tree _r;
1145 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1146 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1147 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1149 0 : return _r;
1150 : }
1151 0 : next_after_fail383:;
1152 : }
1153 : return NULL_TREE;
1154 : }
1155 :
1156 : tree
1157 0 : generic_simplify_234 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1159 : const enum tree_code ARG_UNUSED (cmp))
1160 : {
1161 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1162 0 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1163 0 : TYPE_SIGN (TREE_TYPE (captures[0])))
1164 : )
1165 : {
1166 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail391;
1167 0 : {
1168 0 : tree _r;
1169 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1170 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1171 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1172 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1173 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1174 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1175 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1176 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 302, __FILE__, __LINE__, true);
1177 0 : return _r;
1178 : }
1179 0 : next_after_fail391:;
1180 : }
1181 : else
1182 : {
1183 0 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1184 0 : TYPE_SIGN (TREE_TYPE (captures[0])))
1185 : )
1186 : {
1187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail392;
1188 0 : {
1189 0 : tree res_op0;
1190 0 : res_op0 = captures[0];
1191 0 : tree res_op1;
1192 0 : res_op1 = captures[2];
1193 0 : tree _r;
1194 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1195 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1196 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 303, __FILE__, __LINE__, true);
1198 0 : return _r;
1199 : }
1200 0 : next_after_fail392:;
1201 : }
1202 : }
1203 : return NULL_TREE;
1204 : }
1205 :
1206 : tree
1207 383 : generic_simplify_245 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1208 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1209 : const enum tree_code ARG_UNUSED (rotate),
1210 : const enum tree_code ARG_UNUSED (invrot),
1211 : const enum tree_code ARG_UNUSED (cmp))
1212 : {
1213 383 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1214 383 : if (integer_zerop (captures[2]) || integer_all_onesp (captures[2])
1215 : )
1216 : {
1217 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail414;
1218 0 : {
1219 0 : tree res_op0;
1220 0 : res_op0 = captures[0];
1221 0 : tree res_op1;
1222 0 : res_op1 = captures[2];
1223 0 : tree _r;
1224 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1225 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1226 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1227 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 325, __FILE__, __LINE__, true);
1228 0 : return _r;
1229 : }
1230 0 : next_after_fail414:;
1231 : }
1232 : return NULL_TREE;
1233 : }
1234 :
1235 : tree
1236 14827 : generic_simplify_252 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1238 : const enum tree_code ARG_UNUSED (cmp))
1239 : {
1240 14827 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1241 14827 : if (single_use (captures[0])
1242 : )
1243 : {
1244 14827 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail422;
1245 14827 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1246 14827 : {
1247 14827 : tree res_op0;
1248 14827 : res_op0 = captures[1];
1249 14827 : tree res_op1;
1250 14827 : res_op1 = captures[2];
1251 14827 : tree _r;
1252 14827 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1253 14827 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 332, __FILE__, __LINE__, true);
1254 14827 : return _r;
1255 : }
1256 : next_after_fail422:;
1257 : }
1258 : return NULL_TREE;
1259 : }
1260 :
1261 : tree
1262 24 : generic_simplify_259 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1263 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1264 : const enum tree_code ARG_UNUSED (cmp))
1265 : {
1266 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1267 24 : if (single_use (captures[1]) && single_use (captures[3])
1268 : )
1269 : {
1270 24 : {
1271 24 : tree otype = TREE_TYPE (captures[0]);
1272 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail434;
1273 24 : {
1274 24 : tree res_op0;
1275 24 : {
1276 24 : tree _o1[1], _r1;
1277 24 : _o1[0] = captures[4];
1278 24 : if (TREE_TYPE (_o1[0]) != otype)
1279 : {
1280 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, otype, _o1[0]);
1281 : }
1282 : else
1283 : _r1 = _o1[0];
1284 24 : res_op0 = _r1;
1285 : }
1286 24 : tree res_op1;
1287 24 : {
1288 24 : tree _o1[1], _r1;
1289 24 : _o1[0] = captures[2];
1290 24 : if (TREE_TYPE (_o1[0]) != otype)
1291 : {
1292 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, otype, _o1[0]);
1293 : }
1294 : else
1295 : _r1 = _o1[0];
1296 24 : res_op1 = _r1;
1297 : }
1298 24 : tree _r;
1299 24 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1300 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 342, __FILE__, __LINE__, true);
1301 24 : return _r;
1302 : }
1303 0 : next_after_fail434:;
1304 : }
1305 : }
1306 0 : return NULL_TREE;
1307 : }
1308 :
1309 : tree
1310 6 : generic_simplify_264 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1311 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1312 : const combined_fn ARG_UNUSED (sq),
1313 : const enum tree_code ARG_UNUSED (cmp))
1314 : {
1315 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1316 6 : if (flag_unsafe_math_optimizations && ! flag_errno_math
1317 : )
1318 : {
1319 0 : if (! HONOR_NANS (captures[0])
1320 : )
1321 : {
1322 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail471;
1323 0 : {
1324 0 : tree res_op0;
1325 0 : res_op0 = captures[0];
1326 0 : tree res_op1;
1327 0 : res_op1 = captures[1];
1328 0 : tree _r;
1329 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1330 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 380, __FILE__, __LINE__, true);
1331 0 : return _r;
1332 : }
1333 0 : next_after_fail471:;
1334 : }
1335 : }
1336 : return NULL_TREE;
1337 : }
1338 :
1339 : tree
1340 2599 : generic_simplify_269 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1341 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1342 : const enum tree_code ARG_UNUSED (cmp),
1343 : const enum tree_code ARG_UNUSED (scmp))
1344 : {
1345 2599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1346 4828 : if (FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1347 4828 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1348 2229 : && (cmp == EQ_EXPR
1349 2229 : || cmp == NE_EXPR
1350 1454 : || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))))
1351 : )
1352 : {
1353 1449 : {
1354 1449 : tree tem = const_unop (NEGATE_EXPR, TREE_TYPE (captures[0]), captures[1]);
1355 1449 : if (tem && !TREE_OVERFLOW (tem)
1356 : )
1357 : {
1358 1421 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail485;
1359 1421 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1360 1421 : {
1361 1421 : tree res_op0;
1362 1421 : res_op0 = captures[0];
1363 1421 : tree res_op1;
1364 1421 : res_op1 = tem;
1365 1421 : tree _r;
1366 1421 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1367 1421 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 394, __FILE__, __LINE__, true);
1368 1421 : return _r;
1369 : }
1370 : next_after_fail485:;
1371 : }
1372 : }
1373 : }
1374 : return NULL_TREE;
1375 : }
1376 :
1377 : tree
1378 699 : generic_simplify_272 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1379 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1380 : const enum tree_code ARG_UNUSED (cmp))
1381 : {
1382 699 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1383 699 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1384 1398 : && wi::bit_and_not (wi::to_wide (captures[2]), wi::to_wide (captures[3])) != 0
1385 : )
1386 : {
1387 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail502;
1388 0 : {
1389 0 : tree _r;
1390 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1391 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1392 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1393 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1394 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1395 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1396 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1397 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 403, __FILE__, __LINE__, true);
1398 0 : return _r;
1399 : }
1400 0 : next_after_fail502:;
1401 : }
1402 : return NULL_TREE;
1403 : }
1404 :
1405 : tree
1406 62 : generic_simplify_275 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1407 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1408 : const enum tree_code ARG_UNUSED (cmp))
1409 : {
1410 62 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1411 62 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail508;
1412 62 : {
1413 62 : tree res_op0;
1414 62 : res_op0 = captures[1];
1415 62 : tree res_op1;
1416 62 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1417 62 : tree _r;
1418 62 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1419 62 : if (TREE_SIDE_EFFECTS (captures[0]))
1420 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1421 62 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 409, __FILE__, __LINE__, true);
1422 : return _r;
1423 : }
1424 0 : next_after_fail508:;
1425 0 : return NULL_TREE;
1426 : }
1427 :
1428 : tree
1429 26 : generic_simplify_279 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1430 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1431 : const enum tree_code ARG_UNUSED (cmp))
1432 : {
1433 26 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1434 26 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1435 : )
1436 : {
1437 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail512;
1438 26 : {
1439 26 : tree res_op0;
1440 26 : res_op0 = captures[1];
1441 26 : tree res_op1;
1442 26 : {
1443 26 : tree _o1[2], _r1;
1444 26 : _o1[0] = captures[2];
1445 26 : {
1446 26 : tree _o2[1], _r2;
1447 26 : _o2[0] = captures[3];
1448 26 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
1449 : {
1450 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
1451 : }
1452 : else
1453 : _r2 = _o2[0];
1454 26 : _o1[1] = _r2;
1455 : }
1456 26 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1457 26 : res_op1 = _r1;
1458 : }
1459 26 : tree _r;
1460 26 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1461 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 413, __FILE__, __LINE__, true);
1462 26 : return _r;
1463 : }
1464 0 : next_after_fail512:;
1465 : }
1466 : return NULL_TREE;
1467 : }
1468 :
1469 : tree
1470 111445 : generic_simplify_283 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1471 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1472 : const enum tree_code ARG_UNUSED (cmp),
1473 : const enum tree_code ARG_UNUSED (ncmp))
1474 : {
1475 111445 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1476 222485 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1477 63430 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
1478 62361 : && element_precision (captures[0]) >= element_precision (captures[1])
1479 222890 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
1480 : )
1481 : {
1482 6347 : {
1483 6347 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1484 6347 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail516;
1485 6347 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail516;
1486 6347 : {
1487 6347 : tree res_op0;
1488 6347 : {
1489 6347 : tree _o1[1], _r1;
1490 6347 : _o1[0] = captures[1];
1491 6347 : if (TREE_TYPE (_o1[0]) != stype)
1492 : {
1493 5695 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1494 : }
1495 : else
1496 : _r1 = _o1[0];
1497 6347 : res_op0 = _r1;
1498 : }
1499 6347 : tree res_op1;
1500 6347 : res_op1 = build_zero_cst (stype);
1501 6347 : tree _r;
1502 6347 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1503 6347 : if (TREE_SIDE_EFFECTS (captures[2]))
1504 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1505 6347 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
1506 6347 : return _r;
1507 : }
1508 : next_after_fail516:;
1509 : }
1510 : }
1511 : return NULL_TREE;
1512 : }
1513 :
1514 : tree
1515 4921372 : generic_simplify_289 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1516 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1517 : const enum tree_code ARG_UNUSED (cmp))
1518 : {
1519 4921372 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1520 4921372 : {
1521 4921372 : poly_int64 off0, off1;
1522 4921372 : tree base0, base1;
1523 4921372 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1524 : off0, off1,
1525 : 1
1526 : );
1527 4921372 : if (equal == 1
1528 : )
1529 : {
1530 4880641 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1531 : )
1532 : {
1533 529624 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail522;
1534 529624 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail522;
1535 529624 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail522;
1536 529624 : {
1537 529624 : tree _r;
1538 529624 : _r = constant_boolean_node (known_eq (off0, off1), type);
1539 529624 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
1540 4904505 : return _r;
1541 : }
1542 16867 : next_after_fail522:;
1543 : }
1544 : else
1545 : {
1546 4287528 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1547 : )
1548 : {
1549 4287528 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail523;
1550 4287528 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail523;
1551 4287528 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail523;
1552 4287528 : {
1553 4287528 : tree _r;
1554 4287528 : _r = constant_boolean_node (known_ne (off0, off1), type);
1555 4287528 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1556 4287528 : return _r;
1557 : }
1558 16867 : next_after_fail523:;
1559 : }
1560 : else
1561 : {
1562 53535 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1563 : )
1564 : {
1565 53535 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail524;
1566 53535 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail524;
1567 53535 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail524;
1568 53535 : {
1569 53535 : tree _r;
1570 53535 : _r = constant_boolean_node (known_lt (off0, off1), type);
1571 53535 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
1572 53535 : return _r;
1573 : }
1574 16867 : next_after_fail524:;
1575 : }
1576 : else
1577 : {
1578 6035 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1579 : )
1580 : {
1581 6035 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail525;
1582 6035 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail525;
1583 6035 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail525;
1584 6035 : {
1585 6035 : tree _r;
1586 6035 : _r = constant_boolean_node (known_le (off0, off1), type);
1587 6035 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1588 6035 : return _r;
1589 : }
1590 16867 : next_after_fail525:;
1591 : }
1592 : else
1593 : {
1594 3419 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1595 : )
1596 : {
1597 3419 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail526;
1598 3419 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail526;
1599 3419 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail526;
1600 3419 : {
1601 3419 : tree _r;
1602 3419 : _r = constant_boolean_node (known_ge (off0, off1), type);
1603 3419 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1604 3419 : return _r;
1605 : }
1606 16867 : next_after_fail526:;
1607 : }
1608 : else
1609 : {
1610 500 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1611 : )
1612 : {
1613 500 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail527;
1614 500 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail527;
1615 500 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail527;
1616 500 : {
1617 500 : tree _r;
1618 500 : _r = constant_boolean_node (known_gt (off0, off1), type);
1619 500 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
1620 500 : return _r;
1621 : }
1622 16867 : next_after_fail527:;
1623 : }
1624 : }
1625 : }
1626 : }
1627 : }
1628 : }
1629 : }
1630 : else
1631 : {
1632 40731 : if (equal == 0
1633 : )
1634 : {
1635 23864 : if (cmp == EQ_EXPR
1636 : )
1637 : {
1638 17778 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail528;
1639 17778 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail528;
1640 17778 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail528;
1641 17778 : {
1642 17778 : tree _r;
1643 17778 : _r = constant_boolean_node (false, type);
1644 17778 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1645 17778 : return _r;
1646 : }
1647 16867 : next_after_fail528:;
1648 : }
1649 : else
1650 : {
1651 6086 : if (cmp == NE_EXPR
1652 : )
1653 : {
1654 6086 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail529;
1655 6086 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail529;
1656 6086 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail529;
1657 6086 : {
1658 6086 : tree _r;
1659 6086 : _r = constant_boolean_node (true, type);
1660 6086 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
1661 6086 : return _r;
1662 : }
1663 16867 : next_after_fail529:;
1664 : }
1665 : }
1666 : }
1667 : }
1668 : }
1669 16867 : return NULL_TREE;
1670 : }
1671 :
1672 : tree
1673 294488 : generic_simplify_304 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1674 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1675 : const enum tree_code ARG_UNUSED (cmp),
1676 : const enum tree_code ARG_UNUSED (icmp),
1677 : const enum tree_code ARG_UNUSED (ncmp))
1678 : {
1679 294488 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1680 294488 : if (types_match (type, TREE_TYPE (captures[0]))
1681 : )
1682 : {
1683 46984 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail570;
1684 46984 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail570;
1685 46984 : {
1686 46984 : tree res_op0;
1687 46984 : res_op0 = captures[1];
1688 46984 : tree res_op1;
1689 46984 : res_op1 = captures[2];
1690 46984 : tree _r;
1691 46984 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1692 46984 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 461, __FILE__, __LINE__, true);
1693 46984 : return _r;
1694 : }
1695 : next_after_fail570:;
1696 : }
1697 : return NULL_TREE;
1698 : }
1699 :
1700 : tree
1701 0 : generic_simplify_309 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1702 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1703 : const combined_fn ARG_UNUSED (copysigns))
1704 : {
1705 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1706 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail576;
1707 0 : {
1708 0 : tree res_op0;
1709 0 : res_op0 = captures[0];
1710 0 : tree res_op1;
1711 0 : res_op1 = captures[2];
1712 0 : tree _r;
1713 0 : _r = maybe_build_call_expr_loc (loc, copysigns, type, 2, res_op0, res_op1);
1714 0 : if (!_r)
1715 0 : goto next_after_fail576;
1716 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1717 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1718 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 467, __FILE__, __LINE__, true);
1719 : return _r;
1720 : }
1721 : next_after_fail576:;
1722 : return NULL_TREE;
1723 : }
1724 :
1725 : tree
1726 2238 : generic_simplify_315 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1727 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1728 : const enum tree_code ARG_UNUSED (div))
1729 : {
1730 2238 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1731 2238 : if (!integer_zerop (captures[1])
1732 : )
1733 : {
1734 1737 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail584;
1735 1737 : {
1736 1737 : tree _r;
1737 1737 : _r = captures[0];
1738 1737 : if (TREE_SIDE_EFFECTS (captures[1]))
1739 59 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1740 1737 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 473, __FILE__, __LINE__, true);
1741 1737 : return _r;
1742 : }
1743 0 : next_after_fail584:;
1744 : }
1745 : return NULL_TREE;
1746 : }
1747 :
1748 : tree
1749 9394 : generic_simplify_321 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1750 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1751 : const enum tree_code ARG_UNUSED (div))
1752 : {
1753 9394 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1754 9394 : {
1755 9394 : wi::overflow_type overflow;
1756 9394 : wide_int mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1757 18788 : TYPE_SIGN (type), &overflow);
1758 9394 : if (div == EXACT_DIV_EXPR
1759 9394 : || optimize_successive_divisions_p (captures[3], captures[0])
1760 : )
1761 : {
1762 0 : if (!overflow
1763 : )
1764 : {
1765 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail590;
1766 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail590;
1767 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail590;
1768 0 : {
1769 0 : tree res_op0;
1770 0 : res_op0 = captures[1];
1771 0 : tree res_op1;
1772 0 : res_op1 = wide_int_to_tree (type, mul);
1773 0 : tree _r;
1774 0 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1775 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 479, __FILE__, __LINE__, true);
1776 0 : return _r;
1777 : }
1778 9394 : next_after_fail590:;
1779 : }
1780 : else
1781 : {
1782 0 : if (TYPE_UNSIGNED (type)
1783 0 : || mul != wi::min_value (TYPE_PRECISION (type), SIGNED)
1784 : )
1785 : {
1786 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail591;
1787 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail591;
1788 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail591;
1789 0 : {
1790 0 : tree _r;
1791 0 : _r = build_zero_cst (type);
1792 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1793 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1794 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
1795 0 : return _r;
1796 : }
1797 9394 : next_after_fail591:;
1798 : }
1799 : }
1800 : }
1801 0 : }
1802 9394 : return NULL_TREE;
1803 : }
1804 :
1805 : tree
1806 1625081 : generic_simplify_333 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1807 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1808 : const enum tree_code ARG_UNUSED (mod))
1809 : {
1810 1625081 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1811 1913805 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1812 1338832 : && INTEGRAL_TYPE_P (type)
1813 1338832 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1814 1338832 : && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[1]))
1815 3 : || TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1816 1 : || !TYPE_UNSIGNED (type))
1817 2963913 : && integer_pow2p (captures[2]) && tree_int_cst_sgn (captures[2]) > 0
1818 : )
1819 : {
1820 981469 : {
1821 981469 : tree utype = TREE_TYPE (captures[1]);
1822 981469 : if (!TYPE_OVERFLOW_WRAPS (utype))
1823 303 : utype = unsigned_type_for (utype);
1824 981469 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail603;
1825 981469 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail603;
1826 981469 : {
1827 981469 : tree res_op0;
1828 981469 : res_op0 = captures[0];
1829 981469 : tree res_op1;
1830 981469 : {
1831 981469 : tree _o1[1], _r1;
1832 981469 : {
1833 981469 : tree _o2[2], _r2;
1834 981469 : {
1835 981469 : tree _o3[1], _r3;
1836 981469 : _o3[0] = captures[1];
1837 981469 : if (TREE_TYPE (_o3[0]) != utype)
1838 : {
1839 303 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1840 : }
1841 : else
1842 : _r3 = _o3[0];
1843 981469 : _o2[0] = _r3;
1844 : }
1845 981469 : _o2[1] = build_one_cst (utype);
1846 981469 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1847 981469 : _o1[0] = _r2;
1848 : }
1849 981469 : if (TREE_TYPE (_o1[0]) != type)
1850 : {
1851 20178 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1852 : }
1853 : else
1854 : _r1 = _o1[0];
1855 981469 : res_op1 = _r1;
1856 : }
1857 981469 : tree _r;
1858 981469 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1859 981469 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 492, __FILE__, __LINE__, true);
1860 981469 : return _r;
1861 : }
1862 : next_after_fail603:;
1863 : }
1864 : }
1865 : return NULL_TREE;
1866 : }
1867 :
1868 : tree
1869 0 : generic_simplify_350 (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 enum tree_code ARG_UNUSED (cmp),
1872 : const enum tree_code ARG_UNUSED (minmax))
1873 : {
1874 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1875 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1876 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1877 : )
1878 : {
1879 0 : {
1880 0 : tree_code code;
1881 0 : widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (type) - 1, 0);
1882 0 : tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
1883 0 : code = minmax_from_comparison (ncmp, captures[0], c1, wi::to_widest (captures[4]));
1884 0 : if (ncmp == LE_EXPR
1885 0 : && code == MIN_EXPR
1886 0 : && wi::le_p (wi::to_wide (captures[3]),
1887 0 : wi::to_wide (captures[4]),
1888 0 : TYPE_SIGN (type))
1889 : )
1890 : {
1891 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail627;
1892 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail627;
1893 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail627;
1894 0 : {
1895 0 : tree res_op0;
1896 0 : res_op0 = captures[2];
1897 0 : tree res_op1;
1898 0 : res_op1 = captures[4];
1899 0 : tree _r;
1900 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
1901 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1902 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 516, __FILE__, __LINE__, true);
1904 0 : return _r;
1905 : }
1906 0 : next_after_fail627:;
1907 : }
1908 : else
1909 : {
1910 0 : if (ncmp == GT_EXPR
1911 0 : && code == MAX_EXPR
1912 0 : && wi::ge_p (wi::to_wide (captures[3]),
1913 0 : wi::to_wide (captures[4]),
1914 0 : TYPE_SIGN (type))
1915 : )
1916 : {
1917 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail628;
1918 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail628;
1919 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail628;
1920 0 : {
1921 0 : tree res_op0;
1922 0 : res_op0 = captures[2];
1923 0 : tree res_op1;
1924 0 : res_op1 = captures[4];
1925 0 : tree _r;
1926 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1927 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1928 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1929 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 517, __FILE__, __LINE__, true);
1930 0 : return _r;
1931 : }
1932 0 : next_after_fail628:;
1933 : }
1934 : }
1935 0 : }
1936 : }
1937 : return NULL_TREE;
1938 : }
1939 :
1940 : tree
1941 0 : generic_simplify_368 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1942 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1943 : const enum tree_code ARG_UNUSED (cmp))
1944 : {
1945 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1946 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail646;
1947 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail646;
1948 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail646;
1949 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail646;
1950 0 : {
1951 0 : tree _r;
1952 0 : _r = captures[3];
1953 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
1954 : return _r;
1955 : }
1956 : next_after_fail646:;
1957 : return NULL_TREE;
1958 : }
1959 :
1960 : tree
1961 2011 : generic_simplify_375 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1962 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1963 : {
1964 2011 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1965 2011 : if (INTEGRAL_TYPE_P (type)
1966 : )
1967 : {
1968 2011 : {
1969 2011 : tree itype = TREE_TYPE (captures[2]);
1970 2011 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail654;
1971 2011 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail654;
1972 2011 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail654;
1973 2011 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail654;
1974 2011 : {
1975 2011 : tree res_op0;
1976 2011 : {
1977 2011 : tree _o1[2], _r1;
1978 2011 : _o1[0] = captures[2];
1979 2011 : {
1980 2011 : tree _o2[1], _r2;
1981 2011 : _o2[0] = captures[0];
1982 2011 : if (TREE_TYPE (_o2[0]) != itype)
1983 : {
1984 2011 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
1985 : }
1986 : else
1987 : _r2 = _o2[0];
1988 2011 : _o1[1] = _r2;
1989 : }
1990 2011 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1991 2011 : res_op0 = _r1;
1992 : }
1993 2011 : tree _r;
1994 2011 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1995 2011 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 541, __FILE__, __LINE__, true);
1996 2011 : return _r;
1997 : }
1998 : next_after_fail654:;
1999 : }
2000 : }
2001 : return NULL_TREE;
2002 : }
2003 :
2004 : tree
2005 974 : generic_simplify_384 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2006 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2007 : const enum tree_code ARG_UNUSED (op))
2008 : {
2009 974 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2010 1948 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2011 1948 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
2012 : )
2013 : {
2014 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail667;
2015 0 : {
2016 0 : tree res_op0;
2017 0 : res_op0 = captures[0];
2018 0 : tree res_op1;
2019 0 : res_op1 = captures[2];
2020 0 : tree _r;
2021 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2022 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2023 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2024 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 554, __FILE__, __LINE__, true);
2025 0 : return _r;
2026 : }
2027 0 : next_after_fail667:;
2028 : }
2029 : return NULL_TREE;
2030 : }
2031 :
2032 : tree
2033 6 : generic_simplify_389 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2034 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2035 : const enum tree_code ARG_UNUSED (minmax),
2036 : const enum tree_code ARG_UNUSED (cmp))
2037 : {
2038 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2039 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail673;
2040 6 : {
2041 6 : tree _r;
2042 6 : _r = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
2043 6 : if (TREE_SIDE_EFFECTS (captures[0]))
2044 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2045 6 : if (TREE_SIDE_EFFECTS (captures[1]))
2046 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2047 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 560, __FILE__, __LINE__, true);
2048 : return _r;
2049 : }
2050 0 : next_after_fail673:;
2051 0 : return NULL_TREE;
2052 : }
2053 :
2054 : tree
2055 9026 : generic_simplify_399 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2056 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2057 : const enum tree_code ARG_UNUSED (cmp))
2058 : {
2059 9026 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2060 9026 : if (single_use (captures[0])
2061 9026 : && ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2062 9010 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2063 : )
2064 : {
2065 6632 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail715;
2066 6632 : {
2067 6632 : tree res_op0;
2068 6632 : res_op0 = captures[2];
2069 6632 : tree res_op1;
2070 6632 : res_op1 = captures[1];
2071 6632 : tree _r;
2072 6632 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2073 6632 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
2074 6632 : return _r;
2075 : }
2076 0 : next_after_fail715:;
2077 : }
2078 : return NULL_TREE;
2079 : }
2080 :
2081 : tree
2082 1484 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2083 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2084 : const enum tree_code ARG_UNUSED (cmp),
2085 : const enum tree_code ARG_UNUSED (neg_cmp))
2086 : {
2087 1484 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2088 1484 : if (flag_unsafe_math_optimizations
2089 : )
2090 : {
2091 9 : {
2092 9 : tree tem = const_binop (RDIV_EXPR, type, captures[2], captures[1]);
2093 9 : if (tem
2094 27 : && !(REAL_VALUE_ISINF (TREE_REAL_CST (tem))
2095 15 : || (real_zerop (tem) && !real_zerop (captures[1])))
2096 : )
2097 : {
2098 3 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[1]))
2099 : )
2100 : {
2101 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail720;
2102 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail720;
2103 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail720;
2104 2 : {
2105 2 : tree res_op0;
2106 2 : res_op0 = captures[0];
2107 2 : tree res_op1;
2108 2 : res_op1 = tem;
2109 2 : tree _r;
2110 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2111 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
2112 2 : return _r;
2113 : }
2114 : next_after_fail720:;
2115 : }
2116 : else
2117 : {
2118 1 : if (real_less (TREE_REAL_CST_PTR (captures[1]), &dconst0)
2119 : )
2120 : {
2121 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail721;
2122 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail721;
2123 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail721;
2124 1 : {
2125 1 : tree res_op0;
2126 1 : res_op0 = captures[0];
2127 1 : tree res_op1;
2128 1 : res_op1 = tem;
2129 1 : tree _r;
2130 1 : _r = fold_build2_loc (loc, neg_cmp, type, res_op0, res_op1);
2131 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 591, __FILE__, __LINE__, true);
2132 1 : return _r;
2133 : }
2134 : next_after_fail721:;
2135 : }
2136 : }
2137 : }
2138 : }
2139 : }
2140 : return NULL_TREE;
2141 : }
2142 :
2143 : tree
2144 0 : generic_simplify_413 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2145 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2146 : const enum tree_code ARG_UNUSED (cmp),
2147 : const enum tree_code ARG_UNUSED (out))
2148 : {
2149 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2150 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2151 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2152 : )
2153 : {
2154 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail736;
2155 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail736;
2156 0 : {
2157 0 : tree res_op0;
2158 0 : {
2159 0 : tree _o1[1], _r1;
2160 0 : _o1[0] = captures[0];
2161 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2162 0 : res_op0 = _r1;
2163 : }
2164 0 : tree res_op1;
2165 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2166 0 : tree _r;
2167 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2168 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 588, __FILE__, __LINE__, true);
2169 0 : return _r;
2170 : }
2171 : next_after_fail736:;
2172 : }
2173 : return NULL_TREE;
2174 : }
2175 :
2176 : tree
2177 43 : generic_simplify_418 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2178 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2179 : const enum tree_code ARG_UNUSED (cmp),
2180 : const enum tree_code ARG_UNUSED (cmp2),
2181 : const enum tree_code ARG_UNUSED (cmp3),
2182 : const enum tree_code ARG_UNUSED (bit_op),
2183 : const combined_fn ARG_UNUSED (ffs))
2184 : {
2185 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2186 43 : {
2187 43 : int prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
2188 43 : if (integer_zerop (captures[2])
2189 : )
2190 : {
2191 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail741;
2192 11 : {
2193 11 : tree res_op0;
2194 11 : res_op0 = captures[1];
2195 11 : tree res_op1;
2196 11 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2197 11 : tree _r;
2198 11 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
2199 11 : if (TREE_SIDE_EFFECTS (captures[2]))
2200 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2201 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 607, __FILE__, __LINE__, true);
2202 27 : return _r;
2203 : }
2204 0 : next_after_fail741:;
2205 : }
2206 : else
2207 : {
2208 32 : if (tree_int_cst_sgn (captures[2]) < 0
2209 : )
2210 : {
2211 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail742;
2212 0 : {
2213 0 : tree _r;
2214 0 : _r = constant_boolean_node (cmp == GT_EXPR ? true : false, type);
2215 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2216 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2217 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2218 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2219 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 608, __FILE__, __LINE__, true);
2220 0 : return _r;
2221 : }
2222 0 : next_after_fail742:;
2223 : }
2224 : else
2225 : {
2226 32 : if (wi::to_widest (captures[2]) >= prec
2227 : )
2228 : {
2229 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail743;
2230 14 : {
2231 14 : tree _r;
2232 14 : _r = constant_boolean_node (cmp == GT_EXPR ? false : true, type);
2233 14 : if (TREE_SIDE_EFFECTS (captures[1]))
2234 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2235 14 : if (TREE_SIDE_EFFECTS (captures[2]))
2236 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2237 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
2238 14 : return _r;
2239 : }
2240 0 : next_after_fail743:;
2241 : }
2242 : else
2243 : {
2244 18 : if (wi::to_widest (captures[2]) == prec - 1
2245 : )
2246 : {
2247 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail744;
2248 2 : {
2249 2 : tree res_op0;
2250 2 : res_op0 = captures[1];
2251 2 : tree res_op1;
2252 2 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[1]),
2253 2 : wi::shifted_mask (prec - 1, 1,
2254 : false, prec));
2255 2 : tree _r;
2256 2 : _r = fold_build2_loc (loc, cmp3, type, res_op0, res_op1);
2257 2 : if (TREE_SIDE_EFFECTS (captures[2]))
2258 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2259 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 610, __FILE__, __LINE__, true);
2260 2 : return _r;
2261 : }
2262 0 : next_after_fail744:;
2263 : }
2264 : else
2265 : {
2266 16 : if (single_use (captures[0])
2267 : )
2268 : {
2269 16 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail745;
2270 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail745;
2271 16 : {
2272 16 : if (! tree_invariant_p (captures[1])) goto next_after_fail745;
2273 0 : tree res_op0;
2274 0 : {
2275 0 : tree _o1[2], _r1;
2276 0 : _o1[0] = unshare_expr (captures[1]);
2277 0 : _o1[1] = build_zero_cst (TREE_TYPE (captures[1]));
2278 0 : _r1 = fold_build2_loc (loc, cmp2, type, _o1[0], _o1[1]);
2279 0 : res_op0 = _r1;
2280 : }
2281 0 : tree res_op1;
2282 0 : {
2283 0 : tree _o1[2], _r1;
2284 0 : {
2285 0 : tree _o2[2], _r2;
2286 0 : _o2[0] = captures[1];
2287 0 : _o2[1] = wide_int_to_tree (TREE_TYPE (captures[1]),
2288 0 : wi::mask (tree_to_uhwi (captures[2]),
2289 : false, prec));
2290 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2291 0 : _o1[0] = _r2;
2292 : }
2293 0 : _o1[1] = build_zero_cst (TREE_TYPE (captures[1]));
2294 0 : _r1 = fold_build2_loc (loc, cmp3, type, _o1[0], _o1[1]);
2295 0 : res_op1 = _r1;
2296 : }
2297 0 : tree _r;
2298 0 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
2299 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
2300 0 : return _r;
2301 : }
2302 16 : next_after_fail745:;
2303 : }
2304 : }
2305 : }
2306 : }
2307 : }
2308 : }
2309 16 : return NULL_TREE;
2310 : }
2311 :
2312 : tree
2313 2642128 : generic_simplify_439 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2314 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2315 : const enum tree_code ARG_UNUSED (op))
2316 : {
2317 2642128 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2318 2642128 : if (INTEGRAL_TYPE_P (type)
2319 2080178 : && op != MULT_EXPR
2320 2080178 : && op != RDIV_EXPR
2321 1291176 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2322 1291176 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2323 1291176 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2324 1290797 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2325 1290027 : && type_has_mode_precision_p (type)
2326 1286174 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2327 0 : && types_match (captures[2], type)
2328 2642128 : && (types_match (captures[2], captures[4])
2329 0 : || poly_int_tree_p (captures[3]))
2330 : )
2331 : {
2332 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2333 : )
2334 : {
2335 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail781;
2336 0 : {
2337 0 : tree res_op0;
2338 0 : res_op0 = captures[2];
2339 0 : tree res_op1;
2340 0 : {
2341 0 : tree _o1[1], _r1;
2342 0 : _o1[0] = captures[4];
2343 0 : if (TREE_TYPE (_o1[0]) != type)
2344 : {
2345 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2346 : }
2347 : else
2348 : _r1 = _o1[0];
2349 0 : res_op1 = _r1;
2350 : }
2351 0 : tree _r;
2352 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2353 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2354 0 : return _r;
2355 : }
2356 0 : next_after_fail781:;
2357 : }
2358 : else
2359 : {
2360 0 : {
2361 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2362 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2363 0 : {
2364 0 : tree res_op0;
2365 0 : {
2366 0 : tree _o1[2], _r1;
2367 0 : {
2368 0 : tree _o2[1], _r2;
2369 0 : _o2[0] = captures[2];
2370 0 : if (TREE_TYPE (_o2[0]) != utype)
2371 : {
2372 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2373 : }
2374 : else
2375 : _r2 = _o2[0];
2376 0 : _o1[0] = _r2;
2377 : }
2378 0 : {
2379 0 : tree _o2[1], _r2;
2380 0 : _o2[0] = captures[4];
2381 0 : if (TREE_TYPE (_o2[0]) != utype)
2382 : {
2383 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2384 : }
2385 : else
2386 : _r2 = _o2[0];
2387 0 : _o1[1] = _r2;
2388 : }
2389 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2390 0 : res_op0 = _r1;
2391 : }
2392 0 : tree _r;
2393 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2394 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2395 0 : return _r;
2396 : }
2397 0 : next_after_fail782:;
2398 : }
2399 : }
2400 : }
2401 : else
2402 : {
2403 2627688 : if (FLOAT_TYPE_P (type)
2404 2656568 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2405 14440 : == DECIMAL_FLOAT_TYPE_P (type)
2406 : )
2407 : {
2408 14417 : {
2409 14417 : tree arg0 = strip_float_extensions (captures[2]);
2410 14417 : tree arg1 = strip_float_extensions (captures[4]);
2411 14417 : tree itype = TREE_TYPE (captures[0]);
2412 14417 : tree ty1 = TREE_TYPE (arg0);
2413 14417 : tree ty2 = TREE_TYPE (arg1);
2414 14417 : enum tree_code code = TREE_CODE (itype);
2415 0 : if (FLOAT_TYPE_P (ty1)
2416 14417 : && FLOAT_TYPE_P (ty2)
2417 : )
2418 : {
2419 14417 : {
2420 14417 : tree newtype = type;
2421 14417 : if (TYPE_MODE (ty1) == SDmode
2422 14408 : || TYPE_MODE (ty2) == SDmode
2423 28825 : || TYPE_MODE (type) == SDmode)
2424 9 : newtype = dfloat32_type_node;
2425 14417 : if (TYPE_MODE (ty1) == DDmode
2426 14411 : || TYPE_MODE (ty2) == DDmode
2427 28828 : || TYPE_MODE (type) == DDmode)
2428 6 : newtype = dfloat64_type_node;
2429 14417 : if (TYPE_MODE (ty1) == TDmode
2430 14417 : || TYPE_MODE (ty2) == TDmode
2431 28834 : || TYPE_MODE (type) == TDmode)
2432 15 : newtype = dfloat128_type_node;
2433 14417 : if ((newtype == dfloat32_type_node
2434 14417 : || newtype == dfloat64_type_node
2435 14417 : || newtype == dfloat128_type_node)
2436 15 : && newtype == type
2437 14423 : && types_match (newtype, type)
2438 : )
2439 : {
2440 6 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail783;
2441 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail783;
2442 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail783;
2443 0 : {
2444 0 : tree res_op0;
2445 0 : {
2446 0 : tree _o1[1], _r1;
2447 0 : _o1[0] = captures[2];
2448 0 : if (TREE_TYPE (_o1[0]) != newtype)
2449 : {
2450 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2451 : }
2452 : else
2453 : _r1 = _o1[0];
2454 0 : res_op0 = _r1;
2455 : }
2456 0 : tree res_op1;
2457 0 : {
2458 0 : tree _o1[1], _r1;
2459 0 : _o1[0] = captures[4];
2460 0 : if (TREE_TYPE (_o1[0]) != newtype)
2461 : {
2462 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2463 : }
2464 : else
2465 : _r1 = _o1[0];
2466 0 : res_op1 = _r1;
2467 : }
2468 0 : tree _r;
2469 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2470 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2471 0 : return _r;
2472 : }
2473 : next_after_fail783:;
2474 : }
2475 : else
2476 : {
2477 14411 : {
2478 14411 : if (element_precision (ty1) > element_precision (newtype))
2479 749 : newtype = ty1;
2480 14411 : if (element_precision (ty2) > element_precision (newtype))
2481 2 : newtype = ty2;
2482 14411 : if (element_precision (newtype) < element_precision (itype)
2483 13106 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2484 0 : || target_supports_op_p (newtype, op, optab_default))
2485 13106 : && (flag_unsafe_math_optimizations
2486 13094 : || (element_precision (newtype) == element_precision (type)
2487 13090 : && real_can_shorten_arithmetic (element_mode (itype),
2488 : element_mode (type))
2489 5070 : && !excess_precision_type (newtype)))
2490 15084 : && !types_match (itype, newtype)
2491 : )
2492 : {
2493 673 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail784;
2494 673 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail784;
2495 655 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail784;
2496 655 : {
2497 655 : tree res_op0;
2498 655 : {
2499 655 : tree _o1[2], _r1;
2500 655 : {
2501 655 : tree _o2[1], _r2;
2502 655 : _o2[0] = captures[2];
2503 655 : if (TREE_TYPE (_o2[0]) != newtype)
2504 : {
2505 655 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2506 : }
2507 : else
2508 : _r2 = _o2[0];
2509 655 : _o1[0] = _r2;
2510 : }
2511 655 : {
2512 655 : tree _o2[1], _r2;
2513 655 : _o2[0] = captures[4];
2514 655 : if (TREE_TYPE (_o2[0]) != newtype)
2515 : {
2516 604 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2517 : }
2518 : else
2519 : _r2 = _o2[0];
2520 655 : _o1[1] = _r2;
2521 : }
2522 655 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2523 655 : res_op0 = _r1;
2524 : }
2525 655 : tree _r;
2526 655 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2527 655 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 640, __FILE__, __LINE__, true);
2528 655 : return _r;
2529 : }
2530 : next_after_fail784:;
2531 : }
2532 : }
2533 : }
2534 : }
2535 : }
2536 : }
2537 : }
2538 : }
2539 : return NULL_TREE;
2540 : }
2541 :
2542 : tree
2543 13 : generic_simplify_471 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2544 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2545 : {
2546 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2547 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail819;
2548 13 : {
2549 13 : tree _r;
2550 13 : _r = build_zero_cst (type);
2551 13 : if (TREE_SIDE_EFFECTS (captures[0]))
2552 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2553 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 670, __FILE__, __LINE__, true);
2554 : return _r;
2555 : }
2556 0 : next_after_fail819:;
2557 0 : return NULL_TREE;
2558 : }
2559 :
2560 : tree
2561 202 : generic_simplify_478 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2562 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2563 : const enum tree_code ARG_UNUSED (code2),
2564 : const enum tree_code ARG_UNUSED (code1))
2565 : {
2566 202 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2567 202 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2568 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2569 202 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2570 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2571 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2572 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2573 200 : && bitwise_equal_p (captures[2], captures[5]))
2574 : )
2575 : {
2576 2 : {
2577 2 : bool one_before = false;
2578 2 : bool one_after = false;
2579 2 : int cmp = 0;
2580 2 : bool allbits = true;
2581 2 : if (TREE_CODE (captures[2]) == INTEGER_CST
2582 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2583 : {
2584 2 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2585 2 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2586 2 : auto t2 = wi::to_wide (captures[5]);
2587 2 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2588 2 : if (cmp < 0
2589 2 : && t1 == t2 - 1)
2590 : one_before = true;
2591 2 : if (cmp > 0
2592 2 : && t1 == t2 + 1)
2593 : one_after = true;
2594 : }
2595 2 : bool val;
2596 2 : switch (code2)
2597 : {
2598 0 : case EQ_EXPR: val = (cmp == 0); break;
2599 2 : case NE_EXPR: val = (cmp != 0); break;
2600 0 : case LT_EXPR: val = (cmp < 0); break;
2601 0 : case GT_EXPR: val = (cmp > 0); break;
2602 0 : case LE_EXPR: val = (cmp <= 0); break;
2603 0 : case GE_EXPR: val = (cmp >= 0); break;
2604 0 : default: gcc_unreachable ();
2605 : }
2606 2 : if (code1 == EQ_EXPR && val
2607 : )
2608 : {
2609 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail834;
2610 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail834;
2611 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail834;
2612 0 : {
2613 0 : tree _r;
2614 0 : _r = captures[0];
2615 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2616 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2617 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2618 0 : return _r;
2619 : }
2620 : next_after_fail834:;
2621 : }
2622 : else
2623 : {
2624 2 : if (code1 == EQ_EXPR && !val
2625 : )
2626 : {
2627 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail835;
2628 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail835;
2629 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail835;
2630 0 : {
2631 0 : tree _r;
2632 0 : _r = constant_boolean_node (false, type);
2633 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2634 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2636 0 : return _r;
2637 : }
2638 : next_after_fail835:;
2639 : }
2640 : else
2641 : {
2642 2 : if (code1 == NE_EXPR && !val && allbits
2643 : )
2644 : {
2645 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail836;
2646 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail836;
2647 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail836;
2648 0 : {
2649 0 : tree _r;
2650 0 : _r = captures[3];
2651 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2652 0 : return _r;
2653 : }
2654 : next_after_fail836:;
2655 : }
2656 : else
2657 : {
2658 2 : if ((code1 == NE_EXPR
2659 2 : && code2 == GE_EXPR
2660 0 : && cmp == 0
2661 0 : && allbits)
2662 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2663 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2664 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2665 : )
2666 : {
2667 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail837;
2668 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail837;
2669 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail837;
2670 0 : {
2671 0 : tree res_op0;
2672 0 : res_op0 = captures[4];
2673 0 : tree res_op1;
2674 0 : {
2675 0 : tree _o1[1], _r1;
2676 0 : _o1[0] = captures[2];
2677 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2678 : {
2679 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2680 : }
2681 : else
2682 : _r1 = _o1[0];
2683 0 : res_op1 = _r1;
2684 : }
2685 0 : tree _r;
2686 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2687 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2688 0 : return _r;
2689 : }
2690 : next_after_fail837:;
2691 : }
2692 : else
2693 : {
2694 2 : if ((code1 == NE_EXPR
2695 2 : && code2 == LE_EXPR
2696 0 : && cmp == 0
2697 0 : && allbits)
2698 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2699 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2700 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2701 : )
2702 : {
2703 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail838;
2704 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail838;
2705 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail838;
2706 0 : {
2707 0 : tree res_op0;
2708 0 : res_op0 = captures[4];
2709 0 : tree res_op1;
2710 0 : {
2711 0 : tree _o1[1], _r1;
2712 0 : _o1[0] = captures[2];
2713 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2714 : {
2715 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2716 : }
2717 : else
2718 : _r1 = _o1[0];
2719 0 : res_op1 = _r1;
2720 : }
2721 0 : tree _r;
2722 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2723 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
2724 0 : return _r;
2725 : }
2726 : next_after_fail838:;
2727 : }
2728 : else
2729 : {
2730 2 : if ((code1 == NE_EXPR
2731 2 : && code2 == GT_EXPR
2732 : && one_after
2733 0 : && allbits)
2734 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2735 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2736 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2737 : )
2738 : {
2739 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail839;
2740 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail839;
2741 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail839;
2742 0 : {
2743 0 : tree res_op0;
2744 0 : res_op0 = captures[4];
2745 0 : tree res_op1;
2746 0 : {
2747 0 : tree _o1[1], _r1;
2748 0 : _o1[0] = captures[2];
2749 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2750 : {
2751 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2752 : }
2753 : else
2754 : _r1 = _o1[0];
2755 0 : res_op1 = _r1;
2756 : }
2757 0 : tree _r;
2758 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2759 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2760 0 : return _r;
2761 : }
2762 : next_after_fail839:;
2763 : }
2764 : else
2765 : {
2766 2 : if ((code1 == NE_EXPR
2767 2 : && code2 == LT_EXPR
2768 : && one_before
2769 0 : && allbits)
2770 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2771 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2772 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2773 : )
2774 : {
2775 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail840;
2776 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail840;
2777 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail840;
2778 0 : {
2779 0 : tree res_op0;
2780 0 : res_op0 = captures[4];
2781 0 : tree res_op1;
2782 0 : {
2783 0 : tree _o1[1], _r1;
2784 0 : _o1[0] = captures[2];
2785 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2786 : {
2787 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2788 : }
2789 : else
2790 : _r1 = _o1[0];
2791 0 : res_op1 = _r1;
2792 : }
2793 0 : tree _r;
2794 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2795 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2796 0 : return _r;
2797 : }
2798 : next_after_fail840:;
2799 : }
2800 : }
2801 : }
2802 : }
2803 : }
2804 : }
2805 : }
2806 : }
2807 : }
2808 : return NULL_TREE;
2809 : }
2810 :
2811 : tree
2812 0 : generic_simplify_510 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2813 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2814 : {
2815 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2816 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2817 : )
2818 : {
2819 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail902;
2820 0 : {
2821 0 : tree res_op0;
2822 0 : {
2823 0 : tree _o1[2], _r1;
2824 0 : _o1[0] = captures[0];
2825 0 : _o1[1] = captures[1];
2826 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2827 0 : res_op0 = _r1;
2828 : }
2829 0 : tree _r;
2830 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2831 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 714, __FILE__, __LINE__, true);
2832 0 : return _r;
2833 : }
2834 0 : next_after_fail902:;
2835 : }
2836 : return NULL_TREE;
2837 : }
2838 :
2839 : tree
2840 39308 : generic_simplify_516 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2841 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2842 : {
2843 39308 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2844 39308 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type)
2845 39308 : && !HONOR_SIGNED_ZEROS (type)
2846 : )
2847 : {
2848 39308 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail909;
2849 39308 : {
2850 39308 : tree res_op0;
2851 39308 : {
2852 39308 : tree _o1[1], _r1;
2853 39308 : _o1[0] = captures[1];
2854 39308 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2855 39308 : res_op0 = _r1;
2856 : }
2857 39308 : tree res_op1;
2858 39308 : res_op1 = captures[0];
2859 39308 : tree _r;
2860 39308 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2861 39308 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 719, __FILE__, __LINE__, true);
2862 39308 : return _r;
2863 : }
2864 0 : next_after_fail909:;
2865 : }
2866 : return NULL_TREE;
2867 : }
2868 :
2869 : tree
2870 16 : generic_simplify_522 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2871 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2872 : const combined_fn ARG_UNUSED (fmas))
2873 : {
2874 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2875 16 : if (canonicalize_math_after_vectorization_p ()
2876 : )
2877 : {
2878 : if (!HONOR_SIGN_DEPENDENT_ROUNDING (type) && single_use (captures[0])
2879 : )
2880 : {
2881 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail916;
2882 : {
2883 : tree res_op0;
2884 : res_op0 = captures[1];
2885 : tree res_op1;
2886 : res_op1 = captures[2];
2887 : tree res_op2;
2888 : res_op2 = captures[3];
2889 : tree _r;
2890 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
2891 : if (!_r)
2892 : goto next_after_fail916;
2893 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 726, __FILE__, __LINE__, true);
2894 : return _r;
2895 : }
2896 16 : next_after_fail916:;
2897 : }
2898 : }
2899 16 : return NULL_TREE;
2900 : }
2901 :
2902 : tree
2903 0 : generic_simplify_535 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2904 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2905 : const enum tree_code ARG_UNUSED (minmax),
2906 : const enum tree_code ARG_UNUSED (cmp))
2907 : {
2908 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2909 0 : {
2910 0 : poly_int64 off0, off1;
2911 0 : tree base0, base1;
2912 0 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2913 : off0, off1,
2914 : 1
2915 : );
2916 0 : if (equal == 1
2917 : )
2918 : {
2919 0 : if (minmax == MIN_EXPR
2920 : )
2921 : {
2922 0 : if (known_le (off0, off1)
2923 : )
2924 : {
2925 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail937;
2926 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail937;
2927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail937;
2928 0 : {
2929 0 : tree _r;
2930 0 : _r = captures[0];
2931 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2932 0 : return _r;
2933 : }
2934 0 : next_after_fail937:;
2935 : }
2936 : else
2937 : {
2938 0 : if (known_gt (off0, off1)
2939 : )
2940 : {
2941 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail938;
2942 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail938;
2943 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail938;
2944 0 : {
2945 0 : tree _r;
2946 0 : _r = captures[2];
2947 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 739, __FILE__, __LINE__, true);
2948 0 : return _r;
2949 : }
2950 0 : next_after_fail938:;
2951 : }
2952 : }
2953 : }
2954 : else
2955 : {
2956 0 : if (known_ge (off0, off1)
2957 : )
2958 : {
2959 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail939;
2960 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail939;
2961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail939;
2962 0 : {
2963 0 : tree _r;
2964 0 : _r = captures[0];
2965 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 740, __FILE__, __LINE__, true);
2966 0 : return _r;
2967 : }
2968 0 : next_after_fail939:;
2969 : }
2970 : else
2971 : {
2972 0 : if (known_lt (off0, off1)
2973 : )
2974 : {
2975 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail940;
2976 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail940;
2977 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail940;
2978 0 : {
2979 0 : tree _r;
2980 0 : _r = captures[2];
2981 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 741, __FILE__, __LINE__, true);
2982 0 : return _r;
2983 : }
2984 0 : next_after_fail940:;
2985 : }
2986 : }
2987 : }
2988 : }
2989 : }
2990 0 : return NULL_TREE;
2991 : }
2992 :
2993 : tree
2994 0 : generic_simplify_556 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2995 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2996 : const combined_fn ARG_UNUSED (cond_len_op))
2997 : {
2998 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2999 0 : {
3000 0 : tree op_type = TREE_TYPE (captures[4]);
3001 0 : if (element_precision (type) == element_precision (op_type)
3002 : )
3003 : {
3004 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail964;
3005 0 : {
3006 0 : tree res_op0;
3007 0 : {
3008 0 : tree _o1[7], _r1;
3009 0 : _o1[0] = captures[0];
3010 0 : _o1[1] = captures[1];
3011 0 : _o1[2] = captures[2];
3012 0 : _o1[3] = captures[3];
3013 0 : {
3014 0 : tree _o2[1], _r2;
3015 0 : _o2[0] = captures[7];
3016 0 : if (TREE_TYPE (_o2[0]) != op_type)
3017 : {
3018 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3019 : }
3020 : else
3021 : _r2 = _o2[0];
3022 0 : _o1[4] = _r2;
3023 : }
3024 0 : _o1[5] = captures[5];
3025 0 : _o1[6] = captures[6];
3026 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 7, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5], _o1[6]);
3027 0 : if (!_r1)
3028 0 : goto next_after_fail964;
3029 0 : res_op0 = _r1;
3030 : }
3031 0 : tree _r;
3032 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3033 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3034 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3035 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 756, __FILE__, __LINE__, true);
3036 0 : return _r;
3037 : }
3038 : next_after_fail964:;
3039 : }
3040 : }
3041 : return NULL_TREE;
3042 : }
3043 :
3044 : tree
3045 2409133 : generic_simplify_567 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3046 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3047 : const enum tree_code ARG_UNUSED (cmp))
3048 : {
3049 2409133 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3050 2409133 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
3051 2409133 : && (cmp != LTGT_EXPR || ! flag_trapping_math)
3052 : )
3053 : {
3054 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail978;
3055 10 : {
3056 10 : tree _r;
3057 20 : _r = constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
3058 10 : ? false : true, type);
3059 10 : if (TREE_SIDE_EFFECTS (captures[0]))
3060 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3061 10 : if (TREE_SIDE_EFFECTS (captures[1]))
3062 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3063 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 770, __FILE__, __LINE__, true);
3064 10 : return _r;
3065 : }
3066 0 : next_after_fail978:;
3067 : }
3068 : return NULL_TREE;
3069 : }
3070 :
3071 : tree
3072 0 : generic_simplify_577 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3073 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3074 : const combined_fn ARG_UNUSED (sinhs),
3075 : const combined_fn ARG_UNUSED (atanhs),
3076 : const combined_fn ARG_UNUSED (sqrts))
3077 : {
3078 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3079 0 : if (!flag_errno_math
3080 : )
3081 : {
3082 0 : {
3083 0 : tree t_one = build_one_cst (type);
3084 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail988;
3085 0 : {
3086 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail988;
3087 0 : tree res_op0;
3088 0 : res_op0 = unshare_expr (captures[1]);
3089 0 : tree res_op1;
3090 0 : {
3091 0 : tree _o1[1], _r1;
3092 0 : {
3093 0 : tree _o2[2], _r2;
3094 0 : {
3095 0 : tree _o3[2], _r3;
3096 0 : _o3[0] = t_one;
3097 0 : _o3[1] = unshare_expr (captures[1]);
3098 0 : _r3 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3099 0 : _o2[0] = _r3;
3100 : }
3101 0 : {
3102 0 : tree _o3[2], _r3;
3103 0 : _o3[0] = t_one;
3104 0 : _o3[1] = captures[1];
3105 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3106 0 : _o2[1] = _r3;
3107 : }
3108 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3109 0 : _o1[0] = _r2;
3110 : }
3111 0 : _r1 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o1[0]), 1, _o1[0]);
3112 0 : if (!_r1)
3113 0 : goto next_after_fail988;
3114 0 : res_op1 = _r1;
3115 : }
3116 0 : tree _r;
3117 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3118 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 780, __FILE__, __LINE__, true);
3119 0 : return _r;
3120 : }
3121 : next_after_fail988:;
3122 : }
3123 : }
3124 : return NULL_TREE;
3125 : }
3126 :
3127 : tree
3128 0 : generic_simplify_592 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3129 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3130 : const combined_fn ARG_UNUSED (SIGNBIT))
3131 : {
3132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3133 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1003;
3134 0 : {
3135 0 : tree _r;
3136 0 : _r = integer_zero_node;
3137 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3138 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3139 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 795, __FILE__, __LINE__, true);
3140 : return _r;
3141 : }
3142 0 : next_after_fail1003:;
3143 0 : return NULL_TREE;
3144 : }
3145 :
3146 : tree
3147 0 : generic_simplify_597 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3148 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3149 : const combined_fn ARG_UNUSED (fmas))
3150 : {
3151 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3152 0 : if (canonicalize_math_after_vectorization_p ()
3153 : )
3154 : {
3155 : {
3156 : tree t = TREE_TYPE (captures[0]);
3157 : if ((!ANY_INTEGRAL_TYPE_P (type)
3158 : || TYPE_UNSIGNED (type)
3159 : || !TYPE_OVERFLOW_SANITIZED (type))
3160 : && (!ANY_INTEGRAL_TYPE_P (t)
3161 : || TYPE_UNSIGNED (t)
3162 : || !TYPE_OVERFLOW_SANITIZED (type))
3163 : )
3164 : {
3165 : {
3166 : tree utype = unsigned_type_for (type);
3167 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1008;
3168 : {
3169 : tree res_op0;
3170 : {
3171 : tree _o1[3], _r1;
3172 : {
3173 : tree _o2[1], _r2;
3174 : _o2[0] = captures[0];
3175 : if (TREE_TYPE (_o2[0]) != utype)
3176 : {
3177 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3178 : }
3179 : else
3180 : _r2 = _o2[0];
3181 : _o1[0] = _r2;
3182 : }
3183 : {
3184 : tree _o2[1], _r2;
3185 : _o2[0] = captures[1];
3186 : if (TREE_TYPE (_o2[0]) != utype)
3187 : {
3188 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3189 : }
3190 : else
3191 : _r2 = _o2[0];
3192 : _o1[1] = _r2;
3193 : }
3194 : {
3195 : tree _o2[1], _r2;
3196 : _o2[0] = captures[2];
3197 : if (TREE_TYPE (_o2[0]) != utype)
3198 : {
3199 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
3200 : }
3201 : else
3202 : _r2 = _o2[0];
3203 : _o1[2] = _r2;
3204 : }
3205 : _r1 = maybe_build_call_expr_loc (loc, CFN_FNMA, TREE_TYPE (_o1[0]), 3, _o1[0], _o1[1], _o1[2]);
3206 : if (!_r1)
3207 : goto next_after_fail1008;
3208 : res_op0 = _r1;
3209 : }
3210 : tree _r;
3211 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3212 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
3213 : return _r;
3214 : }
3215 0 : next_after_fail1008:;
3216 : }
3217 : }
3218 : }
3219 : }
3220 0 : return NULL_TREE;
3221 : }
3222 :
3223 : tree
3224 0 : generic_simplify_619 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3225 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3226 : const combined_fn ARG_UNUSED (bswap),
3227 : const combined_fn ARG_UNUSED (popcount))
3228 : {
3229 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3230 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3231 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3232 : )
3233 : {
3234 0 : {
3235 0 : tree type0 = TREE_TYPE (captures[0]);
3236 0 : tree type1 = TREE_TYPE (captures[1]);
3237 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3238 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3239 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3240 : )
3241 : {
3242 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1030;
3243 0 : {
3244 0 : tree res_op0;
3245 0 : {
3246 0 : tree _o1[1], _r1;
3247 0 : {
3248 0 : tree _o2[1], _r2;
3249 0 : _o2[0] = captures[2];
3250 0 : if (TREE_TYPE (_o2[0]) != type1)
3251 : {
3252 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3253 : }
3254 : else
3255 : _r2 = _o2[0];
3256 0 : _o1[0] = _r2;
3257 : }
3258 0 : if (TREE_TYPE (_o1[0]) != type0)
3259 : {
3260 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3261 : }
3262 : else
3263 : _r1 = _o1[0];
3264 0 : res_op0 = _r1;
3265 : }
3266 0 : tree _r;
3267 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3268 0 : if (!_r)
3269 0 : goto next_after_fail1030;
3270 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 816, __FILE__, __LINE__, true);
3271 0 : return _r;
3272 : }
3273 : next_after_fail1030:;
3274 : }
3275 : }
3276 : }
3277 : return NULL_TREE;
3278 : }
3279 :
3280 : tree
3281 2777901 : generic_simplify_ABS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3282 : {
3283 2777901 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3284 2777901 : switch (TREE_CODE (_p0))
3285 : {
3286 213581 : CASE_CONVERT:
3287 213581 : {
3288 213581 : tree _q20 = TREE_OPERAND (_p0, 0);
3289 213581 : {
3290 213581 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3291 427160 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3292 913 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3293 841 : && element_precision (type) > element_precision (TREE_TYPE (captures[0]))
3294 213807 : && (!VECTOR_TYPE_P (type)
3295 0 : || target_supports_op_p (TREE_TYPE (captures[0]), ABSU_EXPR, optab_vector))
3296 : )
3297 : {
3298 226 : {
3299 226 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
3300 226 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1044;
3301 226 : {
3302 226 : tree res_op0;
3303 226 : {
3304 226 : tree _o1[1], _r1;
3305 226 : _o1[0] = captures[0];
3306 226 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
3307 226 : res_op0 = _r1;
3308 : }
3309 226 : tree _r;
3310 226 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3311 226 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 829, __FILE__, __LINE__, true);
3312 226 : return _r;
3313 : }
3314 0 : next_after_fail1044:;
3315 : }
3316 : }
3317 : }
3318 : break;
3319 : }
3320 12 : case ABS_EXPR:
3321 12 : {
3322 12 : tree _q20 = TREE_OPERAND (_p0, 0);
3323 12 : {
3324 12 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3325 12 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1045;
3326 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
3327 12 : {
3328 12 : tree _r;
3329 12 : _r = captures[0];
3330 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
3331 12 : return _r;
3332 : }
3333 0 : next_after_fail1045:;
3334 : }
3335 0 : break;
3336 : }
3337 57 : case NEGATE_EXPR:
3338 57 : {
3339 57 : tree _q20 = TREE_OPERAND (_p0, 0);
3340 57 : {
3341 57 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3342 57 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
3343 57 : {
3344 57 : tree res_op0;
3345 57 : res_op0 = captures[0];
3346 57 : tree _r;
3347 57 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
3348 57 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 831, __FILE__, __LINE__, true);
3349 2777901 : return _r;
3350 : }
3351 0 : next_after_fail1046:;
3352 : }
3353 0 : break;
3354 : }
3355 317 : case PLUS_EXPR:
3356 317 : {
3357 317 : tree _q20 = TREE_OPERAND (_p0, 0);
3358 317 : tree _q21 = TREE_OPERAND (_p0, 1);
3359 317 : if (real_zerop (_q21))
3360 : {
3361 3 : {
3362 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3363 3 : tree res = generic_simplify_1 (loc, type, _p0, captures, PLUS_EXPR);
3364 3 : if (res) return res;
3365 : }
3366 : }
3367 : break;
3368 : }
3369 7901 : case MINUS_EXPR:
3370 7901 : {
3371 7901 : tree _q20 = TREE_OPERAND (_p0, 0);
3372 7901 : tree _q21 = TREE_OPERAND (_p0, 1);
3373 7901 : if (real_zerop (_q21))
3374 : {
3375 0 : {
3376 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3377 0 : tree res = generic_simplify_1 (loc, type, _p0, captures, MINUS_EXPR);
3378 0 : if (res) return res;
3379 : }
3380 : }
3381 : break;
3382 : }
3383 0 : case VEC_COND_EXPR:
3384 0 : {
3385 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3386 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3387 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3388 0 : {
3389 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3390 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1047;
3391 0 : {
3392 0 : tree res_op0;
3393 0 : res_op0 = captures[1];
3394 0 : tree res_op1;
3395 0 : {
3396 0 : tree _o1[1], _r1;
3397 0 : _o1[0] = captures[2];
3398 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, type, _o1[0]);
3399 0 : if (EXPR_P (_r1))
3400 0 : goto next_after_fail1047;
3401 0 : res_op1 = _r1;
3402 : }
3403 0 : tree res_op2;
3404 0 : {
3405 0 : tree _o1[1], _r1;
3406 0 : _o1[0] = captures[3];
3407 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, type, _o1[0]);
3408 0 : if (EXPR_P (_r1))
3409 0 : goto next_after_fail1047;
3410 0 : res_op2 = _r1;
3411 : }
3412 0 : tree _r;
3413 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3414 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 832, __FILE__, __LINE__, true);
3415 0 : return _r;
3416 : }
3417 0 : next_after_fail1047:;
3418 : }
3419 0 : break;
3420 : }
3421 716 : case CALL_EXPR:
3422 716 : switch (get_call_combined_fn (_p0))
3423 : {
3424 0 : case CFN_BUILT_IN_COPYSIGNF16:
3425 0 : if (call_expr_nargs (_p0) == 2)
3426 : {
3427 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3428 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3429 0 : {
3430 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3431 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF16);
3432 0 : if (res) return res;
3433 : }
3434 : }
3435 : break;
3436 0 : case CFN_BUILT_IN_COPYSIGNF32:
3437 0 : if (call_expr_nargs (_p0) == 2)
3438 : {
3439 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3440 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3441 0 : {
3442 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3443 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF32);
3444 0 : if (res) return res;
3445 : }
3446 : }
3447 : break;
3448 0 : case CFN_BUILT_IN_COPYSIGNF64:
3449 0 : if (call_expr_nargs (_p0) == 2)
3450 : {
3451 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3452 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3453 0 : {
3454 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3455 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF64);
3456 0 : if (res) return res;
3457 : }
3458 : }
3459 : break;
3460 0 : case CFN_BUILT_IN_COPYSIGNF128X:
3461 0 : if (call_expr_nargs (_p0) == 2)
3462 : {
3463 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3464 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3465 0 : {
3466 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3467 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF128X);
3468 0 : if (res) return res;
3469 : }
3470 : }
3471 : break;
3472 0 : case CFN_BUILT_IN_COPYSIGNF128:
3473 0 : if (call_expr_nargs (_p0) == 2)
3474 : {
3475 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3476 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3477 0 : {
3478 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3479 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF128);
3480 0 : if (res) return res;
3481 : }
3482 : }
3483 : break;
3484 0 : case CFN_BUILT_IN_COPYSIGNF32X:
3485 0 : if (call_expr_nargs (_p0) == 2)
3486 : {
3487 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3488 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3489 0 : {
3490 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3491 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF32X);
3492 0 : if (res) return res;
3493 : }
3494 : }
3495 : break;
3496 0 : case CFN_BUILT_IN_COPYSIGNF64X:
3497 0 : if (call_expr_nargs (_p0) == 2)
3498 : {
3499 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3500 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3501 0 : {
3502 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3503 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF64X);
3504 0 : if (res) return res;
3505 : }
3506 : }
3507 : break;
3508 0 : case CFN_BUILT_IN_COPYSIGN:
3509 0 : if (call_expr_nargs (_p0) == 2)
3510 : {
3511 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3512 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3513 0 : {
3514 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3515 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGN);
3516 0 : if (res) return res;
3517 : }
3518 : }
3519 : break;
3520 1 : case CFN_BUILT_IN_COPYSIGNF:
3521 1 : if (call_expr_nargs (_p0) == 2)
3522 : {
3523 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3524 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3525 1 : {
3526 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3527 1 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNF);
3528 1 : if (res) return res;
3529 : }
3530 : }
3531 : break;
3532 0 : case CFN_BUILT_IN_COPYSIGNL:
3533 0 : if (call_expr_nargs (_p0) == 2)
3534 : {
3535 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3536 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3537 0 : {
3538 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3539 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_BUILT_IN_COPYSIGNL);
3540 0 : if (res) return res;
3541 : }
3542 : }
3543 : break;
3544 0 : case CFN_COPYSIGN:
3545 0 : if (call_expr_nargs (_p0) == 2)
3546 : {
3547 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3548 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3549 0 : {
3550 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3551 0 : tree res = generic_simplify_2 (loc, type, _p0, captures, CFN_COPYSIGN);
3552 0 : if (res) return res;
3553 : }
3554 : }
3555 : break;
3556 : default:;
3557 : }
3558 : break;
3559 2777603 : default:;
3560 : }
3561 2777603 : if (tree_expr_nonnegative_p (_p0))
3562 : {
3563 548 : {
3564 548 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3565 548 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1048;
3566 548 : {
3567 548 : tree _r;
3568 548 : _r = captures[0];
3569 548 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 833, __FILE__, __LINE__, true);
3570 548 : return _r;
3571 : }
3572 0 : next_after_fail1048:;
3573 : }
3574 : }
3575 : return NULL_TREE;
3576 : }
3577 :
3578 : tree
3579 1045388 : generic_simplify_BIT_XOR_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3580 : {
3581 1045388 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3582 1045388 : switch (TREE_CODE (_p0))
3583 : {
3584 102 : case MINUS_EXPR:
3585 102 : {
3586 102 : tree _q20 = TREE_OPERAND (_p0, 0);
3587 102 : tree _q21 = TREE_OPERAND (_p0, 1);
3588 102 : switch (TREE_CODE (_q21))
3589 : {
3590 22 : CASE_CONVERT:
3591 22 : {
3592 22 : tree _q40 = TREE_OPERAND (_q21, 0);
3593 22 : switch (TREE_CODE (_q40))
3594 : {
3595 0 : case LT_EXPR:
3596 0 : {
3597 0 : tree _q50 = TREE_OPERAND (_q40, 0);
3598 0 : tree _q51 = TREE_OPERAND (_q40, 1);
3599 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3600 : {
3601 0 : if (integer_zerop (_q51))
3602 : {
3603 0 : switch (TREE_CODE (_p1))
3604 : {
3605 0 : case NEGATE_EXPR:
3606 0 : {
3607 0 : tree _q80 = TREE_OPERAND (_p1, 0);
3608 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
3609 : {
3610 0 : {
3611 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3612 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3613 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3614 : )
3615 : {
3616 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1167;
3617 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1167;
3618 0 : {
3619 0 : tree res_op0;
3620 0 : res_op0 = captures[0];
3621 0 : tree _r;
3622 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
3623 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
3624 0 : return _r;
3625 : }
3626 0 : next_after_fail1167:;
3627 : }
3628 : }
3629 : }
3630 : break;
3631 : }
3632 : default:;
3633 : }
3634 : }
3635 : }
3636 : break;
3637 : }
3638 : default:;
3639 : }
3640 : break;
3641 : }
3642 : default:;
3643 : }
3644 : break;
3645 : }
3646 142 : case NEGATE_EXPR:
3647 142 : {
3648 142 : tree _q20 = TREE_OPERAND (_p0, 0);
3649 142 : switch (TREE_CODE (_p1))
3650 : {
3651 0 : case MINUS_EXPR:
3652 0 : {
3653 0 : tree _q40 = TREE_OPERAND (_p1, 0);
3654 0 : tree _q41 = TREE_OPERAND (_p1, 1);
3655 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
3656 : {
3657 0 : switch (TREE_CODE (_q41))
3658 : {
3659 0 : CASE_CONVERT:
3660 0 : {
3661 0 : tree _q70 = TREE_OPERAND (_q41, 0);
3662 0 : switch (TREE_CODE (_q70))
3663 : {
3664 0 : case LT_EXPR:
3665 0 : {
3666 0 : tree _q80 = TREE_OPERAND (_q70, 0);
3667 0 : tree _q81 = TREE_OPERAND (_q70, 1);
3668 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
3669 : {
3670 0 : if (integer_zerop (_q81))
3671 : {
3672 0 : {
3673 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
3674 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3675 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
3676 : )
3677 : {
3678 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1168;
3679 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1168;
3680 0 : {
3681 0 : tree res_op0;
3682 0 : res_op0 = captures[0];
3683 0 : tree _r;
3684 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
3685 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
3686 0 : return _r;
3687 : }
3688 0 : next_after_fail1168:;
3689 : }
3690 : }
3691 : }
3692 : }
3693 : break;
3694 : }
3695 : default:;
3696 : }
3697 : break;
3698 : }
3699 : default:;
3700 : }
3701 : }
3702 : break;
3703 : }
3704 : default:;
3705 : }
3706 : break;
3707 : }
3708 1045388 : default:;
3709 : }
3710 1045388 : if (integer_zerop (_p1))
3711 : {
3712 559 : {
3713 559 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3714 559 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1169;
3715 559 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1169;
3716 559 : {
3717 559 : tree res_op0;
3718 559 : res_op0 = captures[0];
3719 559 : tree _r;
3720 559 : _r = non_lvalue_loc (loc, res_op0);
3721 559 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 891, __FILE__, __LINE__, true);
3722 559 : return _r;
3723 : }
3724 : next_after_fail1169:;
3725 : }
3726 : }
3727 1044829 : switch (TREE_CODE (_p0))
3728 : {
3729 2982 : case LSHIFT_EXPR:
3730 2982 : {
3731 2982 : tree _q20 = TREE_OPERAND (_p0, 0);
3732 2982 : tree _q21 = TREE_OPERAND (_p0, 1);
3733 2982 : switch (TREE_CODE (_p1))
3734 : {
3735 10 : case LSHIFT_EXPR:
3736 10 : {
3737 10 : tree _q50 = TREE_OPERAND (_p1, 0);
3738 10 : tree _q51 = TREE_OPERAND (_p1, 1);
3739 10 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3740 : {
3741 1 : {
3742 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
3743 1 : tree res = generic_simplify_3 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3744 1 : if (res) return res;
3745 : }
3746 : }
3747 : break;
3748 : }
3749 : default:;
3750 : }
3751 : break;
3752 : }
3753 23004 : case RSHIFT_EXPR:
3754 23004 : {
3755 23004 : tree _q20 = TREE_OPERAND (_p0, 0);
3756 23004 : tree _q21 = TREE_OPERAND (_p0, 1);
3757 23004 : switch (TREE_CODE (_p1))
3758 : {
3759 20 : case RSHIFT_EXPR:
3760 20 : {
3761 20 : tree _q50 = TREE_OPERAND (_p1, 0);
3762 20 : tree _q51 = TREE_OPERAND (_p1, 1);
3763 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3764 : {
3765 10 : {
3766 10 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
3767 10 : tree res = generic_simplify_4 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3768 10 : if (res) return res;
3769 : }
3770 : }
3771 : break;
3772 : }
3773 : default:;
3774 : }
3775 : break;
3776 : }
3777 4098 : case BIT_AND_EXPR:
3778 4098 : {
3779 4098 : tree _q20 = TREE_OPERAND (_p0, 0);
3780 4098 : tree _q21 = TREE_OPERAND (_p0, 1);
3781 4098 : switch (TREE_CODE (_p1))
3782 : {
3783 354 : case BIT_AND_EXPR:
3784 354 : {
3785 354 : tree _q50 = TREE_OPERAND (_p1, 0);
3786 354 : tree _q51 = TREE_OPERAND (_p1, 1);
3787 354 : {
3788 354 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
3789 354 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3790 354 : if (res) return res;
3791 : }
3792 354 : {
3793 354 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q50 };
3794 354 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3795 354 : if (res) return res;
3796 : }
3797 354 : {
3798 354 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
3799 354 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3800 354 : if (res) return res;
3801 : }
3802 354 : {
3803 354 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q50 };
3804 354 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
3805 354 : if (res) return res;
3806 : }
3807 354 : break;
3808 : }
3809 4098 : default:;
3810 : }
3811 4098 : switch (TREE_CODE (_q21))
3812 : {
3813 41 : case BIT_NOT_EXPR:
3814 41 : {
3815 41 : tree _q40 = TREE_OPERAND (_q21, 0);
3816 41 : switch (TREE_CODE (_p1))
3817 : {
3818 0 : case BIT_NOT_EXPR:
3819 0 : {
3820 0 : tree _q60 = TREE_OPERAND (_p1, 0);
3821 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
3822 : {
3823 0 : {
3824 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
3825 0 : tree res = generic_simplify_6 (loc, type, _p0, _p1, captures);
3826 0 : if (res) return res;
3827 : }
3828 : }
3829 : break;
3830 : }
3831 : default:;
3832 : }
3833 : break;
3834 : }
3835 4098 : default:;
3836 : }
3837 4098 : switch (TREE_CODE (_q20))
3838 : {
3839 90 : case BIT_NOT_EXPR:
3840 90 : {
3841 90 : tree _q30 = TREE_OPERAND (_q20, 0);
3842 90 : switch (TREE_CODE (_p1))
3843 : {
3844 0 : case BIT_NOT_EXPR:
3845 0 : {
3846 0 : tree _q60 = TREE_OPERAND (_p1, 0);
3847 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
3848 : {
3849 0 : {
3850 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q30 };
3851 0 : tree res = generic_simplify_6 (loc, type, _p0, _p1, captures);
3852 0 : if (res) return res;
3853 : }
3854 : }
3855 : break;
3856 : }
3857 90 : default:;
3858 : }
3859 90 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
3860 : {
3861 0 : {
3862 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3863 0 : tree res = generic_simplify_7 (loc, type, _p0, _p1, captures);
3864 0 : if (res) return res;
3865 : }
3866 : }
3867 : break;
3868 : }
3869 4098 : default:;
3870 : }
3871 4098 : switch (TREE_CODE (_q21))
3872 : {
3873 41 : case BIT_NOT_EXPR:
3874 41 : {
3875 41 : tree _q40 = TREE_OPERAND (_q21, 0);
3876 41 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
3877 : {
3878 0 : {
3879 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q20 };
3880 0 : tree res = generic_simplify_7 (loc, type, _p0, _p1, captures);
3881 0 : if (res) return res;
3882 : }
3883 : }
3884 : break;
3885 : }
3886 : default:;
3887 : }
3888 : break;
3889 : }
3890 505 : case BIT_NOT_EXPR:
3891 505 : {
3892 505 : tree _q20 = TREE_OPERAND (_p0, 0);
3893 505 : switch (TREE_CODE (_p1))
3894 : {
3895 51 : case BIT_AND_EXPR:
3896 51 : {
3897 51 : tree _q40 = TREE_OPERAND (_p1, 0);
3898 51 : tree _q41 = TREE_OPERAND (_p1, 1);
3899 51 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
3900 : {
3901 0 : switch (TREE_CODE (_q41))
3902 : {
3903 0 : case BIT_NOT_EXPR:
3904 0 : {
3905 0 : tree _q60 = TREE_OPERAND (_q41, 0);
3906 0 : {
3907 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q60 };
3908 0 : tree res = generic_simplify_6 (loc, type, _p0, _p1, captures);
3909 0 : if (res) return res;
3910 : }
3911 0 : break;
3912 : }
3913 : default:;
3914 : }
3915 : }
3916 51 : switch (TREE_CODE (_q40))
3917 : {
3918 7 : case BIT_NOT_EXPR:
3919 7 : {
3920 7 : tree _q50 = TREE_OPERAND (_q40, 0);
3921 7 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
3922 : {
3923 0 : {
3924 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q50 };
3925 0 : tree res = generic_simplify_6 (loc, type, _p0, _p1, captures);
3926 0 : if (res) return res;
3927 : }
3928 : }
3929 : break;
3930 : }
3931 : default:;
3932 : }
3933 : break;
3934 : }
3935 : default:;
3936 : }
3937 : break;
3938 : }
3939 1044818 : default:;
3940 : }
3941 1044818 : switch (TREE_CODE (_p1))
3942 : {
3943 884 : case BIT_AND_EXPR:
3944 884 : {
3945 884 : tree _q30 = TREE_OPERAND (_p1, 0);
3946 884 : tree _q31 = TREE_OPERAND (_p1, 1);
3947 884 : switch (TREE_CODE (_q30))
3948 : {
3949 57 : case BIT_NOT_EXPR:
3950 57 : {
3951 57 : tree _q40 = TREE_OPERAND (_q30, 0);
3952 57 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
3953 : {
3954 0 : {
3955 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
3956 0 : tree res = generic_simplify_7 (loc, type, _p0, _p1, captures);
3957 0 : if (res) return res;
3958 : }
3959 : }
3960 : break;
3961 : }
3962 884 : default:;
3963 : }
3964 884 : switch (TREE_CODE (_q31))
3965 : {
3966 8 : case BIT_NOT_EXPR:
3967 8 : {
3968 8 : tree _q50 = TREE_OPERAND (_q31, 0);
3969 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
3970 : {
3971 0 : {
3972 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
3973 0 : tree res = generic_simplify_7 (loc, type, _p0, _p1, captures);
3974 0 : if (res) return res;
3975 : }
3976 : }
3977 : break;
3978 : }
3979 : default:;
3980 : }
3981 : break;
3982 : }
3983 1044818 : default:;
3984 : }
3985 1044818 : switch (TREE_CODE (_p0))
3986 : {
3987 21589 : case PLUS_EXPR:
3988 21589 : {
3989 21589 : tree _q20 = TREE_OPERAND (_p0, 0);
3990 21589 : tree _q21 = TREE_OPERAND (_p0, 1);
3991 21589 : if (integer_minus_onep (_q21))
3992 : {
3993 10448 : switch (TREE_CODE (_p1))
3994 : {
3995 11 : case NEGATE_EXPR:
3996 11 : {
3997 11 : tree _q50 = TREE_OPERAND (_p1, 0);
3998 11 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3999 : {
4000 11 : {
4001 11 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4002 11 : tree res = generic_simplify_8 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4003 11 : if (res) return res;
4004 : }
4005 : }
4006 : break;
4007 : }
4008 : default:;
4009 : }
4010 : }
4011 : break;
4012 : }
4013 142 : case NEGATE_EXPR:
4014 142 : {
4015 142 : tree _q20 = TREE_OPERAND (_p0, 0);
4016 142 : switch (TREE_CODE (_p1))
4017 : {
4018 0 : case PLUS_EXPR:
4019 0 : {
4020 0 : tree _q40 = TREE_OPERAND (_p1, 0);
4021 0 : tree _q41 = TREE_OPERAND (_p1, 1);
4022 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4023 : {
4024 0 : if (integer_minus_onep (_q41))
4025 : {
4026 0 : {
4027 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4028 0 : tree res = generic_simplify_9 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4029 0 : if (res) return res;
4030 : }
4031 : }
4032 : }
4033 : break;
4034 : }
4035 0 : case MINUS_EXPR:
4036 0 : {
4037 0 : tree _q40 = TREE_OPERAND (_p1, 0);
4038 0 : tree _q41 = TREE_OPERAND (_p1, 1);
4039 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4040 : {
4041 0 : if (integer_onep (_q41))
4042 : {
4043 0 : {
4044 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4045 0 : tree res = generic_simplify_10 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4046 0 : if (res) return res;
4047 : }
4048 : }
4049 : }
4050 : break;
4051 : }
4052 : default:;
4053 : }
4054 : break;
4055 : }
4056 102 : case MINUS_EXPR:
4057 102 : {
4058 102 : tree _q20 = TREE_OPERAND (_p0, 0);
4059 102 : tree _q21 = TREE_OPERAND (_p0, 1);
4060 102 : if (integer_onep (_q21))
4061 : {
4062 0 : switch (TREE_CODE (_p1))
4063 : {
4064 0 : case NEGATE_EXPR:
4065 0 : {
4066 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4067 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4068 : {
4069 0 : {
4070 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4071 0 : tree res = generic_simplify_11 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4072 0 : if (res) return res;
4073 : }
4074 : }
4075 : break;
4076 : }
4077 : default:;
4078 : }
4079 : }
4080 : break;
4081 : }
4082 1310 : case BIT_IOR_EXPR:
4083 1310 : {
4084 1310 : tree _q20 = TREE_OPERAND (_p0, 0);
4085 1310 : tree _q21 = TREE_OPERAND (_p0, 1);
4086 1310 : switch (TREE_CODE (_p1))
4087 : {
4088 65 : case BIT_AND_EXPR:
4089 65 : {
4090 65 : tree _q50 = TREE_OPERAND (_p1, 0);
4091 65 : tree _q51 = TREE_OPERAND (_p1, 1);
4092 65 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4093 : {
4094 15 : {
4095 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4096 15 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4097 15 : if (res) return res;
4098 : }
4099 : }
4100 65 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4101 : {
4102 12 : {
4103 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4104 12 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4105 12 : if (res) return res;
4106 : }
4107 : }
4108 65 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4109 : {
4110 3 : {
4111 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4112 3 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4113 3 : if (res) return res;
4114 : }
4115 : }
4116 65 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4117 : {
4118 6 : {
4119 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4120 6 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4121 6 : if (res) return res;
4122 : }
4123 : }
4124 : break;
4125 : }
4126 1310 : default:;
4127 : }
4128 1310 : switch (TREE_CODE (_q20))
4129 : {
4130 481 : case BIT_NOT_EXPR:
4131 481 : {
4132 481 : tree _q30 = TREE_OPERAND (_q20, 0);
4133 481 : {
4134 481 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
4135 481 : tree res = generic_simplify_13 (loc, type, _p0, _p1, captures);
4136 481 : if (res) return res;
4137 : }
4138 480 : break;
4139 : }
4140 1309 : default:;
4141 : }
4142 1309 : switch (TREE_CODE (_q21))
4143 : {
4144 62 : case BIT_NOT_EXPR:
4145 62 : {
4146 62 : tree _q40 = TREE_OPERAND (_q21, 0);
4147 62 : {
4148 62 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20, _p1 };
4149 62 : tree res = generic_simplify_13 (loc, type, _p0, _p1, captures);
4150 62 : if (res) return res;
4151 : }
4152 62 : break;
4153 : }
4154 : default:;
4155 : }
4156 : break;
4157 : }
4158 4098 : case BIT_AND_EXPR:
4159 4098 : {
4160 4098 : tree _q20 = TREE_OPERAND (_p0, 0);
4161 4098 : tree _q21 = TREE_OPERAND (_p0, 1);
4162 4098 : switch (TREE_CODE (_p1))
4163 : {
4164 74 : case BIT_IOR_EXPR:
4165 74 : {
4166 74 : tree _q50 = TREE_OPERAND (_p1, 0);
4167 74 : tree _q51 = TREE_OPERAND (_p1, 1);
4168 74 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4169 : {
4170 18 : {
4171 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q21, _q20 };
4172 18 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4173 18 : if (res) return res;
4174 : }
4175 : }
4176 74 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4177 : {
4178 9 : {
4179 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q20, _q21 };
4180 9 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4181 9 : if (res) return res;
4182 : }
4183 : }
4184 74 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4185 : {
4186 9 : {
4187 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q21, _q20 };
4188 9 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4189 9 : if (res) return res;
4190 : }
4191 : }
4192 74 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4193 : {
4194 18 : {
4195 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q20, _q21 };
4196 18 : tree res = generic_simplify_12 (loc, type, _p0, _p1, captures);
4197 18 : if (res) return res;
4198 : }
4199 : }
4200 : break;
4201 : }
4202 : default:;
4203 : }
4204 : break;
4205 : }
4206 1044806 : default:;
4207 : }
4208 1044806 : switch (TREE_CODE (_p1))
4209 : {
4210 521 : case BIT_IOR_EXPR:
4211 521 : {
4212 521 : tree _q30 = TREE_OPERAND (_p1, 0);
4213 521 : tree _q31 = TREE_OPERAND (_p1, 1);
4214 521 : switch (TREE_CODE (_q30))
4215 : {
4216 21 : case BIT_NOT_EXPR:
4217 21 : {
4218 21 : tree _q40 = TREE_OPERAND (_q30, 0);
4219 21 : {
4220 21 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q31, _p0 };
4221 21 : tree res = generic_simplify_13 (loc, type, _p0, _p1, captures);
4222 21 : if (res) return res;
4223 : }
4224 21 : break;
4225 : }
4226 521 : default:;
4227 : }
4228 521 : switch (TREE_CODE (_q31))
4229 : {
4230 25 : case BIT_NOT_EXPR:
4231 25 : {
4232 25 : tree _q50 = TREE_OPERAND (_q31, 0);
4233 25 : {
4234 25 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q31, _q50, _q30, _p0 };
4235 25 : tree res = generic_simplify_13 (loc, type, _p0, _p1, captures);
4236 25 : if (res) return res;
4237 : }
4238 25 : break;
4239 : }
4240 : default:;
4241 : }
4242 : break;
4243 : }
4244 1044806 : default:;
4245 : }
4246 1044806 : switch (TREE_CODE (_p0))
4247 : {
4248 4098 : case BIT_AND_EXPR:
4249 4098 : {
4250 4098 : tree _q20 = TREE_OPERAND (_p0, 0);
4251 4098 : tree _q21 = TREE_OPERAND (_p0, 1);
4252 4098 : switch (TREE_CODE (_q20))
4253 : {
4254 90 : case BIT_NOT_EXPR:
4255 90 : {
4256 90 : tree _q30 = TREE_OPERAND (_q20, 0);
4257 90 : {
4258 90 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _p1 };
4259 90 : tree res = generic_simplify_14 (loc, type, _p0, _p1, captures);
4260 90 : if (res) return res;
4261 : }
4262 89 : break;
4263 : }
4264 4097 : default:;
4265 : }
4266 4097 : switch (TREE_CODE (_q21))
4267 : {
4268 41 : case BIT_NOT_EXPR:
4269 41 : {
4270 41 : tree _q40 = TREE_OPERAND (_q21, 0);
4271 41 : {
4272 41 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20, _p1 };
4273 41 : tree res = generic_simplify_14 (loc, type, _p0, _p1, captures);
4274 41 : if (res) return res;
4275 : }
4276 41 : break;
4277 : }
4278 : default:;
4279 : }
4280 : break;
4281 : }
4282 1044805 : default:;
4283 : }
4284 1044805 : switch (TREE_CODE (_p1))
4285 : {
4286 884 : case BIT_AND_EXPR:
4287 884 : {
4288 884 : tree _q30 = TREE_OPERAND (_p1, 0);
4289 884 : tree _q31 = TREE_OPERAND (_p1, 1);
4290 884 : switch (TREE_CODE (_q30))
4291 : {
4292 57 : case BIT_NOT_EXPR:
4293 57 : {
4294 57 : tree _q40 = TREE_OPERAND (_q30, 0);
4295 57 : {
4296 57 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q31, _p0 };
4297 57 : tree res = generic_simplify_14 (loc, type, _p0, _p1, captures);
4298 57 : if (res) return res;
4299 : }
4300 57 : break;
4301 : }
4302 884 : default:;
4303 : }
4304 884 : switch (TREE_CODE (_q31))
4305 : {
4306 8 : case BIT_NOT_EXPR:
4307 8 : {
4308 8 : tree _q50 = TREE_OPERAND (_q31, 0);
4309 8 : {
4310 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q31, _q50, _q30, _p0 };
4311 8 : tree res = generic_simplify_14 (loc, type, _p0, _p1, captures);
4312 8 : if (res) return res;
4313 : }
4314 8 : break;
4315 : }
4316 : default:;
4317 : }
4318 : break;
4319 : }
4320 1044805 : default:;
4321 : }
4322 1044805 : switch (TREE_CODE (_p0))
4323 : {
4324 667480 : CASE_CONVERT:
4325 667480 : {
4326 667480 : tree _q20 = TREE_OPERAND (_p0, 0);
4327 667480 : switch (TREE_CODE (_p1))
4328 : {
4329 663176 : CASE_CONVERT:
4330 663176 : {
4331 663176 : tree _q40 = TREE_OPERAND (_p1, 0);
4332 663176 : {
4333 663176 : tree _q40_pops[1];
4334 663176 : if (tree_maybe_bit_not (_q40, _q40_pops))
4335 : {
4336 0 : tree _q50 = _q40_pops[0];
4337 0 : {
4338 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
4339 0 : tree res = generic_simplify_15 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4340 0 : if (res) return res;
4341 : }
4342 : }
4343 : }
4344 663176 : break;
4345 : }
4346 667480 : default:;
4347 : }
4348 667480 : {
4349 667480 : tree _q20_pops[1];
4350 667480 : if (tree_maybe_bit_not (_q20, _q20_pops))
4351 : {
4352 64635 : tree _q30 = _q20_pops[0];
4353 64635 : switch (TREE_CODE (_p1))
4354 : {
4355 64585 : CASE_CONVERT:
4356 64585 : {
4357 64585 : tree _q50 = TREE_OPERAND (_p1, 0);
4358 64585 : {
4359 64585 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
4360 64585 : tree res = generic_simplify_15 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4361 64585 : if (res) return res;
4362 : }
4363 64585 : break;
4364 : }
4365 : default:;
4366 : }
4367 : }
4368 : }
4369 667480 : break;
4370 : }
4371 1044805 : default:;
4372 : }
4373 1044805 : {
4374 1044805 : tree _p1_pops[1];
4375 1044805 : if (tree_maybe_bit_not (_p1, _p1_pops))
4376 : {
4377 10161 : tree _q30 = _p1_pops[0];
4378 10161 : {
4379 10161 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
4380 10161 : tree res = generic_simplify_15 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4381 10161 : if (res) return res;
4382 : }
4383 : }
4384 : }
4385 1044805 : {
4386 1044805 : tree _p0_pops[1];
4387 1044805 : if (tree_maybe_bit_not (_p0, _p0_pops))
4388 : {
4389 1052 : tree _q20 = _p0_pops[0];
4390 1052 : {
4391 1052 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
4392 1052 : tree res = generic_simplify_15 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4393 1052 : if (res) return res;
4394 : }
4395 : }
4396 : }
4397 1044784 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4398 : {
4399 149 : {
4400 149 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4401 149 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1170;
4402 149 : {
4403 149 : tree _r;
4404 149 : _r = build_zero_cst (type);
4405 149 : if (TREE_SIDE_EFFECTS (captures[0]))
4406 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
4407 149 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
4408 149 : return _r;
4409 : }
4410 0 : next_after_fail1170:;
4411 : }
4412 : }
4413 1044635 : if (integer_all_onesp (_p1))
4414 : {
4415 1091 : {
4416 1091 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4417 1091 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1171;
4418 1091 : {
4419 1091 : tree res_op0;
4420 1091 : res_op0 = captures[0];
4421 1091 : tree _r;
4422 1091 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
4423 1091 : if (TREE_SIDE_EFFECTS (captures[1]))
4424 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4425 1091 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
4426 1091 : return _r;
4427 : }
4428 0 : next_after_fail1171:;
4429 : }
4430 : }
4431 1043544 : switch (TREE_CODE (_p0))
4432 : {
4433 1302 : case BIT_IOR_EXPR:
4434 1302 : {
4435 1302 : tree _q20 = TREE_OPERAND (_p0, 0);
4436 1302 : tree _q21 = TREE_OPERAND (_p0, 1);
4437 1302 : switch (TREE_CODE (_p1))
4438 : {
4439 179 : case BIT_IOR_EXPR:
4440 179 : {
4441 179 : tree _q50 = TREE_OPERAND (_p1, 0);
4442 179 : tree _q51 = TREE_OPERAND (_p1, 1);
4443 179 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4444 : {
4445 0 : switch (TREE_CODE (_q51))
4446 : {
4447 0 : case BIT_NOT_EXPR:
4448 0 : {
4449 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4450 0 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
4451 : {
4452 0 : {
4453 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4454 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4455 0 : if (res) return res;
4456 : }
4457 : }
4458 : break;
4459 : }
4460 : default:;
4461 : }
4462 : }
4463 179 : switch (TREE_CODE (_q50))
4464 : {
4465 20 : case BIT_NOT_EXPR:
4466 20 : {
4467 20 : tree _q60 = TREE_OPERAND (_q50, 0);
4468 20 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
4469 : {
4470 2 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4471 : {
4472 1 : {
4473 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4474 1 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4475 1 : if (res) return res;
4476 : }
4477 : }
4478 : }
4479 19 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4480 : {
4481 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4482 : {
4483 0 : {
4484 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
4485 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4486 0 : if (res) return res;
4487 : }
4488 : }
4489 : }
4490 : break;
4491 : }
4492 178 : default:;
4493 : }
4494 178 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4495 : {
4496 0 : switch (TREE_CODE (_q51))
4497 : {
4498 0 : case BIT_NOT_EXPR:
4499 0 : {
4500 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4501 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4502 : {
4503 0 : {
4504 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
4505 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4506 0 : if (res) return res;
4507 : }
4508 : }
4509 : break;
4510 : }
4511 : default:;
4512 : }
4513 : }
4514 : break;
4515 : }
4516 1301 : default:;
4517 : }
4518 1301 : switch (TREE_CODE (_q21))
4519 : {
4520 62 : case BIT_NOT_EXPR:
4521 62 : {
4522 62 : tree _q40 = TREE_OPERAND (_q21, 0);
4523 62 : switch (TREE_CODE (_p1))
4524 : {
4525 9 : case BIT_IOR_EXPR:
4526 9 : {
4527 9 : tree _q60 = TREE_OPERAND (_p1, 0);
4528 9 : tree _q61 = TREE_OPERAND (_p1, 1);
4529 9 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4530 : {
4531 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
4532 : {
4533 0 : {
4534 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4535 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4536 0 : if (res) return res;
4537 : }
4538 : }
4539 : }
4540 : break;
4541 : }
4542 : default:;
4543 : }
4544 : break;
4545 : }
4546 1301 : default:;
4547 : }
4548 1301 : switch (TREE_CODE (_q20))
4549 : {
4550 480 : case BIT_NOT_EXPR:
4551 480 : {
4552 480 : tree _q30 = TREE_OPERAND (_q20, 0);
4553 480 : switch (TREE_CODE (_p1))
4554 : {
4555 28 : case BIT_IOR_EXPR:
4556 28 : {
4557 28 : tree _q60 = TREE_OPERAND (_p1, 0);
4558 28 : tree _q61 = TREE_OPERAND (_p1, 1);
4559 28 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
4560 : {
4561 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
4562 : {
4563 0 : {
4564 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q30 };
4565 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4566 0 : if (res) return res;
4567 : }
4568 : }
4569 : }
4570 28 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4571 : {
4572 9 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
4573 : {
4574 0 : {
4575 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q30 };
4576 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4577 0 : if (res) return res;
4578 : }
4579 : }
4580 9 : switch (TREE_CODE (_q61))
4581 : {
4582 0 : case BIT_NOT_EXPR:
4583 0 : {
4584 0 : tree _q80 = TREE_OPERAND (_q61, 0);
4585 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
4586 : {
4587 0 : {
4588 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4589 0 : tree res = generic_simplify_17 (loc, type, _p0, _p1, captures);
4590 0 : if (res) return res;
4591 : }
4592 : }
4593 : break;
4594 : }
4595 : default:;
4596 : }
4597 : }
4598 28 : switch (TREE_CODE (_q60))
4599 : {
4600 1 : case BIT_NOT_EXPR:
4601 1 : {
4602 1 : tree _q70 = TREE_OPERAND (_q60, 0);
4603 1 : if ((_q70 == _q21 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q21, 0) && types_match (_q70, _q21)))
4604 : {
4605 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
4606 : {
4607 1 : {
4608 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4609 1 : tree res = generic_simplify_17 (loc, type, _p0, _p1, captures);
4610 1 : if (res) return res;
4611 : }
4612 : }
4613 : }
4614 : break;
4615 : }
4616 : default:;
4617 : }
4618 : break;
4619 : }
4620 9 : case BIT_XOR_EXPR:
4621 9 : {
4622 9 : tree _q60 = TREE_OPERAND (_p1, 0);
4623 9 : tree _q61 = TREE_OPERAND (_p1, 1);
4624 9 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4625 : {
4626 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
4627 : {
4628 0 : {
4629 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q21, _p1 };
4630 0 : tree res = generic_simplify_18 (loc, type, _p0, _p1, captures);
4631 0 : if (res) return res;
4632 : }
4633 : }
4634 : }
4635 : break;
4636 : }
4637 479 : default:;
4638 : }
4639 479 : {
4640 479 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p1 };
4641 479 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
4642 479 : if (res) return res;
4643 : }
4644 431 : break;
4645 : }
4646 1252 : default:;
4647 : }
4648 1252 : switch (TREE_CODE (_q21))
4649 : {
4650 62 : case BIT_NOT_EXPR:
4651 62 : {
4652 62 : tree _q40 = TREE_OPERAND (_q21, 0);
4653 62 : switch (TREE_CODE (_p1))
4654 : {
4655 9 : case BIT_IOR_EXPR:
4656 9 : {
4657 9 : tree _q60 = TREE_OPERAND (_p1, 0);
4658 9 : tree _q61 = TREE_OPERAND (_p1, 1);
4659 9 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4660 : {
4661 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
4662 : {
4663 0 : {
4664 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4665 0 : tree res = generic_simplify_16 (loc, type, _p0, _p1, captures);
4666 0 : if (res) return res;
4667 : }
4668 : }
4669 : }
4670 : break;
4671 : }
4672 9 : case BIT_XOR_EXPR:
4673 9 : {
4674 9 : tree _q60 = TREE_OPERAND (_p1, 0);
4675 9 : tree _q61 = TREE_OPERAND (_p1, 1);
4676 9 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4677 : {
4678 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
4679 : {
4680 0 : {
4681 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q40, _q20, _p1 };
4682 0 : tree res = generic_simplify_18 (loc, type, _p0, _p1, captures);
4683 0 : if (res) return res;
4684 : }
4685 : }
4686 : }
4687 : break;
4688 : }
4689 : default:;
4690 : }
4691 : break;
4692 : }
4693 1252 : default:;
4694 : }
4695 1252 : switch (TREE_CODE (_p1))
4696 : {
4697 65 : case BIT_AND_EXPR:
4698 65 : {
4699 65 : tree _q50 = TREE_OPERAND (_p1, 0);
4700 65 : tree _q51 = TREE_OPERAND (_p1, 1);
4701 65 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4702 : {
4703 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4704 : {
4705 0 : {
4706 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4707 0 : tree res = generic_simplify_20 (loc, type, _p0, _p1, captures);
4708 0 : if (res) return res;
4709 : }
4710 : }
4711 : }
4712 : break;
4713 : }
4714 36 : case BIT_XOR_EXPR:
4715 36 : {
4716 36 : tree _q50 = TREE_OPERAND (_p1, 0);
4717 36 : tree _q51 = TREE_OPERAND (_p1, 1);
4718 36 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4719 : {
4720 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4721 : {
4722 0 : {
4723 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4724 0 : tree res = generic_simplify_21 (loc, type, _p0, _p1, captures);
4725 0 : if (res) return res;
4726 : }
4727 : }
4728 : }
4729 : break;
4730 : }
4731 1252 : default:;
4732 : }
4733 1252 : switch (TREE_CODE (_q21))
4734 : {
4735 62 : case BIT_NOT_EXPR:
4736 62 : {
4737 62 : tree _q40 = TREE_OPERAND (_q21, 0);
4738 62 : switch (TREE_CODE (_p1))
4739 : {
4740 9 : case BIT_IOR_EXPR:
4741 9 : {
4742 9 : tree _q60 = TREE_OPERAND (_p1, 0);
4743 9 : tree _q61 = TREE_OPERAND (_p1, 1);
4744 9 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
4745 : {
4746 0 : switch (TREE_CODE (_q61))
4747 : {
4748 0 : case BIT_NOT_EXPR:
4749 0 : {
4750 0 : tree _q80 = TREE_OPERAND (_q61, 0);
4751 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
4752 : {
4753 0 : {
4754 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4755 0 : tree res = generic_simplify_17 (loc, type, _p0, _p1, captures);
4756 0 : if (res) return res;
4757 : }
4758 : }
4759 : break;
4760 : }
4761 : default:;
4762 : }
4763 : }
4764 9 : switch (TREE_CODE (_q60))
4765 : {
4766 0 : case BIT_NOT_EXPR:
4767 0 : {
4768 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4769 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4770 : {
4771 0 : if ((_q61 == _q40 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q40, 0) && types_match (_q61, _q40)))
4772 : {
4773 0 : {
4774 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4775 0 : tree res = generic_simplify_17 (loc, type, _p0, _p1, captures);
4776 0 : if (res) return res;
4777 : }
4778 : }
4779 : }
4780 : break;
4781 : }
4782 : default:;
4783 : }
4784 : break;
4785 : }
4786 : default:;
4787 : }
4788 : break;
4789 : }
4790 1252 : default:;
4791 : }
4792 1252 : switch (TREE_CODE (_p1))
4793 : {
4794 24 : CASE_CONVERT:
4795 24 : {
4796 24 : tree _q50 = TREE_OPERAND (_p1, 0);
4797 24 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
4798 : {
4799 0 : {
4800 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q20 };
4801 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
4802 0 : if (res) return res;
4803 : }
4804 : }
4805 24 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
4806 : {
4807 0 : {
4808 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q21 };
4809 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
4810 0 : if (res) return res;
4811 : }
4812 : }
4813 : break;
4814 : }
4815 1252 : default:;
4816 : }
4817 1252 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
4818 : {
4819 3 : {
4820 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q20 };
4821 3 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
4822 3 : if (res) return res;
4823 : }
4824 : }
4825 1249 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
4826 : {
4827 3 : {
4828 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q21 };
4829 3 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
4830 3 : if (res) return res;
4831 : }
4832 : }
4833 1246 : {
4834 1246 : tree _q20_pops[1];
4835 1246 : if (tree_nop_convert (_q20, _q20_pops))
4836 : {
4837 8 : tree _q30 = _q20_pops[0];
4838 8 : switch (TREE_CODE (_q30))
4839 : {
4840 8 : case BIT_NOT_EXPR:
4841 8 : {
4842 8 : tree _q40 = TREE_OPERAND (_q30, 0);
4843 8 : {
4844 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q21, _p1 };
4845 8 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
4846 8 : if (res) return res;
4847 : }
4848 0 : break;
4849 : }
4850 : default:;
4851 : }
4852 : }
4853 : }
4854 1238 : switch (TREE_CODE (_q21))
4855 : {
4856 62 : case BIT_NOT_EXPR:
4857 62 : {
4858 62 : tree _q40 = TREE_OPERAND (_q21, 0);
4859 62 : {
4860 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q20, _p1 };
4861 62 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
4862 62 : if (res) return res;
4863 : }
4864 54 : break;
4865 : }
4866 1230 : default:;
4867 : }
4868 1230 : {
4869 1230 : tree _q21_pops[1];
4870 1230 : if (tree_nop_convert (_q21, _q21_pops))
4871 : {
4872 0 : tree _q40 = _q21_pops[0];
4873 0 : switch (TREE_CODE (_q40))
4874 : {
4875 0 : case BIT_NOT_EXPR:
4876 0 : {
4877 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4878 0 : {
4879 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q20, _p1 };
4880 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
4881 0 : if (res) return res;
4882 : }
4883 0 : break;
4884 : }
4885 : default:;
4886 : }
4887 : }
4888 : }
4889 1230 : break;
4890 : }
4891 4046 : case BIT_XOR_EXPR:
4892 4046 : {
4893 4046 : tree _q20 = TREE_OPERAND (_p0, 0);
4894 4046 : tree _q21 = TREE_OPERAND (_p0, 1);
4895 4046 : switch (TREE_CODE (_p1))
4896 : {
4897 203 : case BIT_IOR_EXPR:
4898 203 : {
4899 203 : tree _q50 = TREE_OPERAND (_p1, 0);
4900 203 : tree _q51 = TREE_OPERAND (_p1, 1);
4901 203 : switch (TREE_CODE (_q50))
4902 : {
4903 1 : case BIT_NOT_EXPR:
4904 1 : {
4905 1 : tree _q60 = TREE_OPERAND (_q50, 0);
4906 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4907 : {
4908 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4909 : {
4910 1 : {
4911 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q20, _q21, _p0 };
4912 1 : tree res = generic_simplify_18 (loc, type, _p0, _p1, captures);
4913 1 : if (res) return res;
4914 : }
4915 : }
4916 : }
4917 : break;
4918 : }
4919 202 : default:;
4920 : }
4921 202 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4922 : {
4923 0 : switch (TREE_CODE (_q51))
4924 : {
4925 0 : case BIT_NOT_EXPR:
4926 0 : {
4927 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4928 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4929 : {
4930 0 : {
4931 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q20, _q21, _p0 };
4932 0 : tree res = generic_simplify_18 (loc, type, _p0, _p1, captures);
4933 0 : if (res) return res;
4934 : }
4935 : }
4936 : break;
4937 : }
4938 : default:;
4939 : }
4940 : }
4941 202 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4942 : {
4943 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4944 : {
4945 0 : {
4946 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4947 0 : tree res = generic_simplify_21 (loc, type, _p0, _p1, captures);
4948 0 : if (res) return res;
4949 : }
4950 : }
4951 : }
4952 : break;
4953 : }
4954 41 : case BIT_AND_EXPR:
4955 41 : {
4956 41 : tree _q50 = TREE_OPERAND (_p1, 0);
4957 41 : tree _q51 = TREE_OPERAND (_p1, 1);
4958 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4959 : {
4960 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4961 : {
4962 0 : {
4963 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4964 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
4965 0 : if (res) return res;
4966 : }
4967 : }
4968 : }
4969 : break;
4970 : }
4971 202 : CASE_CONVERT:
4972 202 : {
4973 202 : tree _q50 = TREE_OPERAND (_p1, 0);
4974 202 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
4975 : {
4976 0 : {
4977 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
4978 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
4979 0 : if (res) return res;
4980 : }
4981 : }
4982 202 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
4983 : {
4984 0 : {
4985 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q20 };
4986 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
4987 0 : if (res) return res;
4988 : }
4989 : }
4990 : break;
4991 : }
4992 4045 : default:;
4993 : }
4994 4045 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
4995 : {
4996 0 : {
4997 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
4998 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
4999 0 : if (res) return res;
5000 : }
5001 : }
5002 4045 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q20, 0))
5003 : {
5004 11 : {
5005 11 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q20 };
5006 11 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5007 11 : if (res) return res;
5008 : }
5009 : }
5010 : break;
5011 : }
5012 4097 : case BIT_AND_EXPR:
5013 4097 : {
5014 4097 : tree _q20 = TREE_OPERAND (_p0, 0);
5015 4097 : tree _q21 = TREE_OPERAND (_p0, 1);
5016 4097 : switch (TREE_CODE (_p1))
5017 : {
5018 74 : case BIT_IOR_EXPR:
5019 74 : {
5020 74 : tree _q50 = TREE_OPERAND (_p1, 0);
5021 74 : tree _q51 = TREE_OPERAND (_p1, 1);
5022 74 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5023 : {
5024 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5025 : {
5026 0 : {
5027 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5028 0 : tree res = generic_simplify_20 (loc, type, _p0, _p1, captures);
5029 0 : if (res) return res;
5030 : }
5031 : }
5032 : }
5033 : break;
5034 : }
5035 30 : case BIT_XOR_EXPR:
5036 30 : {
5037 30 : tree _q50 = TREE_OPERAND (_p1, 0);
5038 30 : tree _q51 = TREE_OPERAND (_p1, 1);
5039 30 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5040 : {
5041 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5042 : {
5043 0 : {
5044 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5045 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
5046 0 : if (res) return res;
5047 : }
5048 : }
5049 : }
5050 : break;
5051 : }
5052 4097 : default:;
5053 : }
5054 4097 : switch (TREE_CODE (_q21))
5055 : {
5056 2272 : case INTEGER_CST:
5057 2272 : {
5058 2272 : switch (TREE_CODE (_p1))
5059 : {
5060 15 : CASE_CONVERT:
5061 15 : {
5062 15 : tree _q50 = TREE_OPERAND (_p1, 0);
5063 15 : switch (TREE_CODE (_q50))
5064 : {
5065 0 : case BIT_AND_EXPR:
5066 0 : {
5067 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5068 0 : tree _q61 = TREE_OPERAND (_q50, 1);
5069 0 : switch (TREE_CODE (_q61))
5070 : {
5071 0 : case INTEGER_CST:
5072 0 : {
5073 0 : {
5074 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q60, _q61 };
5075 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
5076 0 : if (res) return res;
5077 : }
5078 0 : break;
5079 : }
5080 : default:;
5081 : }
5082 : break;
5083 : }
5084 : default:;
5085 : }
5086 : break;
5087 : }
5088 210 : case BIT_AND_EXPR:
5089 210 : {
5090 210 : tree _q50 = TREE_OPERAND (_p1, 0);
5091 210 : tree _q51 = TREE_OPERAND (_p1, 1);
5092 210 : switch (TREE_CODE (_q51))
5093 : {
5094 210 : case INTEGER_CST:
5095 210 : {
5096 210 : {
5097 210 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
5098 210 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
5099 210 : if (res) return res;
5100 : }
5101 209 : break;
5102 : }
5103 : default:;
5104 : }
5105 : break;
5106 : }
5107 : default:;
5108 : }
5109 : break;
5110 : }
5111 : default:;
5112 : }
5113 : break;
5114 : }
5115 667323 : CASE_CONVERT:
5116 667323 : {
5117 667323 : tree _q20 = TREE_OPERAND (_p0, 0);
5118 667323 : switch (TREE_CODE (_q20))
5119 : {
5120 24 : case BIT_AND_EXPR:
5121 24 : {
5122 24 : tree _q30 = TREE_OPERAND (_q20, 0);
5123 24 : tree _q31 = TREE_OPERAND (_q20, 1);
5124 24 : switch (TREE_CODE (_q31))
5125 : {
5126 0 : case INTEGER_CST:
5127 0 : {
5128 0 : switch (TREE_CODE (_p1))
5129 : {
5130 0 : CASE_CONVERT:
5131 0 : {
5132 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5133 0 : switch (TREE_CODE (_q60))
5134 : {
5135 0 : case BIT_AND_EXPR:
5136 0 : {
5137 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5138 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5139 0 : switch (TREE_CODE (_q71))
5140 : {
5141 0 : case INTEGER_CST:
5142 0 : {
5143 0 : {
5144 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q60, _q70, _q71 };
5145 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
5146 0 : if (res) return res;
5147 : }
5148 0 : break;
5149 : }
5150 : default:;
5151 : }
5152 : break;
5153 : }
5154 : default:;
5155 : }
5156 : break;
5157 : }
5158 0 : case BIT_AND_EXPR:
5159 0 : {
5160 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5161 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5162 0 : switch (TREE_CODE (_q61))
5163 : {
5164 0 : case INTEGER_CST:
5165 0 : {
5166 0 : {
5167 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1, _q60, _q61 };
5168 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
5169 0 : if (res) return res;
5170 : }
5171 0 : break;
5172 : }
5173 : default:;
5174 : }
5175 : break;
5176 : }
5177 : default:;
5178 : }
5179 : break;
5180 : }
5181 : default:;
5182 : }
5183 : break;
5184 : }
5185 24 : case BIT_IOR_EXPR:
5186 24 : {
5187 24 : tree _q30 = TREE_OPERAND (_q20, 0);
5188 24 : tree _q31 = TREE_OPERAND (_q20, 1);
5189 24 : switch (TREE_CODE (_p1))
5190 : {
5191 16 : CASE_CONVERT:
5192 16 : {
5193 16 : tree _q60 = TREE_OPERAND (_p1, 0);
5194 16 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
5195 : {
5196 0 : {
5197 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
5198 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5199 0 : if (res) return res;
5200 : }
5201 : }
5202 16 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
5203 : {
5204 0 : {
5205 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
5206 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5207 0 : if (res) return res;
5208 : }
5209 : }
5210 : break;
5211 : }
5212 24 : default:;
5213 : }
5214 24 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
5215 : {
5216 0 : {
5217 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q30 };
5218 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5219 0 : if (res) return res;
5220 : }
5221 : }
5222 24 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
5223 : {
5224 0 : {
5225 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q31 };
5226 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5227 0 : if (res) return res;
5228 : }
5229 : }
5230 : break;
5231 : }
5232 667323 : default:;
5233 : }
5234 667323 : switch (TREE_CODE (_p1))
5235 : {
5236 663169 : CASE_CONVERT:
5237 663169 : {
5238 663169 : tree _q40 = TREE_OPERAND (_p1, 0);
5239 663169 : switch (TREE_CODE (_q40))
5240 : {
5241 0 : case BIT_IOR_EXPR:
5242 0 : {
5243 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5244 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5245 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
5246 : {
5247 0 : {
5248 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
5249 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5250 0 : if (res) return res;
5251 : }
5252 : }
5253 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
5254 : {
5255 0 : {
5256 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q50, _q20 };
5257 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5258 0 : if (res) return res;
5259 : }
5260 : }
5261 : break;
5262 : }
5263 : default:;
5264 : }
5265 : break;
5266 : }
5267 26 : case BIT_IOR_EXPR:
5268 26 : {
5269 26 : tree _q40 = TREE_OPERAND (_p1, 0);
5270 26 : tree _q41 = TREE_OPERAND (_p1, 1);
5271 26 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
5272 : {
5273 0 : {
5274 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
5275 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5276 0 : if (res) return res;
5277 : }
5278 : }
5279 26 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
5280 : {
5281 0 : {
5282 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
5283 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5284 0 : if (res) return res;
5285 : }
5286 : }
5287 : break;
5288 : }
5289 : default:;
5290 : }
5291 : break;
5292 : }
5293 1043459 : default:;
5294 : }
5295 1043459 : switch (TREE_CODE (_p1))
5296 : {
5297 799923 : CASE_CONVERT:
5298 799923 : {
5299 799923 : tree _q30 = TREE_OPERAND (_p1, 0);
5300 799923 : switch (TREE_CODE (_q30))
5301 : {
5302 6 : case BIT_IOR_EXPR:
5303 6 : {
5304 6 : tree _q40 = TREE_OPERAND (_q30, 0);
5305 6 : tree _q41 = TREE_OPERAND (_q30, 1);
5306 6 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
5307 : {
5308 0 : {
5309 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
5310 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5311 0 : if (res) return res;
5312 : }
5313 : }
5314 6 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
5315 : {
5316 0 : {
5317 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _p0 };
5318 0 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5319 0 : if (res) return res;
5320 : }
5321 : }
5322 : break;
5323 : }
5324 : default:;
5325 : }
5326 : break;
5327 : }
5328 518 : case BIT_IOR_EXPR:
5329 518 : {
5330 518 : tree _q30 = TREE_OPERAND (_p1, 0);
5331 518 : tree _q31 = TREE_OPERAND (_p1, 1);
5332 518 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
5333 : {
5334 1 : {
5335 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5336 1 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5337 1 : if (res) return res;
5338 : }
5339 : }
5340 517 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
5341 : {
5342 1 : {
5343 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
5344 1 : tree res = generic_simplify_22 (loc, type, _p0, _p1, captures);
5345 1 : if (res) return res;
5346 : }
5347 : }
5348 : break;
5349 : }
5350 1043457 : default:;
5351 : }
5352 1043457 : {
5353 1043457 : tree _p0_pops[1];
5354 1043457 : if (tree_nop_convert (_p0, _p0_pops))
5355 : {
5356 529692 : tree _q20 = _p0_pops[0];
5357 529692 : switch (TREE_CODE (_q20))
5358 : {
5359 16 : case BIT_IOR_EXPR:
5360 16 : {
5361 16 : tree _q30 = TREE_OPERAND (_q20, 0);
5362 16 : tree _q31 = TREE_OPERAND (_q20, 1);
5363 16 : {
5364 16 : tree _q30_pops[1];
5365 16 : if (tree_nop_convert (_q30, _q30_pops))
5366 : {
5367 0 : tree _q40 = _q30_pops[0];
5368 0 : switch (TREE_CODE (_q40))
5369 : {
5370 0 : case BIT_NOT_EXPR:
5371 0 : {
5372 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5373 0 : {
5374 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q31, _p1 };
5375 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5376 0 : if (res) return res;
5377 : }
5378 0 : break;
5379 : }
5380 : default:;
5381 : }
5382 : }
5383 : }
5384 16 : {
5385 16 : tree _q31_pops[1];
5386 16 : if (tree_nop_convert (_q31, _q31_pops))
5387 : {
5388 0 : tree _q50 = _q31_pops[0];
5389 0 : switch (TREE_CODE (_q50))
5390 : {
5391 0 : case BIT_NOT_EXPR:
5392 0 : {
5393 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5394 0 : {
5395 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q30, _p1 };
5396 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5397 0 : if (res) return res;
5398 : }
5399 0 : break;
5400 : }
5401 : default:;
5402 : }
5403 : }
5404 : }
5405 16 : switch (TREE_CODE (_q30))
5406 : {
5407 16 : case BIT_NOT_EXPR:
5408 16 : {
5409 16 : tree _q40 = TREE_OPERAND (_q30, 0);
5410 16 : {
5411 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q31, _p1 };
5412 16 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5413 16 : if (res) return res;
5414 : }
5415 0 : break;
5416 : }
5417 0 : default:;
5418 : }
5419 0 : switch (TREE_CODE (_q31))
5420 : {
5421 0 : case BIT_NOT_EXPR:
5422 0 : {
5423 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5424 0 : {
5425 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q30, _p1 };
5426 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5427 0 : if (res) return res;
5428 : }
5429 0 : break;
5430 : }
5431 : default:;
5432 : }
5433 : break;
5434 : }
5435 : default:;
5436 : }
5437 : }
5438 : }
5439 1043441 : switch (TREE_CODE (_p1))
5440 : {
5441 516 : case BIT_IOR_EXPR:
5442 516 : {
5443 516 : tree _q30 = TREE_OPERAND (_p1, 0);
5444 516 : tree _q31 = TREE_OPERAND (_p1, 1);
5445 516 : {
5446 516 : tree _q30_pops[1];
5447 516 : if (tree_nop_convert (_q30, _q30_pops))
5448 : {
5449 2 : tree _q40 = _q30_pops[0];
5450 2 : switch (TREE_CODE (_q40))
5451 : {
5452 0 : case BIT_NOT_EXPR:
5453 0 : {
5454 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5455 0 : {
5456 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q31, _p0 };
5457 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5458 0 : if (res) return res;
5459 : }
5460 0 : break;
5461 : }
5462 : default:;
5463 : }
5464 : }
5465 : }
5466 516 : {
5467 516 : tree _q31_pops[1];
5468 516 : if (tree_nop_convert (_q31, _q31_pops))
5469 : {
5470 2 : tree _q50 = _q31_pops[0];
5471 2 : switch (TREE_CODE (_q50))
5472 : {
5473 0 : case BIT_NOT_EXPR:
5474 0 : {
5475 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5476 0 : {
5477 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q30, _p0 };
5478 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5479 0 : if (res) return res;
5480 : }
5481 0 : break;
5482 : }
5483 : default:;
5484 : }
5485 : }
5486 : }
5487 516 : switch (TREE_CODE (_q30))
5488 : {
5489 18 : case BIT_NOT_EXPR:
5490 18 : {
5491 18 : tree _q40 = TREE_OPERAND (_q30, 0);
5492 18 : {
5493 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q31, _p0 };
5494 18 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5495 18 : if (res) return res;
5496 : }
5497 18 : break;
5498 : }
5499 516 : default:;
5500 : }
5501 516 : switch (TREE_CODE (_q31))
5502 : {
5503 25 : case BIT_NOT_EXPR:
5504 25 : {
5505 25 : tree _q50 = TREE_OPERAND (_q31, 0);
5506 25 : {
5507 25 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q30, _p0 };
5508 25 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5509 25 : if (res) return res;
5510 : }
5511 17 : break;
5512 : }
5513 : default:;
5514 : }
5515 : break;
5516 : }
5517 1043433 : default:;
5518 : }
5519 1043433 : {
5520 1043433 : tree _p1_pops[1];
5521 1043433 : if (tree_nop_convert (_p1, _p1_pops))
5522 : {
5523 664964 : tree _q30 = _p1_pops[0];
5524 664964 : switch (TREE_CODE (_q30))
5525 : {
5526 0 : case BIT_IOR_EXPR:
5527 0 : {
5528 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5529 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5530 0 : {
5531 0 : tree _q40_pops[1];
5532 0 : if (tree_nop_convert (_q40, _q40_pops))
5533 : {
5534 0 : tree _q50 = _q40_pops[0];
5535 0 : switch (TREE_CODE (_q50))
5536 : {
5537 0 : case BIT_NOT_EXPR:
5538 0 : {
5539 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5540 0 : {
5541 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q41, _p0 };
5542 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5543 0 : if (res) return res;
5544 : }
5545 0 : break;
5546 : }
5547 : default:;
5548 : }
5549 : }
5550 : }
5551 0 : {
5552 0 : tree _q41_pops[1];
5553 0 : if (tree_nop_convert (_q41, _q41_pops))
5554 : {
5555 0 : tree _q60 = _q41_pops[0];
5556 0 : switch (TREE_CODE (_q60))
5557 : {
5558 0 : case BIT_NOT_EXPR:
5559 0 : {
5560 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5561 0 : {
5562 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q70, _q40, _p0 };
5563 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5564 0 : if (res) return res;
5565 : }
5566 0 : break;
5567 : }
5568 : default:;
5569 : }
5570 : }
5571 : }
5572 0 : switch (TREE_CODE (_q40))
5573 : {
5574 0 : case BIT_NOT_EXPR:
5575 0 : {
5576 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5577 0 : {
5578 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q41, _p0 };
5579 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5580 0 : if (res) return res;
5581 : }
5582 0 : break;
5583 : }
5584 0 : default:;
5585 : }
5586 0 : switch (TREE_CODE (_q41))
5587 : {
5588 0 : case BIT_NOT_EXPR:
5589 0 : {
5590 0 : tree _q60 = TREE_OPERAND (_q41, 0);
5591 0 : {
5592 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q60, _q40, _p0 };
5593 0 : tree res = generic_simplify_19 (loc, type, _p0, _p1, captures);
5594 0 : if (res) return res;
5595 : }
5596 0 : break;
5597 : }
5598 : default:;
5599 : }
5600 : break;
5601 : }
5602 : default:;
5603 : }
5604 : }
5605 : }
5606 1043433 : switch (TREE_CODE (_p0))
5607 : {
5608 667299 : CASE_CONVERT:
5609 667299 : {
5610 667299 : tree _q20 = TREE_OPERAND (_p0, 0);
5611 667299 : switch (TREE_CODE (_q20))
5612 : {
5613 50 : case BIT_NOT_EXPR:
5614 50 : {
5615 50 : tree _q30 = TREE_OPERAND (_q20, 0);
5616 50 : switch (TREE_CODE (_p1))
5617 : {
5618 0 : CASE_CONVERT:
5619 0 : {
5620 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5621 0 : switch (TREE_CODE (_q50))
5622 : {
5623 0 : case BIT_NOT_EXPR:
5624 0 : {
5625 0 : tree _q60 = TREE_OPERAND (_q50, 0);
5626 0 : {
5627 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q60 };
5628 0 : tree res = generic_simplify_26 (loc, type, _p0, _p1, captures);
5629 0 : if (res) return res;
5630 : }
5631 0 : break;
5632 : }
5633 : default:;
5634 : }
5635 : break;
5636 : }
5637 0 : case BIT_NOT_EXPR:
5638 0 : {
5639 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5640 0 : {
5641 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
5642 0 : tree res = generic_simplify_26 (loc, type, _p0, _p1, captures);
5643 0 : if (res) return res;
5644 : }
5645 0 : break;
5646 : }
5647 26 : case INTEGER_CST:
5648 26 : {
5649 26 : {
5650 26 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
5651 26 : tree res = generic_simplify_27 (loc, type, _p0, _p1, captures);
5652 26 : if (res) return res;
5653 : }
5654 24 : break;
5655 : }
5656 : default:;
5657 : }
5658 : break;
5659 : }
5660 : default:;
5661 : }
5662 : break;
5663 : }
5664 484 : case BIT_NOT_EXPR:
5665 484 : {
5666 484 : tree _q20 = TREE_OPERAND (_p0, 0);
5667 484 : switch (TREE_CODE (_p1))
5668 : {
5669 18 : CASE_CONVERT:
5670 18 : {
5671 18 : tree _q40 = TREE_OPERAND (_p1, 0);
5672 18 : switch (TREE_CODE (_q40))
5673 : {
5674 0 : case BIT_NOT_EXPR:
5675 0 : {
5676 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5677 0 : {
5678 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5679 0 : tree res = generic_simplify_26 (loc, type, _p0, _p1, captures);
5680 0 : if (res) return res;
5681 : }
5682 0 : break;
5683 : }
5684 : default:;
5685 : }
5686 : break;
5687 : }
5688 10 : case BIT_NOT_EXPR:
5689 10 : {
5690 10 : tree _q40 = TREE_OPERAND (_p1, 0);
5691 10 : {
5692 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
5693 10 : tree res = generic_simplify_26 (loc, type, _p0, _p1, captures);
5694 10 : if (res) return res;
5695 : }
5696 0 : break;
5697 : }
5698 31 : case INTEGER_CST:
5699 31 : {
5700 31 : {
5701 31 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
5702 31 : tree res = generic_simplify_27 (loc, type, _p0, _p1, captures);
5703 31 : if (res) return res;
5704 : }
5705 0 : break;
5706 : }
5707 443 : default:;
5708 : }
5709 443 : {
5710 443 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1 };
5711 443 : tree res = generic_simplify_28 (loc, type, _p0, _p1, captures);
5712 443 : if (res) return res;
5713 : }
5714 0 : break;
5715 : }
5716 4094 : case BIT_AND_EXPR:
5717 4094 : {
5718 4094 : tree _q20 = TREE_OPERAND (_p0, 0);
5719 4094 : tree _q21 = TREE_OPERAND (_p0, 1);
5720 4094 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5721 : {
5722 75 : {
5723 75 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5724 75 : tree res = generic_simplify_29 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5725 75 : if (res) return res;
5726 : }
5727 : }
5728 4019 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5729 : {
5730 3 : {
5731 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5732 3 : tree res = generic_simplify_29 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5733 3 : if (res) return res;
5734 : }
5735 : }
5736 4016 : switch (TREE_CODE (_p1))
5737 : {
5738 353 : case BIT_AND_EXPR:
5739 353 : {
5740 353 : tree _q50 = TREE_OPERAND (_p1, 0);
5741 353 : tree _q51 = TREE_OPERAND (_p1, 1);
5742 353 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
5743 : {
5744 21 : {
5745 21 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q20 };
5746 21 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5747 21 : if (res) return res;
5748 : }
5749 : }
5750 332 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
5751 : {
5752 0 : {
5753 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q20 };
5754 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5755 0 : if (res) return res;
5756 : }
5757 : }
5758 332 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
5759 : {
5760 0 : {
5761 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q21 };
5762 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5763 0 : if (res) return res;
5764 : }
5765 : }
5766 332 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q21, 0))
5767 : {
5768 201 : {
5769 201 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q21 };
5770 201 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5771 201 : if (res) return res;
5772 : }
5773 : }
5774 : break;
5775 : }
5776 : default:;
5777 : }
5778 : break;
5779 : }
5780 1042647 : default:;
5781 : }
5782 1042647 : switch (TREE_CODE (_p1))
5783 : {
5784 608 : case BIT_AND_EXPR:
5785 608 : {
5786 608 : tree _q30 = TREE_OPERAND (_p1, 0);
5787 608 : tree _q31 = TREE_OPERAND (_p1, 1);
5788 608 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5789 : {
5790 0 : {
5791 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5792 0 : tree res = generic_simplify_29 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5793 0 : if (res) return res;
5794 : }
5795 : }
5796 608 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5797 : {
5798 1 : {
5799 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
5800 1 : tree res = generic_simplify_29 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5801 1 : if (res) return res;
5802 : }
5803 : }
5804 : break;
5805 : }
5806 1042646 : default:;
5807 : }
5808 1042646 : switch (TREE_CODE (_p0))
5809 : {
5810 667296 : CASE_CONVERT:
5811 667296 : {
5812 667296 : tree _q20 = TREE_OPERAND (_p0, 0);
5813 667296 : switch (TREE_CODE (_q20))
5814 : {
5815 24 : case BIT_AND_EXPR:
5816 24 : {
5817 24 : tree _q30 = TREE_OPERAND (_q20, 0);
5818 24 : tree _q31 = TREE_OPERAND (_q20, 1);
5819 24 : switch (TREE_CODE (_p1))
5820 : {
5821 8 : CASE_CONVERT:
5822 8 : {
5823 8 : tree _q60 = TREE_OPERAND (_p1, 0);
5824 8 : switch (TREE_CODE (_q60))
5825 : {
5826 0 : case BIT_AND_EXPR:
5827 0 : {
5828 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5829 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5830 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q30, 0))
5831 : {
5832 0 : {
5833 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q71, _q30 };
5834 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5835 0 : if (res) return res;
5836 : }
5837 : }
5838 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q30, 0))
5839 : {
5840 0 : {
5841 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q70, _q30 };
5842 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5843 0 : if (res) return res;
5844 : }
5845 : }
5846 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || operand_equal_p (_q70, _q31, 0))
5847 : {
5848 0 : {
5849 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q71, _q31 };
5850 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5851 0 : if (res) return res;
5852 : }
5853 : }
5854 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || operand_equal_p (_q71, _q31, 0))
5855 : {
5856 0 : {
5857 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q31, _q30, _q70, _q31 };
5858 0 : tree res = generic_simplify_30 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR);
5859 0 : if (res) return res;
5860 : }
5861 : }
5862 : break;
5863 : }
5864 : default:;
5865 : }
5866 : break;
5867 : }
5868 : default:;
5869 : }
5870 : break;
5871 : }
5872 64709 : case BIT_XOR_EXPR:
5873 64709 : {
5874 64709 : tree _q30 = TREE_OPERAND (_q20, 0);
5875 64709 : tree _q31 = TREE_OPERAND (_q20, 1);
5876 64709 : switch (TREE_CODE (_p1))
5877 : {
5878 64637 : CASE_CONVERT:
5879 64637 : {
5880 64637 : tree _q60 = TREE_OPERAND (_p1, 0);
5881 64637 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
5882 : {
5883 0 : {
5884 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
5885 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5886 0 : if (res) return res;
5887 : }
5888 : }
5889 64637 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q30, 0))
5890 : {
5891 0 : {
5892 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q30 };
5893 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5894 0 : if (res) return res;
5895 : }
5896 : }
5897 : break;
5898 : }
5899 64709 : default:;
5900 : }
5901 64709 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
5902 : {
5903 0 : {
5904 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
5905 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5906 0 : if (res) return res;
5907 : }
5908 : }
5909 64709 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q30, 0))
5910 : {
5911 0 : {
5912 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q30 };
5913 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5914 0 : if (res) return res;
5915 : }
5916 : }
5917 : break;
5918 : }
5919 667296 : default:;
5920 : }
5921 667296 : switch (TREE_CODE (_p1))
5922 : {
5923 663153 : CASE_CONVERT:
5924 663153 : {
5925 663153 : tree _q40 = TREE_OPERAND (_p1, 0);
5926 663153 : switch (TREE_CODE (_q40))
5927 : {
5928 0 : case BIT_XOR_EXPR:
5929 0 : {
5930 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5931 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5932 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || operand_equal_p (_q51, _q20, 0))
5933 : {
5934 0 : {
5935 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
5936 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5937 0 : if (res) return res;
5938 : }
5939 : }
5940 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q20, 0))
5941 : {
5942 0 : {
5943 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q51, _q50, _q20 };
5944 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5945 0 : if (res) return res;
5946 : }
5947 : }
5948 : break;
5949 : }
5950 : default:;
5951 : }
5952 : break;
5953 : }
5954 2 : case BIT_XOR_EXPR:
5955 2 : {
5956 2 : tree _q40 = TREE_OPERAND (_p1, 0);
5957 2 : tree _q41 = TREE_OPERAND (_p1, 1);
5958 2 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _q20, 0))
5959 : {
5960 0 : {
5961 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
5962 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5963 0 : if (res) return res;
5964 : }
5965 : }
5966 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _q20, 0))
5967 : {
5968 0 : {
5969 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
5970 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5971 0 : if (res) return res;
5972 : }
5973 : }
5974 : break;
5975 : }
5976 : default:;
5977 : }
5978 : break;
5979 : }
5980 1042646 : default:;
5981 : }
5982 1042646 : switch (TREE_CODE (_p1))
5983 : {
5984 799889 : CASE_CONVERT:
5985 799889 : {
5986 799889 : tree _q30 = TREE_OPERAND (_p1, 0);
5987 799889 : switch (TREE_CODE (_q30))
5988 : {
5989 8 : case BIT_XOR_EXPR:
5990 8 : {
5991 8 : tree _q40 = TREE_OPERAND (_q30, 0);
5992 8 : tree _q41 = TREE_OPERAND (_q30, 1);
5993 8 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
5994 : {
5995 0 : {
5996 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _p0 };
5997 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
5998 0 : if (res) return res;
5999 : }
6000 : }
6001 8 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || operand_equal_p (_q40, _p0, 0))
6002 : {
6003 0 : {
6004 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _p0 };
6005 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
6006 0 : if (res) return res;
6007 : }
6008 : }
6009 : break;
6010 : }
6011 : default:;
6012 : }
6013 : break;
6014 : }
6015 86 : case BIT_XOR_EXPR:
6016 86 : {
6017 86 : tree _q30 = TREE_OPERAND (_p1, 0);
6018 86 : tree _q31 = TREE_OPERAND (_p1, 1);
6019 86 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
6020 : {
6021 0 : {
6022 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6023 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
6024 0 : if (res) return res;
6025 : }
6026 : }
6027 86 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || operand_equal_p (_q30, _p0, 0))
6028 : {
6029 0 : {
6030 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
6031 0 : tree res = generic_simplify_24 (loc, type, _p0, _p1, captures);
6032 0 : if (res) return res;
6033 : }
6034 : }
6035 : break;
6036 : }
6037 1042646 : default:;
6038 : }
6039 1042646 : switch (TREE_CODE (_p0))
6040 : {
6041 667296 : CASE_CONVERT:
6042 667296 : {
6043 667296 : tree _q20 = TREE_OPERAND (_p0, 0);
6044 667296 : switch (TREE_CODE (_q20))
6045 : {
6046 64709 : case BIT_XOR_EXPR:
6047 64709 : {
6048 64709 : tree _q30 = TREE_OPERAND (_q20, 0);
6049 64709 : tree _q31 = TREE_OPERAND (_q20, 1);
6050 64709 : switch (TREE_CODE (_p1))
6051 : {
6052 64637 : CASE_CONVERT:
6053 64637 : {
6054 64637 : tree _q60 = TREE_OPERAND (_p1, 0);
6055 64637 : switch (TREE_CODE (_q60))
6056 : {
6057 0 : case BIT_XOR_EXPR:
6058 0 : {
6059 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6060 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6061 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6062 : {
6063 0 : {
6064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
6065 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6066 0 : if (res) return res;
6067 : }
6068 : }
6069 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
6070 : {
6071 0 : {
6072 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q70 };
6073 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6074 0 : if (res) return res;
6075 : }
6076 : }
6077 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
6078 : {
6079 0 : {
6080 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q71 };
6081 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6082 0 : if (res) return res;
6083 : }
6084 : }
6085 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6086 : {
6087 0 : {
6088 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q70 };
6089 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6090 0 : if (res) return res;
6091 : }
6092 : }
6093 : break;
6094 : }
6095 : default:;
6096 : }
6097 : break;
6098 : }
6099 0 : case BIT_XOR_EXPR:
6100 0 : {
6101 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6102 0 : tree _q61 = TREE_OPERAND (_p1, 1);
6103 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6104 : {
6105 0 : {
6106 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q61 };
6107 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6108 0 : if (res) return res;
6109 : }
6110 : }
6111 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
6112 : {
6113 0 : {
6114 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q60 };
6115 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6116 0 : if (res) return res;
6117 : }
6118 : }
6119 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6120 : {
6121 0 : {
6122 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q61 };
6123 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6124 0 : if (res) return res;
6125 : }
6126 : }
6127 0 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
6128 : {
6129 0 : {
6130 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q60 };
6131 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6132 0 : if (res) return res;
6133 : }
6134 : }
6135 : break;
6136 : }
6137 : default:;
6138 : }
6139 : break;
6140 : }
6141 667296 : default:;
6142 : }
6143 667296 : switch (TREE_CODE (_p1))
6144 : {
6145 663153 : CASE_CONVERT:
6146 663153 : {
6147 663153 : tree _q40 = TREE_OPERAND (_p1, 0);
6148 663153 : {
6149 663153 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6150 663153 : tree res = generic_simplify_32 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
6151 663153 : if (res) return res;
6152 : }
6153 569751 : break;
6154 : }
6155 573894 : default:;
6156 : }
6157 573894 : {
6158 573894 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
6159 573894 : tree res = generic_simplify_33 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
6160 573894 : if (res) return res;
6161 : }
6162 573786 : break;
6163 : }
6164 4034 : case BIT_XOR_EXPR:
6165 4034 : {
6166 4034 : tree _q20 = TREE_OPERAND (_p0, 0);
6167 4034 : tree _q21 = TREE_OPERAND (_p0, 1);
6168 4034 : switch (TREE_CODE (_p1))
6169 : {
6170 202 : CASE_CONVERT:
6171 202 : {
6172 202 : tree _q50 = TREE_OPERAND (_p1, 0);
6173 202 : switch (TREE_CODE (_q50))
6174 : {
6175 0 : case BIT_XOR_EXPR:
6176 0 : {
6177 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6178 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6179 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6180 : {
6181 0 : {
6182 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q61 };
6183 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6184 0 : if (res) return res;
6185 : }
6186 : }
6187 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
6188 : {
6189 0 : {
6190 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q60 };
6191 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6192 0 : if (res) return res;
6193 : }
6194 : }
6195 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
6196 : {
6197 0 : {
6198 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q61 };
6199 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6200 0 : if (res) return res;
6201 : }
6202 : }
6203 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
6204 : {
6205 0 : {
6206 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q60 };
6207 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6208 0 : if (res) return res;
6209 : }
6210 : }
6211 : break;
6212 : }
6213 : default:;
6214 : }
6215 : break;
6216 : }
6217 18 : case BIT_XOR_EXPR:
6218 18 : {
6219 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6220 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6221 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6222 : {
6223 0 : {
6224 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
6225 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6226 0 : if (res) return res;
6227 : }
6228 : }
6229 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6230 : {
6231 0 : {
6232 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6233 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6234 0 : if (res) return res;
6235 : }
6236 : }
6237 18 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6238 : {
6239 0 : {
6240 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
6241 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6242 0 : if (res) return res;
6243 : }
6244 : }
6245 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6246 : {
6247 0 : {
6248 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
6249 0 : tree res = generic_simplify_31 (loc, type, _p0, _p1, captures);
6250 0 : if (res) return res;
6251 : }
6252 : }
6253 : break;
6254 : }
6255 : default:;
6256 : }
6257 : break;
6258 : }
6259 3794 : case BIT_AND_EXPR:
6260 3794 : {
6261 3794 : tree _q20 = TREE_OPERAND (_p0, 0);
6262 3794 : tree _q21 = TREE_OPERAND (_p0, 1);
6263 3794 : {
6264 3794 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6265 3794 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR);
6266 3794 : if (res) return res;
6267 : }
6268 3794 : {
6269 3794 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
6270 3794 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR);
6271 3794 : if (res) return res;
6272 : }
6273 3794 : if (tree_truth_valued_p (_q20))
6274 : {
6275 0 : if (tree_truth_valued_p (_q21))
6276 : {
6277 0 : switch (TREE_CODE (_p1))
6278 : {
6279 0 : case EQ_EXPR:
6280 0 : {
6281 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6282 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6283 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6284 : {
6285 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6286 : {
6287 0 : {
6288 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6289 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1172;
6290 0 : {
6291 0 : tree res_op0;
6292 0 : {
6293 0 : tree _o1[2], _r1;
6294 0 : _o1[0] = captures[0];
6295 0 : _o1[1] = captures[1];
6296 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6297 0 : res_op0 = _r1;
6298 : }
6299 0 : tree _r;
6300 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
6301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6302 0 : return _r;
6303 : }
6304 0 : next_after_fail1172:;
6305 : }
6306 : }
6307 : }
6308 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6309 : {
6310 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6311 : {
6312 0 : {
6313 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6314 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1173;
6315 0 : {
6316 0 : tree res_op0;
6317 0 : {
6318 0 : tree _o1[2], _r1;
6319 0 : _o1[0] = captures[0];
6320 0 : _o1[1] = captures[1];
6321 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
6322 0 : res_op0 = _r1;
6323 : }
6324 0 : tree _r;
6325 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
6326 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
6327 0 : return _r;
6328 : }
6329 0 : next_after_fail1173:;
6330 : }
6331 : }
6332 : }
6333 : break;
6334 : }
6335 : default:;
6336 : }
6337 : }
6338 : }
6339 : break;
6340 : }
6341 949136 : default:;
6342 : }
6343 949136 : switch (TREE_CODE (_p1))
6344 : {
6345 607 : case BIT_AND_EXPR:
6346 607 : {
6347 607 : tree _q30 = TREE_OPERAND (_p1, 0);
6348 607 : tree _q31 = TREE_OPERAND (_p1, 1);
6349 607 : {
6350 607 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6351 607 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR);
6352 607 : if (res) return res;
6353 : }
6354 607 : {
6355 607 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _p0 };
6356 607 : tree res = generic_simplify_34 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR);
6357 607 : if (res) return res;
6358 : }
6359 607 : break;
6360 : }
6361 949136 : default:;
6362 : }
6363 949136 : switch (TREE_CODE (_p0))
6364 : {
6365 4034 : case BIT_XOR_EXPR:
6366 4034 : {
6367 4034 : tree _q20 = TREE_OPERAND (_p0, 0);
6368 4034 : tree _q21 = TREE_OPERAND (_p0, 1);
6369 4034 : if (CONSTANT_CLASS_P (_q21))
6370 : {
6371 49 : if (CONSTANT_CLASS_P (_p1))
6372 : {
6373 30 : {
6374 30 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6375 30 : tree res = generic_simplify_35 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
6376 30 : if (res) return res;
6377 : }
6378 : }
6379 : }
6380 : break;
6381 : }
6382 70 : case COND_EXPR:
6383 70 : {
6384 70 : tree _q20 = TREE_OPERAND (_p0, 0);
6385 70 : tree _q21 = TREE_OPERAND (_p0, 1);
6386 70 : tree _q22 = TREE_OPERAND (_p0, 2);
6387 70 : if (integer_zerop (_q22))
6388 : {
6389 70 : switch (TREE_CODE (_p1))
6390 : {
6391 4 : case COND_EXPR:
6392 4 : {
6393 4 : tree _q60 = TREE_OPERAND (_p1, 0);
6394 4 : tree _q61 = TREE_OPERAND (_p1, 1);
6395 4 : tree _q62 = TREE_OPERAND (_p1, 2);
6396 4 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6397 : {
6398 0 : if (integer_zerop (_q61))
6399 : {
6400 0 : {
6401 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
6402 0 : const enum tree_code op = BIT_XOR_EXPR;
6403 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1174;
6404 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1174;
6405 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1174;
6406 0 : {
6407 0 : tree res_op0;
6408 0 : res_op0 = captures[1];
6409 0 : tree res_op1;
6410 0 : res_op1 = captures[2];
6411 0 : tree res_op2;
6412 0 : res_op2 = captures[4];
6413 0 : tree _r;
6414 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
6415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6416 0 : return _r;
6417 : }
6418 0 : next_after_fail1174:;
6419 : }
6420 : }
6421 : }
6422 : break;
6423 : }
6424 : default:;
6425 : }
6426 : }
6427 70 : if (integer_zerop (_q21))
6428 : {
6429 0 : switch (TREE_CODE (_p1))
6430 : {
6431 0 : case COND_EXPR:
6432 0 : {
6433 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6434 0 : tree _q61 = TREE_OPERAND (_p1, 1);
6435 0 : tree _q62 = TREE_OPERAND (_p1, 2);
6436 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6437 : {
6438 0 : if (integer_zerop (_q62))
6439 : {
6440 0 : {
6441 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
6442 0 : const enum tree_code op = BIT_XOR_EXPR;
6443 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1175;
6444 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1175;
6445 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1175;
6446 0 : {
6447 0 : tree res_op0;
6448 0 : res_op0 = captures[1];
6449 0 : tree res_op1;
6450 0 : res_op1 = captures[2];
6451 0 : tree res_op2;
6452 0 : res_op2 = captures[4];
6453 0 : tree _r;
6454 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
6455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6456 0 : return _r;
6457 : }
6458 0 : next_after_fail1175:;
6459 : }
6460 : }
6461 : }
6462 : break;
6463 : }
6464 : default:;
6465 : }
6466 : }
6467 70 : switch (TREE_CODE (_q20))
6468 : {
6469 0 : case LT_EXPR:
6470 0 : {
6471 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6472 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6473 0 : if (zerop (_q22))
6474 : {
6475 0 : switch (TREE_CODE (_p1))
6476 : {
6477 0 : case COND_EXPR:
6478 0 : {
6479 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6480 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6481 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6482 0 : switch (TREE_CODE (_q80))
6483 : {
6484 0 : case GE_EXPR:
6485 0 : {
6486 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6487 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6488 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6489 : {
6490 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6491 : {
6492 0 : if (zerop (_q82))
6493 : {
6494 0 : {
6495 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6496 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR);
6497 0 : if (res) return res;
6498 : }
6499 : }
6500 : }
6501 : }
6502 : break;
6503 : }
6504 : default:;
6505 : }
6506 : break;
6507 : }
6508 : default:;
6509 : }
6510 : }
6511 : break;
6512 : }
6513 38 : case LE_EXPR:
6514 38 : {
6515 38 : tree _q30 = TREE_OPERAND (_q20, 0);
6516 38 : tree _q31 = TREE_OPERAND (_q20, 1);
6517 38 : if (zerop (_q22))
6518 : {
6519 38 : switch (TREE_CODE (_p1))
6520 : {
6521 0 : case COND_EXPR:
6522 0 : {
6523 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6524 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6525 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6526 0 : switch (TREE_CODE (_q80))
6527 : {
6528 0 : case GT_EXPR:
6529 0 : {
6530 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6531 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6532 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6533 : {
6534 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6535 : {
6536 0 : if (zerop (_q82))
6537 : {
6538 0 : {
6539 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6540 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR);
6541 0 : if (res) return res;
6542 : }
6543 : }
6544 : }
6545 : }
6546 : break;
6547 : }
6548 : default:;
6549 : }
6550 : break;
6551 : }
6552 : default:;
6553 : }
6554 : }
6555 : break;
6556 : }
6557 0 : case EQ_EXPR:
6558 0 : {
6559 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6560 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6561 0 : if (zerop (_q22))
6562 : {
6563 0 : switch (TREE_CODE (_p1))
6564 : {
6565 0 : case COND_EXPR:
6566 0 : {
6567 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6568 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6569 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6570 0 : switch (TREE_CODE (_q80))
6571 : {
6572 0 : case NE_EXPR:
6573 0 : {
6574 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6575 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6576 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6577 : {
6578 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6579 : {
6580 0 : if (zerop (_q82))
6581 : {
6582 0 : {
6583 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6584 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR);
6585 0 : if (res) return res;
6586 : }
6587 : }
6588 : }
6589 : }
6590 : break;
6591 : }
6592 : default:;
6593 : }
6594 : break;
6595 : }
6596 : default:;
6597 : }
6598 : }
6599 : break;
6600 : }
6601 32 : case NE_EXPR:
6602 32 : {
6603 32 : tree _q30 = TREE_OPERAND (_q20, 0);
6604 32 : tree _q31 = TREE_OPERAND (_q20, 1);
6605 32 : if (zerop (_q22))
6606 : {
6607 32 : switch (TREE_CODE (_p1))
6608 : {
6609 4 : case COND_EXPR:
6610 4 : {
6611 4 : tree _q80 = TREE_OPERAND (_p1, 0);
6612 4 : tree _q81 = TREE_OPERAND (_p1, 1);
6613 4 : tree _q82 = TREE_OPERAND (_p1, 2);
6614 4 : switch (TREE_CODE (_q80))
6615 : {
6616 0 : case EQ_EXPR:
6617 0 : {
6618 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6619 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6620 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6621 : {
6622 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6623 : {
6624 0 : if (zerop (_q82))
6625 : {
6626 0 : {
6627 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6628 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR);
6629 0 : if (res) return res;
6630 : }
6631 : }
6632 : }
6633 : }
6634 : break;
6635 : }
6636 : default:;
6637 : }
6638 : break;
6639 : }
6640 : default:;
6641 : }
6642 : }
6643 : break;
6644 : }
6645 0 : case GE_EXPR:
6646 0 : {
6647 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6648 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6649 0 : if (zerop (_q22))
6650 : {
6651 0 : switch (TREE_CODE (_p1))
6652 : {
6653 0 : case COND_EXPR:
6654 0 : {
6655 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6656 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6657 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6658 0 : switch (TREE_CODE (_q80))
6659 : {
6660 0 : case LT_EXPR:
6661 0 : {
6662 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6663 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6664 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6665 : {
6666 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6667 : {
6668 0 : if (zerop (_q82))
6669 : {
6670 0 : {
6671 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6672 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR);
6673 0 : if (res) return res;
6674 : }
6675 : }
6676 : }
6677 : }
6678 : break;
6679 : }
6680 : default:;
6681 : }
6682 : break;
6683 : }
6684 : default:;
6685 : }
6686 : }
6687 : break;
6688 : }
6689 0 : case GT_EXPR:
6690 0 : {
6691 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6692 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6693 0 : if (zerop (_q22))
6694 : {
6695 0 : switch (TREE_CODE (_p1))
6696 : {
6697 0 : case COND_EXPR:
6698 0 : {
6699 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6700 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6701 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6702 0 : switch (TREE_CODE (_q80))
6703 : {
6704 0 : case LE_EXPR:
6705 0 : {
6706 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6707 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6708 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6709 : {
6710 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6711 : {
6712 0 : if (zerop (_q82))
6713 : {
6714 0 : {
6715 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6716 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR);
6717 0 : if (res) return res;
6718 : }
6719 : }
6720 : }
6721 : }
6722 : break;
6723 : }
6724 : default:;
6725 : }
6726 : break;
6727 : }
6728 : default:;
6729 : }
6730 : }
6731 : break;
6732 : }
6733 0 : case UNORDERED_EXPR:
6734 0 : {
6735 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6736 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6737 0 : if (zerop (_q22))
6738 : {
6739 0 : switch (TREE_CODE (_p1))
6740 : {
6741 0 : case COND_EXPR:
6742 0 : {
6743 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6744 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6745 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6746 0 : switch (TREE_CODE (_q80))
6747 : {
6748 0 : case ORDERED_EXPR:
6749 0 : {
6750 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6751 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6752 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6753 : {
6754 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6755 : {
6756 0 : if (zerop (_q82))
6757 : {
6758 0 : {
6759 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6760 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
6761 0 : if (res) return res;
6762 : }
6763 : }
6764 : }
6765 : }
6766 : break;
6767 : }
6768 : default:;
6769 : }
6770 : break;
6771 : }
6772 : default:;
6773 : }
6774 : }
6775 : break;
6776 : }
6777 0 : case ORDERED_EXPR:
6778 0 : {
6779 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6780 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6781 0 : if (zerop (_q22))
6782 : {
6783 0 : switch (TREE_CODE (_p1))
6784 : {
6785 0 : case COND_EXPR:
6786 0 : {
6787 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6788 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6789 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6790 0 : switch (TREE_CODE (_q80))
6791 : {
6792 0 : case UNORDERED_EXPR:
6793 0 : {
6794 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6795 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6796 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6797 : {
6798 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6799 : {
6800 0 : if (zerop (_q82))
6801 : {
6802 0 : {
6803 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6804 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
6805 0 : if (res) return res;
6806 : }
6807 : }
6808 : }
6809 : }
6810 : break;
6811 : }
6812 : default:;
6813 : }
6814 : break;
6815 : }
6816 : default:;
6817 : }
6818 : }
6819 : break;
6820 : }
6821 0 : case UNLT_EXPR:
6822 0 : {
6823 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6824 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6825 0 : if (zerop (_q22))
6826 : {
6827 0 : switch (TREE_CODE (_p1))
6828 : {
6829 0 : case COND_EXPR:
6830 0 : {
6831 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6832 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6833 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6834 0 : switch (TREE_CODE (_q80))
6835 : {
6836 0 : case GE_EXPR:
6837 0 : {
6838 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6839 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6840 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6841 : {
6842 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6843 : {
6844 0 : if (zerop (_q82))
6845 : {
6846 0 : {
6847 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6848 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR);
6849 0 : if (res) return res;
6850 : }
6851 : }
6852 : }
6853 : }
6854 : break;
6855 : }
6856 : default:;
6857 : }
6858 : break;
6859 : }
6860 : default:;
6861 : }
6862 : }
6863 : break;
6864 : }
6865 0 : case UNLE_EXPR:
6866 0 : {
6867 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6868 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6869 0 : if (zerop (_q22))
6870 : {
6871 0 : switch (TREE_CODE (_p1))
6872 : {
6873 0 : case COND_EXPR:
6874 0 : {
6875 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6876 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6877 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6878 0 : switch (TREE_CODE (_q80))
6879 : {
6880 0 : case GT_EXPR:
6881 0 : {
6882 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6883 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6884 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6885 : {
6886 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6887 : {
6888 0 : if (zerop (_q82))
6889 : {
6890 0 : {
6891 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6892 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR);
6893 0 : if (res) return res;
6894 : }
6895 : }
6896 : }
6897 : }
6898 : break;
6899 : }
6900 : default:;
6901 : }
6902 : break;
6903 : }
6904 : default:;
6905 : }
6906 : }
6907 : break;
6908 : }
6909 0 : case UNGT_EXPR:
6910 0 : {
6911 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6912 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6913 0 : if (zerop (_q22))
6914 : {
6915 0 : switch (TREE_CODE (_p1))
6916 : {
6917 0 : case COND_EXPR:
6918 0 : {
6919 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6920 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6921 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6922 0 : switch (TREE_CODE (_q80))
6923 : {
6924 0 : case LE_EXPR:
6925 0 : {
6926 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6927 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6928 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6929 : {
6930 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6931 : {
6932 0 : if (zerop (_q82))
6933 : {
6934 0 : {
6935 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6936 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR);
6937 0 : if (res) return res;
6938 : }
6939 : }
6940 : }
6941 : }
6942 : break;
6943 : }
6944 : default:;
6945 : }
6946 : break;
6947 : }
6948 : default:;
6949 : }
6950 : }
6951 : break;
6952 : }
6953 0 : case UNGE_EXPR:
6954 0 : {
6955 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6956 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6957 0 : if (zerop (_q22))
6958 : {
6959 0 : switch (TREE_CODE (_p1))
6960 : {
6961 0 : case COND_EXPR:
6962 0 : {
6963 0 : tree _q80 = TREE_OPERAND (_p1, 0);
6964 0 : tree _q81 = TREE_OPERAND (_p1, 1);
6965 0 : tree _q82 = TREE_OPERAND (_p1, 2);
6966 0 : switch (TREE_CODE (_q80))
6967 : {
6968 0 : case LT_EXPR:
6969 0 : {
6970 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6971 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6972 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
6973 : {
6974 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
6975 : {
6976 0 : if (zerop (_q82))
6977 : {
6978 0 : {
6979 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
6980 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR);
6981 0 : if (res) return res;
6982 : }
6983 : }
6984 : }
6985 : }
6986 : break;
6987 : }
6988 : default:;
6989 : }
6990 : break;
6991 : }
6992 : default:;
6993 : }
6994 : }
6995 : break;
6996 : }
6997 0 : case UNEQ_EXPR:
6998 0 : {
6999 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7000 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7001 0 : if (zerop (_q22))
7002 : {
7003 0 : switch (TREE_CODE (_p1))
7004 : {
7005 0 : case COND_EXPR:
7006 0 : {
7007 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7008 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7009 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7010 0 : switch (TREE_CODE (_q80))
7011 : {
7012 0 : case LTGT_EXPR:
7013 0 : {
7014 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7015 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7016 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7017 : {
7018 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7019 : {
7020 0 : if (zerop (_q82))
7021 : {
7022 0 : {
7023 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
7024 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR);
7025 0 : if (res) return res;
7026 : }
7027 : }
7028 : }
7029 : }
7030 : break;
7031 : }
7032 : default:;
7033 : }
7034 : break;
7035 : }
7036 : default:;
7037 : }
7038 : }
7039 : break;
7040 : }
7041 0 : case LTGT_EXPR:
7042 0 : {
7043 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7044 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7045 0 : if (zerop (_q22))
7046 : {
7047 0 : switch (TREE_CODE (_p1))
7048 : {
7049 0 : case COND_EXPR:
7050 0 : {
7051 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7052 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7053 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7054 0 : switch (TREE_CODE (_q80))
7055 : {
7056 0 : case UNEQ_EXPR:
7057 0 : {
7058 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7059 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7060 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7061 : {
7062 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7063 : {
7064 0 : if (zerop (_q82))
7065 : {
7066 0 : {
7067 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
7068 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR);
7069 0 : if (res) return res;
7070 : }
7071 : }
7072 : }
7073 : }
7074 : break;
7075 : }
7076 : default:;
7077 : }
7078 : break;
7079 : }
7080 : default:;
7081 : }
7082 : }
7083 : break;
7084 : }
7085 : default:;
7086 : }
7087 : break;
7088 : }
7089 1 : case VEC_COND_EXPR:
7090 1 : {
7091 1 : tree _q20 = TREE_OPERAND (_p0, 0);
7092 1 : tree _q21 = TREE_OPERAND (_p0, 1);
7093 1 : tree _q22 = TREE_OPERAND (_p0, 2);
7094 1 : if (integer_zerop (_q22))
7095 : {
7096 1 : switch (TREE_CODE (_p1))
7097 : {
7098 0 : case VEC_COND_EXPR:
7099 0 : {
7100 0 : tree _q60 = TREE_OPERAND (_p1, 0);
7101 0 : tree _q61 = TREE_OPERAND (_p1, 1);
7102 0 : tree _q62 = TREE_OPERAND (_p1, 2);
7103 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7104 : {
7105 0 : if (integer_zerop (_q61))
7106 : {
7107 0 : {
7108 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
7109 0 : const enum tree_code op = BIT_XOR_EXPR;
7110 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1176;
7111 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1176;
7112 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1176;
7113 0 : {
7114 0 : tree res_op0;
7115 0 : res_op0 = captures[1];
7116 0 : tree res_op1;
7117 0 : res_op1 = captures[2];
7118 0 : tree res_op2;
7119 0 : res_op2 = captures[4];
7120 0 : tree _r;
7121 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7122 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7123 0 : return _r;
7124 : }
7125 0 : next_after_fail1176:;
7126 : }
7127 : }
7128 : }
7129 : break;
7130 : }
7131 : default:;
7132 : }
7133 : }
7134 1 : if (integer_zerop (_q21))
7135 : {
7136 0 : switch (TREE_CODE (_p1))
7137 : {
7138 0 : case VEC_COND_EXPR:
7139 0 : {
7140 0 : tree _q60 = TREE_OPERAND (_p1, 0);
7141 0 : tree _q61 = TREE_OPERAND (_p1, 1);
7142 0 : tree _q62 = TREE_OPERAND (_p1, 2);
7143 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7144 : {
7145 0 : if (integer_zerop (_q62))
7146 : {
7147 0 : {
7148 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
7149 0 : const enum tree_code op = BIT_XOR_EXPR;
7150 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1177;
7151 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1177;
7152 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1177;
7153 0 : {
7154 0 : tree res_op0;
7155 0 : res_op0 = captures[1];
7156 0 : tree res_op1;
7157 0 : res_op1 = captures[2];
7158 0 : tree res_op2;
7159 0 : res_op2 = captures[4];
7160 0 : tree _r;
7161 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
7163 0 : return _r;
7164 : }
7165 0 : next_after_fail1177:;
7166 : }
7167 : }
7168 : }
7169 : break;
7170 : }
7171 : default:;
7172 : }
7173 : }
7174 1 : switch (TREE_CODE (_q20))
7175 : {
7176 0 : case LT_EXPR:
7177 0 : {
7178 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7179 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7180 0 : if (integer_zerop (_q22))
7181 : {
7182 0 : switch (TREE_CODE (_p1))
7183 : {
7184 0 : case VEC_COND_EXPR:
7185 0 : {
7186 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7187 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7188 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7189 0 : switch (TREE_CODE (_q80))
7190 : {
7191 0 : case GE_EXPR:
7192 0 : {
7193 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7194 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7195 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7196 : {
7197 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7198 : {
7199 0 : if (integer_zerop (_q82))
7200 : {
7201 0 : {
7202 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7203 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LT_EXPR, GE_EXPR);
7204 0 : if (res) return res;
7205 : }
7206 : }
7207 : }
7208 : }
7209 : break;
7210 : }
7211 : default:;
7212 : }
7213 : break;
7214 : }
7215 : default:;
7216 : }
7217 : }
7218 : break;
7219 : }
7220 0 : case LE_EXPR:
7221 0 : {
7222 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7223 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7224 0 : if (integer_zerop (_q22))
7225 : {
7226 0 : switch (TREE_CODE (_p1))
7227 : {
7228 0 : case VEC_COND_EXPR:
7229 0 : {
7230 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7231 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7232 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7233 0 : switch (TREE_CODE (_q80))
7234 : {
7235 0 : case GT_EXPR:
7236 0 : {
7237 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7238 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7239 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7240 : {
7241 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7242 : {
7243 0 : if (integer_zerop (_q82))
7244 : {
7245 0 : {
7246 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7247 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LE_EXPR, GT_EXPR);
7248 0 : if (res) return res;
7249 : }
7250 : }
7251 : }
7252 : }
7253 : break;
7254 : }
7255 : default:;
7256 : }
7257 : break;
7258 : }
7259 : default:;
7260 : }
7261 : }
7262 : break;
7263 : }
7264 0 : case EQ_EXPR:
7265 0 : {
7266 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7267 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7268 0 : if (integer_zerop (_q22))
7269 : {
7270 0 : switch (TREE_CODE (_p1))
7271 : {
7272 0 : case VEC_COND_EXPR:
7273 0 : {
7274 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7275 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7276 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7277 0 : switch (TREE_CODE (_q80))
7278 : {
7279 0 : case NE_EXPR:
7280 0 : {
7281 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7282 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7283 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7284 : {
7285 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7286 : {
7287 0 : if (integer_zerop (_q82))
7288 : {
7289 0 : {
7290 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7291 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, EQ_EXPR, NE_EXPR);
7292 0 : if (res) return res;
7293 : }
7294 : }
7295 : }
7296 : }
7297 : break;
7298 : }
7299 : default:;
7300 : }
7301 : break;
7302 : }
7303 : default:;
7304 : }
7305 : }
7306 : break;
7307 : }
7308 1 : case NE_EXPR:
7309 1 : {
7310 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7311 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7312 1 : if (integer_zerop (_q22))
7313 : {
7314 1 : switch (TREE_CODE (_p1))
7315 : {
7316 0 : case VEC_COND_EXPR:
7317 0 : {
7318 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7319 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7320 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7321 0 : switch (TREE_CODE (_q80))
7322 : {
7323 0 : case EQ_EXPR:
7324 0 : {
7325 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7326 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7327 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7328 : {
7329 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7330 : {
7331 0 : if (integer_zerop (_q82))
7332 : {
7333 0 : {
7334 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7335 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, NE_EXPR, EQ_EXPR);
7336 0 : if (res) return res;
7337 : }
7338 : }
7339 : }
7340 : }
7341 : break;
7342 : }
7343 : default:;
7344 : }
7345 : break;
7346 : }
7347 : default:;
7348 : }
7349 : }
7350 : break;
7351 : }
7352 0 : case GE_EXPR:
7353 0 : {
7354 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7355 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7356 0 : if (integer_zerop (_q22))
7357 : {
7358 0 : switch (TREE_CODE (_p1))
7359 : {
7360 0 : case VEC_COND_EXPR:
7361 0 : {
7362 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7363 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7364 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7365 0 : switch (TREE_CODE (_q80))
7366 : {
7367 0 : case LT_EXPR:
7368 0 : {
7369 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7370 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7371 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7372 : {
7373 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7374 : {
7375 0 : if (integer_zerop (_q82))
7376 : {
7377 0 : {
7378 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7379 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, GE_EXPR, LT_EXPR);
7380 0 : if (res) return res;
7381 : }
7382 : }
7383 : }
7384 : }
7385 : break;
7386 : }
7387 : default:;
7388 : }
7389 : break;
7390 : }
7391 : default:;
7392 : }
7393 : }
7394 : break;
7395 : }
7396 0 : case GT_EXPR:
7397 0 : {
7398 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7399 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7400 0 : if (integer_zerop (_q22))
7401 : {
7402 0 : switch (TREE_CODE (_p1))
7403 : {
7404 0 : case VEC_COND_EXPR:
7405 0 : {
7406 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7407 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7408 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7409 0 : switch (TREE_CODE (_q80))
7410 : {
7411 0 : case LE_EXPR:
7412 0 : {
7413 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7414 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7415 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7416 : {
7417 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7418 : {
7419 0 : if (integer_zerop (_q82))
7420 : {
7421 0 : {
7422 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7423 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, GT_EXPR, LE_EXPR);
7424 0 : if (res) return res;
7425 : }
7426 : }
7427 : }
7428 : }
7429 : break;
7430 : }
7431 : default:;
7432 : }
7433 : break;
7434 : }
7435 : default:;
7436 : }
7437 : }
7438 : break;
7439 : }
7440 0 : case UNORDERED_EXPR:
7441 0 : {
7442 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7443 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7444 0 : if (integer_zerop (_q22))
7445 : {
7446 0 : switch (TREE_CODE (_p1))
7447 : {
7448 0 : case VEC_COND_EXPR:
7449 0 : {
7450 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7451 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7452 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7453 0 : switch (TREE_CODE (_q80))
7454 : {
7455 0 : case ORDERED_EXPR:
7456 0 : {
7457 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7458 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7459 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7460 : {
7461 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7462 : {
7463 0 : if (integer_zerop (_q82))
7464 : {
7465 0 : {
7466 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7467 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
7468 0 : if (res) return res;
7469 : }
7470 : }
7471 : }
7472 : }
7473 : break;
7474 : }
7475 : default:;
7476 : }
7477 : break;
7478 : }
7479 : default:;
7480 : }
7481 : }
7482 : break;
7483 : }
7484 0 : case ORDERED_EXPR:
7485 0 : {
7486 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7487 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7488 0 : if (integer_zerop (_q22))
7489 : {
7490 0 : switch (TREE_CODE (_p1))
7491 : {
7492 0 : case VEC_COND_EXPR:
7493 0 : {
7494 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7495 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7496 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7497 0 : switch (TREE_CODE (_q80))
7498 : {
7499 0 : case UNORDERED_EXPR:
7500 0 : {
7501 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7502 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7503 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7504 : {
7505 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7506 : {
7507 0 : if (integer_zerop (_q82))
7508 : {
7509 0 : {
7510 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7511 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
7512 0 : if (res) return res;
7513 : }
7514 : }
7515 : }
7516 : }
7517 : break;
7518 : }
7519 : default:;
7520 : }
7521 : break;
7522 : }
7523 : default:;
7524 : }
7525 : }
7526 : break;
7527 : }
7528 0 : case UNLT_EXPR:
7529 0 : {
7530 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7531 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7532 0 : if (integer_zerop (_q22))
7533 : {
7534 0 : switch (TREE_CODE (_p1))
7535 : {
7536 0 : case VEC_COND_EXPR:
7537 0 : {
7538 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7539 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7540 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7541 0 : switch (TREE_CODE (_q80))
7542 : {
7543 0 : case GE_EXPR:
7544 0 : {
7545 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7546 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7547 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7548 : {
7549 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7550 : {
7551 0 : if (integer_zerop (_q82))
7552 : {
7553 0 : {
7554 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7555 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNLT_EXPR, GE_EXPR);
7556 0 : if (res) return res;
7557 : }
7558 : }
7559 : }
7560 : }
7561 : break;
7562 : }
7563 : default:;
7564 : }
7565 : break;
7566 : }
7567 : default:;
7568 : }
7569 : }
7570 : break;
7571 : }
7572 0 : case UNLE_EXPR:
7573 0 : {
7574 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7575 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7576 0 : if (integer_zerop (_q22))
7577 : {
7578 0 : switch (TREE_CODE (_p1))
7579 : {
7580 0 : case VEC_COND_EXPR:
7581 0 : {
7582 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7583 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7584 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7585 0 : switch (TREE_CODE (_q80))
7586 : {
7587 0 : case GT_EXPR:
7588 0 : {
7589 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7590 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7591 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7592 : {
7593 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7594 : {
7595 0 : if (integer_zerop (_q82))
7596 : {
7597 0 : {
7598 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7599 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNLE_EXPR, GT_EXPR);
7600 0 : if (res) return res;
7601 : }
7602 : }
7603 : }
7604 : }
7605 : break;
7606 : }
7607 : default:;
7608 : }
7609 : break;
7610 : }
7611 : default:;
7612 : }
7613 : }
7614 : break;
7615 : }
7616 0 : case UNGT_EXPR:
7617 0 : {
7618 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7619 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7620 0 : if (integer_zerop (_q22))
7621 : {
7622 0 : switch (TREE_CODE (_p1))
7623 : {
7624 0 : case VEC_COND_EXPR:
7625 0 : {
7626 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7627 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7628 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7629 0 : switch (TREE_CODE (_q80))
7630 : {
7631 0 : case LE_EXPR:
7632 0 : {
7633 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7634 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7635 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7636 : {
7637 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7638 : {
7639 0 : if (integer_zerop (_q82))
7640 : {
7641 0 : {
7642 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7643 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNGT_EXPR, LE_EXPR);
7644 0 : if (res) return res;
7645 : }
7646 : }
7647 : }
7648 : }
7649 : break;
7650 : }
7651 : default:;
7652 : }
7653 : break;
7654 : }
7655 : default:;
7656 : }
7657 : }
7658 : break;
7659 : }
7660 0 : case UNGE_EXPR:
7661 0 : {
7662 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7663 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7664 0 : if (integer_zerop (_q22))
7665 : {
7666 0 : switch (TREE_CODE (_p1))
7667 : {
7668 0 : case VEC_COND_EXPR:
7669 0 : {
7670 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7671 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7672 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7673 0 : switch (TREE_CODE (_q80))
7674 : {
7675 0 : case LT_EXPR:
7676 0 : {
7677 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7678 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7679 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7680 : {
7681 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7682 : {
7683 0 : if (integer_zerop (_q82))
7684 : {
7685 0 : {
7686 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7687 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNGE_EXPR, LT_EXPR);
7688 0 : if (res) return res;
7689 : }
7690 : }
7691 : }
7692 : }
7693 : break;
7694 : }
7695 : default:;
7696 : }
7697 : break;
7698 : }
7699 : default:;
7700 : }
7701 : }
7702 : break;
7703 : }
7704 0 : case UNEQ_EXPR:
7705 0 : {
7706 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7707 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7708 0 : if (integer_zerop (_q22))
7709 : {
7710 0 : switch (TREE_CODE (_p1))
7711 : {
7712 0 : case VEC_COND_EXPR:
7713 0 : {
7714 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7715 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7716 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7717 0 : switch (TREE_CODE (_q80))
7718 : {
7719 0 : case LTGT_EXPR:
7720 0 : {
7721 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7722 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7723 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7724 : {
7725 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7726 : {
7727 0 : if (integer_zerop (_q82))
7728 : {
7729 0 : {
7730 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7731 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, UNEQ_EXPR, LTGT_EXPR);
7732 0 : if (res) return res;
7733 : }
7734 : }
7735 : }
7736 : }
7737 : break;
7738 : }
7739 : default:;
7740 : }
7741 : break;
7742 : }
7743 : default:;
7744 : }
7745 : }
7746 : break;
7747 : }
7748 0 : case LTGT_EXPR:
7749 0 : {
7750 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7751 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7752 0 : if (integer_zerop (_q22))
7753 : {
7754 0 : switch (TREE_CODE (_p1))
7755 : {
7756 0 : case VEC_COND_EXPR:
7757 0 : {
7758 0 : tree _q80 = TREE_OPERAND (_p1, 0);
7759 0 : tree _q81 = TREE_OPERAND (_p1, 1);
7760 0 : tree _q82 = TREE_OPERAND (_p1, 2);
7761 0 : switch (TREE_CODE (_q80))
7762 : {
7763 0 : case UNEQ_EXPR:
7764 0 : {
7765 0 : tree _q90 = TREE_OPERAND (_q80, 0);
7766 0 : tree _q91 = TREE_OPERAND (_q80, 1);
7767 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
7768 : {
7769 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
7770 : {
7771 0 : if (integer_zerop (_q82))
7772 : {
7773 0 : {
7774 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
7775 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, LTGT_EXPR, UNEQ_EXPR);
7776 0 : if (res) return res;
7777 : }
7778 : }
7779 : }
7780 : }
7781 : break;
7782 : }
7783 : default:;
7784 : }
7785 : break;
7786 : }
7787 : default:;
7788 : }
7789 : }
7790 : break;
7791 : }
7792 : default:;
7793 : }
7794 : break;
7795 : }
7796 119 : case EQ_EXPR:
7797 119 : {
7798 119 : tree _q20 = TREE_OPERAND (_p0, 0);
7799 119 : tree _q21 = TREE_OPERAND (_p0, 1);
7800 119 : switch (TREE_CODE (_p1))
7801 : {
7802 0 : case BIT_AND_EXPR:
7803 0 : {
7804 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7805 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7806 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7807 : {
7808 0 : if (tree_truth_valued_p (_q50))
7809 : {
7810 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7811 : {
7812 0 : if (tree_truth_valued_p (_q51))
7813 : {
7814 0 : {
7815 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7816 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1178;
7817 0 : {
7818 0 : tree res_op0;
7819 0 : {
7820 0 : tree _o1[2], _r1;
7821 0 : _o1[0] = captures[0];
7822 0 : _o1[1] = captures[1];
7823 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
7824 0 : res_op0 = _r1;
7825 : }
7826 0 : tree _r;
7827 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
7828 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
7829 0 : return _r;
7830 : }
7831 0 : next_after_fail1178:;
7832 : }
7833 : }
7834 : }
7835 : }
7836 : }
7837 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7838 : {
7839 0 : if (tree_truth_valued_p (_q50))
7840 : {
7841 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7842 : {
7843 0 : if (tree_truth_valued_p (_q51))
7844 : {
7845 0 : {
7846 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7847 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1179;
7848 0 : {
7849 0 : tree res_op0;
7850 0 : {
7851 0 : tree _o1[2], _r1;
7852 0 : _o1[0] = captures[0];
7853 0 : _o1[1] = captures[1];
7854 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
7855 0 : res_op0 = _r1;
7856 : }
7857 0 : tree _r;
7858 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
7859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
7860 0 : return _r;
7861 : }
7862 0 : next_after_fail1179:;
7863 : }
7864 : }
7865 : }
7866 : }
7867 : }
7868 : break;
7869 : }
7870 : default:;
7871 : }
7872 : break;
7873 : }
7874 949106 : default:;
7875 : }
7876 949106 : {
7877 949106 : tree _p0_pops[1];
7878 949106 : if (tree_logical_inverted_value (_p0, _p0_pops))
7879 : {
7880 52 : tree _q20 = _p0_pops[0];
7881 52 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7882 : {
7883 4 : if (tree_truth_valued_p (_p1))
7884 : {
7885 4 : {
7886 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7887 4 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
7888 4 : if (res) return res;
7889 : }
7890 : }
7891 : }
7892 : }
7893 : }
7894 949102 : {
7895 949102 : tree _p0_pops[1];
7896 949102 : if (tree_nop_convert (_p0, _p0_pops))
7897 : {
7898 529674 : tree _q20 = _p0_pops[0];
7899 529674 : switch (TREE_CODE (_q20))
7900 : {
7901 24 : case BIT_NOT_EXPR:
7902 24 : {
7903 24 : tree _q30 = TREE_OPERAND (_q20, 0);
7904 24 : {
7905 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1 };
7906 24 : tree res = generic_simplify_39 (loc, type, _p0, _p1, captures);
7907 24 : if (res) return res;
7908 : }
7909 0 : break;
7910 : }
7911 20 : case MULT_EXPR:
7912 20 : {
7913 20 : tree _q30 = TREE_OPERAND (_q20, 0);
7914 20 : tree _q31 = TREE_OPERAND (_q20, 1);
7915 20 : {
7916 20 : tree _q30_pops[1];
7917 20 : if (tree_nop_convert (_q30, _q30_pops))
7918 : {
7919 0 : tree _q40 = _q30_pops[0];
7920 0 : switch (TREE_CODE (_q31))
7921 : {
7922 0 : case INTEGER_CST:
7923 0 : {
7924 0 : switch (TREE_CODE (_p1))
7925 : {
7926 0 : case LSHIFT_EXPR:
7927 0 : {
7928 0 : tree _q70 = TREE_OPERAND (_p1, 0);
7929 0 : tree _q71 = TREE_OPERAND (_p1, 1);
7930 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
7931 : {
7932 0 : switch (TREE_CODE (_q71))
7933 : {
7934 0 : case INTEGER_CST:
7935 0 : {
7936 0 : {
7937 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31, _p1, _q71 };
7938 0 : tree res = generic_simplify_41 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
7939 0 : if (res) return res;
7940 : }
7941 0 : break;
7942 : }
7943 : default:;
7944 : }
7945 : }
7946 : break;
7947 : }
7948 0 : default:;
7949 : }
7950 0 : {
7951 0 : tree _p1_pops[1];
7952 0 : if (tree_nop_convert (_p1, _p1_pops))
7953 : {
7954 0 : tree _q70 = _p1_pops[0];
7955 0 : switch (TREE_CODE (_q70))
7956 : {
7957 0 : case MULT_EXPR:
7958 0 : {
7959 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7960 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7961 0 : {
7962 0 : tree _q80_pops[1];
7963 0 : if (tree_nop_convert (_q80, _q80_pops))
7964 : {
7965 0 : tree _q90 = _q80_pops[0];
7966 0 : switch (TREE_CODE (_q81))
7967 : {
7968 0 : case INTEGER_CST:
7969 0 : {
7970 0 : {
7971 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31, _p1, _q70, _q90, _q81 };
7972 0 : tree res = generic_simplify_40 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
7973 0 : if (res) return res;
7974 : }
7975 0 : break;
7976 : }
7977 : default:;
7978 : }
7979 : }
7980 : }
7981 0 : break;
7982 : }
7983 : default:;
7984 : }
7985 : }
7986 : }
7987 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7988 : {
7989 0 : {
7990 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
7991 0 : tree res = generic_simplify_42 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
7992 0 : if (res) return res;
7993 : }
7994 : }
7995 : break;
7996 : }
7997 : default:;
7998 : }
7999 : }
8000 : }
8001 20 : break;
8002 : }
8003 : default:;
8004 : }
8005 : }
8006 : }
8007 949078 : if (tree_truth_valued_p (_p0))
8008 : {
8009 144776 : {
8010 144776 : tree _p1_pops[1];
8011 144776 : if (tree_logical_inverted_value (_p1, _p1_pops))
8012 : {
8013 13 : tree _q30 = _p1_pops[0];
8014 13 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8015 : {
8016 0 : {
8017 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8018 0 : tree res = generic_simplify_36 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
8019 0 : if (res) return res;
8020 : }
8021 : }
8022 : }
8023 : }
8024 : }
8025 949078 : switch (TREE_CODE (_p1))
8026 : {
8027 288 : case BIT_NOT_EXPR:
8028 288 : {
8029 288 : tree _q30 = TREE_OPERAND (_p1, 0);
8030 288 : {
8031 288 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
8032 288 : tree res = generic_simplify_28 (loc, type, _p0, _p1, captures);
8033 288 : if (res) return res;
8034 : }
8035 0 : break;
8036 : }
8037 948790 : default:;
8038 : }
8039 948790 : {
8040 948790 : tree _p1_pops[1];
8041 948790 : if (tree_nop_convert (_p1, _p1_pops))
8042 : {
8043 664955 : tree _q30 = _p1_pops[0];
8044 664955 : switch (TREE_CODE (_q30))
8045 : {
8046 0 : case BIT_NOT_EXPR:
8047 0 : {
8048 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8049 0 : {
8050 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
8051 0 : tree res = generic_simplify_39 (loc, type, _p0, _p1, captures);
8052 0 : if (res) return res;
8053 : }
8054 0 : break;
8055 : }
8056 : default:;
8057 : }
8058 : }
8059 : }
8060 948790 : switch (TREE_CODE (_p0))
8061 : {
8062 1131 : case BIT_IOR_EXPR:
8063 1131 : {
8064 1131 : tree _q20 = TREE_OPERAND (_p0, 0);
8065 1131 : tree _q21 = TREE_OPERAND (_p0, 1);
8066 1131 : switch (TREE_CODE (_q21))
8067 : {
8068 23 : case INTEGER_CST:
8069 23 : {
8070 23 : switch (TREE_CODE (_p1))
8071 : {
8072 23 : case INTEGER_CST:
8073 23 : {
8074 23 : {
8075 23 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8076 23 : tree res = generic_simplify_43 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_XOR_EXPR);
8077 23 : if (res) return res;
8078 : }
8079 23 : break;
8080 : }
8081 : default:;
8082 : }
8083 : break;
8084 : }
8085 : default:;
8086 : }
8087 : break;
8088 : }
8089 90 : case LT_EXPR:
8090 90 : {
8091 90 : tree _q20 = TREE_OPERAND (_p0, 0);
8092 90 : tree _q21 = TREE_OPERAND (_p0, 1);
8093 90 : switch (TREE_CODE (_p1))
8094 : {
8095 0 : case GT_EXPR:
8096 0 : {
8097 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8098 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8099 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8100 : {
8101 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8102 : {
8103 0 : {
8104 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8105 0 : const enum tree_code cmp1 = LT_EXPR;
8106 0 : const enum tree_code cmp2 = GT_EXPR;
8107 0 : const enum tree_code rcmp = NE_EXPR;
8108 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8109 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8110 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8111 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8112 : )
8113 : {
8114 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1180;
8115 0 : {
8116 0 : tree res_op0;
8117 0 : res_op0 = captures[0];
8118 0 : tree res_op1;
8119 0 : res_op1 = captures[1];
8120 0 : tree _r;
8121 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8122 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8123 0 : return _r;
8124 : }
8125 0 : next_after_fail1180:;
8126 : }
8127 : }
8128 : }
8129 : }
8130 : break;
8131 : }
8132 0 : case EQ_EXPR:
8133 0 : {
8134 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8135 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8136 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8137 : {
8138 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8139 : {
8140 0 : {
8141 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8142 0 : const enum tree_code cmp1 = LT_EXPR;
8143 0 : const enum tree_code cmp2 = EQ_EXPR;
8144 0 : const enum tree_code rcmp = LE_EXPR;
8145 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8146 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8147 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8148 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8149 : )
8150 : {
8151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1181;
8152 0 : {
8153 0 : tree res_op0;
8154 0 : res_op0 = captures[0];
8155 0 : tree res_op1;
8156 0 : res_op1 = captures[1];
8157 0 : tree _r;
8158 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8159 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8160 0 : return _r;
8161 : }
8162 0 : next_after_fail1181:;
8163 : }
8164 : }
8165 : }
8166 : }
8167 : break;
8168 : }
8169 0 : case NE_EXPR:
8170 0 : {
8171 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8172 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8173 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8174 : {
8175 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8176 : {
8177 0 : {
8178 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8179 0 : const enum tree_code cmp1 = LT_EXPR;
8180 0 : const enum tree_code cmp2 = NE_EXPR;
8181 0 : const enum tree_code rcmp = GT_EXPR;
8182 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8183 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8184 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8185 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8186 : )
8187 : {
8188 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1182;
8189 0 : {
8190 0 : tree res_op0;
8191 0 : res_op0 = captures[0];
8192 0 : tree res_op1;
8193 0 : res_op1 = captures[1];
8194 0 : tree _r;
8195 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8196 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8197 0 : return _r;
8198 : }
8199 0 : next_after_fail1182:;
8200 : }
8201 : }
8202 : }
8203 : }
8204 : break;
8205 : }
8206 : default:;
8207 : }
8208 : break;
8209 : }
8210 85 : case LE_EXPR:
8211 85 : {
8212 85 : tree _q20 = TREE_OPERAND (_p0, 0);
8213 85 : tree _q21 = TREE_OPERAND (_p0, 1);
8214 85 : switch (TREE_CODE (_p1))
8215 : {
8216 0 : case GE_EXPR:
8217 0 : {
8218 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8219 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8220 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8221 : {
8222 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8223 : {
8224 0 : {
8225 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8226 0 : const enum tree_code cmp1 = LE_EXPR;
8227 0 : const enum tree_code cmp2 = GE_EXPR;
8228 0 : const enum tree_code rcmp = NE_EXPR;
8229 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8230 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8231 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8232 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8233 : )
8234 : {
8235 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1183;
8236 0 : {
8237 0 : tree res_op0;
8238 0 : res_op0 = captures[0];
8239 0 : tree res_op1;
8240 0 : res_op1 = captures[1];
8241 0 : tree _r;
8242 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8243 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8244 0 : return _r;
8245 : }
8246 0 : next_after_fail1183:;
8247 : }
8248 : }
8249 : }
8250 : }
8251 : break;
8252 : }
8253 0 : case EQ_EXPR:
8254 0 : {
8255 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8256 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8257 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8258 : {
8259 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8260 : {
8261 0 : {
8262 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8263 0 : const enum tree_code cmp1 = LE_EXPR;
8264 0 : const enum tree_code cmp2 = EQ_EXPR;
8265 0 : const enum tree_code rcmp = LT_EXPR;
8266 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8267 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8268 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8269 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8270 : )
8271 : {
8272 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1184;
8273 0 : {
8274 0 : tree res_op0;
8275 0 : res_op0 = captures[0];
8276 0 : tree res_op1;
8277 0 : res_op1 = captures[1];
8278 0 : tree _r;
8279 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8281 0 : return _r;
8282 : }
8283 0 : next_after_fail1184:;
8284 : }
8285 : }
8286 : }
8287 : }
8288 : break;
8289 : }
8290 0 : case NE_EXPR:
8291 0 : {
8292 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8293 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8294 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8295 : {
8296 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8297 : {
8298 0 : {
8299 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8300 0 : const enum tree_code cmp1 = LE_EXPR;
8301 0 : const enum tree_code cmp2 = NE_EXPR;
8302 0 : const enum tree_code rcmp = GE_EXPR;
8303 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8304 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8305 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8306 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8307 : )
8308 : {
8309 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1185;
8310 0 : {
8311 0 : tree res_op0;
8312 0 : res_op0 = captures[0];
8313 0 : tree res_op1;
8314 0 : res_op1 = captures[1];
8315 0 : tree _r;
8316 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8317 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8318 0 : return _r;
8319 : }
8320 0 : next_after_fail1185:;
8321 : }
8322 : }
8323 : }
8324 : }
8325 : break;
8326 : }
8327 : default:;
8328 : }
8329 : break;
8330 : }
8331 100 : case GT_EXPR:
8332 100 : {
8333 100 : tree _q20 = TREE_OPERAND (_p0, 0);
8334 100 : tree _q21 = TREE_OPERAND (_p0, 1);
8335 100 : switch (TREE_CODE (_p1))
8336 : {
8337 0 : case GT_EXPR:
8338 0 : {
8339 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8340 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8341 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8342 : {
8343 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8344 : {
8345 0 : {
8346 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8347 0 : const enum tree_code cmp1 = LT_EXPR;
8348 0 : const enum tree_code cmp2 = GT_EXPR;
8349 0 : const enum tree_code rcmp = NE_EXPR;
8350 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8351 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8352 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8353 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8354 : )
8355 : {
8356 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1186;
8357 0 : {
8358 0 : tree res_op0;
8359 0 : res_op0 = captures[0];
8360 0 : tree res_op1;
8361 0 : res_op1 = captures[1];
8362 0 : tree _r;
8363 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8364 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8365 0 : return _r;
8366 : }
8367 0 : next_after_fail1186:;
8368 : }
8369 : }
8370 0 : {
8371 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8372 0 : const enum tree_code cmp1 = LT_EXPR;
8373 0 : const enum tree_code cmp2 = GT_EXPR;
8374 0 : const enum tree_code rcmp = NE_EXPR;
8375 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8376 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8377 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8378 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8379 : )
8380 : {
8381 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1187;
8382 0 : {
8383 0 : tree res_op0;
8384 0 : res_op0 = captures[0];
8385 0 : tree res_op1;
8386 0 : res_op1 = captures[1];
8387 0 : tree _r;
8388 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8389 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8390 0 : return _r;
8391 : }
8392 0 : next_after_fail1187:;
8393 : }
8394 : }
8395 : }
8396 : }
8397 : break;
8398 : }
8399 0 : case EQ_EXPR:
8400 0 : {
8401 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8402 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8403 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8404 : {
8405 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8406 : {
8407 0 : {
8408 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8409 0 : const enum tree_code cmp1 = LT_EXPR;
8410 0 : const enum tree_code cmp2 = EQ_EXPR;
8411 0 : const enum tree_code rcmp = LE_EXPR;
8412 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8413 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8414 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8415 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8416 : )
8417 : {
8418 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1188;
8419 0 : {
8420 0 : tree res_op0;
8421 0 : res_op0 = captures[0];
8422 0 : tree res_op1;
8423 0 : res_op1 = captures[1];
8424 0 : tree _r;
8425 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8426 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8427 0 : return _r;
8428 : }
8429 0 : next_after_fail1188:;
8430 : }
8431 : }
8432 : }
8433 : }
8434 : break;
8435 : }
8436 12 : case NE_EXPR:
8437 12 : {
8438 12 : tree _q50 = TREE_OPERAND (_p1, 0);
8439 12 : tree _q51 = TREE_OPERAND (_p1, 1);
8440 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8441 : {
8442 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8443 : {
8444 0 : {
8445 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8446 0 : const enum tree_code cmp1 = LT_EXPR;
8447 0 : const enum tree_code cmp2 = NE_EXPR;
8448 0 : const enum tree_code rcmp = GT_EXPR;
8449 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8450 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8451 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8452 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8453 : )
8454 : {
8455 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1189;
8456 0 : {
8457 0 : tree res_op0;
8458 0 : res_op0 = captures[0];
8459 0 : tree res_op1;
8460 0 : res_op1 = captures[1];
8461 0 : tree _r;
8462 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8463 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8464 0 : return _r;
8465 : }
8466 0 : next_after_fail1189:;
8467 : }
8468 : }
8469 : }
8470 : }
8471 : break;
8472 : }
8473 0 : case LT_EXPR:
8474 0 : {
8475 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8476 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8477 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8478 : {
8479 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8480 : {
8481 0 : {
8482 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8483 0 : const enum tree_code cmp1 = LT_EXPR;
8484 0 : const enum tree_code cmp2 = GT_EXPR;
8485 0 : const enum tree_code rcmp = NE_EXPR;
8486 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8487 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8488 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8489 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8490 : )
8491 : {
8492 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1190;
8493 0 : {
8494 0 : tree res_op0;
8495 0 : res_op0 = captures[0];
8496 0 : tree res_op1;
8497 0 : res_op1 = captures[1];
8498 0 : tree _r;
8499 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8500 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8501 0 : return _r;
8502 : }
8503 0 : next_after_fail1190:;
8504 : }
8505 : }
8506 : }
8507 : }
8508 : break;
8509 : }
8510 : default:;
8511 : }
8512 : break;
8513 : }
8514 62 : case GE_EXPR:
8515 62 : {
8516 62 : tree _q20 = TREE_OPERAND (_p0, 0);
8517 62 : tree _q21 = TREE_OPERAND (_p0, 1);
8518 62 : switch (TREE_CODE (_p1))
8519 : {
8520 1 : case GE_EXPR:
8521 1 : {
8522 1 : tree _q50 = TREE_OPERAND (_p1, 0);
8523 1 : tree _q51 = TREE_OPERAND (_p1, 1);
8524 1 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8525 : {
8526 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8527 : {
8528 0 : {
8529 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8530 0 : const enum tree_code cmp1 = LE_EXPR;
8531 0 : const enum tree_code cmp2 = GE_EXPR;
8532 0 : const enum tree_code rcmp = NE_EXPR;
8533 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8534 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8535 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8536 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8537 : )
8538 : {
8539 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1191;
8540 0 : {
8541 0 : tree res_op0;
8542 0 : res_op0 = captures[0];
8543 0 : tree res_op1;
8544 0 : res_op1 = captures[1];
8545 0 : tree _r;
8546 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8547 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8548 0 : return _r;
8549 : }
8550 0 : next_after_fail1191:;
8551 : }
8552 : }
8553 0 : {
8554 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8555 0 : const enum tree_code cmp1 = LE_EXPR;
8556 0 : const enum tree_code cmp2 = GE_EXPR;
8557 0 : const enum tree_code rcmp = NE_EXPR;
8558 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8559 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8560 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8561 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8562 : )
8563 : {
8564 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1192;
8565 0 : {
8566 0 : tree res_op0;
8567 0 : res_op0 = captures[0];
8568 0 : tree res_op1;
8569 0 : res_op1 = captures[1];
8570 0 : tree _r;
8571 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8572 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8573 0 : return _r;
8574 : }
8575 0 : next_after_fail1192:;
8576 : }
8577 : }
8578 : }
8579 : }
8580 : break;
8581 : }
8582 0 : case EQ_EXPR:
8583 0 : {
8584 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8585 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8586 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8587 : {
8588 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8589 : {
8590 0 : {
8591 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8592 0 : const enum tree_code cmp1 = LE_EXPR;
8593 0 : const enum tree_code cmp2 = EQ_EXPR;
8594 0 : const enum tree_code rcmp = LT_EXPR;
8595 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8596 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8597 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8598 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8599 : )
8600 : {
8601 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1193;
8602 0 : {
8603 0 : tree res_op0;
8604 0 : res_op0 = captures[0];
8605 0 : tree res_op1;
8606 0 : res_op1 = captures[1];
8607 0 : tree _r;
8608 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8609 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8610 0 : return _r;
8611 : }
8612 0 : next_after_fail1193:;
8613 : }
8614 : }
8615 : }
8616 : }
8617 : break;
8618 : }
8619 8 : case NE_EXPR:
8620 8 : {
8621 8 : tree _q50 = TREE_OPERAND (_p1, 0);
8622 8 : tree _q51 = TREE_OPERAND (_p1, 1);
8623 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8624 : {
8625 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8626 : {
8627 0 : {
8628 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8629 0 : const enum tree_code cmp1 = LE_EXPR;
8630 0 : const enum tree_code cmp2 = NE_EXPR;
8631 0 : const enum tree_code rcmp = GE_EXPR;
8632 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8633 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8634 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8635 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8636 : )
8637 : {
8638 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1194;
8639 0 : {
8640 0 : tree res_op0;
8641 0 : res_op0 = captures[0];
8642 0 : tree res_op1;
8643 0 : res_op1 = captures[1];
8644 0 : tree _r;
8645 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8646 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8647 0 : return _r;
8648 : }
8649 0 : next_after_fail1194:;
8650 : }
8651 : }
8652 : }
8653 : }
8654 : break;
8655 : }
8656 0 : case LE_EXPR:
8657 0 : {
8658 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8659 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8660 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8661 : {
8662 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8663 : {
8664 0 : {
8665 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8666 0 : const enum tree_code cmp1 = LE_EXPR;
8667 0 : const enum tree_code cmp2 = GE_EXPR;
8668 0 : const enum tree_code rcmp = NE_EXPR;
8669 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8670 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8671 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8672 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8673 : )
8674 : {
8675 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1195;
8676 0 : {
8677 0 : tree res_op0;
8678 0 : res_op0 = captures[0];
8679 0 : tree res_op1;
8680 0 : res_op1 = captures[1];
8681 0 : tree _r;
8682 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8683 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8684 0 : return _r;
8685 : }
8686 0 : next_after_fail1195:;
8687 : }
8688 : }
8689 : }
8690 : }
8691 : break;
8692 : }
8693 : default:;
8694 : }
8695 : break;
8696 : }
8697 119 : case EQ_EXPR:
8698 119 : {
8699 119 : tree _q20 = TREE_OPERAND (_p0, 0);
8700 119 : tree _q21 = TREE_OPERAND (_p0, 1);
8701 119 : switch (TREE_CODE (_p1))
8702 : {
8703 0 : case LT_EXPR:
8704 0 : {
8705 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8706 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8707 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8708 : {
8709 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8710 : {
8711 0 : {
8712 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8713 0 : const enum tree_code cmp1 = LT_EXPR;
8714 0 : const enum tree_code cmp2 = EQ_EXPR;
8715 0 : const enum tree_code rcmp = LE_EXPR;
8716 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8717 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8718 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8719 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8720 : )
8721 : {
8722 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1196;
8723 0 : {
8724 0 : tree res_op0;
8725 0 : res_op0 = captures[0];
8726 0 : tree res_op1;
8727 0 : res_op1 = captures[1];
8728 0 : tree _r;
8729 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8730 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8731 0 : return _r;
8732 : }
8733 0 : next_after_fail1196:;
8734 : }
8735 : }
8736 : }
8737 : }
8738 : break;
8739 : }
8740 0 : case LE_EXPR:
8741 0 : {
8742 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8743 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8744 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8745 : {
8746 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8747 : {
8748 0 : {
8749 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8750 0 : const enum tree_code cmp1 = LE_EXPR;
8751 0 : const enum tree_code cmp2 = EQ_EXPR;
8752 0 : const enum tree_code rcmp = LT_EXPR;
8753 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8754 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8755 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8756 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8757 : )
8758 : {
8759 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1197;
8760 0 : {
8761 0 : tree res_op0;
8762 0 : res_op0 = captures[0];
8763 0 : tree res_op1;
8764 0 : res_op1 = captures[1];
8765 0 : tree _r;
8766 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8767 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8768 0 : return _r;
8769 : }
8770 0 : next_after_fail1197:;
8771 : }
8772 : }
8773 : }
8774 : }
8775 : break;
8776 : }
8777 0 : case GT_EXPR:
8778 0 : {
8779 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8780 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8781 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8782 : {
8783 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8784 : {
8785 0 : {
8786 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8787 0 : const enum tree_code cmp1 = LT_EXPR;
8788 0 : const enum tree_code cmp2 = EQ_EXPR;
8789 0 : const enum tree_code rcmp = LE_EXPR;
8790 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8791 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8792 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8793 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8794 : )
8795 : {
8796 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1198;
8797 0 : {
8798 0 : tree res_op0;
8799 0 : res_op0 = captures[0];
8800 0 : tree res_op1;
8801 0 : res_op1 = captures[1];
8802 0 : tree _r;
8803 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8804 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8805 0 : return _r;
8806 : }
8807 0 : next_after_fail1198:;
8808 : }
8809 : }
8810 : }
8811 : }
8812 : break;
8813 : }
8814 8 : case GE_EXPR:
8815 8 : {
8816 8 : tree _q50 = TREE_OPERAND (_p1, 0);
8817 8 : tree _q51 = TREE_OPERAND (_p1, 1);
8818 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8819 : {
8820 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8821 : {
8822 0 : {
8823 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8824 0 : const enum tree_code cmp1 = LE_EXPR;
8825 0 : const enum tree_code cmp2 = EQ_EXPR;
8826 0 : const enum tree_code rcmp = LT_EXPR;
8827 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8828 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8829 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8830 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8831 : )
8832 : {
8833 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1199;
8834 0 : {
8835 0 : tree res_op0;
8836 0 : res_op0 = captures[0];
8837 0 : tree res_op1;
8838 0 : res_op1 = captures[1];
8839 0 : tree _r;
8840 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8841 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8842 0 : return _r;
8843 : }
8844 0 : next_after_fail1199:;
8845 : }
8846 : }
8847 : }
8848 : }
8849 : break;
8850 : }
8851 : default:;
8852 : }
8853 : break;
8854 : }
8855 113 : case NE_EXPR:
8856 113 : {
8857 113 : tree _q20 = TREE_OPERAND (_p0, 0);
8858 113 : tree _q21 = TREE_OPERAND (_p0, 1);
8859 113 : switch (TREE_CODE (_p1))
8860 : {
8861 0 : case LT_EXPR:
8862 0 : {
8863 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8864 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8865 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8866 : {
8867 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8868 : {
8869 0 : {
8870 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8871 0 : const enum tree_code cmp1 = LT_EXPR;
8872 0 : const enum tree_code cmp2 = NE_EXPR;
8873 0 : const enum tree_code rcmp = GT_EXPR;
8874 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8875 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8876 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8877 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8878 : )
8879 : {
8880 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1200;
8881 0 : {
8882 0 : tree res_op0;
8883 0 : res_op0 = captures[0];
8884 0 : tree res_op1;
8885 0 : res_op1 = captures[1];
8886 0 : tree _r;
8887 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8888 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8889 0 : return _r;
8890 : }
8891 0 : next_after_fail1200:;
8892 : }
8893 : }
8894 : }
8895 : }
8896 : break;
8897 : }
8898 0 : case LE_EXPR:
8899 0 : {
8900 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8901 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8902 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8903 : {
8904 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8905 : {
8906 0 : {
8907 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8908 0 : const enum tree_code cmp1 = LE_EXPR;
8909 0 : const enum tree_code cmp2 = NE_EXPR;
8910 0 : const enum tree_code rcmp = GE_EXPR;
8911 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8912 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8913 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8914 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8915 : )
8916 : {
8917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1201;
8918 0 : {
8919 0 : tree res_op0;
8920 0 : res_op0 = captures[0];
8921 0 : tree res_op1;
8922 0 : res_op1 = captures[1];
8923 0 : tree _r;
8924 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8925 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8926 0 : return _r;
8927 : }
8928 0 : next_after_fail1201:;
8929 : }
8930 : }
8931 : }
8932 : }
8933 : break;
8934 : }
8935 0 : case GT_EXPR:
8936 0 : {
8937 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8938 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8939 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8940 : {
8941 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8942 : {
8943 0 : {
8944 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8945 0 : const enum tree_code cmp1 = LT_EXPR;
8946 0 : const enum tree_code cmp2 = NE_EXPR;
8947 0 : const enum tree_code rcmp = GT_EXPR;
8948 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8949 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8950 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8951 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8952 : )
8953 : {
8954 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1202;
8955 0 : {
8956 0 : tree res_op0;
8957 0 : res_op0 = captures[0];
8958 0 : tree res_op1;
8959 0 : res_op1 = captures[1];
8960 0 : tree _r;
8961 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8962 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8963 0 : return _r;
8964 : }
8965 0 : next_after_fail1202:;
8966 : }
8967 : }
8968 : }
8969 : }
8970 : break;
8971 : }
8972 6 : case GE_EXPR:
8973 6 : {
8974 6 : tree _q50 = TREE_OPERAND (_p1, 0);
8975 6 : tree _q51 = TREE_OPERAND (_p1, 1);
8976 6 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8977 : {
8978 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8979 : {
8980 0 : {
8981 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8982 0 : const enum tree_code cmp1 = LE_EXPR;
8983 0 : const enum tree_code cmp2 = NE_EXPR;
8984 0 : const enum tree_code rcmp = GE_EXPR;
8985 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
8986 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
8987 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[1]))
8988 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
8989 : )
8990 : {
8991 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1203;
8992 0 : {
8993 0 : tree res_op0;
8994 0 : res_op0 = captures[0];
8995 0 : tree res_op1;
8996 0 : res_op1 = captures[1];
8997 0 : tree _r;
8998 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
8999 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
9000 0 : return _r;
9001 : }
9002 0 : next_after_fail1203:;
9003 : }
9004 : }
9005 : }
9006 : }
9007 : break;
9008 : }
9009 : default:;
9010 : }
9011 : break;
9012 : }
9013 524 : case MULT_EXPR:
9014 524 : {
9015 524 : tree _q20 = TREE_OPERAND (_p0, 0);
9016 524 : tree _q21 = TREE_OPERAND (_p0, 1);
9017 524 : switch (TREE_CODE (_q21))
9018 : {
9019 498 : case INTEGER_CST:
9020 498 : {
9021 498 : switch (TREE_CODE (_p1))
9022 : {
9023 12 : case MULT_EXPR:
9024 12 : {
9025 12 : tree _q50 = TREE_OPERAND (_p1, 0);
9026 12 : tree _q51 = TREE_OPERAND (_p1, 1);
9027 12 : switch (TREE_CODE (_q51))
9028 : {
9029 12 : case INTEGER_CST:
9030 12 : {
9031 12 : {
9032 12 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _p1, _q50, _q51 };
9033 12 : tree res = generic_simplify_44 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9034 12 : if (res) return res;
9035 : }
9036 12 : break;
9037 : }
9038 : default:;
9039 : }
9040 : break;
9041 : }
9042 0 : case LSHIFT_EXPR:
9043 0 : {
9044 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9045 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9046 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9047 : {
9048 0 : switch (TREE_CODE (_q51))
9049 : {
9050 0 : case INTEGER_CST:
9051 0 : {
9052 0 : {
9053 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1, _q51 };
9054 0 : tree res = generic_simplify_45 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9055 0 : if (res) return res;
9056 : }
9057 0 : break;
9058 : }
9059 : default:;
9060 : }
9061 : }
9062 : break;
9063 : }
9064 498 : default:;
9065 : }
9066 498 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9067 : {
9068 18 : {
9069 18 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
9070 18 : tree res = generic_simplify_46 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9071 18 : if (res) return res;
9072 : }
9073 : }
9074 : break;
9075 : }
9076 524 : default:;
9077 : }
9078 524 : switch (TREE_CODE (_q20))
9079 : {
9080 0 : case BIT_XOR_EXPR:
9081 0 : {
9082 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9083 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9084 0 : if (tree_zero_one_valued_p (_q21))
9085 : {
9086 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
9087 : {
9088 0 : {
9089 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
9090 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9091 0 : if (res) return res;
9092 : }
9093 : }
9094 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
9095 : {
9096 0 : {
9097 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q21 };
9098 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9099 0 : if (res) return res;
9100 : }
9101 : }
9102 : }
9103 : break;
9104 : }
9105 524 : default:;
9106 : }
9107 524 : if (tree_zero_one_valued_p (_q20))
9108 : {
9109 8 : switch (TREE_CODE (_q21))
9110 : {
9111 2 : case BIT_XOR_EXPR:
9112 2 : {
9113 2 : tree _q40 = TREE_OPERAND (_q21, 0);
9114 2 : tree _q41 = TREE_OPERAND (_q21, 1);
9115 2 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
9116 : {
9117 2 : {
9118 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q40, _q41, _q20 };
9119 2 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9120 2 : if (res) return res;
9121 : }
9122 : }
9123 0 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
9124 : {
9125 0 : {
9126 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
9127 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9128 0 : if (res) return res;
9129 : }
9130 : }
9131 : break;
9132 : }
9133 : default:;
9134 : }
9135 : }
9136 : break;
9137 : }
9138 2503 : case LSHIFT_EXPR:
9139 2503 : {
9140 2503 : tree _q20 = TREE_OPERAND (_p0, 0);
9141 2503 : tree _q21 = TREE_OPERAND (_p0, 1);
9142 2503 : switch (TREE_CODE (_q21))
9143 : {
9144 1122 : case INTEGER_CST:
9145 1122 : {
9146 1122 : switch (TREE_CODE (_p1))
9147 : {
9148 0 : case MULT_EXPR:
9149 0 : {
9150 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9151 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9152 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9153 : {
9154 0 : switch (TREE_CODE (_q51))
9155 : {
9156 0 : case INTEGER_CST:
9157 0 : {
9158 0 : {
9159 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q51, _p0, _q21 };
9160 0 : tree res = generic_simplify_45 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9161 0 : if (res) return res;
9162 : }
9163 0 : break;
9164 : }
9165 : default:;
9166 : }
9167 : }
9168 : break;
9169 : }
9170 1122 : default:;
9171 : }
9172 1122 : {
9173 1122 : tree _p1_pops[1];
9174 1122 : if (tree_nop_convert (_p1, _p1_pops))
9175 : {
9176 23 : tree _q50 = _p1_pops[0];
9177 23 : switch (TREE_CODE (_q50))
9178 : {
9179 0 : case MULT_EXPR:
9180 0 : {
9181 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9182 0 : tree _q61 = TREE_OPERAND (_q50, 1);
9183 0 : {
9184 0 : tree _q60_pops[1];
9185 0 : if (tree_nop_convert (_q60, _q60_pops))
9186 : {
9187 0 : tree _q70 = _q60_pops[0];
9188 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
9189 : {
9190 0 : switch (TREE_CODE (_q61))
9191 : {
9192 0 : case INTEGER_CST:
9193 0 : {
9194 0 : {
9195 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q61, _p0, _q21 };
9196 0 : tree res = generic_simplify_41 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9197 0 : if (res) return res;
9198 : }
9199 0 : break;
9200 : }
9201 : default:;
9202 : }
9203 : }
9204 : }
9205 : }
9206 0 : break;
9207 : }
9208 : default:;
9209 : }
9210 : }
9211 : }
9212 1122 : break;
9213 : }
9214 : default:;
9215 : }
9216 : break;
9217 : }
9218 948788 : default:;
9219 : }
9220 948788 : switch (TREE_CODE (_p1))
9221 : {
9222 244 : case MULT_EXPR:
9223 244 : {
9224 244 : tree _q30 = TREE_OPERAND (_p1, 0);
9225 244 : tree _q31 = TREE_OPERAND (_p1, 1);
9226 244 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9227 : {
9228 0 : switch (TREE_CODE (_q31))
9229 : {
9230 0 : case INTEGER_CST:
9231 0 : {
9232 0 : {
9233 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
9234 0 : tree res = generic_simplify_46 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9235 0 : if (res) return res;
9236 : }
9237 0 : break;
9238 : }
9239 : default:;
9240 : }
9241 : }
9242 : break;
9243 : }
9244 948788 : default:;
9245 : }
9246 948788 : {
9247 948788 : tree _p1_pops[1];
9248 948788 : if (tree_nop_convert (_p1, _p1_pops))
9249 : {
9250 664955 : tree _q30 = _p1_pops[0];
9251 664955 : switch (TREE_CODE (_q30))
9252 : {
9253 17 : case MULT_EXPR:
9254 17 : {
9255 17 : tree _q40 = TREE_OPERAND (_q30, 0);
9256 17 : tree _q41 = TREE_OPERAND (_q30, 1);
9257 17 : {
9258 17 : tree _q40_pops[1];
9259 17 : if (tree_nop_convert (_q40, _q40_pops))
9260 : {
9261 0 : tree _q50 = _q40_pops[0];
9262 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
9263 : {
9264 0 : switch (TREE_CODE (_q41))
9265 : {
9266 0 : case INTEGER_CST:
9267 0 : {
9268 0 : {
9269 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
9270 0 : tree res = generic_simplify_42 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9271 0 : if (res) return res;
9272 : }
9273 0 : break;
9274 : }
9275 : default:;
9276 : }
9277 : }
9278 : }
9279 : }
9280 17 : break;
9281 : }
9282 : default:;
9283 : }
9284 : }
9285 : }
9286 948788 : switch (TREE_CODE (_p0))
9287 : {
9288 2503 : case LSHIFT_EXPR:
9289 2503 : {
9290 2503 : tree _q20 = TREE_OPERAND (_p0, 0);
9291 2503 : tree _q21 = TREE_OPERAND (_p0, 1);
9292 2503 : switch (TREE_CODE (_q21))
9293 : {
9294 1122 : case INTEGER_CST:
9295 1122 : {
9296 1122 : switch (TREE_CODE (_p1))
9297 : {
9298 9 : case LSHIFT_EXPR:
9299 9 : {
9300 9 : tree _q50 = TREE_OPERAND (_p1, 0);
9301 9 : tree _q51 = TREE_OPERAND (_p1, 1);
9302 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9303 : {
9304 3 : switch (TREE_CODE (_q51))
9305 : {
9306 3 : case INTEGER_CST:
9307 3 : {
9308 3 : {
9309 3 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9310 3 : tree res = generic_simplify_48 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9311 3 : if (res) return res;
9312 : }
9313 1 : break;
9314 : }
9315 : default:;
9316 : }
9317 : }
9318 : break;
9319 : }
9320 1120 : default:;
9321 : }
9322 1120 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9323 : {
9324 57 : {
9325 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9326 57 : tree res = generic_simplify_49 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9327 57 : if (res) return res;
9328 : }
9329 : }
9330 : break;
9331 : }
9332 : default:;
9333 : }
9334 : break;
9335 : }
9336 948786 : default:;
9337 : }
9338 948786 : switch (TREE_CODE (_p1))
9339 : {
9340 2000 : case LSHIFT_EXPR:
9341 2000 : {
9342 2000 : tree _q30 = TREE_OPERAND (_p1, 0);
9343 2000 : tree _q31 = TREE_OPERAND (_p1, 1);
9344 2000 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9345 : {
9346 3 : switch (TREE_CODE (_q31))
9347 : {
9348 3 : case INTEGER_CST:
9349 3 : {
9350 3 : {
9351 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
9352 3 : tree res = generic_simplify_49 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR);
9353 3 : if (res) return res;
9354 : }
9355 0 : break;
9356 : }
9357 : default:;
9358 : }
9359 : }
9360 : break;
9361 : }
9362 948783 : default:;
9363 : }
9364 948783 : switch (TREE_CODE (_p0))
9365 : {
9366 0 : case MIN_EXPR:
9367 0 : {
9368 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9369 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9370 0 : switch (TREE_CODE (_p1))
9371 : {
9372 0 : case MAX_EXPR:
9373 0 : {
9374 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9375 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9376 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9377 : {
9378 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9379 : {
9380 0 : {
9381 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9382 0 : if (!HONOR_NANS (captures[0])
9383 : )
9384 : {
9385 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1204;
9386 0 : {
9387 0 : tree res_op0;
9388 0 : res_op0 = captures[0];
9389 0 : tree res_op1;
9390 0 : res_op1 = captures[1];
9391 0 : tree _r;
9392 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
9393 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
9394 0 : return _r;
9395 : }
9396 0 : next_after_fail1204:;
9397 : }
9398 : }
9399 : }
9400 : }
9401 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9402 : {
9403 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9404 : {
9405 0 : {
9406 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9407 0 : if (!HONOR_NANS (captures[0])
9408 : )
9409 : {
9410 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1205;
9411 0 : {
9412 0 : tree res_op0;
9413 0 : res_op0 = captures[0];
9414 0 : tree res_op1;
9415 0 : res_op1 = captures[1];
9416 0 : tree _r;
9417 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
9418 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
9419 0 : return _r;
9420 : }
9421 0 : next_after_fail1205:;
9422 : }
9423 : }
9424 : }
9425 : }
9426 : break;
9427 : }
9428 : default:;
9429 : }
9430 : break;
9431 : }
9432 144 : case MAX_EXPR:
9433 144 : {
9434 144 : tree _q20 = TREE_OPERAND (_p0, 0);
9435 144 : tree _q21 = TREE_OPERAND (_p0, 1);
9436 144 : switch (TREE_CODE (_p1))
9437 : {
9438 0 : case MIN_EXPR:
9439 0 : {
9440 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9441 0 : tree _q51 = TREE_OPERAND (_p1, 1);
9442 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
9443 : {
9444 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9445 : {
9446 0 : {
9447 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9448 0 : if (!HONOR_NANS (captures[0])
9449 : )
9450 : {
9451 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1206;
9452 0 : {
9453 0 : tree res_op0;
9454 0 : res_op0 = captures[0];
9455 0 : tree res_op1;
9456 0 : res_op1 = captures[1];
9457 0 : tree _r;
9458 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
9459 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
9460 0 : return _r;
9461 : }
9462 0 : next_after_fail1206:;
9463 : }
9464 : }
9465 : }
9466 : }
9467 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9468 : {
9469 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
9470 : {
9471 0 : {
9472 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9473 0 : if (!HONOR_NANS (captures[0])
9474 : )
9475 : {
9476 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1207;
9477 0 : {
9478 0 : tree res_op0;
9479 0 : res_op0 = captures[0];
9480 0 : tree res_op1;
9481 0 : res_op1 = captures[1];
9482 0 : tree _r;
9483 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
9484 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
9485 0 : return _r;
9486 : }
9487 0 : next_after_fail1207:;
9488 : }
9489 : }
9490 : }
9491 : }
9492 : break;
9493 : }
9494 : default:;
9495 : }
9496 : break;
9497 : }
9498 948783 : default:;
9499 : }
9500 948783 : switch (TREE_CODE (_p1))
9501 : {
9502 244 : case MULT_EXPR:
9503 244 : {
9504 244 : tree _q30 = TREE_OPERAND (_p1, 0);
9505 244 : tree _q31 = TREE_OPERAND (_p1, 1);
9506 244 : switch (TREE_CODE (_q30))
9507 : {
9508 0 : case BIT_XOR_EXPR:
9509 0 : {
9510 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9511 0 : tree _q41 = TREE_OPERAND (_q30, 1);
9512 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
9513 : {
9514 0 : if (tree_zero_one_valued_p (_q31))
9515 : {
9516 0 : {
9517 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q31 };
9518 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9519 0 : if (res) return res;
9520 : }
9521 : }
9522 : }
9523 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
9524 : {
9525 0 : if (tree_zero_one_valued_p (_q31))
9526 : {
9527 0 : {
9528 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q31 };
9529 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9530 0 : if (res) return res;
9531 : }
9532 : }
9533 : }
9534 : break;
9535 : }
9536 244 : default:;
9537 : }
9538 244 : if (tree_zero_one_valued_p (_q30))
9539 : {
9540 17 : switch (TREE_CODE (_q31))
9541 : {
9542 0 : case BIT_XOR_EXPR:
9543 0 : {
9544 0 : tree _q50 = TREE_OPERAND (_q31, 0);
9545 0 : tree _q51 = TREE_OPERAND (_q31, 1);
9546 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
9547 : {
9548 0 : {
9549 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q51, _q30 };
9550 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9551 0 : if (res) return res;
9552 : }
9553 : }
9554 0 : if ((_q51 == _p0 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _p0, 0) && types_match (_q51, _p0)))
9555 : {
9556 0 : {
9557 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q50, _q30 };
9558 0 : tree res = generic_simplify_47 (loc, type, _p0, _p1, captures);
9559 0 : if (res) return res;
9560 : }
9561 : }
9562 : break;
9563 : }
9564 : default:;
9565 : }
9566 : }
9567 : break;
9568 : }
9569 948783 : default:;
9570 : }
9571 948783 : switch (TREE_CODE (_p0))
9572 : {
9573 1 : case VEC_COND_EXPR:
9574 1 : {
9575 1 : tree _q20 = TREE_OPERAND (_p0, 0);
9576 1 : tree _q21 = TREE_OPERAND (_p0, 1);
9577 1 : tree _q22 = TREE_OPERAND (_p0, 2);
9578 1 : switch (TREE_CODE (_p1))
9579 : {
9580 0 : case VEC_COND_EXPR:
9581 0 : {
9582 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9583 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9584 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9585 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9586 : {
9587 0 : {
9588 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9589 0 : if (VECTOR_TYPE_P (type)
9590 0 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
9591 : || types_match (type, TREE_TYPE (captures[2]))
9592 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9593 : || (optimize_vectors_before_lowering_p ()
9594 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9595 : )
9596 : {
9597 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1208;
9598 0 : {
9599 0 : tree res_op0;
9600 0 : res_op0 = captures[1];
9601 0 : tree res_op1;
9602 0 : {
9603 0 : tree _o1[2], _r1;
9604 0 : _o1[0] = captures[2];
9605 0 : _o1[1] = captures[5];
9606 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
9607 0 : if (EXPR_P (_r1))
9608 0 : goto next_after_fail1208;
9609 0 : res_op1 = _r1;
9610 : }
9611 0 : tree res_op2;
9612 0 : {
9613 0 : tree _o1[2], _r1;
9614 0 : _o1[0] = captures[3];
9615 0 : _o1[1] = captures[6];
9616 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
9617 0 : if (EXPR_P (_r1))
9618 0 : goto next_after_fail1208;
9619 0 : res_op2 = _r1;
9620 : }
9621 0 : tree _r;
9622 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9623 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
9624 0 : return _r;
9625 : }
9626 0 : next_after_fail1208:;
9627 : }
9628 : }
9629 : }
9630 : break;
9631 : }
9632 1 : default:;
9633 : }
9634 1 : if (integer_minus_onep (_q21))
9635 : {
9636 1 : if (integer_zerop (_q22))
9637 : {
9638 1 : switch (TREE_CODE (_p1))
9639 : {
9640 0 : case VEC_COND_EXPR:
9641 0 : {
9642 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9643 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9644 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9645 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
9646 : {
9647 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9648 : {
9649 0 : {
9650 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9651 0 : const enum tree_code lop = BIT_XOR_EXPR;
9652 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9653 : )
9654 : {
9655 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1209;
9656 0 : {
9657 0 : tree res_op0;
9658 0 : {
9659 0 : tree _o1[2], _r1;
9660 0 : _o1[0] = captures[0];
9661 0 : _o1[1] = captures[3];
9662 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9663 0 : res_op0 = _r1;
9664 : }
9665 0 : tree res_op1;
9666 0 : res_op1 = captures[1];
9667 0 : tree res_op2;
9668 0 : res_op2 = captures[2];
9669 0 : tree _r;
9670 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9671 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9672 0 : return _r;
9673 : }
9674 0 : next_after_fail1209:;
9675 : }
9676 : }
9677 0 : {
9678 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9679 0 : const enum tree_code lop = BIT_XOR_EXPR;
9680 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9681 : )
9682 : {
9683 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1210;
9684 0 : {
9685 0 : tree res_op0;
9686 0 : {
9687 0 : tree _o1[2], _r1;
9688 0 : _o1[0] = captures[0];
9689 0 : _o1[1] = captures[3];
9690 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9691 0 : res_op0 = _r1;
9692 : }
9693 0 : tree res_op1;
9694 0 : res_op1 = captures[1];
9695 0 : tree res_op2;
9696 0 : res_op2 = captures[2];
9697 0 : tree _r;
9698 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9699 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9700 0 : return _r;
9701 : }
9702 0 : next_after_fail1210:;
9703 : }
9704 : }
9705 0 : {
9706 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9707 0 : const enum tree_code lop = BIT_XOR_EXPR;
9708 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9709 : )
9710 : {
9711 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1211;
9712 0 : {
9713 0 : tree res_op0;
9714 0 : {
9715 0 : tree _o1[2], _r1;
9716 0 : _o1[0] = captures[0];
9717 0 : _o1[1] = captures[3];
9718 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9719 0 : res_op0 = _r1;
9720 : }
9721 0 : tree res_op1;
9722 0 : res_op1 = captures[1];
9723 0 : tree res_op2;
9724 0 : res_op2 = captures[2];
9725 0 : tree _r;
9726 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9727 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9728 0 : return _r;
9729 : }
9730 0 : next_after_fail1211:;
9731 : }
9732 : }
9733 0 : {
9734 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9735 0 : const enum tree_code lop = BIT_XOR_EXPR;
9736 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9737 : )
9738 : {
9739 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1212;
9740 0 : {
9741 0 : tree res_op0;
9742 0 : {
9743 0 : tree _o1[2], _r1;
9744 0 : _o1[0] = captures[0];
9745 0 : _o1[1] = captures[3];
9746 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9747 0 : res_op0 = _r1;
9748 : }
9749 0 : tree res_op1;
9750 0 : res_op1 = captures[1];
9751 0 : tree res_op2;
9752 0 : res_op2 = captures[2];
9753 0 : tree _r;
9754 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9755 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9756 0 : return _r;
9757 : }
9758 0 : next_after_fail1212:;
9759 : }
9760 : }
9761 0 : {
9762 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9763 0 : const enum tree_code lop = BIT_XOR_EXPR;
9764 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9765 : )
9766 : {
9767 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1213;
9768 0 : {
9769 0 : tree res_op0;
9770 0 : {
9771 0 : tree _o1[2], _r1;
9772 0 : _o1[0] = captures[0];
9773 0 : _o1[1] = captures[3];
9774 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9775 0 : res_op0 = _r1;
9776 : }
9777 0 : tree res_op1;
9778 0 : res_op1 = captures[1];
9779 0 : tree res_op2;
9780 0 : res_op2 = captures[2];
9781 0 : tree _r;
9782 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9783 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9784 0 : return _r;
9785 : }
9786 0 : next_after_fail1213:;
9787 : }
9788 : }
9789 0 : {
9790 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9791 0 : const enum tree_code lop = BIT_XOR_EXPR;
9792 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9793 : )
9794 : {
9795 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1214;
9796 0 : {
9797 0 : tree res_op0;
9798 0 : {
9799 0 : tree _o1[2], _r1;
9800 0 : _o1[0] = captures[0];
9801 0 : _o1[1] = captures[3];
9802 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9803 0 : res_op0 = _r1;
9804 : }
9805 0 : tree res_op1;
9806 0 : res_op1 = captures[1];
9807 0 : tree res_op2;
9808 0 : res_op2 = captures[2];
9809 0 : tree _r;
9810 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9812 0 : return _r;
9813 : }
9814 0 : next_after_fail1214:;
9815 : }
9816 : }
9817 0 : {
9818 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9819 0 : const enum tree_code lop = BIT_XOR_EXPR;
9820 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9821 : )
9822 : {
9823 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1215;
9824 0 : {
9825 0 : tree res_op0;
9826 0 : {
9827 0 : tree _o1[2], _r1;
9828 0 : _o1[0] = captures[0];
9829 0 : _o1[1] = captures[3];
9830 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9831 0 : res_op0 = _r1;
9832 : }
9833 0 : tree res_op1;
9834 0 : res_op1 = captures[1];
9835 0 : tree res_op2;
9836 0 : res_op2 = captures[2];
9837 0 : tree _r;
9838 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9839 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9840 0 : return _r;
9841 : }
9842 0 : next_after_fail1215:;
9843 : }
9844 : }
9845 0 : {
9846 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9847 0 : const enum tree_code lop = BIT_XOR_EXPR;
9848 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9849 : )
9850 : {
9851 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1216;
9852 0 : {
9853 0 : tree res_op0;
9854 0 : {
9855 0 : tree _o1[2], _r1;
9856 0 : _o1[0] = captures[0];
9857 0 : _o1[1] = captures[3];
9858 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9859 0 : res_op0 = _r1;
9860 : }
9861 0 : tree res_op1;
9862 0 : res_op1 = captures[1];
9863 0 : tree res_op2;
9864 0 : res_op2 = captures[2];
9865 0 : tree _r;
9866 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9867 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9868 0 : return _r;
9869 : }
9870 0 : next_after_fail1216:;
9871 : }
9872 : }
9873 0 : {
9874 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9875 0 : const enum tree_code lop = BIT_XOR_EXPR;
9876 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9877 : )
9878 : {
9879 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1217;
9880 0 : {
9881 0 : tree res_op0;
9882 0 : {
9883 0 : tree _o1[2], _r1;
9884 0 : _o1[0] = captures[0];
9885 0 : _o1[1] = captures[3];
9886 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9887 0 : res_op0 = _r1;
9888 : }
9889 0 : tree res_op1;
9890 0 : res_op1 = captures[1];
9891 0 : tree res_op2;
9892 0 : res_op2 = captures[2];
9893 0 : tree _r;
9894 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9896 0 : return _r;
9897 : }
9898 0 : next_after_fail1217:;
9899 : }
9900 : }
9901 0 : {
9902 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9903 0 : const enum tree_code lop = BIT_XOR_EXPR;
9904 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9905 : )
9906 : {
9907 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1218;
9908 0 : {
9909 0 : tree res_op0;
9910 0 : {
9911 0 : tree _o1[2], _r1;
9912 0 : _o1[0] = captures[0];
9913 0 : _o1[1] = captures[3];
9914 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9915 0 : res_op0 = _r1;
9916 : }
9917 0 : tree res_op1;
9918 0 : res_op1 = captures[1];
9919 0 : tree res_op2;
9920 0 : res_op2 = captures[2];
9921 0 : tree _r;
9922 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9923 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9924 0 : return _r;
9925 : }
9926 0 : next_after_fail1218:;
9927 : }
9928 : }
9929 0 : {
9930 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9931 0 : const enum tree_code lop = BIT_XOR_EXPR;
9932 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9933 : )
9934 : {
9935 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1219;
9936 0 : {
9937 0 : tree res_op0;
9938 0 : {
9939 0 : tree _o1[2], _r1;
9940 0 : _o1[0] = captures[0];
9941 0 : _o1[1] = captures[3];
9942 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9943 0 : res_op0 = _r1;
9944 : }
9945 0 : tree res_op1;
9946 0 : res_op1 = captures[1];
9947 0 : tree res_op2;
9948 0 : res_op2 = captures[2];
9949 0 : tree _r;
9950 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9952 0 : return _r;
9953 : }
9954 0 : next_after_fail1219:;
9955 : }
9956 : }
9957 0 : {
9958 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9959 0 : const enum tree_code lop = BIT_XOR_EXPR;
9960 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9961 : )
9962 : {
9963 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1220;
9964 0 : {
9965 0 : tree res_op0;
9966 0 : {
9967 0 : tree _o1[2], _r1;
9968 0 : _o1[0] = captures[0];
9969 0 : _o1[1] = captures[3];
9970 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9971 0 : res_op0 = _r1;
9972 : }
9973 0 : tree res_op1;
9974 0 : res_op1 = captures[1];
9975 0 : tree res_op2;
9976 0 : res_op2 = captures[2];
9977 0 : tree _r;
9978 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9979 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
9980 0 : return _r;
9981 : }
9982 0 : next_after_fail1220:;
9983 : }
9984 : }
9985 0 : {
9986 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9987 0 : const enum tree_code lop = BIT_XOR_EXPR;
9988 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
9989 : )
9990 : {
9991 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1221;
9992 0 : {
9993 0 : tree res_op0;
9994 0 : {
9995 0 : tree _o1[2], _r1;
9996 0 : _o1[0] = captures[0];
9997 0 : _o1[1] = captures[3];
9998 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9999 0 : res_op0 = _r1;
10000 : }
10001 0 : tree res_op1;
10002 0 : res_op1 = captures[1];
10003 0 : tree res_op2;
10004 0 : res_op2 = captures[2];
10005 0 : tree _r;
10006 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10007 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10008 0 : return _r;
10009 : }
10010 0 : next_after_fail1221:;
10011 : }
10012 : }
10013 0 : {
10014 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10015 0 : const enum tree_code lop = BIT_XOR_EXPR;
10016 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10017 : )
10018 : {
10019 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1222;
10020 0 : {
10021 0 : tree res_op0;
10022 0 : {
10023 0 : tree _o1[2], _r1;
10024 0 : _o1[0] = captures[0];
10025 0 : _o1[1] = captures[3];
10026 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10027 0 : res_op0 = _r1;
10028 : }
10029 0 : tree res_op1;
10030 0 : res_op1 = captures[1];
10031 0 : tree res_op2;
10032 0 : res_op2 = captures[2];
10033 0 : tree _r;
10034 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10035 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10036 0 : return _r;
10037 : }
10038 0 : next_after_fail1222:;
10039 : }
10040 : }
10041 0 : {
10042 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10043 0 : const enum tree_code lop = BIT_XOR_EXPR;
10044 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10045 : )
10046 : {
10047 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1223;
10048 0 : {
10049 0 : tree res_op0;
10050 0 : {
10051 0 : tree _o1[2], _r1;
10052 0 : _o1[0] = captures[0];
10053 0 : _o1[1] = captures[3];
10054 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10055 0 : res_op0 = _r1;
10056 : }
10057 0 : tree res_op1;
10058 0 : res_op1 = captures[1];
10059 0 : tree res_op2;
10060 0 : res_op2 = captures[2];
10061 0 : tree _r;
10062 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10063 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10064 0 : return _r;
10065 : }
10066 0 : next_after_fail1223:;
10067 : }
10068 : }
10069 0 : {
10070 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10071 0 : const enum tree_code lop = BIT_XOR_EXPR;
10072 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10073 : )
10074 : {
10075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1224;
10076 0 : {
10077 0 : tree res_op0;
10078 0 : {
10079 0 : tree _o1[2], _r1;
10080 0 : _o1[0] = captures[0];
10081 0 : _o1[1] = captures[3];
10082 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10083 0 : res_op0 = _r1;
10084 : }
10085 0 : tree res_op1;
10086 0 : res_op1 = captures[1];
10087 0 : tree res_op2;
10088 0 : res_op2 = captures[2];
10089 0 : tree _r;
10090 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10091 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10092 0 : return _r;
10093 : }
10094 0 : next_after_fail1224:;
10095 : }
10096 : }
10097 0 : {
10098 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10099 0 : const enum tree_code lop = BIT_XOR_EXPR;
10100 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10101 : )
10102 : {
10103 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1225;
10104 0 : {
10105 0 : tree res_op0;
10106 0 : {
10107 0 : tree _o1[2], _r1;
10108 0 : _o1[0] = captures[0];
10109 0 : _o1[1] = captures[3];
10110 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10111 0 : res_op0 = _r1;
10112 : }
10113 0 : tree res_op1;
10114 0 : res_op1 = captures[1];
10115 0 : tree res_op2;
10116 0 : res_op2 = captures[2];
10117 0 : tree _r;
10118 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10120 0 : return _r;
10121 : }
10122 0 : next_after_fail1225:;
10123 : }
10124 : }
10125 0 : {
10126 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10127 0 : const enum tree_code lop = BIT_XOR_EXPR;
10128 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10129 : )
10130 : {
10131 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1226;
10132 0 : {
10133 0 : tree res_op0;
10134 0 : {
10135 0 : tree _o1[2], _r1;
10136 0 : _o1[0] = captures[0];
10137 0 : _o1[1] = captures[3];
10138 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10139 0 : res_op0 = _r1;
10140 : }
10141 0 : tree res_op1;
10142 0 : res_op1 = captures[1];
10143 0 : tree res_op2;
10144 0 : res_op2 = captures[2];
10145 0 : tree _r;
10146 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10147 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10148 0 : return _r;
10149 : }
10150 0 : next_after_fail1226:;
10151 : }
10152 : }
10153 0 : {
10154 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10155 0 : const enum tree_code lop = BIT_XOR_EXPR;
10156 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10157 : )
10158 : {
10159 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1227;
10160 0 : {
10161 0 : tree res_op0;
10162 0 : {
10163 0 : tree _o1[2], _r1;
10164 0 : _o1[0] = captures[0];
10165 0 : _o1[1] = captures[3];
10166 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10167 0 : res_op0 = _r1;
10168 : }
10169 0 : tree res_op1;
10170 0 : res_op1 = captures[1];
10171 0 : tree res_op2;
10172 0 : res_op2 = captures[2];
10173 0 : tree _r;
10174 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10175 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10176 0 : return _r;
10177 : }
10178 0 : next_after_fail1227:;
10179 : }
10180 : }
10181 0 : {
10182 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10183 0 : const enum tree_code lop = BIT_XOR_EXPR;
10184 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10185 : )
10186 : {
10187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1228;
10188 0 : {
10189 0 : tree res_op0;
10190 0 : {
10191 0 : tree _o1[2], _r1;
10192 0 : _o1[0] = captures[0];
10193 0 : _o1[1] = captures[3];
10194 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10195 0 : res_op0 = _r1;
10196 : }
10197 0 : tree res_op1;
10198 0 : res_op1 = captures[1];
10199 0 : tree res_op2;
10200 0 : res_op2 = captures[2];
10201 0 : tree _r;
10202 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10203 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10204 0 : return _r;
10205 : }
10206 0 : next_after_fail1228:;
10207 : }
10208 : }
10209 0 : {
10210 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10211 0 : const enum tree_code lop = BIT_XOR_EXPR;
10212 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10213 : )
10214 : {
10215 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1229;
10216 0 : {
10217 0 : tree res_op0;
10218 0 : {
10219 0 : tree _o1[2], _r1;
10220 0 : _o1[0] = captures[0];
10221 0 : _o1[1] = captures[3];
10222 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10223 0 : res_op0 = _r1;
10224 : }
10225 0 : tree res_op1;
10226 0 : res_op1 = captures[1];
10227 0 : tree res_op2;
10228 0 : res_op2 = captures[2];
10229 0 : tree _r;
10230 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10231 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10232 0 : return _r;
10233 : }
10234 0 : next_after_fail1229:;
10235 : }
10236 : }
10237 0 : {
10238 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10239 0 : const enum tree_code lop = BIT_XOR_EXPR;
10240 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10241 : )
10242 : {
10243 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1230;
10244 0 : {
10245 0 : tree res_op0;
10246 0 : {
10247 0 : tree _o1[2], _r1;
10248 0 : _o1[0] = captures[0];
10249 0 : _o1[1] = captures[3];
10250 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10251 0 : res_op0 = _r1;
10252 : }
10253 0 : tree res_op1;
10254 0 : res_op1 = captures[1];
10255 0 : tree res_op2;
10256 0 : res_op2 = captures[2];
10257 0 : tree _r;
10258 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10259 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10260 0 : return _r;
10261 : }
10262 0 : next_after_fail1230:;
10263 : }
10264 : }
10265 0 : {
10266 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10267 0 : const enum tree_code lop = BIT_XOR_EXPR;
10268 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10269 : )
10270 : {
10271 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1231;
10272 0 : {
10273 0 : tree res_op0;
10274 0 : {
10275 0 : tree _o1[2], _r1;
10276 0 : _o1[0] = captures[0];
10277 0 : _o1[1] = captures[3];
10278 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10279 0 : res_op0 = _r1;
10280 : }
10281 0 : tree res_op1;
10282 0 : res_op1 = captures[1];
10283 0 : tree res_op2;
10284 0 : res_op2 = captures[2];
10285 0 : tree _r;
10286 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10287 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10288 0 : return _r;
10289 : }
10290 0 : next_after_fail1231:;
10291 : }
10292 : }
10293 0 : {
10294 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10295 0 : const enum tree_code lop = BIT_XOR_EXPR;
10296 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10297 : )
10298 : {
10299 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1232;
10300 0 : {
10301 0 : tree res_op0;
10302 0 : {
10303 0 : tree _o1[2], _r1;
10304 0 : _o1[0] = captures[0];
10305 0 : _o1[1] = captures[3];
10306 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10307 0 : res_op0 = _r1;
10308 : }
10309 0 : tree res_op1;
10310 0 : res_op1 = captures[1];
10311 0 : tree res_op2;
10312 0 : res_op2 = captures[2];
10313 0 : tree _r;
10314 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10315 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10316 0 : return _r;
10317 : }
10318 0 : next_after_fail1232:;
10319 : }
10320 : }
10321 0 : {
10322 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10323 0 : const enum tree_code lop = BIT_XOR_EXPR;
10324 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10325 : )
10326 : {
10327 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1233;
10328 0 : {
10329 0 : tree res_op0;
10330 0 : {
10331 0 : tree _o1[2], _r1;
10332 0 : _o1[0] = captures[0];
10333 0 : _o1[1] = captures[3];
10334 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10335 0 : res_op0 = _r1;
10336 : }
10337 0 : tree res_op1;
10338 0 : res_op1 = captures[1];
10339 0 : tree res_op2;
10340 0 : res_op2 = captures[2];
10341 0 : tree _r;
10342 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10343 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10344 0 : return _r;
10345 : }
10346 0 : next_after_fail1233:;
10347 : }
10348 : }
10349 0 : {
10350 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10351 0 : const enum tree_code lop = BIT_XOR_EXPR;
10352 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10353 : )
10354 : {
10355 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1234;
10356 0 : {
10357 0 : tree res_op0;
10358 0 : {
10359 0 : tree _o1[2], _r1;
10360 0 : _o1[0] = captures[0];
10361 0 : _o1[1] = captures[3];
10362 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10363 0 : res_op0 = _r1;
10364 : }
10365 0 : tree res_op1;
10366 0 : res_op1 = captures[1];
10367 0 : tree res_op2;
10368 0 : res_op2 = captures[2];
10369 0 : tree _r;
10370 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10371 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10372 0 : return _r;
10373 : }
10374 0 : next_after_fail1234:;
10375 : }
10376 : }
10377 0 : {
10378 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10379 0 : const enum tree_code lop = BIT_XOR_EXPR;
10380 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10381 : )
10382 : {
10383 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1235;
10384 0 : {
10385 0 : tree res_op0;
10386 0 : {
10387 0 : tree _o1[2], _r1;
10388 0 : _o1[0] = captures[0];
10389 0 : _o1[1] = captures[3];
10390 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10391 0 : res_op0 = _r1;
10392 : }
10393 0 : tree res_op1;
10394 0 : res_op1 = captures[1];
10395 0 : tree res_op2;
10396 0 : res_op2 = captures[2];
10397 0 : tree _r;
10398 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10399 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10400 0 : return _r;
10401 : }
10402 0 : next_after_fail1235:;
10403 : }
10404 : }
10405 0 : {
10406 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10407 0 : const enum tree_code lop = BIT_XOR_EXPR;
10408 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10409 : )
10410 : {
10411 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1236;
10412 0 : {
10413 0 : tree res_op0;
10414 0 : {
10415 0 : tree _o1[2], _r1;
10416 0 : _o1[0] = captures[0];
10417 0 : _o1[1] = captures[3];
10418 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10419 0 : res_op0 = _r1;
10420 : }
10421 0 : tree res_op1;
10422 0 : res_op1 = captures[1];
10423 0 : tree res_op2;
10424 0 : res_op2 = captures[2];
10425 0 : tree _r;
10426 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10427 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10428 0 : return _r;
10429 : }
10430 0 : next_after_fail1236:;
10431 : }
10432 : }
10433 0 : {
10434 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10435 0 : const enum tree_code lop = BIT_XOR_EXPR;
10436 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10437 : )
10438 : {
10439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1237;
10440 0 : {
10441 0 : tree res_op0;
10442 0 : {
10443 0 : tree _o1[2], _r1;
10444 0 : _o1[0] = captures[0];
10445 0 : _o1[1] = captures[3];
10446 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10447 0 : res_op0 = _r1;
10448 : }
10449 0 : tree res_op1;
10450 0 : res_op1 = captures[1];
10451 0 : tree res_op2;
10452 0 : res_op2 = captures[2];
10453 0 : tree _r;
10454 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10456 0 : return _r;
10457 : }
10458 0 : next_after_fail1237:;
10459 : }
10460 : }
10461 0 : {
10462 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10463 0 : const enum tree_code lop = BIT_XOR_EXPR;
10464 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10465 : )
10466 : {
10467 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1238;
10468 0 : {
10469 0 : tree res_op0;
10470 0 : {
10471 0 : tree _o1[2], _r1;
10472 0 : _o1[0] = captures[0];
10473 0 : _o1[1] = captures[3];
10474 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10475 0 : res_op0 = _r1;
10476 : }
10477 0 : tree res_op1;
10478 0 : res_op1 = captures[1];
10479 0 : tree res_op2;
10480 0 : res_op2 = captures[2];
10481 0 : tree _r;
10482 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10483 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10484 0 : return _r;
10485 : }
10486 0 : next_after_fail1238:;
10487 : }
10488 : }
10489 0 : {
10490 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10491 0 : const enum tree_code lop = BIT_XOR_EXPR;
10492 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10493 : )
10494 : {
10495 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1239;
10496 0 : {
10497 0 : tree res_op0;
10498 0 : {
10499 0 : tree _o1[2], _r1;
10500 0 : _o1[0] = captures[0];
10501 0 : _o1[1] = captures[3];
10502 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10503 0 : res_op0 = _r1;
10504 : }
10505 0 : tree res_op1;
10506 0 : res_op1 = captures[1];
10507 0 : tree res_op2;
10508 0 : res_op2 = captures[2];
10509 0 : tree _r;
10510 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10511 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10512 0 : return _r;
10513 : }
10514 0 : next_after_fail1239:;
10515 : }
10516 : }
10517 0 : {
10518 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10519 0 : const enum tree_code lop = BIT_XOR_EXPR;
10520 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10521 : )
10522 : {
10523 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1240;
10524 0 : {
10525 0 : tree res_op0;
10526 0 : {
10527 0 : tree _o1[2], _r1;
10528 0 : _o1[0] = captures[0];
10529 0 : _o1[1] = captures[3];
10530 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10531 0 : res_op0 = _r1;
10532 : }
10533 0 : tree res_op1;
10534 0 : res_op1 = captures[1];
10535 0 : tree res_op2;
10536 0 : res_op2 = captures[2];
10537 0 : tree _r;
10538 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10539 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10540 0 : return _r;
10541 : }
10542 0 : next_after_fail1240:;
10543 : }
10544 : }
10545 0 : {
10546 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10547 0 : const enum tree_code lop = BIT_XOR_EXPR;
10548 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10549 : )
10550 : {
10551 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1241;
10552 0 : {
10553 0 : tree res_op0;
10554 0 : {
10555 0 : tree _o1[2], _r1;
10556 0 : _o1[0] = captures[0];
10557 0 : _o1[1] = captures[3];
10558 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10559 0 : res_op0 = _r1;
10560 : }
10561 0 : tree res_op1;
10562 0 : res_op1 = captures[1];
10563 0 : tree res_op2;
10564 0 : res_op2 = captures[2];
10565 0 : tree _r;
10566 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10567 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10568 0 : return _r;
10569 : }
10570 0 : next_after_fail1241:;
10571 : }
10572 : }
10573 0 : {
10574 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
10575 0 : const enum tree_code lop = BIT_XOR_EXPR;
10576 0 : if (target_supports_op_p (TREE_TYPE (captures[0]), lop, optab_vector)
10577 : )
10578 : {
10579 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1242;
10580 0 : {
10581 0 : tree res_op0;
10582 0 : {
10583 0 : tree _o1[2], _r1;
10584 0 : _o1[0] = captures[0];
10585 0 : _o1[1] = captures[3];
10586 0 : _r1 = fold_build2_loc (loc, lop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10587 0 : res_op0 = _r1;
10588 : }
10589 0 : tree res_op1;
10590 0 : res_op1 = captures[1];
10591 0 : tree res_op2;
10592 0 : res_op2 = captures[2];
10593 0 : tree _r;
10594 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10595 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10596 0 : return _r;
10597 : }
10598 0 : next_after_fail1242:;
10599 : }
10600 : }
10601 : }
10602 : }
10603 : break;
10604 : }
10605 : default:;
10606 : }
10607 : }
10608 : }
10609 1 : {
10610 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10611 1 : if (VECTOR_TYPE_P (type)
10612 1 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
10613 : || types_match (type, TREE_TYPE (captures[2]))
10614 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10615 : || (optimize_vectors_before_lowering_p ()
10616 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10617 : )
10618 : {
10619 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1243;
10620 1 : {
10621 1 : if (! tree_invariant_p (captures[4])) goto next_after_fail1243;
10622 0 : tree res_op0;
10623 0 : res_op0 = captures[1];
10624 0 : tree res_op1;
10625 0 : {
10626 0 : tree _o1[2], _r1;
10627 0 : _o1[0] = captures[2];
10628 0 : _o1[1] = unshare_expr (captures[4]);
10629 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
10630 0 : if (EXPR_P (_r1))
10631 0 : goto next_after_fail1243;
10632 0 : res_op1 = _r1;
10633 : }
10634 0 : tree res_op2;
10635 0 : {
10636 0 : tree _o1[2], _r1;
10637 0 : _o1[0] = captures[3];
10638 0 : _o1[1] = captures[4];
10639 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
10640 0 : if (EXPR_P (_r1))
10641 0 : goto next_after_fail1243;
10642 0 : res_op2 = _r1;
10643 : }
10644 0 : tree _r;
10645 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10646 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
10647 0 : return _r;
10648 : }
10649 1 : next_after_fail1243:;
10650 : }
10651 : }
10652 1 : break;
10653 : }
10654 948783 : default:;
10655 : }
10656 948783 : switch (TREE_CODE (_p1))
10657 : {
10658 0 : case VEC_COND_EXPR:
10659 0 : {
10660 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10661 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10662 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10663 0 : {
10664 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10665 0 : if (VECTOR_TYPE_P (type)
10666 0 : && (TREE_CODE_CLASS (BIT_XOR_EXPR) != tcc_comparison
10667 : || types_match (type, TREE_TYPE (captures[3]))
10668 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10669 : || (optimize_vectors_before_lowering_p ()
10670 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10671 : )
10672 : {
10673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1244;
10674 0 : {
10675 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1244;
10676 0 : tree res_op0;
10677 0 : res_op0 = captures[2];
10678 0 : tree res_op1;
10679 0 : {
10680 0 : tree _o1[2], _r1;
10681 0 : _o1[0] = unshare_expr (captures[0]);
10682 0 : _o1[1] = captures[3];
10683 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
10684 0 : if (EXPR_P (_r1))
10685 0 : goto next_after_fail1244;
10686 0 : res_op1 = _r1;
10687 : }
10688 0 : tree res_op2;
10689 0 : {
10690 0 : tree _o1[2], _r1;
10691 0 : _o1[0] = captures[0];
10692 0 : _o1[1] = captures[4];
10693 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, type, _o1[0], _o1[1]);
10694 0 : if (EXPR_P (_r1))
10695 0 : goto next_after_fail1244;
10696 0 : res_op2 = _r1;
10697 : }
10698 0 : tree _r;
10699 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10700 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
10701 0 : return _r;
10702 : }
10703 0 : next_after_fail1244:;
10704 : }
10705 : }
10706 0 : break;
10707 : }
10708 948783 : default:;
10709 : }
10710 948783 : switch (TREE_CODE (_p0))
10711 : {
10712 90 : case LT_EXPR:
10713 90 : {
10714 90 : tree _q20 = TREE_OPERAND (_p0, 0);
10715 90 : tree _q21 = TREE_OPERAND (_p0, 1);
10716 90 : if (integer_truep (_p1))
10717 : {
10718 14 : {
10719 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10720 14 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
10721 14 : if (res) return res;
10722 : }
10723 : }
10724 76 : if (integer_zerop (_q21))
10725 : {
10726 24 : switch (TREE_CODE (_p1))
10727 : {
10728 17 : case LT_EXPR:
10729 17 : {
10730 17 : tree _q50 = TREE_OPERAND (_p1, 0);
10731 17 : tree _q51 = TREE_OPERAND (_p1, 1);
10732 17 : if (integer_zerop (_q51))
10733 : {
10734 17 : {
10735 17 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
10736 17 : tree res = generic_simplify_51 (loc, type, _p0, _p1, captures, LT_EXPR);
10737 17 : if (res) return res;
10738 : }
10739 : }
10740 : break;
10741 : }
10742 0 : case GE_EXPR:
10743 0 : {
10744 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10745 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10746 0 : if (integer_zerop (_q51))
10747 : {
10748 0 : {
10749 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
10750 0 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
10751 0 : if (res) return res;
10752 : }
10753 : }
10754 : break;
10755 : }
10756 : default:;
10757 : }
10758 : }
10759 : break;
10760 : }
10761 85 : case LE_EXPR:
10762 85 : {
10763 85 : tree _q20 = TREE_OPERAND (_p0, 0);
10764 85 : tree _q21 = TREE_OPERAND (_p0, 1);
10765 85 : if (integer_truep (_p1))
10766 : {
10767 15 : {
10768 15 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10769 15 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
10770 15 : if (res) return res;
10771 : }
10772 : }
10773 : break;
10774 : }
10775 119 : case EQ_EXPR:
10776 119 : {
10777 119 : tree _q20 = TREE_OPERAND (_p0, 0);
10778 119 : tree _q21 = TREE_OPERAND (_p0, 1);
10779 119 : if (integer_truep (_p1))
10780 : {
10781 14 : {
10782 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10783 14 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
10784 14 : if (res) return res;
10785 : }
10786 : }
10787 : break;
10788 : }
10789 113 : case NE_EXPR:
10790 113 : {
10791 113 : tree _q20 = TREE_OPERAND (_p0, 0);
10792 113 : tree _q21 = TREE_OPERAND (_p0, 1);
10793 113 : if (integer_truep (_p1))
10794 : {
10795 7 : {
10796 7 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10797 7 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
10798 7 : if (res) return res;
10799 : }
10800 : }
10801 : break;
10802 : }
10803 62 : case GE_EXPR:
10804 62 : {
10805 62 : tree _q20 = TREE_OPERAND (_p0, 0);
10806 62 : tree _q21 = TREE_OPERAND (_p0, 1);
10807 62 : if (integer_truep (_p1))
10808 : {
10809 0 : {
10810 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10811 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
10812 0 : if (res) return res;
10813 : }
10814 : }
10815 62 : if (integer_zerop (_q21))
10816 : {
10817 26 : switch (TREE_CODE (_p1))
10818 : {
10819 1 : case GE_EXPR:
10820 1 : {
10821 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10822 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10823 1 : if (integer_zerop (_q51))
10824 : {
10825 1 : {
10826 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q50 };
10827 1 : tree res = generic_simplify_51 (loc, type, _p0, _p1, captures, GE_EXPR);
10828 1 : if (res) return res;
10829 : }
10830 : }
10831 : break;
10832 : }
10833 5 : case LT_EXPR:
10834 5 : {
10835 5 : tree _q50 = TREE_OPERAND (_p1, 0);
10836 5 : tree _q51 = TREE_OPERAND (_p1, 1);
10837 5 : if (integer_zerop (_q51))
10838 : {
10839 5 : {
10840 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _p0, _q20 };
10841 5 : tree res = generic_simplify_52 (loc, type, _p0, _p1, captures);
10842 5 : if (res) return res;
10843 : }
10844 : }
10845 : break;
10846 : }
10847 : default:;
10848 : }
10849 : }
10850 : break;
10851 : }
10852 100 : case GT_EXPR:
10853 100 : {
10854 100 : tree _q20 = TREE_OPERAND (_p0, 0);
10855 100 : tree _q21 = TREE_OPERAND (_p0, 1);
10856 100 : if (integer_truep (_p1))
10857 : {
10858 14 : {
10859 14 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10860 14 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
10861 14 : if (res) return res;
10862 : }
10863 : }
10864 : break;
10865 : }
10866 0 : case UNORDERED_EXPR:
10867 0 : {
10868 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10869 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10870 0 : if (integer_truep (_p1))
10871 : {
10872 0 : {
10873 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10874 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
10875 0 : if (res) return res;
10876 : }
10877 : }
10878 : break;
10879 : }
10880 0 : case ORDERED_EXPR:
10881 0 : {
10882 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10883 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10884 0 : if (integer_truep (_p1))
10885 : {
10886 0 : {
10887 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10888 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
10889 0 : if (res) return res;
10890 : }
10891 : }
10892 : break;
10893 : }
10894 0 : case UNLT_EXPR:
10895 0 : {
10896 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10897 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10898 0 : if (integer_truep (_p1))
10899 : {
10900 0 : {
10901 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10902 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
10903 0 : if (res) return res;
10904 : }
10905 : }
10906 : break;
10907 : }
10908 0 : case UNLE_EXPR:
10909 0 : {
10910 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10911 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10912 0 : if (integer_truep (_p1))
10913 : {
10914 0 : {
10915 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10916 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
10917 0 : if (res) return res;
10918 : }
10919 : }
10920 : break;
10921 : }
10922 0 : case UNGT_EXPR:
10923 0 : {
10924 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10925 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10926 0 : if (integer_truep (_p1))
10927 : {
10928 0 : {
10929 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10930 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
10931 0 : if (res) return res;
10932 : }
10933 : }
10934 : break;
10935 : }
10936 0 : case UNGE_EXPR:
10937 0 : {
10938 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10939 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10940 0 : if (integer_truep (_p1))
10941 : {
10942 0 : {
10943 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10944 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
10945 0 : if (res) return res;
10946 : }
10947 : }
10948 : break;
10949 : }
10950 0 : case UNEQ_EXPR:
10951 0 : {
10952 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10953 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10954 0 : if (integer_truep (_p1))
10955 : {
10956 0 : {
10957 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10958 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
10959 0 : if (res) return res;
10960 : }
10961 : }
10962 : break;
10963 : }
10964 0 : case LTGT_EXPR:
10965 0 : {
10966 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10967 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10968 0 : if (integer_truep (_p1))
10969 : {
10970 0 : {
10971 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10972 0 : tree res = generic_simplify_50 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
10973 0 : if (res) return res;
10974 : }
10975 : }
10976 : break;
10977 : }
10978 7 : case VEC_PERM_EXPR:
10979 7 : {
10980 7 : tree _q20 = TREE_OPERAND (_p0, 0);
10981 7 : tree _q21 = TREE_OPERAND (_p0, 1);
10982 7 : tree _q22 = TREE_OPERAND (_p0, 2);
10983 7 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
10984 : {
10985 0 : switch (TREE_CODE (_p1))
10986 : {
10987 0 : case VEC_PERM_EXPR:
10988 0 : {
10989 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10990 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10991 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10992 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
10993 : {
10994 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
10995 : {
10996 0 : {
10997 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
10998 0 : if (VECTOR_INTEGER_TYPE_P (type)
10999 : )
11000 : {
11001 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1245;
11002 0 : {
11003 0 : tree res_op0;
11004 0 : {
11005 0 : tree _o1[2], _r1;
11006 0 : _o1[0] = captures[0];
11007 0 : _o1[1] = captures[2];
11008 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11009 0 : captures[3] = _r1;
11010 : }
11011 0 : res_op0 = unshare_expr (captures[3]);
11012 0 : tree res_op1;
11013 0 : res_op1 = captures[3];
11014 0 : tree res_op2;
11015 0 : res_op2 = captures[1];
11016 0 : tree _r;
11017 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
11018 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
11019 0 : return _r;
11020 : }
11021 0 : next_after_fail1245:;
11022 : }
11023 : }
11024 : }
11025 : }
11026 : break;
11027 : }
11028 : default:;
11029 : }
11030 : }
11031 : break;
11032 : }
11033 3289 : case CALL_EXPR:
11034 3289 : switch (get_call_combined_fn (_p0))
11035 : {
11036 1 : case CFN_PARITY:
11037 1 : if (call_expr_nargs (_p0) == 1)
11038 : {
11039 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11040 1 : switch (TREE_CODE (_p1))
11041 : {
11042 1 : case CALL_EXPR:
11043 1 : switch (get_call_combined_fn (_p1))
11044 : {
11045 1 : case CFN_PARITY:
11046 1 : if (call_expr_nargs (_p1) == 1)
11047 : {
11048 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11049 1 : {
11050 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11051 1 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, CFN_PARITY);
11052 1 : if (res) return res;
11053 : }
11054 : }
11055 : break;
11056 : default:;
11057 : }
11058 : break;
11059 : default:;
11060 : }
11061 : }
11062 : break;
11063 1 : case CFN_BUILT_IN_PARITYL:
11064 1 : if (call_expr_nargs (_p0) == 1)
11065 : {
11066 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11067 1 : switch (TREE_CODE (_p1))
11068 : {
11069 1 : case CALL_EXPR:
11070 1 : switch (get_call_combined_fn (_p1))
11071 : {
11072 1 : case CFN_BUILT_IN_PARITYL:
11073 1 : if (call_expr_nargs (_p1) == 1)
11074 : {
11075 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11076 1 : {
11077 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11078 1 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_PARITYL);
11079 1 : if (res) return res;
11080 : }
11081 : }
11082 : break;
11083 : default:;
11084 : }
11085 : break;
11086 : default:;
11087 : }
11088 : }
11089 : break;
11090 0 : case CFN_BUILT_IN_PARITYIMAX:
11091 0 : if (call_expr_nargs (_p0) == 1)
11092 : {
11093 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11094 0 : switch (TREE_CODE (_p1))
11095 : {
11096 0 : case CALL_EXPR:
11097 0 : switch (get_call_combined_fn (_p1))
11098 : {
11099 0 : case CFN_BUILT_IN_PARITYIMAX:
11100 0 : if (call_expr_nargs (_p1) == 1)
11101 : {
11102 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11103 0 : {
11104 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11105 0 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_PARITYIMAX);
11106 0 : if (res) return res;
11107 : }
11108 : }
11109 : break;
11110 : default:;
11111 : }
11112 : break;
11113 : default:;
11114 : }
11115 : }
11116 : break;
11117 1 : case CFN_BUILT_IN_PARITY:
11118 1 : if (call_expr_nargs (_p0) == 1)
11119 : {
11120 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11121 1 : switch (TREE_CODE (_p1))
11122 : {
11123 1 : case CALL_EXPR:
11124 1 : switch (get_call_combined_fn (_p1))
11125 : {
11126 1 : case CFN_BUILT_IN_PARITY:
11127 1 : if (call_expr_nargs (_p1) == 1)
11128 : {
11129 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11130 1 : {
11131 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11132 1 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_PARITY);
11133 1 : if (res) return res;
11134 : }
11135 : }
11136 : break;
11137 : default:;
11138 : }
11139 : break;
11140 : default:;
11141 : }
11142 : }
11143 : break;
11144 8 : case CFN_BUILT_IN_PARITYLL:
11145 8 : if (call_expr_nargs (_p0) == 1)
11146 : {
11147 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11148 8 : switch (TREE_CODE (_p1))
11149 : {
11150 8 : case CALL_EXPR:
11151 8 : switch (get_call_combined_fn (_p1))
11152 : {
11153 8 : case CFN_BUILT_IN_PARITYLL:
11154 8 : if (call_expr_nargs (_p1) == 1)
11155 : {
11156 8 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11157 8 : {
11158 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11159 8 : tree res = generic_simplify_53 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_PARITYLL);
11160 8 : if (res) return res;
11161 : }
11162 : }
11163 : break;
11164 : default:;
11165 : }
11166 : break;
11167 : default:;
11168 : }
11169 : }
11170 : break;
11171 : default:;
11172 : }
11173 : break;
11174 : default:;
11175 : }
11176 : return NULL_TREE;
11177 : }
11178 :
11179 : tree
11180 920902 : generic_simplify_BIT_FIELD_REF (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11181 : {
11182 920902 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11183 920902 : switch (TREE_CODE (_p0))
11184 : {
11185 16 : case BIT_FIELD_REF:
11186 16 : {
11187 16 : tree _q20 = TREE_OPERAND (_p0, 0);
11188 16 : tree _q21 = TREE_OPERAND (_p0, 1);
11189 16 : tree _q22 = TREE_OPERAND (_p0, 2);
11190 16 : {
11191 16 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
11192 16 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1976;
11193 16 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1976;
11194 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1976;
11195 16 : {
11196 16 : tree res_op0;
11197 16 : res_op0 = captures[0];
11198 16 : tree res_op1;
11199 16 : res_op1 = captures[3];
11200 16 : tree res_op2;
11201 16 : res_op2 = const_binop (PLUS_EXPR, bitsizetype, captures[2], captures[4]);
11202 16 : tree _r;
11203 16 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11204 16 : if (TREE_SIDE_EFFECTS (captures[1]))
11205 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11206 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1088, __FILE__, __LINE__, true);
11207 16 : return _r;
11208 : }
11209 0 : next_after_fail1976:;
11210 : }
11211 0 : break;
11212 : }
11213 3 : case VIEW_CONVERT_EXPR:
11214 3 : {
11215 3 : tree _q20 = TREE_OPERAND (_p0, 0);
11216 3 : {
11217 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
11218 6 : if (! INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11219 6 : || type_has_mode_precision_p (TREE_TYPE (captures[0]))
11220 : )
11221 : {
11222 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1977;
11223 0 : {
11224 0 : tree res_op0;
11225 0 : res_op0 = captures[0];
11226 0 : tree res_op1;
11227 0 : res_op1 = captures[1];
11228 0 : tree res_op2;
11229 0 : res_op2 = captures[2];
11230 0 : tree _r;
11231 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11232 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1089, __FILE__, __LINE__, true);
11233 0 : return _r;
11234 : }
11235 0 : next_after_fail1977:;
11236 : }
11237 : }
11238 3 : break;
11239 : }
11240 920886 : default:;
11241 : }
11242 920886 : if (integer_zerop (_p2))
11243 : {
11244 301618 : {
11245 301618 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11246 301618 : if (tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (captures[0])))
11247 : )
11248 : {
11249 2665 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1978;
11250 2665 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1978;
11251 2665 : {
11252 2665 : tree res_op0;
11253 2665 : res_op0 = captures[0];
11254 2665 : tree _r;
11255 2665 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11256 2665 : if (TREE_SIDE_EFFECTS (captures[1]))
11257 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11258 2665 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1090, __FILE__, __LINE__, true);
11259 2665 : return _r;
11260 : }
11261 298953 : next_after_fail1978:;
11262 : }
11263 : }
11264 : }
11265 918221 : {
11266 918221 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11267 918221 : if (TREE_CODE (TREE_TYPE (captures[0])) == COMPLEX_TYPE
11268 918221 : && tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11269 : )
11270 : {
11271 2 : if (integer_zerop (captures[2])
11272 : )
11273 : {
11274 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1979;
11275 0 : {
11276 0 : tree res_op0;
11277 0 : {
11278 0 : tree _o1[1], _r1;
11279 0 : _o1[0] = captures[0];
11280 0 : _r1 = fold_build1_loc (loc, REALPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11281 0 : res_op0 = _r1;
11282 : }
11283 0 : tree _r;
11284 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11285 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11286 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11287 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11288 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11289 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1091, __FILE__, __LINE__, true);
11290 0 : return _r;
11291 : }
11292 0 : next_after_fail1979:;
11293 : }
11294 : else
11295 : {
11296 2 : if (tree_int_cst_equal (captures[2], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))
11297 : )
11298 : {
11299 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1980;
11300 0 : {
11301 0 : tree res_op0;
11302 0 : {
11303 0 : tree _o1[1], _r1;
11304 0 : _o1[0] = captures[0];
11305 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
11306 0 : res_op0 = _r1;
11307 : }
11308 0 : tree _r;
11309 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11310 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11311 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11312 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11313 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1092, __FILE__, __LINE__, true);
11315 0 : return _r;
11316 : }
11317 0 : next_after_fail1980:;
11318 : }
11319 : }
11320 : }
11321 : else
11322 : {
11323 1836376 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
11324 20625 : && INTEGRAL_TYPE_P (type)
11325 : && (!
11326 :
11327 : || is_gimple_reg (captures[0]))
11328 937877 : && ((compare_tree_int (captures[1], TYPE_PRECISION (TREE_TYPE (captures[0]))) == 0
11329 0 : && integer_zerop (captures[2]))
11330 : || (BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN
11331 : && canonicalize_math_after_vectorization_p ()
11332 : && TYPE_PRECISION (TREE_TYPE (captures[0])) % BITS_PER_UNIT == 0
11333 : && TYPE_PRECISION (type) % BITS_PER_UNIT == 0
11334 : && compare_tree_int (captures[2], (BYTES_BIG_ENDIAN
11335 : ? (TYPE_PRECISION (TREE_TYPE (captures[0]))
11336 : - TYPE_PRECISION (type))
11337 : : 0)) == 0))
11338 : )
11339 : {
11340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1981;
11341 0 : {
11342 0 : tree res_op0;
11343 0 : res_op0 = captures[0];
11344 0 : tree _r;
11345 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
11346 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11347 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11348 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11349 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11350 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1093, __FILE__, __LINE__, true);
11351 0 : return _r;
11352 : }
11353 0 : next_after_fail1981:;
11354 : }
11355 : }
11356 : }
11357 918221 : switch (TREE_CODE (_p0))
11358 : {
11359 2289 : case CONSTRUCTOR:
11360 2289 : {
11361 2289 : {
11362 2289 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
11363 2289 : if (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
11364 2289 : && tree_fits_uhwi_p (TYPE_SIZE (type))
11365 4578 : && ((tree_to_uhwi (TYPE_SIZE (type))
11366 2289 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))
11367 0 : || (VECTOR_TYPE_P (type)
11368 0 : && (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (type)))
11369 0 : == tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0])))))))
11370 : )
11371 : {
11372 2289 : {
11373 2289 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
11374 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
11375 2289 : tree eltype = TREE_TYPE (TREE_TYPE (ctor));
11376 2289 : unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype));
11377 2289 : unsigned HOST_WIDE_INT n = tree_to_uhwi (captures[1]);
11378 2289 : unsigned HOST_WIDE_INT idx = tree_to_uhwi (captures[2]);
11379 2289 : if (n != 0
11380 2289 : && (idx % width) == 0
11381 2289 : && (n % width) == 0
11382 4578 : && known_le ((idx + n) / width,
11383 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (ctor)))
11384 : )
11385 : {
11386 2289 : {
11387 2289 : idx = idx / width;
11388 2289 : n = n / width;
11389 2289 : poly_uint64 k = 1;
11390 2289 : if (CONSTRUCTOR_NELTS (ctor) != 0)
11391 : {
11392 2289 : tree cons_elem = TREE_TYPE (CONSTRUCTOR_ELT (ctor, 0)->value);
11393 2289 : if (TREE_CODE (cons_elem) == VECTOR_TYPE)
11394 2289 : k = TYPE_VECTOR_SUBPARTS (cons_elem);
11395 : }
11396 2289 : unsigned HOST_WIDE_INT elt, count, const_k;
11397 2289 : if (multiple_p (idx, k, &elt) && multiple_p (n, k, &count)
11398 : )
11399 : {
11400 12 : if (CONSTRUCTOR_NELTS (ctor) == 0
11401 : )
11402 : {
11403 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1982;
11404 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1982;
11405 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1982;
11406 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1982;
11407 0 : {
11408 0 : tree _r;
11409 0 : _r = build_zero_cst (type);
11410 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1094, __FILE__, __LINE__, true);
11411 2289 : return _r;
11412 : }
11413 : next_after_fail1982:;
11414 : }
11415 : else
11416 : {
11417 12 : if (count == 1
11418 : )
11419 : {
11420 12 : if (elt < CONSTRUCTOR_NELTS (ctor)
11421 : )
11422 : {
11423 12 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1983;
11424 12 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1983;
11425 12 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1983;
11426 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1983;
11427 12 : {
11428 12 : tree res_op0;
11429 12 : res_op0 = CONSTRUCTOR_ELT (ctor, elt)->value;
11430 12 : tree _r;
11431 12 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11432 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1095, __FILE__, __LINE__, true);
11433 12 : return _r;
11434 : }
11435 : next_after_fail1983:;
11436 : }
11437 : else
11438 : {
11439 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1984;
11440 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1984;
11441 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1984;
11442 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1984;
11443 0 : {
11444 0 : tree _r;
11445 0 : _r = build_zero_cst (type);
11446 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1096, __FILE__, __LINE__, true);
11447 0 : return _r;
11448 : }
11449 : next_after_fail1984:;
11450 : }
11451 : }
11452 : else
11453 : {
11454 0 : if (single_use (captures[0])
11455 : )
11456 : {
11457 0 : {
11458 0 : vec<constructor_elt, va_gc> *vals;
11459 0 : vec_alloc (vals, count);
11460 0 : bool constant_p = true;
11461 0 : tree res;
11462 0 : for (unsigned i = 0;
11463 0 : i < count && elt + i < CONSTRUCTOR_NELTS (ctor); ++i)
11464 : {
11465 0 : tree e = CONSTRUCTOR_ELT (ctor, elt + i)->value;
11466 0 : CONSTRUCTOR_APPEND_ELT (vals, NULL_TREE, e);
11467 0 : if (!CONSTANT_CLASS_P (e))
11468 0 : constant_p = false;
11469 : }
11470 0 : tree evtype = (types_match (TREE_TYPE (type),
11471 0 : TREE_TYPE (TREE_TYPE (ctor)))
11472 0 : ? type
11473 0 : : build_vector_type (TREE_TYPE (TREE_TYPE (ctor)),
11474 0 : count * k));
11475 0 : res = (constant_p ? build_vector_from_ctor (evtype, vals)
11476 : : (
11477 :
11478 0 : ? NULL_TREE : build_constructor (evtype, vals)));
11479 0 : if (res
11480 : )
11481 : {
11482 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1985;
11483 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1985;
11484 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1985;
11485 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1985;
11486 0 : {
11487 0 : tree res_op0;
11488 0 : res_op0 = res;
11489 0 : tree _r;
11490 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11491 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1097, __FILE__, __LINE__, true);
11492 0 : return _r;
11493 : }
11494 0 : next_after_fail1985:;
11495 : }
11496 : }
11497 : }
11498 : }
11499 : }
11500 : }
11501 : else
11502 : {
11503 2277 : if (k.is_constant (&const_k)
11504 2277 : && idx + n <= (idx / const_k + 1) * const_k
11505 : )
11506 : {
11507 2277 : if (CONSTRUCTOR_NELTS (ctor) <= idx / const_k
11508 : )
11509 : {
11510 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1986;
11511 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1986;
11512 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1986;
11513 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1986;
11514 0 : {
11515 0 : tree _r;
11516 0 : _r = build_zero_cst (type);
11517 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1098, __FILE__, __LINE__, true);
11518 0 : return _r;
11519 : }
11520 : next_after_fail1986:;
11521 : }
11522 : else
11523 : {
11524 2277 : if (n == const_k
11525 : )
11526 : {
11527 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1987;
11528 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1987;
11529 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1987;
11530 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1987;
11531 0 : {
11532 0 : tree res_op0;
11533 0 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
11534 0 : tree _r;
11535 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
11536 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1099, __FILE__, __LINE__, true);
11537 0 : return _r;
11538 : }
11539 : next_after_fail1987:;
11540 : }
11541 : else
11542 : {
11543 2277 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1988;
11544 2277 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1988;
11545 2277 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1988;
11546 2277 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1988;
11547 2277 : {
11548 2277 : tree res_op0;
11549 2277 : res_op0 = CONSTRUCTOR_ELT (ctor, idx / const_k)->value;
11550 2277 : tree res_op1;
11551 2277 : res_op1 = captures[1];
11552 2277 : tree res_op2;
11553 2277 : res_op2 = bitsize_int ((idx % const_k) * width);
11554 2277 : tree _r;
11555 2277 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11556 2277 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1100, __FILE__, __LINE__, true);
11557 2277 : return _r;
11558 : }
11559 : next_after_fail1988:;
11560 : }
11561 : }
11562 : }
11563 : }
11564 : }
11565 : }
11566 : }
11567 : }
11568 : }
11569 0 : break;
11570 : }
11571 0 : case VEC_PERM_EXPR:
11572 0 : {
11573 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11574 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11575 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11576 0 : switch (TREE_CODE (_q22))
11577 : {
11578 0 : case VECTOR_CST:
11579 0 : {
11580 0 : {
11581 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
11582 0 : {
11583 0 : tree elem_type = TREE_TYPE (TREE_TYPE (captures[0]));
11584 0 : poly_uint64 elem_size = tree_to_poly_uint64 (TYPE_SIZE (elem_type));
11585 0 : poly_uint64 size = tree_to_poly_uint64 (TYPE_SIZE (type));
11586 0 : unsigned HOST_WIDE_INT nelts, idx;
11587 0 : unsigned HOST_WIDE_INT nelts_op = 0;
11588 0 : if (constant_multiple_p (tree_to_poly_uint64 (captures[5]), elem_size, &idx)
11589 0 : && VECTOR_CST_NELTS (captures[3]).is_constant (&nelts)
11590 0 : && (known_eq (size, elem_size)
11591 0 : || (constant_multiple_p (size, elem_size, &nelts_op)
11592 0 : && pow2p_hwi (nelts_op)))
11593 : )
11594 : {
11595 0 : {
11596 0 : bool ok = true;
11597 0 : if (known_eq (size, elem_size))
11598 0 : idx = TREE_INT_CST_LOW (VECTOR_CST_ELT (captures[3], idx)) % (2 * nelts);
11599 : else
11600 : {
11601 0 : unsigned start
11602 0 : = TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx)) % (2 * nelts);
11603 0 : unsigned end
11604 0 : = (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + nelts_op - 1))
11605 0 : % (2 * nelts));
11606 0 : if ((start < nelts) != (end < nelts))
11607 : ok = false;
11608 : else
11609 0 : for (unsigned HOST_WIDE_INT i = 1; i != nelts_op; i++)
11610 : {
11611 0 : if ((TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i))
11612 0 : % (2 * nelts) - 1)
11613 0 : != (TREE_INT_CST_LOW (vector_cst_elt (captures[3], idx + i - 1))
11614 0 : % (2 * nelts)))
11615 : {
11616 : ok = false;
11617 : break;
11618 : }
11619 : }
11620 0 : if (start % nelts_op)
11621 : ok = false;
11622 0 : idx = start;
11623 : }
11624 0 : if (ok
11625 : )
11626 : {
11627 0 : if (idx < nelts
11628 : )
11629 : {
11630 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1989;
11631 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1989;
11632 0 : {
11633 0 : tree res_op0;
11634 0 : res_op0 = captures[1];
11635 0 : tree res_op1;
11636 0 : res_op1 = captures[4];
11637 0 : tree res_op2;
11638 0 : res_op2 = bitsize_int (idx * elem_size);
11639 0 : tree _r;
11640 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11641 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11642 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11643 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11644 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11645 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1101, __FILE__, __LINE__, true);
11646 0 : return _r;
11647 : }
11648 0 : next_after_fail1989:;
11649 : }
11650 : else
11651 : {
11652 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1990;
11653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1990;
11654 0 : {
11655 0 : tree res_op0;
11656 0 : res_op0 = captures[2];
11657 0 : tree res_op1;
11658 0 : res_op1 = captures[4];
11659 0 : tree res_op2;
11660 0 : res_op2 = bitsize_int ((idx - nelts) * elem_size);
11661 0 : tree _r;
11662 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11663 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11664 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11665 0 : if (TREE_SIDE_EFFECTS (captures[5]))
11666 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
11667 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1102, __FILE__, __LINE__, true);
11668 0 : return _r;
11669 : }
11670 0 : next_after_fail1990:;
11671 : }
11672 : }
11673 : }
11674 : }
11675 : }
11676 : }
11677 0 : break;
11678 : }
11679 : default:;
11680 : }
11681 : break;
11682 : }
11683 0 : case BIT_INSERT_EXPR:
11684 0 : {
11685 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11686 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11687 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11688 0 : {
11689 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _p1, _p2 };
11690 0 : {
11691 0 : unsigned HOST_WIDE_INT isize;
11692 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])))
11693 0 : isize = TYPE_PRECISION (TREE_TYPE (captures[1]));
11694 : else
11695 0 : isize = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (captures[1])));
11696 0 : if ((!INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
11697 0 : || type_has_mode_precision_p (TREE_TYPE (captures[1])))
11698 0 : && wi::leu_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
11699 0 : && wi::leu_p (wi::to_wide (captures[4]) + wi::to_wide (captures[3]),
11700 0 : wi::to_wide (captures[2]) + isize)
11701 : )
11702 : {
11703 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1991;
11704 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1991;
11705 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1991;
11706 0 : {
11707 0 : tree res_op0;
11708 0 : res_op0 = captures[1];
11709 0 : tree res_op1;
11710 0 : res_op1 = captures[3];
11711 0 : tree res_op2;
11712 0 : res_op2 = wide_int_to_tree (bitsizetype,
11713 0 : wi::to_wide (captures[4])
11714 0 : - wi::to_wide (captures[2]));
11715 0 : tree _r;
11716 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11717 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11718 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11719 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1103, __FILE__, __LINE__, true);
11720 0 : return _r;
11721 : }
11722 0 : next_after_fail1991:;
11723 : }
11724 : else
11725 : {
11726 0 : if (wi::eq_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]))
11727 0 : && compare_tree_int (captures[3], isize) == 0
11728 : )
11729 : {
11730 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1992;
11731 0 : {
11732 0 : tree res_op0;
11733 0 : res_op0 = captures[1];
11734 0 : tree _r;
11735 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
11736 0 : if (TREE_SIDE_EFFECTS (captures[0]))
11737 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
11738 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11739 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11740 0 : if (TREE_SIDE_EFFECTS (captures[3]))
11741 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
11742 0 : if (TREE_SIDE_EFFECTS (captures[4]))
11743 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
11744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1104, __FILE__, __LINE__, true);
11745 0 : return _r;
11746 : }
11747 0 : next_after_fail1992:;
11748 : }
11749 : else
11750 : {
11751 0 : if (wi::geu_p (wi::to_wide (captures[2]),
11752 0 : wi::to_wide (captures[4]) + wi::to_wide (captures[3]))
11753 0 : || wi::geu_p (wi::to_wide (captures[4]),
11754 0 : wi::to_wide (captures[2]) + isize)
11755 : )
11756 : {
11757 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1993;
11758 0 : {
11759 0 : tree res_op0;
11760 0 : res_op0 = captures[0];
11761 0 : tree res_op1;
11762 0 : res_op1 = captures[3];
11763 0 : tree res_op2;
11764 0 : res_op2 = captures[4];
11765 0 : tree _r;
11766 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
11767 0 : if (TREE_SIDE_EFFECTS (captures[1]))
11768 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
11769 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11770 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11771 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1105, __FILE__, __LINE__, true);
11772 0 : return _r;
11773 : }
11774 0 : next_after_fail1993:;
11775 : }
11776 : }
11777 : }
11778 : }
11779 : }
11780 0 : break;
11781 : }
11782 : default:;
11783 : }
11784 : return NULL_TREE;
11785 : }
11786 : #pragma GCC diagnostic pop
|