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 1942719 : tree_power_of_two_cand (tree t, tree *res_ops)
11 : {
12 1942719 : const tree type = TREE_TYPE (t);
13 1942719 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1942719 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1941953 : switch (TREE_CODE (t))
16 : {
17 1598657 : case INTEGER_CST:
18 1598657 : {
19 1598657 : {
20 1598657 : tree captures[1] ATTRIBUTE_UNUSED = { t };
21 1598657 : {
22 1598657 : res_ops[0] = captures[0];
23 1598657 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 12, __FILE__, __LINE__, false);
24 : return true;
25 : }
26 : }
27 16 : break;
28 : }
29 16 : case LSHIFT_EXPR:
30 16 : {
31 16 : tree _p0 = TREE_OPERAND (t, 0);
32 16 : tree _p1 = TREE_OPERAND (t, 1);
33 16 : switch (TREE_CODE (_p0))
34 : {
35 16 : case INTEGER_CST:
36 16 : {
37 16 : {
38 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
39 16 : {
40 16 : res_ops[0] = captures[0];
41 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 13, __FILE__, __LINE__, false);
42 : return true;
43 : }
44 : }
45 : break;
46 : }
47 : default:;
48 : }
49 : break;
50 : }
51 : default:;
52 : }
53 : return false;
54 : }
55 :
56 : bool
57 85469610 : tree_with_possible_nonzero_bits (tree t)
58 : {
59 85469610 : const tree type = TREE_TYPE (t);
60 85469610 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
61 85469610 : if (TREE_SIDE_EFFECTS (t)) return false;
62 80184959 : switch (TREE_CODE (t))
63 : {
64 2066817 : case BIT_AND_EXPR:
65 2066817 : {
66 2066817 : tree _p0 = TREE_OPERAND (t, 0);
67 2066817 : tree _p1 = TREE_OPERAND (t, 1);
68 2066817 : if (tree_with_possible_nonzero_bits_1 (_p0))
69 : {
70 891600 : {
71 891600 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
72 891600 : {
73 891600 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
74 : return true;
75 : }
76 : }
77 : }
78 1175217 : if (tree_with_possible_nonzero_bits_1 (_p1))
79 : {
80 1012071 : {
81 1012071 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
82 1012071 : {
83 1012071 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 35, __FILE__, __LINE__, false);
84 : return true;
85 : }
86 : }
87 : }
88 : break;
89 : }
90 78281288 : default:;
91 : }
92 78281288 : if (tree_with_possible_nonzero_bits_1 (t))
93 : {
94 41886745 : {
95 41886745 : tree captures[1] ATTRIBUTE_UNUSED = { t };
96 41886745 : {
97 41886745 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 36, __FILE__, __LINE__, false);
98 : return true;
99 : }
100 : }
101 : }
102 : return false;
103 : }
104 :
105 : bool
106 783570 : tree_vec_same_elem_p (tree t)
107 : {
108 783570 : const tree type = TREE_TYPE (t);
109 783570 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
110 783570 : if (TREE_SIDE_EFFECTS (t)) return false;
111 783570 : switch (TREE_CODE (t))
112 : {
113 0 : case VEC_DUPLICATE_EXPR:
114 0 : {
115 0 : tree _p0 = TREE_OPERAND (t, 0);
116 0 : {
117 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
118 0 : {
119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 46, __FILE__, __LINE__, false);
120 : return true;
121 : }
122 : }
123 : break;
124 : }
125 : case CONSTRUCTOR:
126 : {
127 : {
128 : tree captures[1] ATTRIBUTE_UNUSED = { t };
129 : if (TREE_CODE (captures[0]) == SSA_NAME
130 : && uniform_vector_p (gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])))
131 : )
132 : {
133 : {
134 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 47, __FILE__, __LINE__, false);
135 : return true;
136 : }
137 : }
138 : }
139 : break;
140 : }
141 783570 : default:;
142 : }
143 783570 : {
144 783570 : tree captures[1] ATTRIBUTE_UNUSED = { t };
145 783570 : if (uniform_vector_p (captures[0])
146 : )
147 : {
148 13971 : {
149 13971 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 48, __FILE__, __LINE__, false);
150 783570 : return true;
151 : }
152 : }
153 : }
154 : return false;
155 : }
156 :
157 : tree
158 1 : generic_simplify_14 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
160 : {
161 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
162 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail88;
163 1 : {
164 1 : tree res_op0;
165 1 : res_op0 = captures[0];
166 1 : tree _r;
167 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
168 1 : if (TREE_SIDE_EFFECTS (captures[1]))
169 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
170 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 63, __FILE__, __LINE__, true);
171 : return _r;
172 : }
173 0 : next_after_fail88:;
174 0 : return NULL_TREE;
175 : }
176 :
177 : tree
178 0 : generic_simplify_20 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
179 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
180 : const enum tree_code ARG_UNUSED (op))
181 : {
182 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
183 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail94;
184 0 : {
185 0 : tree res_op0;
186 0 : res_op0 = captures[0];
187 0 : tree res_op1;
188 0 : res_op1 = captures[1];
189 0 : tree _r;
190 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
191 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 69, __FILE__, __LINE__, true);
192 : return _r;
193 : }
194 0 : next_after_fail94:;
195 0 : return NULL_TREE;
196 : }
197 :
198 : tree
199 390 : generic_simplify_27 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
200 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
201 : const enum tree_code ARG_UNUSED (op),
202 : const enum tree_code ARG_UNUSED (rop))
203 : {
204 390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
205 390 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
206 390 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
207 : )
208 : {
209 390 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail101;
210 390 : {
211 390 : tree res_op0;
212 390 : {
213 390 : tree _o1[1], _r1;
214 390 : _o1[0] = captures[0];
215 390 : if (TREE_TYPE (_o1[0]) != type)
216 : {
217 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
218 : }
219 : else
220 : _r1 = _o1[0];
221 390 : res_op0 = _r1;
222 : }
223 390 : tree res_op1;
224 390 : {
225 390 : tree _o1[2], _r1;
226 390 : {
227 390 : tree _o2[1], _r2;
228 390 : _o2[0] = captures[1];
229 390 : if (TREE_TYPE (_o2[0]) != type)
230 : {
231 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
232 : }
233 : else
234 : _r2 = _o2[0];
235 390 : _o1[0] = _r2;
236 : }
237 390 : {
238 390 : tree _o2[1], _r2;
239 390 : _o2[0] = captures[2];
240 390 : if (TREE_TYPE (_o2[0]) != type)
241 : {
242 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
243 : }
244 : else
245 : _r2 = _o2[0];
246 390 : _o1[1] = _r2;
247 : }
248 390 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
249 390 : res_op1 = _r1;
250 : }
251 390 : tree _r;
252 390 : _r = fold_build2_loc (loc, rop, type, res_op0, res_op1);
253 390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
254 : return _r;
255 : }
256 0 : next_after_fail101:;
257 : }
258 : return NULL_TREE;
259 : }
260 :
261 : tree
262 0 : generic_simplify_37 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
263 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
264 : const enum tree_code ARG_UNUSED (op))
265 : {
266 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
267 0 : if (INTEGRAL_TYPE_P (type)
268 0 : && tree_int_cst_sgn (captures[5]) > 0
269 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
270 : )
271 : {
272 0 : {
273 0 : tree t = type;
274 0 : if (!TYPE_OVERFLOW_WRAPS (t))
275 0 : t = unsigned_type_for (t);
276 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
277 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
278 0 : wi::lshift (wone, wi::to_wide (captures[5])));
279 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail113;
280 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail113;
281 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail113;
282 0 : {
283 0 : tree res_op0;
284 0 : {
285 0 : tree _o1[2], _r1;
286 0 : {
287 0 : tree _o2[1], _r2;
288 0 : _o2[0] = captures[2];
289 0 : if (TREE_TYPE (_o2[0]) != t)
290 : {
291 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
292 : }
293 : else
294 : _r2 = _o2[0];
295 0 : _o1[0] = _r2;
296 : }
297 0 : _o1[1] = wide_int_to_tree (t, c);
298 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
299 0 : res_op0 = _r1;
300 : }
301 0 : tree _r;
302 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
303 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 86, __FILE__, __LINE__, true);
304 0 : return _r;
305 : }
306 0 : next_after_fail113:;
307 0 : }
308 : }
309 : return NULL_TREE;
310 : }
311 :
312 : tree
313 18 : generic_simplify_47 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
314 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
315 : const enum tree_code ARG_UNUSED (cmp))
316 : {
317 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
318 36 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
319 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
320 36 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
321 : )
322 : {
323 18 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail125;
324 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail125;
325 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail125;
326 18 : {
327 18 : tree res_op0;
328 18 : {
329 18 : tree _o1[2], _r1;
330 18 : _o1[0] = captures[1];
331 18 : _o1[1] = captures[3];
332 18 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
333 18 : res_op0 = _r1;
334 : }
335 18 : tree res_op1;
336 18 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
337 18 : tree _r;
338 18 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
339 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 95, __FILE__, __LINE__, true);
340 : return _r;
341 : }
342 18 : next_after_fail125:;
343 : }
344 : return NULL_TREE;
345 : }
346 :
347 : tree
348 7 : generic_simplify_56 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
349 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
350 : const enum tree_code ARG_UNUSED (op))
351 : {
352 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
353 7 : if (INTEGRAL_TYPE_P (type)
354 7 : && TYPE_OVERFLOW_WRAPS (type)
355 14 : && !TYPE_SATURATING (type)
356 : )
357 : {
358 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail136;
359 7 : {
360 7 : tree res_op0;
361 7 : {
362 7 : tree _o1[2], _r1;
363 7 : _o1[0] = captures[1];
364 7 : _o1[1] = captures[4];
365 7 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
366 7 : res_op0 = _r1;
367 : }
368 7 : tree res_op1;
369 7 : res_op1 = captures[2];
370 7 : tree _r;
371 7 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
372 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 105, __FILE__, __LINE__, true);
373 : return _r;
374 : }
375 0 : next_after_fail136:;
376 : }
377 : return NULL_TREE;
378 : }
379 :
380 : tree
381 252401 : generic_simplify_65 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
382 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
383 : {
384 252401 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
385 252401 : if (!TYPE_SATURATING (type)
386 : )
387 : {
388 252401 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
389 252401 : && !TYPE_OVERFLOW_SANITIZED (type)
390 : )
391 : {
392 250148 : {
393 250148 : tree t1 = type;
394 250148 : if (INTEGRAL_TYPE_P (type)
395 467560 : && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
396 2364 : t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]);
397 250148 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail145;
398 250148 : {
399 250148 : tree res_op0;
400 250148 : {
401 250148 : tree _o1[2], _r1;
402 250148 : {
403 250148 : tree _o2[1], _r2;
404 250148 : _o2[0] = captures[0];
405 250148 : if (TREE_TYPE (_o2[0]) != t1)
406 : {
407 2112 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
408 : }
409 : else
410 : _r2 = _o2[0];
411 250148 : _o1[0] = _r2;
412 : }
413 250148 : {
414 250148 : tree _o2[1], _r2;
415 250148 : _o2[0] = captures[1];
416 250148 : if (TREE_TYPE (_o2[0]) != t1)
417 : {
418 21556 : _r2 = fold_build1_loc (loc, NOP_EXPR, t1, _o2[0]);
419 : }
420 : else
421 : _r2 = _o2[0];
422 250148 : _o1[1] = _r2;
423 : }
424 250148 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
425 250148 : res_op0 = _r1;
426 : }
427 250148 : tree _r;
428 250148 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
429 250148 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 113, __FILE__, __LINE__, true);
430 : return _r;
431 : }
432 0 : next_after_fail145:;
433 : }
434 : }
435 : }
436 : return NULL_TREE;
437 : }
438 :
439 : tree
440 9 : generic_simplify_78 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
441 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
442 : {
443 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
444 9 : if (INTEGRAL_TYPE_P (type)
445 9 : && (
446 :
447 9 : || !TREE_SIDE_EFFECTS (captures[1]))
448 : )
449 : {
450 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail167;
451 2 : {
452 2 : tree res_op0;
453 2 : {
454 2 : tree _o1[1], _r1;
455 2 : _o1[0] = captures[2];
456 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
457 : {
458 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
459 : }
460 : else
461 : _r1 = _o1[0];
462 2 : res_op0 = _r1;
463 : }
464 2 : tree res_op1;
465 2 : res_op1 = captures[1];
466 2 : tree res_op2;
467 2 : res_op2 = captures[0];
468 2 : tree _r;
469 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
470 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 135, __FILE__, __LINE__, true);
471 : return _r;
472 : }
473 0 : next_after_fail167:;
474 : }
475 : return NULL_TREE;
476 : }
477 :
478 : tree
479 19692 : generic_simplify_83 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
480 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
481 : const enum tree_code ARG_UNUSED (op))
482 : {
483 19692 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
484 19692 : if (flag_unsafe_math_optimizations
485 : )
486 : {
487 137 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail173;
488 137 : {
489 137 : tree res_op0;
490 137 : {
491 137 : tree _o1[2], _r1;
492 137 : _o1[0] = captures[0];
493 137 : _o1[1] = captures[2];
494 137 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
495 137 : res_op0 = _r1;
496 : }
497 137 : tree res_op1;
498 137 : res_op1 = captures[1];
499 137 : tree _r;
500 137 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
501 137 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 141, __FILE__, __LINE__, true);
502 : return _r;
503 : }
504 0 : next_after_fail173:;
505 : }
506 : return NULL_TREE;
507 : }
508 :
509 : tree
510 0 : generic_simplify_90 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
511 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
512 : const enum tree_code ARG_UNUSED (op))
513 : {
514 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
515 0 : if (VECTOR_FLOAT_TYPE_P (type)
516 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
517 : )
518 : {
519 0 : {
520 0 : tree perm_cst = captures[1];
521 0 : vec_perm_builder builder;
522 0 : bool full_perm_p = false;
523 0 : if (tree_to_vec_perm_builder (&builder, perm_cst))
524 : {
525 0 : unsigned HOST_WIDE_INT nelts;
526 0 : nelts = TYPE_VECTOR_SUBPARTS (type).to_constant ();
527 0 : vec_perm_indices sel (builder, 1, nelts);
528 0 : if (sel.encoding ().encoded_full_vector_p ())
529 : {
530 0 : auto_sbitmap seen (nelts);
531 0 : bitmap_clear (seen);
532 0 : unsigned HOST_WIDE_INT count = 0, i;
533 0 : for (i = 0; i < nelts; i++)
534 : {
535 0 : if (!bitmap_set_bit (seen, sel[i].to_constant ()))
536 : break;
537 0 : count++;
538 : }
539 0 : full_perm_p = count == nelts;
540 0 : }
541 0 : }
542 0 : if (full_perm_p
543 : )
544 : {
545 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail180;
546 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail180;
547 0 : {
548 0 : tree res_op0;
549 0 : {
550 0 : tree _o1[2], _r1;
551 0 : _o1[0] = captures[0];
552 0 : _o1[1] = captures[2];
553 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
554 0 : captures[3] = _r1;
555 : }
556 0 : res_op0 = unshare_expr (captures[3]);
557 0 : tree res_op1;
558 0 : res_op1 = captures[3];
559 0 : tree res_op2;
560 0 : res_op2 = captures[1];
561 0 : tree _r;
562 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
563 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 148, __FILE__, __LINE__, true);
564 0 : return _r;
565 : }
566 0 : next_after_fail180:;
567 : }
568 0 : }
569 : }
570 : return NULL_TREE;
571 : }
572 :
573 : tree
574 276 : generic_simplify_102 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
575 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
576 : {
577 276 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
578 276 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
579 276 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
580 : )
581 : {
582 276 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail192;
583 276 : {
584 276 : tree res_op0;
585 276 : {
586 276 : tree _o1[2], _r1;
587 276 : {
588 276 : tree _o2[1], _r2;
589 276 : _o2[0] = captures[3];
590 276 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
591 276 : _o1[0] = _r2;
592 : }
593 276 : _o1[1] = captures[0];
594 276 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
595 276 : res_op0 = _r1;
596 : }
597 276 : tree _r;
598 276 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
599 276 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 159, __FILE__, __LINE__, true);
600 : return _r;
601 : }
602 0 : next_after_fail192:;
603 : }
604 : return NULL_TREE;
605 : }
606 :
607 : tree
608 12247 : generic_simplify_111 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
609 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
610 : {
611 12247 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
612 12247 : if (!TYPE_SATURATING (type)
613 : )
614 : {
615 12247 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
616 24494 : && !FIXED_POINT_TYPE_P (type)
617 : )
618 : {
619 12247 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
620 12247 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
621 3016 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
622 : )
623 : {
624 12127 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail205;
625 12127 : {
626 12127 : tree res_op0;
627 12127 : res_op0 = captures[1];
628 12127 : tree _r;
629 12127 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
630 12127 : if (TREE_SIDE_EFFECTS (captures[2]))
631 15 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
632 12127 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 172, __FILE__, __LINE__, true);
633 : return _r;
634 : }
635 0 : next_after_fail205:;
636 : }
637 : }
638 : }
639 : return NULL_TREE;
640 : }
641 :
642 : tree
643 2 : generic_simplify_116 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
644 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
645 : const combined_fn ARG_UNUSED (logs))
646 : {
647 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
648 2 : if (flag_unsafe_math_optimizations
649 : )
650 : {
651 2 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
652 2 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
653 2 : && ! flag_trapping_math
654 4 : && ! flag_errno_math
655 : )
656 : {
657 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail212;
658 2 : {
659 2 : tree res_op0;
660 2 : {
661 2 : tree _o1[2], _r1;
662 2 : _o1[0] = captures[1];
663 2 : _o1[1] = captures[3];
664 2 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
665 2 : res_op0 = _r1;
666 : }
667 2 : tree _r;
668 2 : _r = maybe_build_call_expr_loc (loc, logs, type, 1, res_op0);
669 2 : if (!_r)
670 0 : goto next_after_fail212;
671 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 179, __FILE__, __LINE__, true);
672 : return _r;
673 : }
674 2 : next_after_fail212:;
675 : }
676 : }
677 : return NULL_TREE;
678 : }
679 :
680 : tree
681 2 : generic_simplify_123 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
682 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
683 : const enum tree_code ARG_UNUSED (bitop),
684 : const enum tree_code ARG_UNUSED (cmp),
685 : const enum tree_code ARG_UNUSED (rcmp))
686 : {
687 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
688 4 : if (integer_pow2p (captures[3]) && integer_pow2p (captures[6])
689 4 : && wi::to_wide (captures[3]) != wi::to_wide (captures[6])
690 : )
691 : {
692 2 : {
693 2 : tree m = wide_int_to_tree (TREE_TYPE (captures[2]),
694 2 : wi::to_wide (captures[3]) | wi::to_wide (captures[6]));
695 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail223;
696 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail223;
697 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail223;
698 2 : {
699 2 : tree res_op0;
700 2 : {
701 2 : tree _o1[2], _r1;
702 2 : _o1[0] = captures[2];
703 2 : _o1[1] = m;
704 2 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
705 2 : res_op0 = _r1;
706 : }
707 2 : tree res_op1;
708 2 : res_op1 = bitop == BIT_AND_EXPR ? captures[3] : captures[6];
709 2 : tree _r;
710 2 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
711 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
712 : return _r;
713 : }
714 2 : next_after_fail223:;
715 : }
716 : }
717 : return NULL_TREE;
718 : }
719 :
720 : tree
721 2 : generic_simplify_133 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
722 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
723 : {
724 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
725 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail233;
726 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail233;
727 2 : {
728 2 : tree res_op0;
729 2 : res_op0 = captures[0];
730 2 : tree res_op1;
731 2 : res_op1 = captures[3];
732 2 : tree _r;
733 2 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
734 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 197, __FILE__, __LINE__, true);
735 : return _r;
736 : }
737 2 : next_after_fail233:;
738 : return NULL_TREE;
739 : }
740 :
741 : tree
742 15 : generic_simplify_141 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
743 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
744 : const enum tree_code ARG_UNUSED (bitop))
745 : {
746 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
747 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail241;
748 15 : {
749 15 : tree res_op0;
750 15 : res_op0 = captures[0];
751 15 : tree res_op1;
752 15 : {
753 15 : tree _o1[1], _r1;
754 15 : _o1[0] = captures[2];
755 15 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
756 15 : res_op1 = _r1;
757 : }
758 15 : tree _r;
759 15 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
760 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 201, __FILE__, __LINE__, true);
761 : return _r;
762 : }
763 0 : next_after_fail241:;
764 0 : return NULL_TREE;
765 : }
766 :
767 : tree
768 2 : generic_simplify_153 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
769 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
770 : const enum tree_code ARG_UNUSED (bitop),
771 : const enum tree_code ARG_UNUSED (rbitop))
772 : {
773 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
774 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail257;
775 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail257;
776 2 : {
777 2 : tree _r;
778 2 : _r = captures[2];
779 2 : if (TREE_SIDE_EFFECTS (captures[1]))
780 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
781 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
782 : return _r;
783 : }
784 2 : next_after_fail257:;
785 : return NULL_TREE;
786 : }
787 :
788 : tree
789 700 : generic_simplify_159 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
790 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
791 : const enum tree_code ARG_UNUSED (op))
792 : {
793 700 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
794 700 : if (bitwise_equal_p (captures[4], captures[7])
795 : )
796 : {
797 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail264;
798 40 : {
799 40 : tree res_op0;
800 40 : {
801 40 : tree _o1[2], _r1;
802 40 : {
803 40 : tree _o2[2], _r2;
804 40 : _o2[0] = captures[5];
805 40 : {
806 40 : tree _o3[1], _r3;
807 40 : _o3[0] = captures[6];
808 40 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
809 : {
810 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
811 : }
812 : else
813 : _r3 = _o3[0];
814 40 : _o2[1] = _r3;
815 : }
816 40 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
817 40 : _o1[0] = _r2;
818 : }
819 40 : {
820 40 : tree _o2[1], _r2;
821 40 : _o2[0] = captures[4];
822 40 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
823 : {
824 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
825 : }
826 : else
827 : _r2 = _o2[0];
828 40 : _o1[1] = _r2;
829 : }
830 40 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
831 40 : res_op0 = _r1;
832 : }
833 40 : tree _r;
834 40 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
835 40 : if (TREE_SIDE_EFFECTS (captures[7]))
836 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
837 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
838 : return _r;
839 : }
840 0 : next_after_fail264:;
841 : }
842 : return NULL_TREE;
843 : }
844 :
845 : tree
846 25 : generic_simplify_171 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
847 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
848 : const enum tree_code ARG_UNUSED (code2),
849 : const enum tree_code ARG_UNUSED (code1))
850 : {
851 25 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
852 25 : if ((TREE_CODE (captures[2]) == INTEGER_CST
853 7 : && TREE_CODE (captures[4]) == INTEGER_CST)
854 25 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
855 18 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
856 0 : && operand_equal_p (captures[2], captures[4]))
857 : )
858 : {
859 7 : {
860 7 : int cmp = 0;
861 7 : if (TREE_CODE (captures[2]) == INTEGER_CST
862 7 : && TREE_CODE (captures[4]) == INTEGER_CST)
863 7 : cmp = tree_int_cst_compare (captures[2], captures[4]);
864 7 : if ((code1 == LT_EXPR || code1 == LE_EXPR)
865 7 : && (code2 == LT_EXPR || code2 == LE_EXPR)
866 : )
867 : {
868 7 : if ((cmp < 0) || (cmp == 0 && code1 == LT_EXPR)
869 : )
870 : {
871 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail292;
872 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail292;
873 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail292;
874 7 : {
875 7 : tree _r;
876 7 : _r = captures[3];
877 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 232, __FILE__, __LINE__, true);
878 : return _r;
879 : }
880 25 : next_after_fail292:;
881 : }
882 : else
883 : {
884 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail293;
885 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail293;
886 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail293;
887 0 : {
888 0 : tree _r;
889 0 : _r = captures[0];
890 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 233, __FILE__, __LINE__, true);
891 : return _r;
892 : }
893 25 : next_after_fail293:;
894 : }
895 : }
896 : else
897 : {
898 0 : if ((code1 == GT_EXPR || code1 == GE_EXPR)
899 0 : && (code2 == GT_EXPR || code2 == GE_EXPR)
900 : )
901 : {
902 0 : if ((cmp > 0) || (cmp == 0 && code1 == GT_EXPR)
903 : )
904 : {
905 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail294;
906 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail294;
907 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail294;
908 0 : {
909 0 : tree _r;
910 0 : _r = captures[3];
911 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 234, __FILE__, __LINE__, true);
912 : return _r;
913 : }
914 25 : next_after_fail294:;
915 : }
916 : else
917 : {
918 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail295;
919 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail295;
920 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail295;
921 0 : {
922 0 : tree _r;
923 0 : _r = captures[0];
924 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 235, __FILE__, __LINE__, true);
925 : return _r;
926 : }
927 25 : next_after_fail295:;
928 : }
929 : }
930 : else
931 : {
932 0 : if (cmp == 0
933 0 : && ((code1 == LT_EXPR && code2 == GT_EXPR)
934 0 : || (code1 == GT_EXPR && code2 == LT_EXPR))
935 : )
936 : {
937 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail296;
938 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail296;
939 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail296;
940 0 : {
941 0 : tree res_op0;
942 0 : res_op0 = captures[1];
943 0 : tree res_op1;
944 0 : res_op1 = captures[4];
945 0 : tree _r;
946 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
947 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 236, __FILE__, __LINE__, true);
948 : return _r;
949 : }
950 25 : next_after_fail296:;
951 : }
952 : else
953 : {
954 0 : if (cmp >= 0
955 0 : && (code1 == LT_EXPR || code1 == LE_EXPR)
956 0 : && (code2 == GT_EXPR || code2 == GE_EXPR)
957 : )
958 : {
959 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail297;
960 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail297;
961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail297;
962 0 : {
963 0 : tree _r;
964 0 : _r = constant_boolean_node (true, type);
965 0 : if (TREE_SIDE_EFFECTS (captures[1]))
966 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
967 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 237, __FILE__, __LINE__, true);
968 : return _r;
969 : }
970 25 : next_after_fail297:;
971 : }
972 : else
973 : {
974 0 : if (cmp <= 0
975 0 : && (code1 == GT_EXPR || code1 == GE_EXPR)
976 0 : && (code2 == LT_EXPR || code2 == LE_EXPR)
977 : )
978 : {
979 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail298;
980 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail298;
981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail298;
982 0 : {
983 0 : tree _r;
984 0 : _r = constant_boolean_node (true, type);
985 0 : if (TREE_SIDE_EFFECTS (captures[1]))
986 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
988 : return _r;
989 : }
990 25 : next_after_fail298:;
991 : }
992 : }
993 : }
994 : }
995 : }
996 : }
997 : }
998 : return NULL_TREE;
999 : }
1000 :
1001 : tree
1002 3 : generic_simplify_199 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1003 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1004 : {
1005 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1006 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail340;
1007 3 : {
1008 3 : tree _r;
1009 3 : _r = captures[1];
1010 3 : if (TREE_SIDE_EFFECTS (captures[0]))
1011 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1012 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 255, __FILE__, __LINE__, true);
1013 : return _r;
1014 : }
1015 0 : next_after_fail340:;
1016 0 : return NULL_TREE;
1017 : }
1018 :
1019 : tree
1020 545 : generic_simplify_204 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1021 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1022 : {
1023 545 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1024 545 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail347;
1025 545 : {
1026 545 : tree res_op0;
1027 545 : {
1028 545 : tree _o1[2], _r1;
1029 545 : _o1[0] = captures[0];
1030 545 : _o1[1] = captures[1];
1031 545 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1032 545 : res_op0 = _r1;
1033 : }
1034 545 : tree _r;
1035 545 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
1036 545 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 260, __FILE__, __LINE__, true);
1037 : return _r;
1038 : }
1039 0 : next_after_fail347:;
1040 0 : return NULL_TREE;
1041 : }
1042 :
1043 : tree
1044 5606 : generic_simplify_209 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1045 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1046 : const enum tree_code ARG_UNUSED (op))
1047 : {
1048 5606 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1049 5606 : {
1050 5606 : poly_widest_int factor;
1051 5606 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
1052 5575 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1053 11181 : && multiple_p (wi::to_poly_widest (captures[3]), wi::to_widest (captures[1]), &factor)
1054 : )
1055 : {
1056 5505 : {
1057 5505 : wi::overflow_type overflow;
1058 5505 : wide_int mul;
1059 5505 : if (types_match (type, TREE_TYPE (captures[2]))
1060 5459 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1061 0 : && TREE_CODE (captures[2]) == INTEGER_CST
1062 0 : && TREE_CODE (captures[3]) == INTEGER_CST
1063 5505 : && (mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1064 0 : TYPE_SIGN (type), &overflow),
1065 0 : !overflow)
1066 5505 : && (TYPE_UNSIGNED (type)
1067 5505 : || known_eq (factor, 1)
1068 0 : || (get_range_pos_neg (captures[0])
1069 0 : | (((op == PLUS_EXPR) ^ (tree_int_cst_sgn (captures[2]) < 0))
1070 0 : ? 1 : 2)) != 3)
1071 : )
1072 : {
1073 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail352;
1074 0 : {
1075 0 : tree res_op0;
1076 0 : {
1077 0 : tree _o1[2], _r1;
1078 0 : _o1[0] = captures[0];
1079 0 : _o1[1] = wide_int_to_tree (type, factor);
1080 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1081 0 : res_op0 = _r1;
1082 : }
1083 0 : tree res_op1;
1084 0 : res_op1 = wide_int_to_tree (type, mul);
1085 0 : tree _r;
1086 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1087 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1088 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1089 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1090 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1091 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1092 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1093 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 264, __FILE__, __LINE__, true);
1094 : return _r;
1095 : }
1096 0 : next_after_fail352:;
1097 : }
1098 : else
1099 : {
1100 5505 : {
1101 5505 : tree utype = unsigned_type_for (type);
1102 5505 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail353;
1103 5505 : {
1104 5505 : tree res_op0;
1105 5505 : {
1106 5505 : tree _o1[2], _r1;
1107 5505 : {
1108 5505 : tree _o2[2], _r2;
1109 5505 : {
1110 5505 : tree _o3[1], _r3;
1111 5505 : _o3[0] = captures[0];
1112 5505 : if (TREE_TYPE (_o3[0]) != utype)
1113 : {
1114 5505 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1115 : }
1116 : else
1117 : _r3 = _o3[0];
1118 5505 : _o2[0] = _r3;
1119 : }
1120 5505 : _o2[1] = wide_int_to_tree (utype, factor);
1121 5505 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1122 5505 : _o1[0] = _r2;
1123 : }
1124 5505 : {
1125 5505 : tree _o2[2], _r2;
1126 5505 : {
1127 5505 : tree _o3[1], _r3;
1128 5505 : _o3[0] = captures[3];
1129 5505 : if (TREE_TYPE (_o3[0]) != utype)
1130 : {
1131 14 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1132 : }
1133 : else
1134 : _r3 = _o3[0];
1135 5505 : _o2[0] = _r3;
1136 : }
1137 5505 : {
1138 5505 : tree _o3[1], _r3;
1139 5505 : _o3[0] = captures[2];
1140 5505 : if (TREE_TYPE (_o3[0]) != utype)
1141 : {
1142 46 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1143 : }
1144 : else
1145 : _r3 = _o3[0];
1146 5505 : _o2[1] = _r3;
1147 : }
1148 5505 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1149 5505 : _o1[1] = _r2;
1150 : }
1151 5505 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1152 5505 : res_op0 = _r1;
1153 : }
1154 5505 : tree _r;
1155 5505 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1156 5505 : if (TREE_SIDE_EFFECTS (captures[1]))
1157 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1158 5505 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 265, __FILE__, __LINE__, true);
1159 : return _r;
1160 : }
1161 0 : next_after_fail353:;
1162 : }
1163 : }
1164 0 : }
1165 : }
1166 5606 : }
1167 101 : return NULL_TREE;
1168 : }
1169 :
1170 : tree
1171 639052 : generic_simplify_237 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1172 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1173 : const enum tree_code ARG_UNUSED (neeq))
1174 : {
1175 639052 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1176 639052 : {
1177 639052 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1178 639052 : if (ptr_difference_const (captures[2], captures[0], &diff)
1179 : )
1180 : {
1181 22680 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail398;
1182 22680 : {
1183 22680 : tree res_op0;
1184 22680 : res_op0 = build_int_cst_type (inner_type, diff);
1185 22680 : tree res_op1;
1186 22680 : res_op1 = captures[1];
1187 22680 : tree _r;
1188 22680 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1189 22680 : if (TREE_SIDE_EFFECTS (captures[0]))
1190 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1191 22680 : if (TREE_SIDE_EFFECTS (captures[2]))
1192 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1193 22680 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 308, __FILE__, __LINE__, true);
1194 22680 : return _r;
1195 : }
1196 0 : next_after_fail398:;
1197 : }
1198 : }
1199 616372 : return NULL_TREE;
1200 : }
1201 :
1202 : tree
1203 1063 : generic_simplify_246 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1204 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1205 : const enum tree_code ARG_UNUSED (minmax),
1206 : const enum tree_code ARG_UNUSED (cmp),
1207 : const enum tree_code ARG_UNUSED (out))
1208 : {
1209 1063 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1210 2126 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1211 1208 : && (!VECTOR_TYPE_P (TREE_TYPE (captures[0]))
1212 1 : || (VECTOR_TYPE_P (type)
1213 0 : && (!expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, cmp)
1214 0 : || expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, out))))
1215 : )
1216 : {
1217 144 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail407;
1218 144 : {
1219 144 : tree res_op0;
1220 144 : res_op0 = captures[0];
1221 144 : tree res_op1;
1222 144 : res_op1 = captures[1];
1223 144 : tree _r;
1224 144 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
1225 144 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 317, __FILE__, __LINE__, true);
1226 : return _r;
1227 : }
1228 0 : next_after_fail407:;
1229 : }
1230 : return NULL_TREE;
1231 : }
1232 :
1233 : tree
1234 805 : generic_simplify_254 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1235 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1236 : const enum tree_code ARG_UNUSED (cmp))
1237 : {
1238 805 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1239 805 : if (tree_fits_shwi_p (captures[3])
1240 805 : && tree_to_shwi (captures[3]) > 0
1241 1596 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1242 : )
1243 : {
1244 791 : {
1245 791 : tree t0 = TREE_TYPE (captures[2]);
1246 791 : unsigned int prec = TYPE_PRECISION (t0);
1247 791 : wide_int c1 = wi::to_wide (captures[3]);
1248 791 : wide_int c2 = wi::to_wide (captures[4]);
1249 791 : wide_int c3 = wi::to_wide (captures[5]);
1250 791 : wide_int sb = wi::set_bit_in_zero (prec - 1, prec);
1251 791 : if ((c2 & c3) != c3
1252 : )
1253 : {
1254 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail420;
1255 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail420;
1256 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail420;
1257 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail420;
1258 0 : {
1259 0 : tree _r;
1260 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1261 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1262 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1263 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 330, __FILE__, __LINE__, true);
1264 : return _r;
1265 : }
1266 0 : next_after_fail420:;
1267 : }
1268 : else
1269 : {
1270 791 : if (TYPE_UNSIGNED (t0)
1271 : )
1272 : {
1273 669 : if ((c3 & wi::arshift (sb, c1 - 1)) != 0
1274 : )
1275 : {
1276 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail421;
1277 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail421;
1278 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail421;
1279 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail421;
1280 0 : {
1281 0 : tree _r;
1282 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1283 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1284 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1285 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 331, __FILE__, __LINE__, true);
1286 : return _r;
1287 : }
1288 0 : next_after_fail421:;
1289 : }
1290 : else
1291 : {
1292 669 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail422;
1293 669 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail422;
1294 669 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail422;
1295 669 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1296 669 : {
1297 669 : tree res_op0;
1298 669 : {
1299 669 : tree _o1[2], _r1;
1300 669 : _o1[0] = captures[2];
1301 669 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1302 669 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1303 669 : res_op0 = _r1;
1304 : }
1305 669 : tree res_op1;
1306 669 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1307 669 : tree _r;
1308 669 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1309 669 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 332, __FILE__, __LINE__, true);
1310 : return _r;
1311 : }
1312 0 : next_after_fail422:;
1313 : }
1314 : }
1315 : else
1316 : {
1317 122 : {
1318 122 : wide_int smask = wi::arshift (sb, c1);
1319 122 : if ((c2 & smask) == 0
1320 : )
1321 : {
1322 120 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail423;
1323 120 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail423;
1324 120 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail423;
1325 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1326 120 : {
1327 120 : tree res_op0;
1328 120 : {
1329 120 : tree _o1[2], _r1;
1330 120 : _o1[0] = captures[2];
1331 120 : _o1[1] = wide_int_to_tree (t0, c2 << c1);
1332 120 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1333 120 : res_op0 = _r1;
1334 : }
1335 120 : tree res_op1;
1336 120 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1337 120 : tree _r;
1338 120 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1339 120 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 333, __FILE__, __LINE__, true);
1340 : return _r;
1341 : }
1342 0 : next_after_fail423:;
1343 : }
1344 : else
1345 : {
1346 2 : if ((c3 & smask) == 0
1347 : )
1348 : {
1349 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail424;
1350 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail424;
1351 2 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail424;
1352 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail424;
1353 2 : {
1354 2 : tree res_op0;
1355 2 : {
1356 2 : tree _o1[2], _r1;
1357 2 : _o1[0] = captures[2];
1358 2 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1359 2 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1360 2 : res_op0 = _r1;
1361 : }
1362 2 : tree res_op1;
1363 2 : res_op1 = wide_int_to_tree (t0, c3 << c1);
1364 2 : tree _r;
1365 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1366 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1367 : return _r;
1368 : }
1369 0 : next_after_fail424:;
1370 : }
1371 : else
1372 : {
1373 0 : if ((c2 & smask) != (c3 & smask)
1374 : )
1375 : {
1376 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail425;
1377 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail425;
1378 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail425;
1379 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail425;
1380 0 : {
1381 0 : tree _r;
1382 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1383 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1384 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1385 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1386 : return _r;
1387 : }
1388 0 : next_after_fail425:;
1389 : }
1390 : else
1391 : {
1392 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail426;
1393 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail426;
1394 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail426;
1395 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail426;
1396 0 : {
1397 0 : tree res_op0;
1398 0 : {
1399 0 : tree _o1[2], _r1;
1400 0 : _o1[0] = captures[2];
1401 0 : _o1[1] = wide_int_to_tree (t0, (c2 << c1) | sb);
1402 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1403 0 : res_op0 = _r1;
1404 : }
1405 0 : tree res_op1;
1406 0 : res_op1 = wide_int_to_tree (t0, (c3 << c1) | sb);
1407 0 : tree _r;
1408 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1409 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 336, __FILE__, __LINE__, true);
1410 : return _r;
1411 : }
1412 0 : next_after_fail426:;
1413 : }
1414 : }
1415 : }
1416 122 : }
1417 : }
1418 : }
1419 791 : }
1420 : }
1421 : return NULL_TREE;
1422 : }
1423 :
1424 : tree
1425 1148883 : generic_simplify_287 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1426 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1427 : const enum tree_code ARG_UNUSED (cmp))
1428 : {
1429 1148883 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1430 1148883 : {
1431 1148883 : poly_int64 off; tree base;
1432 1148883 : tree addr = (TREE_CODE (captures[1]) == SSA_NAME
1433 1148883 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[1])) : captures[1]);
1434 1148883 : if (SSA_NAME_IS_DEFAULT_DEF (captures[0])
1435 47046 : && TREE_CODE (SSA_NAME_VAR (captures[0])) == PARM_DECL
1436 46866 : && (base = get_base_address (TREE_OPERAND (addr, 0)))
1437 46866 : && TREE_CODE (base) == VAR_DECL
1438 1152074 : && auto_var_in_fn_p (base, current_function_decl)
1439 : )
1440 : {
1441 0 : if (cmp == NE_EXPR
1442 : )
1443 : {
1444 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail522;
1445 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail522;
1446 0 : {
1447 0 : tree _r;
1448 0 : _r = constant_boolean_node (true, type);
1449 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1450 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1451 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1452 2 : return _r;
1453 : }
1454 1148881 : next_after_fail522:;
1455 : }
1456 : else
1457 : {
1458 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail523;
1459 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail523;
1460 0 : {
1461 0 : tree _r;
1462 0 : _r = constant_boolean_node (false, type);
1463 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1464 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1465 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
1466 : return _r;
1467 : }
1468 1148881 : next_after_fail523:;
1469 : }
1470 : }
1471 : else
1472 : {
1473 1148883 : if ((base = get_addr_base_and_unit_offset (TREE_OPERAND (addr, 0), &off))
1474 1147520 : && TREE_CODE (base) == MEM_REF
1475 1319170 : && TREE_OPERAND (base, 0) == captures[0]
1476 : )
1477 : {
1478 2 : {
1479 2 : off += mem_ref_offset (base).force_shwi ();
1480 2 : if (known_ne (off, 0)
1481 : )
1482 : {
1483 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail524;
1484 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail524;
1485 2 : {
1486 2 : tree _r;
1487 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1488 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1489 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1490 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1491 : return _r;
1492 : }
1493 1148881 : next_after_fail524:;
1494 : }
1495 : else
1496 : {
1497 0 : if (known_eq (off, 0)
1498 : )
1499 : {
1500 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail525;
1501 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail525;
1502 0 : {
1503 0 : tree _r;
1504 0 : _r = constant_boolean_node (cmp == EQ_EXPR, type);
1505 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1506 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1507 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1508 : return _r;
1509 : }
1510 1148881 : next_after_fail525:;
1511 : }
1512 : }
1513 : }
1514 : }
1515 : }
1516 : }
1517 1148881 : return NULL_TREE;
1518 : }
1519 :
1520 : tree
1521 4 : generic_simplify_300 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1522 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1523 : const enum tree_code ARG_UNUSED (cmp),
1524 : const enum tree_code ARG_UNUSED (ncmp))
1525 : {
1526 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1527 8 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1528 4 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1529 8 : && types_match (captures[0], captures[2])
1530 : )
1531 : {
1532 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail538;
1533 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail538;
1534 4 : {
1535 4 : tree res_op0;
1536 4 : {
1537 4 : tree _o1[2], _r1;
1538 4 : _o1[0] = captures[0];
1539 4 : _o1[1] = captures[2];
1540 4 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1541 4 : res_op0 = _r1;
1542 : }
1543 4 : tree res_op1;
1544 4 : res_op1 = captures[1];
1545 4 : tree _r;
1546 4 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1547 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 438, __FILE__, __LINE__, true);
1548 : return _r;
1549 : }
1550 4 : next_after_fail538:;
1551 : }
1552 : return NULL_TREE;
1553 : }
1554 :
1555 : tree
1556 116677 : generic_simplify_306 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1557 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1558 : const enum tree_code ARG_UNUSED (cmp))
1559 : {
1560 116677 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1561 116677 : {
1562 116677 : poly_int64 off0, off1;
1563 116677 : tree base0, base1;
1564 116677 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1565 : off0, off1,
1566 : 1
1567 : );
1568 116677 : if (equal == 1
1569 : )
1570 : {
1571 100909 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1572 : )
1573 : {
1574 8603 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail551;
1575 8603 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail551;
1576 8603 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail551;
1577 8603 : {
1578 8603 : tree _r;
1579 8603 : _r = constant_boolean_node (known_eq (off0, off1), type);
1580 8603 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 441, __FILE__, __LINE__, true);
1581 102920 : return _r;
1582 : }
1583 13757 : next_after_fail551:;
1584 : }
1585 : else
1586 : {
1587 52059 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1588 : )
1589 : {
1590 52059 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail552;
1591 52059 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail552;
1592 52059 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail552;
1593 52059 : {
1594 52059 : tree _r;
1595 52059 : _r = constant_boolean_node (known_ne (off0, off1), type);
1596 52059 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 442, __FILE__, __LINE__, true);
1597 : return _r;
1598 : }
1599 13757 : next_after_fail552:;
1600 : }
1601 : else
1602 : {
1603 29141 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1604 : )
1605 : {
1606 29141 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail553;
1607 29141 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail553;
1608 29141 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail553;
1609 29141 : {
1610 29141 : tree _r;
1611 29141 : _r = constant_boolean_node (known_lt (off0, off1), type);
1612 29141 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 443, __FILE__, __LINE__, true);
1613 : return _r;
1614 : }
1615 13757 : next_after_fail553:;
1616 : }
1617 : else
1618 : {
1619 387 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1620 : )
1621 : {
1622 387 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail554;
1623 387 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail554;
1624 387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail554;
1625 387 : {
1626 387 : tree _r;
1627 387 : _r = constant_boolean_node (known_le (off0, off1), type);
1628 387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 444, __FILE__, __LINE__, true);
1629 : return _r;
1630 : }
1631 13757 : next_after_fail554:;
1632 : }
1633 : else
1634 : {
1635 7151 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1636 : )
1637 : {
1638 7151 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail555;
1639 7151 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail555;
1640 7151 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail555;
1641 7151 : {
1642 7151 : tree _r;
1643 7151 : _r = constant_boolean_node (known_ge (off0, off1), type);
1644 7151 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 445, __FILE__, __LINE__, true);
1645 : return _r;
1646 : }
1647 13757 : next_after_fail555:;
1648 : }
1649 : else
1650 : {
1651 3568 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1652 : )
1653 : {
1654 3568 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail556;
1655 3568 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail556;
1656 3568 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail556;
1657 3568 : {
1658 3568 : tree _r;
1659 3568 : _r = constant_boolean_node (known_gt (off0, off1), type);
1660 3568 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 446, __FILE__, __LINE__, true);
1661 : return _r;
1662 : }
1663 13757 : next_after_fail556:;
1664 : }
1665 : }
1666 : }
1667 : }
1668 : }
1669 : }
1670 : }
1671 : else
1672 : {
1673 15768 : if (equal == 0
1674 : )
1675 : {
1676 2011 : if (cmp == EQ_EXPR
1677 : )
1678 : {
1679 943 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail557;
1680 943 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail557;
1681 943 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail557;
1682 943 : {
1683 943 : tree _r;
1684 943 : _r = constant_boolean_node (false, type);
1685 943 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 447, __FILE__, __LINE__, true);
1686 : return _r;
1687 : }
1688 13757 : next_after_fail557:;
1689 : }
1690 : else
1691 : {
1692 1068 : if (cmp == NE_EXPR
1693 : )
1694 : {
1695 1068 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail558;
1696 1068 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail558;
1697 1068 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail558;
1698 1068 : {
1699 1068 : tree _r;
1700 1068 : _r = constant_boolean_node (true, type);
1701 1068 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 448, __FILE__, __LINE__, true);
1702 : return _r;
1703 : }
1704 13757 : next_after_fail558:;
1705 : }
1706 : }
1707 : }
1708 : }
1709 : }
1710 13757 : return NULL_TREE;
1711 : }
1712 :
1713 : tree
1714 0 : generic_simplify_319 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1715 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1716 : const enum tree_code ARG_UNUSED (cmp))
1717 : {
1718 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1719 0 : if (VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[0])))
1720 0 : && can_compare_p (cmp == EQ_EXPR ? EQ : NE, TYPE_MODE (TREE_TYPE (captures[0])),
1721 : ccp_jump)
1722 : )
1723 : {
1724 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail590;
1725 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail590;
1726 0 : {
1727 0 : tree res_op0;
1728 0 : res_op0 = captures[0];
1729 0 : tree res_op1;
1730 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1731 0 : tree _r;
1732 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1733 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
1734 : return _r;
1735 : }
1736 0 : next_after_fail590:;
1737 : }
1738 : return NULL_TREE;
1739 : }
1740 :
1741 : tree
1742 0 : generic_simplify_324 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1743 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1744 : const combined_fn ARG_UNUSED (copysigns))
1745 : {
1746 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1747 0 : if (!REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
1748 : )
1749 : {
1750 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail596;
1751 0 : {
1752 0 : tree res_op0;
1753 0 : res_op0 = captures[0];
1754 0 : tree _r;
1755 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1756 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1757 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1758 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 486, __FILE__, __LINE__, true);
1759 : return _r;
1760 : }
1761 0 : next_after_fail596:;
1762 : }
1763 : return NULL_TREE;
1764 : }
1765 :
1766 : tree
1767 0 : generic_simplify_328 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1768 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1769 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1770 : {
1771 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1772 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail600;
1773 0 : {
1774 0 : tree res_op0;
1775 0 : res_op0 = captures[0];
1776 0 : tree _r;
1777 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
1778 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1779 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1780 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
1781 : return _r;
1782 : }
1783 0 : next_after_fail600:;
1784 0 : return NULL_TREE;
1785 : }
1786 :
1787 : tree
1788 1 : generic_simplify_335 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1789 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1790 : const enum tree_code ARG_UNUSED (div))
1791 : {
1792 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1793 1 : if (INTEGRAL_TYPE_P (type)
1794 1 : && TYPE_OVERFLOW_UNDEFINED (type)
1795 1 : && !integer_zerop (captures[0])
1796 2 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1797 : )
1798 : {
1799 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail609;
1800 1 : {
1801 1 : tree res_op0;
1802 1 : {
1803 1 : tree _o1[2], _r1;
1804 1 : _o1[0] = captures[0];
1805 1 : _o1[1] = build_zero_cst (type);
1806 1 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
1807 1 : res_op0 = _r1;
1808 : }
1809 1 : tree res_op1;
1810 1 : res_op1 = build_minus_one_cst (type);
1811 1 : tree res_op2;
1812 1 : res_op2 = build_one_cst (type);
1813 1 : tree _r;
1814 1 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
1815 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 497, __FILE__, __LINE__, true);
1816 : return _r;
1817 : }
1818 0 : next_after_fail609:;
1819 : }
1820 : return NULL_TREE;
1821 : }
1822 :
1823 : tree
1824 2251868 : generic_simplify_342 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1825 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1826 : const enum tree_code ARG_UNUSED (floor_divmod),
1827 : const enum tree_code ARG_UNUSED (trunc_divmod))
1828 : {
1829 2251868 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1830 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
1831 2251868 : && TYPE_UNSIGNED (type)
1832 : )
1833 : {
1834 2242736 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail617;
1835 2242736 : {
1836 2242736 : tree res_op0;
1837 2242736 : res_op0 = captures[0];
1838 2242736 : tree res_op1;
1839 2242736 : res_op1 = captures[1];
1840 2242736 : tree _r;
1841 2242736 : _r = fold_build2_loc (loc, trunc_divmod, type, res_op0, res_op1);
1842 2242736 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 505, __FILE__, __LINE__, true);
1843 : return _r;
1844 : }
1845 0 : next_after_fail617:;
1846 : }
1847 : return NULL_TREE;
1848 : }
1849 :
1850 : tree
1851 534 : generic_simplify_350 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1852 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1853 : const enum tree_code ARG_UNUSED (mod))
1854 : {
1855 534 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1856 534 : if (ANY_INTEGRAL_TYPE_P (type)
1857 : )
1858 : {
1859 534 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1860 : )
1861 : {
1862 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1863 1 : {
1864 1 : tree _r;
1865 1 : _r = build_zero_cst (type);
1866 1 : if (TREE_SIDE_EFFECTS (captures[1]))
1867 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1868 1 : if (TREE_SIDE_EFFECTS (captures[2]))
1869 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1870 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 513, __FILE__, __LINE__, true);
1871 : return _r;
1872 : }
1873 0 : next_after_fail625:;
1874 : }
1875 : }
1876 : return NULL_TREE;
1877 : }
1878 :
1879 : tree
1880 24 : generic_simplify_361 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1881 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1882 : const combined_fn ARG_UNUSED (POW))
1883 : {
1884 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1885 24 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1886 : )
1887 : {
1888 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail638;
1889 6 : {
1890 6 : tree res_op0;
1891 6 : res_op0 = captures[0];
1892 6 : tree res_op1;
1893 6 : {
1894 6 : tree _o1[2], _r1;
1895 6 : _o1[0] = captures[2];
1896 6 : {
1897 6 : tree _o2[1], _r2;
1898 6 : _o2[0] = captures[3];
1899 6 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1900 6 : _o1[1] = _r2;
1901 : }
1902 6 : _r1 = maybe_build_call_expr_loc (loc, POW, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
1903 6 : if (!_r1)
1904 0 : goto next_after_fail638;
1905 6 : res_op1 = _r1;
1906 : }
1907 6 : tree _r;
1908 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
1909 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 526, __FILE__, __LINE__, true);
1910 : return _r;
1911 : }
1912 24 : next_after_fail638:;
1913 : }
1914 : return NULL_TREE;
1915 : }
1916 :
1917 : tree
1918 0 : generic_simplify_370 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1919 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1920 : const enum tree_code ARG_UNUSED (cmp))
1921 : {
1922 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1923 0 : if (INTEGRAL_TYPE_P (type)
1924 : )
1925 : {
1926 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail653;
1927 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail653;
1928 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail653;
1929 0 : {
1930 0 : tree res_op0;
1931 0 : res_op0 = captures[0];
1932 0 : tree res_op1;
1933 0 : res_op1 = captures[1];
1934 0 : tree _r;
1935 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1936 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 541, __FILE__, __LINE__, true);
1937 : return _r;
1938 : }
1939 0 : next_after_fail653:;
1940 : }
1941 : return NULL_TREE;
1942 : }
1943 :
1944 : tree
1945 0 : generic_simplify_374 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1946 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1947 : const enum tree_code ARG_UNUSED (op))
1948 : {
1949 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1950 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail657;
1951 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail657;
1952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail657;
1953 0 : {
1954 0 : tree _r;
1955 0 : _r = captures[2];
1956 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 545, __FILE__, __LINE__, true);
1957 : return _r;
1958 : }
1959 0 : next_after_fail657:;
1960 : return NULL_TREE;
1961 : }
1962 :
1963 : tree
1964 0 : generic_simplify_378 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1965 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1966 : const enum tree_code ARG_UNUSED (neeq))
1967 : {
1968 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1969 0 : if (neeq == NE_EXPR
1970 : )
1971 : {
1972 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail662;
1973 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail662;
1974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail662;
1975 0 : {
1976 0 : tree _r;
1977 0 : _r = captures[3];
1978 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 550, __FILE__, __LINE__, true);
1979 : return _r;
1980 : }
1981 0 : next_after_fail662:;
1982 : }
1983 : else
1984 : {
1985 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail663;
1986 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail663;
1987 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail663;
1988 0 : {
1989 0 : tree _r;
1990 0 : _r = captures[0];
1991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 551, __FILE__, __LINE__, true);
1992 : return _r;
1993 : }
1994 0 : next_after_fail663:;
1995 : }
1996 : return NULL_TREE;
1997 : }
1998 :
1999 : tree
2000 0 : generic_simplify_387 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2001 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2002 : const enum tree_code ARG_UNUSED (op))
2003 : {
2004 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2005 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail674;
2006 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail674;
2007 0 : {
2008 0 : tree _r;
2009 0 : _r = captures[2];
2010 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 562, __FILE__, __LINE__, true);
2011 : return _r;
2012 : }
2013 0 : next_after_fail674:;
2014 : return NULL_TREE;
2015 : }
2016 :
2017 : tree
2018 1664 : generic_simplify_394 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2019 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
2020 : {
2021 1664 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2022 1664 : if (INTEGRAL_TYPE_P (type)
2023 : )
2024 : {
2025 1664 : {
2026 1664 : tree itype = TREE_TYPE (captures[2]);
2027 1664 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail682;
2028 1664 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail682;
2029 1664 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail682;
2030 1664 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail682;
2031 1664 : {
2032 1664 : tree res_op0;
2033 1664 : {
2034 1664 : tree _o1[2], _r1;
2035 1664 : _o1[0] = captures[2];
2036 1664 : {
2037 1664 : tree _o2[1], _r2;
2038 1664 : _o2[0] = captures[0];
2039 1664 : if (TREE_TYPE (_o2[0]) != itype)
2040 : {
2041 1663 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
2042 : }
2043 : else
2044 : _r2 = _o2[0];
2045 1664 : _o1[1] = _r2;
2046 : }
2047 1664 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2048 1664 : res_op0 = _r1;
2049 : }
2050 1664 : tree _r;
2051 1664 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2052 1664 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 569, __FILE__, __LINE__, true);
2053 : return _r;
2054 : }
2055 1664 : next_after_fail682:;
2056 : }
2057 : }
2058 : return NULL_TREE;
2059 : }
2060 :
2061 : tree
2062 488376 : generic_simplify_403 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2063 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2064 : const enum tree_code ARG_UNUSED (op))
2065 : {
2066 488376 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2067 976751 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2068 976664 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2069 302855 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
2070 976708 : && (CONSTANT_CLASS_P (captures[1]) || single_use (captures[0]))
2071 : )
2072 : {
2073 302782 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail695;
2074 302782 : {
2075 302782 : tree res_op0;
2076 302782 : res_op0 = captures[1];
2077 302782 : tree res_op1;
2078 302782 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2079 302782 : tree _r;
2080 302782 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2081 302782 : if (TREE_SIDE_EFFECTS (captures[2]))
2082 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2083 302782 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 581, __FILE__, __LINE__, true);
2084 : return _r;
2085 : }
2086 0 : next_after_fail695:;
2087 : }
2088 : return NULL_TREE;
2089 : }
2090 :
2091 : tree
2092 10 : generic_simplify_411 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2093 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2094 : const enum tree_code ARG_UNUSED (cmp),
2095 : const enum tree_code ARG_UNUSED (op))
2096 : {
2097 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2098 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail704;
2099 10 : {
2100 10 : tree res_op0;
2101 10 : res_op0 = captures[0];
2102 10 : tree res_op1;
2103 10 : res_op1 = captures[2];
2104 10 : tree _r;
2105 10 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2106 10 : if (TREE_SIDE_EFFECTS (captures[1]))
2107 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2108 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
2109 : return _r;
2110 : }
2111 0 : next_after_fail704:;
2112 0 : return NULL_TREE;
2113 : }
2114 :
2115 : tree
2116 22909863 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2117 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2118 : const enum tree_code ARG_UNUSED (cmp))
2119 : {
2120 22909863 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2121 45813207 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2122 12106 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
2123 3262 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
2124 45813207 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2125 : )
2126 : {
2127 22909863 : {
2128 22909863 : tree cst = uniform_integer_cst_p (captures[2]);
2129 22909863 : tree arg1_type = TREE_TYPE (cst);
2130 22909863 : unsigned int prec = TYPE_PRECISION (arg1_type);
2131 22909863 : wide_int max = wi::max_value (arg1_type);
2132 22909863 : wide_int signed_max = wi::max_value (prec, SIGNED);
2133 22909863 : wide_int min = wi::min_value (arg1_type);
2134 22909863 : if (wi::to_wide (cst) == max
2135 : )
2136 : {
2137 185724 : if (cmp == GT_EXPR
2138 : )
2139 : {
2140 129707 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail729;
2141 129707 : {
2142 129707 : tree _r;
2143 129707 : _r = constant_boolean_node (false, type);
2144 129707 : if (TREE_SIDE_EFFECTS (captures[0]))
2145 80 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2146 129707 : if (TREE_SIDE_EFFECTS (captures[2]))
2147 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2148 129707 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 599, __FILE__, __LINE__, true);
2149 : return _r;
2150 : }
2151 0 : next_after_fail729:;
2152 : }
2153 : else
2154 : {
2155 56017 : if (cmp == GE_EXPR
2156 : )
2157 : {
2158 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail730;
2159 7 : {
2160 7 : tree res_op0;
2161 7 : res_op0 = captures[0];
2162 7 : tree res_op1;
2163 7 : res_op1 = captures[2];
2164 7 : tree _r;
2165 7 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2166 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 600, __FILE__, __LINE__, true);
2167 : return _r;
2168 : }
2169 0 : next_after_fail730:;
2170 : }
2171 : else
2172 : {
2173 56010 : if (cmp == LE_EXPR
2174 : )
2175 : {
2176 56000 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail731;
2177 56000 : {
2178 56000 : tree _r;
2179 56000 : _r = constant_boolean_node (true, type);
2180 56000 : if (TREE_SIDE_EFFECTS (captures[0]))
2181 23 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2182 56000 : if (TREE_SIDE_EFFECTS (captures[2]))
2183 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2184 56000 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 601, __FILE__, __LINE__, true);
2185 : return _r;
2186 : }
2187 0 : next_after_fail731:;
2188 : }
2189 : else
2190 : {
2191 10 : if (cmp == LT_EXPR
2192 : )
2193 : {
2194 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail732;
2195 10 : {
2196 10 : tree res_op0;
2197 10 : res_op0 = captures[0];
2198 10 : tree res_op1;
2199 10 : res_op1 = captures[2];
2200 10 : tree _r;
2201 10 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2202 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 602, __FILE__, __LINE__, true);
2203 : return _r;
2204 : }
2205 0 : next_after_fail732:;
2206 : }
2207 : }
2208 : }
2209 : }
2210 : }
2211 : else
2212 : {
2213 22724139 : if (wi::to_wide (cst) == min
2214 : )
2215 : {
2216 1378658 : if (cmp == LT_EXPR
2217 : )
2218 : {
2219 430498 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail733;
2220 430498 : {
2221 430498 : tree _r;
2222 430498 : _r = constant_boolean_node (false, type);
2223 430498 : if (TREE_SIDE_EFFECTS (captures[0]))
2224 65 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2225 430498 : if (TREE_SIDE_EFFECTS (captures[2]))
2226 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2227 430498 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 603, __FILE__, __LINE__, true);
2228 : return _r;
2229 : }
2230 0 : next_after_fail733:;
2231 : }
2232 : else
2233 : {
2234 948160 : if (cmp == LE_EXPR
2235 : )
2236 : {
2237 92699 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail734;
2238 92699 : {
2239 92699 : tree res_op0;
2240 92699 : res_op0 = captures[0];
2241 92699 : tree res_op1;
2242 92699 : res_op1 = captures[2];
2243 92699 : tree _r;
2244 92699 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2245 92699 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 604, __FILE__, __LINE__, true);
2246 : return _r;
2247 : }
2248 0 : next_after_fail734:;
2249 : }
2250 : else
2251 : {
2252 855461 : if (cmp == GE_EXPR
2253 : )
2254 : {
2255 247554 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail735;
2256 247554 : {
2257 247554 : tree _r;
2258 247554 : _r = constant_boolean_node (true, type);
2259 247554 : if (TREE_SIDE_EFFECTS (captures[0]))
2260 505 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2261 247554 : if (TREE_SIDE_EFFECTS (captures[2]))
2262 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2263 247554 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 605, __FILE__, __LINE__, true);
2264 : return _r;
2265 : }
2266 0 : next_after_fail735:;
2267 : }
2268 : else
2269 : {
2270 607907 : if (cmp == GT_EXPR
2271 : )
2272 : {
2273 607907 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail736;
2274 607907 : {
2275 607907 : tree res_op0;
2276 607907 : res_op0 = captures[0];
2277 607907 : tree res_op1;
2278 607907 : res_op1 = captures[2];
2279 607907 : tree _r;
2280 607907 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2281 607907 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 606, __FILE__, __LINE__, true);
2282 : return _r;
2283 : }
2284 0 : next_after_fail736:;
2285 : }
2286 : }
2287 : }
2288 : }
2289 : }
2290 : else
2291 : {
2292 21345489 : if (wi::to_wide (cst) == max - 1
2293 : )
2294 : {
2295 394135 : if (cmp == GT_EXPR
2296 : )
2297 : {
2298 154976 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail737;
2299 154976 : {
2300 154976 : tree res_op0;
2301 154976 : res_op0 = captures[0];
2302 154976 : tree res_op1;
2303 154976 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2304 154976 : wide_int_to_tree (TREE_TYPE (cst),
2305 154976 : wi::to_wide (cst)
2306 309952 : + 1));
2307 154976 : tree _r;
2308 154976 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2309 154976 : if (TREE_SIDE_EFFECTS (captures[2]))
2310 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2311 154976 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 607, __FILE__, __LINE__, true);
2312 : return _r;
2313 : }
2314 0 : next_after_fail737:;
2315 : }
2316 : else
2317 : {
2318 239159 : if (cmp == LE_EXPR
2319 : )
2320 : {
2321 239159 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail738;
2322 239159 : {
2323 239159 : tree res_op0;
2324 239159 : res_op0 = captures[0];
2325 239159 : tree res_op1;
2326 239159 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2327 239159 : wide_int_to_tree (TREE_TYPE (cst),
2328 239159 : wi::to_wide (cst)
2329 478318 : + 1));
2330 239159 : tree _r;
2331 239159 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2332 239159 : if (TREE_SIDE_EFFECTS (captures[2]))
2333 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2334 239159 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 608, __FILE__, __LINE__, true);
2335 : return _r;
2336 : }
2337 0 : next_after_fail738:;
2338 : }
2339 : }
2340 : }
2341 : else
2342 : {
2343 20951351 : if (wi::to_wide (cst) == min + 1
2344 : )
2345 : {
2346 738924 : if (cmp == GE_EXPR
2347 : )
2348 : {
2349 60552 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail739;
2350 60552 : {
2351 60552 : tree res_op0;
2352 60552 : res_op0 = captures[0];
2353 60552 : tree res_op1;
2354 60552 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2355 60552 : wide_int_to_tree (TREE_TYPE (cst),
2356 60552 : wi::to_wide (cst)
2357 121104 : - 1));
2358 60552 : tree _r;
2359 60552 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2360 60552 : if (TREE_SIDE_EFFECTS (captures[2]))
2361 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2362 60552 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 609, __FILE__, __LINE__, true);
2363 : return _r;
2364 : }
2365 0 : next_after_fail739:;
2366 : }
2367 : else
2368 : {
2369 678372 : if (cmp == LT_EXPR
2370 : )
2371 : {
2372 23527 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail740;
2373 23527 : {
2374 23527 : tree res_op0;
2375 23527 : res_op0 = captures[0];
2376 23527 : tree res_op1;
2377 23527 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2378 23527 : wide_int_to_tree (TREE_TYPE (cst),
2379 23527 : wi::to_wide (cst)
2380 47054 : - 1));
2381 23527 : tree _r;
2382 23527 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2383 23527 : if (TREE_SIDE_EFFECTS (captures[2]))
2384 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2385 23527 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 610, __FILE__, __LINE__, true);
2386 : return _r;
2387 : }
2388 0 : next_after_fail740:;
2389 : }
2390 : }
2391 : }
2392 : else
2393 : {
2394 20212422 : if (wi::to_wide (cst) == signed_max
2395 172792 : && TYPE_UNSIGNED (arg1_type)
2396 172792 : && TYPE_MODE (arg1_type) != BLKmode
2397 20212429 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
2398 20384665 : && INTEGRAL_TYPE_P (arg1_type)
2399 : )
2400 : {
2401 172236 : if (cmp == LE_EXPR || cmp == GT_EXPR
2402 : )
2403 : {
2404 172236 : {
2405 172236 : tree st = signed_type_for (TREE_TYPE (captures[2]));
2406 172236 : if (cst == captures[2] && cmp == LE_EXPR
2407 : )
2408 : {
2409 25810 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail741;
2410 25810 : {
2411 25810 : tree res_op0;
2412 25810 : {
2413 25810 : tree _o1[1], _r1;
2414 25810 : _o1[0] = captures[1];
2415 25810 : if (TREE_TYPE (_o1[0]) != st)
2416 : {
2417 25810 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2418 : }
2419 : else
2420 : _r1 = _o1[0];
2421 25810 : res_op0 = _r1;
2422 : }
2423 25810 : tree res_op1;
2424 25810 : res_op1 = build_zero_cst (st);
2425 25810 : tree _r;
2426 25810 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2427 25810 : if (TREE_SIDE_EFFECTS (captures[2]))
2428 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2429 25810 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
2430 : return _r;
2431 : }
2432 0 : next_after_fail741:;
2433 0 : }
2434 : else
2435 : {
2436 146426 : if (cst == captures[2] && cmp == GT_EXPR
2437 : )
2438 : {
2439 146340 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail742;
2440 146340 : {
2441 146340 : tree res_op0;
2442 146340 : {
2443 146340 : tree _o1[1], _r1;
2444 146340 : _o1[0] = captures[1];
2445 146340 : if (TREE_TYPE (_o1[0]) != st)
2446 : {
2447 146340 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2448 : }
2449 : else
2450 : _r1 = _o1[0];
2451 146340 : res_op0 = _r1;
2452 : }
2453 146340 : tree res_op1;
2454 146340 : res_op1 = build_zero_cst (st);
2455 146340 : tree _r;
2456 146340 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2457 146340 : if (TREE_SIDE_EFFECTS (captures[2]))
2458 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2459 146340 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 612, __FILE__, __LINE__, true);
2460 : return _r;
2461 : }
2462 0 : next_after_fail742:;
2463 0 : }
2464 : else
2465 : {
2466 86 : if (cmp == LE_EXPR
2467 : )
2468 : {
2469 30 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail743;
2470 30 : {
2471 30 : tree res_op0;
2472 30 : {
2473 30 : tree _o1[1], _r1;
2474 30 : _o1[0] = captures[1];
2475 30 : if (TREE_TYPE (_o1[0]) != st)
2476 : {
2477 30 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2478 : }
2479 : else
2480 : _r1 = _o1[0];
2481 30 : res_op0 = _r1;
2482 : }
2483 30 : tree res_op1;
2484 30 : res_op1 = build_zero_cst (st);
2485 30 : tree _r;
2486 30 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2487 30 : if (TREE_SIDE_EFFECTS (captures[2]))
2488 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2489 30 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 613, __FILE__, __LINE__, true);
2490 : return _r;
2491 : }
2492 0 : next_after_fail743:;
2493 : }
2494 : else
2495 : {
2496 56 : if (cmp == GT_EXPR
2497 : )
2498 : {
2499 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail744;
2500 56 : {
2501 56 : tree res_op0;
2502 56 : {
2503 56 : tree _o1[1], _r1;
2504 56 : _o1[0] = captures[1];
2505 56 : if (TREE_TYPE (_o1[0]) != st)
2506 : {
2507 56 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2508 : }
2509 : else
2510 : _r1 = _o1[0];
2511 56 : res_op0 = _r1;
2512 : }
2513 56 : tree res_op1;
2514 56 : res_op1 = build_zero_cst (st);
2515 56 : tree _r;
2516 56 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2517 56 : if (TREE_SIDE_EFFECTS (captures[2]))
2518 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2519 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 614, __FILE__, __LINE__, true);
2520 : return _r;
2521 : }
2522 0 : next_after_fail744:;
2523 : }
2524 : }
2525 : }
2526 : }
2527 : }
2528 : }
2529 : }
2530 : }
2531 : }
2532 : }
2533 : }
2534 22909881 : }
2535 : }
2536 : return NULL_TREE;
2537 : }
2538 :
2539 : tree
2540 5341119 : generic_simplify_478 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2541 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2542 : {
2543 5341119 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2544 5341119 : {
2545 5341119 : bool wascmp;
2546 5341119 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2547 5341119 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
2548 : )
2549 : {
2550 115 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail836;
2551 115 : {
2552 115 : tree _r;
2553 115 : _r = wascmp ? constant_boolean_node (false, type) : build_zero_cst (type);
2554 115 : if (TREE_SIDE_EFFECTS (captures[0]))
2555 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2556 115 : if (TREE_SIDE_EFFECTS (captures[1]))
2557 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2558 115 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
2559 115 : return _r;
2560 : }
2561 0 : next_after_fail836:;
2562 : }
2563 : }
2564 5341004 : return NULL_TREE;
2565 : }
2566 :
2567 : tree
2568 82 : generic_simplify_486 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2569 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2570 : const enum tree_code ARG_UNUSED (bitop),
2571 : const enum tree_code ARG_UNUSED (op))
2572 : {
2573 82 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2574 82 : {
2575 82 : tree pmop[2];
2576 82 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[5], op, captures[1], bitop,
2577 : captures[2], captures[3], captures[4], ERROR_MARK, NULL_TREE,
2578 : NULL_TREE, pmop);
2579 82 : if (utype
2580 : )
2581 : {
2582 22 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail844;
2583 22 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail844;
2584 22 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail844;
2585 22 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail844;
2586 22 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail844;
2587 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail844;
2588 22 : {
2589 22 : tree res_op0;
2590 22 : {
2591 22 : tree _o1[2], _r1;
2592 22 : {
2593 22 : tree _o2[2], _r2;
2594 22 : {
2595 22 : tree _o3[1], _r3;
2596 22 : _o3[0] = pmop[0];
2597 22 : if (TREE_TYPE (_o3[0]) != utype)
2598 : {
2599 10 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2600 : }
2601 : else
2602 : _r3 = _o3[0];
2603 22 : _o2[0] = _r3;
2604 : }
2605 22 : {
2606 22 : tree _o3[1], _r3;
2607 22 : _o3[0] = pmop[1];
2608 22 : if (TREE_TYPE (_o3[0]) != utype)
2609 : {
2610 10 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2611 : }
2612 : else
2613 : _r3 = _o3[0];
2614 22 : _o2[1] = _r3;
2615 : }
2616 22 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2617 22 : _o1[0] = _r2;
2618 : }
2619 22 : {
2620 22 : tree _o2[1], _r2;
2621 22 : _o2[0] = captures[5];
2622 22 : if (TREE_TYPE (_o2[0]) != utype)
2623 : {
2624 10 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2625 : }
2626 : else
2627 : _r2 = _o2[0];
2628 22 : _o1[1] = _r2;
2629 : }
2630 22 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2631 22 : res_op0 = _r1;
2632 : }
2633 22 : tree _r;
2634 22 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2635 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
2636 22 : return _r;
2637 : }
2638 60 : next_after_fail844:;
2639 : }
2640 : }
2641 60 : return NULL_TREE;
2642 : }
2643 :
2644 : tree
2645 202 : generic_simplify_502 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2646 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2647 : const enum tree_code ARG_UNUSED (code2),
2648 : const enum tree_code ARG_UNUSED (code1))
2649 : {
2650 202 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2651 202 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2652 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2653 202 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2654 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))
2655 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[2])))
2656 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2657 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2658 200 : && bitwise_equal_p (captures[2], captures[5]))
2659 : )
2660 : {
2661 2 : {
2662 2 : bool one_before = false;
2663 2 : bool one_after = false;
2664 2 : int cmp = 0;
2665 2 : bool allbits = true;
2666 2 : if (TREE_CODE (captures[2]) == INTEGER_CST
2667 2 : && TREE_CODE (captures[5]) == INTEGER_CST)
2668 : {
2669 2 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2670 2 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2671 2 : auto t2 = wi::to_wide (captures[5]);
2672 2 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2673 2 : if (cmp < 0
2674 2 : && t1 == t2 - 1)
2675 : one_before = true;
2676 2 : if (cmp > 0
2677 2 : && t1 == t2 + 1)
2678 : one_after = true;
2679 : }
2680 2 : bool val;
2681 2 : switch (code2)
2682 : {
2683 0 : case EQ_EXPR: val = (cmp == 0); break;
2684 2 : case NE_EXPR: val = (cmp != 0); break;
2685 0 : case LT_EXPR: val = (cmp < 0); break;
2686 0 : case GT_EXPR: val = (cmp > 0); break;
2687 0 : case LE_EXPR: val = (cmp <= 0); break;
2688 0 : case GE_EXPR: val = (cmp >= 0); break;
2689 0 : default: gcc_unreachable ();
2690 : }
2691 2 : if (code1 == EQ_EXPR && val
2692 : )
2693 : {
2694 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail868;
2695 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail868;
2696 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail868;
2697 0 : {
2698 0 : tree _r;
2699 0 : _r = captures[0];
2700 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2701 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2702 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 710, __FILE__, __LINE__, true);
2703 : return _r;
2704 : }
2705 202 : next_after_fail868:;
2706 : }
2707 : else
2708 : {
2709 2 : if (code1 == EQ_EXPR && !val
2710 : )
2711 : {
2712 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail869;
2713 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail869;
2714 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail869;
2715 0 : {
2716 0 : tree _r;
2717 0 : _r = constant_boolean_node (false, type);
2718 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2719 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2720 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 711, __FILE__, __LINE__, true);
2721 : return _r;
2722 : }
2723 202 : next_after_fail869:;
2724 : }
2725 : else
2726 : {
2727 2 : if (code1 == NE_EXPR && !val && allbits
2728 : )
2729 : {
2730 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail870;
2731 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail870;
2732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail870;
2733 0 : {
2734 0 : tree _r;
2735 0 : _r = captures[3];
2736 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 712, __FILE__, __LINE__, true);
2737 : return _r;
2738 : }
2739 202 : next_after_fail870:;
2740 : }
2741 : else
2742 : {
2743 2 : if ((code1 == NE_EXPR
2744 2 : && code2 == GE_EXPR
2745 0 : && cmp == 0
2746 0 : && allbits)
2747 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2748 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2749 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2750 : )
2751 : {
2752 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail871;
2753 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail871;
2754 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail871;
2755 0 : {
2756 0 : tree res_op0;
2757 0 : res_op0 = captures[4];
2758 0 : tree res_op1;
2759 0 : {
2760 0 : tree _o1[1], _r1;
2761 0 : _o1[0] = captures[2];
2762 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2763 : {
2764 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2765 : }
2766 : else
2767 : _r1 = _o1[0];
2768 0 : res_op1 = _r1;
2769 : }
2770 0 : tree _r;
2771 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2772 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 713, __FILE__, __LINE__, true);
2773 : return _r;
2774 : }
2775 202 : next_after_fail871:;
2776 : }
2777 : else
2778 : {
2779 2 : if ((code1 == NE_EXPR
2780 2 : && code2 == LE_EXPR
2781 0 : && cmp == 0
2782 0 : && allbits)
2783 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2784 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2785 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2786 : )
2787 : {
2788 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail872;
2789 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail872;
2790 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail872;
2791 0 : {
2792 0 : tree res_op0;
2793 0 : res_op0 = captures[4];
2794 0 : tree res_op1;
2795 0 : {
2796 0 : tree _o1[1], _r1;
2797 0 : _o1[0] = captures[2];
2798 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2799 : {
2800 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2801 : }
2802 : else
2803 : _r1 = _o1[0];
2804 0 : res_op1 = _r1;
2805 : }
2806 0 : tree _r;
2807 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2808 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 714, __FILE__, __LINE__, true);
2809 : return _r;
2810 : }
2811 202 : next_after_fail872:;
2812 : }
2813 : else
2814 : {
2815 2 : if ((code1 == NE_EXPR
2816 2 : && code2 == GT_EXPR
2817 : && one_after
2818 0 : && allbits)
2819 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2820 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2821 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2822 : )
2823 : {
2824 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail873;
2825 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail873;
2826 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail873;
2827 0 : {
2828 0 : tree res_op0;
2829 0 : res_op0 = captures[4];
2830 0 : tree res_op1;
2831 0 : {
2832 0 : tree _o1[1], _r1;
2833 0 : _o1[0] = captures[2];
2834 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2835 : {
2836 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2837 : }
2838 : else
2839 : _r1 = _o1[0];
2840 0 : res_op1 = _r1;
2841 : }
2842 0 : tree _r;
2843 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2844 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 715, __FILE__, __LINE__, true);
2845 : return _r;
2846 : }
2847 202 : next_after_fail873:;
2848 : }
2849 : else
2850 : {
2851 2 : if ((code1 == NE_EXPR
2852 2 : && code2 == LT_EXPR
2853 : && one_before
2854 0 : && allbits)
2855 2 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2856 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2857 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2858 : )
2859 : {
2860 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail874;
2861 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail874;
2862 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail874;
2863 0 : {
2864 0 : tree res_op0;
2865 0 : res_op0 = captures[4];
2866 0 : tree res_op1;
2867 0 : {
2868 0 : tree _o1[1], _r1;
2869 0 : _o1[0] = captures[2];
2870 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2871 : {
2872 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2873 : }
2874 : else
2875 : _r1 = _o1[0];
2876 0 : res_op1 = _r1;
2877 : }
2878 0 : tree _r;
2879 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 716, __FILE__, __LINE__, true);
2881 : return _r;
2882 : }
2883 202 : next_after_fail874:;
2884 : }
2885 : }
2886 : }
2887 : }
2888 : }
2889 : }
2890 : }
2891 : }
2892 : }
2893 : return NULL_TREE;
2894 : }
2895 :
2896 : tree
2897 29 : generic_simplify_531 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2898 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2899 : {
2900 29 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2901 29 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2902 : )
2903 : {
2904 29 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail933;
2905 29 : {
2906 29 : tree res_op0;
2907 29 : {
2908 29 : tree _o1[2], _r1;
2909 29 : _o1[0] = captures[0];
2910 29 : {
2911 29 : tree _o2[1], _r2;
2912 29 : _o2[0] = captures[1];
2913 29 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2914 29 : _o1[1] = _r2;
2915 : }
2916 29 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2917 29 : res_op0 = _r1;
2918 : }
2919 29 : tree _r;
2920 29 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2921 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2922 : return _r;
2923 : }
2924 0 : next_after_fail933:;
2925 : }
2926 : return NULL_TREE;
2927 : }
2928 :
2929 : tree
2930 16 : generic_simplify_539 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2931 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2932 : {
2933 16 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2934 16 : if (ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type)
2935 : )
2936 : {
2937 16 : {
2938 16 : tree ptrdifftype = TREE_TYPE (captures[0]);
2939 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail942;
2940 16 : {
2941 16 : tree res_op0;
2942 16 : {
2943 16 : tree _o1[2], _r1;
2944 16 : _o1[0] = captures[2];
2945 16 : _o1[1] = captures[1];
2946 16 : _r1 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ptrdifftype, _o1[0], _o1[1]);
2947 16 : res_op0 = _r1;
2948 : }
2949 16 : tree _r;
2950 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2951 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 752, __FILE__, __LINE__, true);
2952 : return _r;
2953 : }
2954 0 : next_after_fail942:;
2955 : }
2956 : }
2957 : return NULL_TREE;
2958 : }
2959 :
2960 : tree
2961 0 : generic_simplify_546 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2962 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2963 : const enum tree_code ARG_UNUSED (minmax),
2964 : const enum tree_code ARG_UNUSED (maxmin))
2965 : {
2966 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail950;
2968 0 : {
2969 0 : tree _r;
2970 0 : _r = captures[0];
2971 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 760, __FILE__, __LINE__, true);
2972 : return _r;
2973 : }
2974 0 : next_after_fail950:;
2975 0 : return NULL_TREE;
2976 : }
2977 :
2978 : tree
2979 72 : generic_simplify_553 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2980 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2981 : const enum tree_code ARG_UNUSED (minmax),
2982 : const enum tree_code ARG_UNUSED (MINMAX))
2983 : {
2984 72 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2985 0 : if (ANY_INTEGRAL_TYPE_P (type)
2986 72 : && ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2987 25 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2988 15 : && element_precision (TREE_TYPE (captures[0])) < element_precision (type)
2989 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (type)
2990 72 : && (!VECTOR_TYPE_P (type)
2991 0 : || target_supports_op_p (TREE_TYPE (captures[0]), MINMAX, optab_vector))
2992 : )
2993 : {
2994 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail957;
2995 0 : {
2996 0 : tree res_op0;
2997 0 : {
2998 0 : tree _o1[2], _r1;
2999 0 : _o1[0] = captures[0];
3000 0 : _o1[1] = captures[1];
3001 0 : _r1 = fold_build2_loc (loc, minmax, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3002 0 : res_op0 = _r1;
3003 : }
3004 0 : tree _r;
3005 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3006 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 766, __FILE__, __LINE__, true);
3007 : return _r;
3008 : }
3009 0 : next_after_fail957:;
3010 : }
3011 : return NULL_TREE;
3012 : }
3013 :
3014 : tree
3015 2 : generic_simplify_565 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3016 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
3017 : {
3018 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3019 2 : if (TREE_CODE (type) != COMPLEX_TYPE
3020 2 : && (! ANY_INTEGRAL_TYPE_P (type)
3021 1 : || TYPE_OVERFLOW_UNDEFINED (type))
3022 : )
3023 : {
3024 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail983;
3025 2 : {
3026 2 : tree res_op0;
3027 2 : res_op0 = captures[0];
3028 2 : tree _r;
3029 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
3030 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 780, __FILE__, __LINE__, true);
3031 : return _r;
3032 : }
3033 0 : next_after_fail983:;
3034 : }
3035 : return NULL_TREE;
3036 : }
3037 :
3038 : tree
3039 0 : generic_simplify_569 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3040 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3041 : const combined_fn ARG_UNUSED (FMAX_ALL))
3042 : {
3043 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3044 0 : if (flag_finite_math_only
3045 : )
3046 : {
3047 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail987;
3048 0 : {
3049 0 : tree res_op0;
3050 0 : res_op0 = captures[0];
3051 0 : tree res_op1;
3052 0 : res_op1 = captures[1];
3053 0 : tree _r;
3054 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
3055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 784, __FILE__, __LINE__, true);
3056 : return _r;
3057 : }
3058 0 : next_after_fail987:;
3059 : }
3060 : return NULL_TREE;
3061 : }
3062 :
3063 : tree
3064 0 : generic_simplify_577 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3065 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3066 : const combined_fn ARG_UNUSED (cond_op))
3067 : {
3068 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3069 0 : {
3070 0 : tree op_type = TREE_TYPE (captures[6]);
3071 0 : if (inverse_conditions_p (captures[0], captures[2])
3072 0 : && element_precision (type) == element_precision (op_type)
3073 : )
3074 : {
3075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail995;
3076 0 : {
3077 0 : tree res_op0;
3078 0 : {
3079 0 : tree _o1[5], _r1;
3080 0 : _o1[0] = captures[2];
3081 0 : _o1[1] = captures[3];
3082 0 : _o1[2] = captures[4];
3083 0 : _o1[3] = captures[5];
3084 0 : {
3085 0 : tree _o2[1], _r2;
3086 0 : _o2[0] = captures[1];
3087 0 : if (TREE_TYPE (_o2[0]) != op_type)
3088 : {
3089 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3090 : }
3091 : else
3092 : _r2 = _o2[0];
3093 0 : _o1[4] = _r2;
3094 : }
3095 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 5, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4]);
3096 0 : if (!_r1)
3097 0 : goto next_after_fail995;
3098 0 : res_op0 = _r1;
3099 : }
3100 0 : tree _r;
3101 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3102 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3103 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3104 0 : if (TREE_SIDE_EFFECTS (captures[6]))
3105 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
3106 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 788, __FILE__, __LINE__, true);
3107 : return _r;
3108 : }
3109 0 : next_after_fail995:;
3110 : }
3111 : }
3112 : return NULL_TREE;
3113 : }
3114 :
3115 : tree
3116 0 : generic_simplify_590 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3117 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3118 : const enum tree_code ARG_UNUSED (bitop),
3119 : const combined_fn ARG_UNUSED (bswap))
3120 : {
3121 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3122 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1011;
3123 0 : {
3124 0 : tree res_op0;
3125 0 : res_op0 = captures[0];
3126 0 : tree res_op1;
3127 0 : {
3128 0 : tree _o1[1], _r1;
3129 0 : _o1[0] = captures[1];
3130 0 : _r1 = maybe_build_call_expr_loc (loc, bswap, TREE_TYPE (_o1[0]), 1, _o1[0]);
3131 0 : if (!_r1)
3132 0 : goto next_after_fail1011;
3133 0 : res_op1 = _r1;
3134 : }
3135 0 : tree _r;
3136 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
3137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 804, __FILE__, __LINE__, true);
3138 : return _r;
3139 : }
3140 0 : next_after_fail1011:;
3141 : return NULL_TREE;
3142 : }
3143 :
3144 : tree
3145 0 : generic_simplify_598 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3146 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3147 : const combined_fn ARG_UNUSED (logs),
3148 : const combined_fn ARG_UNUSED (pows))
3149 : {
3150 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3151 0 : if (flag_unsafe_math_optimizations
3152 : )
3153 : {
3154 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1019;
3155 0 : {
3156 0 : tree res_op0;
3157 0 : res_op0 = captures[1];
3158 0 : tree res_op1;
3159 0 : {
3160 0 : tree _o1[1], _r1;
3161 0 : _o1[0] = captures[0];
3162 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3163 0 : if (!_r1)
3164 0 : goto next_after_fail1019;
3165 0 : res_op1 = _r1;
3166 : }
3167 0 : tree _r;
3168 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3169 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 812, __FILE__, __LINE__, true);
3170 : return _r;
3171 : }
3172 0 : next_after_fail1019:;
3173 : }
3174 : return NULL_TREE;
3175 : }
3176 :
3177 : tree
3178 0 : generic_simplify_606 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3179 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3180 : const combined_fn ARG_UNUSED (floors),
3181 : const combined_fn ARG_UNUSED (truncs))
3182 : {
3183 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3184 0 : if (canonicalize_math_p ()
3185 : )
3186 : {
3187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1027;
3188 0 : {
3189 0 : tree res_op0;
3190 0 : res_op0 = captures[0];
3191 0 : tree _r;
3192 0 : _r = maybe_build_call_expr_loc (loc, truncs, type, 1, res_op0);
3193 0 : if (!_r)
3194 0 : goto next_after_fail1027;
3195 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 820, __FILE__, __LINE__, true);
3196 : return _r;
3197 : }
3198 0 : next_after_fail1027:;
3199 : }
3200 : return NULL_TREE;
3201 : }
3202 :
3203 : tree
3204 0 : generic_simplify_613 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3205 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3206 : const combined_fn ARG_UNUSED (ifn),
3207 : const combined_fn ARG_UNUSED (lfn),
3208 : const combined_fn ARG_UNUSED (llfn))
3209 : {
3210 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3211 0 : if (canonicalize_math_p ()
3212 : )
3213 : {
3214 0 : if (TYPE_PRECISION (integer_type_node)
3215 0 : == TYPE_PRECISION (long_integer_type_node)
3216 : )
3217 : {
3218 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1034;
3219 0 : {
3220 0 : tree res_op0;
3221 0 : res_op0 = captures[0];
3222 0 : tree _r;
3223 0 : _r = maybe_build_call_expr_loc (loc, lfn, type, 1, res_op0);
3224 0 : if (!_r)
3225 0 : goto next_after_fail1034;
3226 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
3227 : return _r;
3228 : }
3229 0 : next_after_fail1034:;
3230 : }
3231 : }
3232 : return NULL_TREE;
3233 : }
3234 :
3235 : tree
3236 0 : generic_simplify_624 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3238 : {
3239 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3240 0 : if (canonicalize_math_after_vectorization_p ()
3241 : )
3242 : {
3243 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1045;
3244 : {
3245 : tree res_op0;
3246 : res_op0 = captures[0];
3247 : tree res_op1;
3248 : res_op1 = captures[1];
3249 : tree res_op2;
3250 : res_op2 = captures[2];
3251 : tree _r;
3252 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3253 : if (!_r)
3254 : goto next_after_fail1045;
3255 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 838, __FILE__, __LINE__, true);
3256 : return _r;
3257 : }
3258 0 : next_after_fail1045:;
3259 : }
3260 0 : return NULL_TREE;
3261 : }
3262 :
3263 : tree
3264 0 : generic_simplify_633 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3265 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3266 : {
3267 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3268 0 : if (canonicalize_math_after_vectorization_p ()
3269 : )
3270 : {
3271 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1054;
3272 : {
3273 : tree res_op0;
3274 : res_op0 = captures[0];
3275 : tree res_op1;
3276 : res_op1 = captures[1];
3277 : tree res_op2;
3278 : res_op2 = captures[2];
3279 : tree res_op3;
3280 : res_op3 = captures[3];
3281 : tree res_op4;
3282 : res_op4 = captures[4];
3283 : tree _r;
3284 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3285 : if (!_r)
3286 : goto next_after_fail1054;
3287 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
3288 : return _r;
3289 : }
3290 0 : next_after_fail1054:;
3291 : }
3292 0 : return NULL_TREE;
3293 : }
3294 :
3295 : tree
3296 0 : generic_simplify_642 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3297 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3298 : const combined_fn ARG_UNUSED (POPCOUNT))
3299 : {
3300 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3301 0 : {
3302 0 : tree type0 = TREE_TYPE (captures[1]);
3303 0 : tree type2 = TREE_TYPE (captures[0]);
3304 0 : if (INTEGRAL_TYPE_P (type0)
3305 0 : && TYPE_PRECISION (type2) <= TYPE_PRECISION (type0)
3306 : )
3307 : {
3308 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1063;
3309 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1063;
3310 0 : {
3311 0 : tree res_op0;
3312 0 : {
3313 0 : tree _o1[2], _r1;
3314 0 : {
3315 0 : tree _o2[1], _r2;
3316 0 : _o2[0] = captures[2];
3317 0 : if (TREE_TYPE (_o2[0]) != type2)
3318 : {
3319 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type2, _o2[0]);
3320 : }
3321 : else
3322 : _r2 = _o2[0];
3323 0 : _o1[0] = _r2;
3324 : }
3325 0 : _o1[1] = build_zero_cst (type2);
3326 0 : _r1 = fold_build2_loc (loc, NE_EXPR, boolean_type_node, _o1[0], _o1[1]);
3327 0 : res_op0 = _r1;
3328 : }
3329 0 : tree _r;
3330 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3331 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
3332 : return _r;
3333 : }
3334 0 : next_after_fail1063:;
3335 : }
3336 : }
3337 : return NULL_TREE;
3338 : }
3339 :
3340 : tree
3341 0 : generic_simplify_650 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3342 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3343 : const enum tree_code ARG_UNUSED (rot),
3344 : const combined_fn ARG_UNUSED (parity))
3345 : {
3346 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3347 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3348 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3349 0 : && (
3350 :
3351 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3352 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3353 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3354 : )
3355 : {
3356 0 : {
3357 0 : tree type0 = TREE_TYPE (captures[0]);
3358 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1073;
3359 0 : {
3360 0 : tree res_op0;
3361 0 : {
3362 0 : tree _o1[1], _r1;
3363 0 : _o1[0] = captures[2];
3364 0 : if (TREE_TYPE (_o1[0]) != type0)
3365 : {
3366 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3367 : }
3368 : else
3369 : _r1 = _o1[0];
3370 0 : res_op0 = _r1;
3371 : }
3372 0 : tree _r;
3373 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3374 0 : if (!_r)
3375 0 : goto next_after_fail1073;
3376 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3377 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3378 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 859, __FILE__, __LINE__, true);
3379 : return _r;
3380 : }
3381 0 : next_after_fail1073:;
3382 : }
3383 : }
3384 : return NULL_TREE;
3385 : }
3386 :
3387 : tree
3388 491481728 : generic_simplify_VIEW_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3389 : {
3390 491481728 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3391 491481728 : {
3392 491481728 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3393 982963456 : if ((
3394 :
3395 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3396 : || (
3397 : 1
3398 491481728 : && type == TREE_TYPE (captures[0]))
3399 : )
3400 : {
3401 221085575 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1149;
3402 221085575 : {
3403 221085575 : tree _r;
3404 221085575 : _r = captures[0];
3405 221085575 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 875, __FILE__, __LINE__, true);
3406 491481728 : return _r;
3407 : }
3408 0 : next_after_fail1149:;
3409 : }
3410 : }
3411 270396153 : switch (TREE_CODE (_p0))
3412 : {
3413 29826884 : case VIEW_CONVERT_EXPR:
3414 29826884 : {
3415 29826884 : tree _q20 = TREE_OPERAND (_p0, 0);
3416 29826884 : {
3417 29826884 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3418 29826884 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1150;
3419 29826884 : {
3420 29826884 : tree res_op0;
3421 29826884 : res_op0 = captures[0];
3422 29826884 : tree _r;
3423 29826884 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3424 29826884 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 909, __FILE__, __LINE__, true);
3425 491481728 : return _r;
3426 : }
3427 0 : next_after_fail1150:;
3428 : }
3429 0 : break;
3430 : }
3431 0 : case BIT_FIELD_REF:
3432 0 : {
3433 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3434 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3435 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3436 0 : {
3437 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3438 0 : if (is_gimple_reg_type (type)
3439 0 : && (!INTEGRAL_TYPE_P (type)
3440 0 : || type_has_mode_precision_p (type))
3441 0 : && (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3442 0 : || type_has_mode_precision_p (TREE_TYPE (captures[0])))
3443 : )
3444 : {
3445 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1151;
3446 0 : {
3447 0 : tree res_op0;
3448 0 : res_op0 = captures[1];
3449 0 : tree res_op1;
3450 0 : res_op1 = captures[2];
3451 0 : tree res_op2;
3452 0 : res_op2 = captures[3];
3453 0 : tree _r;
3454 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
3455 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
3456 : return _r;
3457 : }
3458 0 : next_after_fail1151:;
3459 : }
3460 : }
3461 : break;
3462 : }
3463 240569269 : default:;
3464 : }
3465 240569269 : {
3466 240569269 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3467 238757115 : if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
3468 2879646 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3469 243169465 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3470 : )
3471 : {
3472 2218473 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1152;
3473 2218473 : {
3474 2218473 : tree res_op0;
3475 2218473 : res_op0 = captures[0];
3476 2218473 : tree _r;
3477 2218473 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3478 2218473 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
3479 491481728 : return _r;
3480 : }
3481 0 : next_after_fail1152:;
3482 : }
3483 : }
3484 238350796 : switch (TREE_CODE (_p0))
3485 : {
3486 3498 : CASE_CONVERT:
3487 3498 : {
3488 3498 : tree _q20 = TREE_OPERAND (_p0, 0);
3489 3498 : {
3490 3498 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3491 3498 : {
3492 3498 : bool extended_bitint = false;
3493 3498 : if (BITINT_TYPE_P (TREE_TYPE (captures[0])))
3494 : {
3495 0 : struct bitint_info info;
3496 0 : extended_bitint
3497 0 : = targetm.c.bitint_type_info (TYPE_PRECISION (TREE_TYPE (captures[0])),
3498 : &info);
3499 0 : extended_bitint = extended_bitint && info.extended;
3500 : }
3501 6996 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3502 71 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1])))
3503 71 : && !extended_bitint
3504 71 : && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1]))
3505 3498 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
3506 0 : || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3507 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
3508 : )
3509 : {
3510 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
3511 0 : {
3512 0 : tree res_op0;
3513 0 : res_op0 = captures[1];
3514 0 : tree _r;
3515 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3516 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
3517 : return _r;
3518 : }
3519 0 : next_after_fail1153:;
3520 : }
3521 : }
3522 : }
3523 : break;
3524 : }
3525 83651 : case CONSTRUCTOR:
3526 83651 : {
3527 83651 : {
3528 83651 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3529 83651 : {
3530 83651 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3531 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3532 83651 : if (CONSTRUCTOR_NELTS (ctor) == 0
3533 : )
3534 : {
3535 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1154;
3536 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1154;
3537 6 : {
3538 6 : tree _r;
3539 6 : _r = build_zero_cst (type);
3540 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 913, __FILE__, __LINE__, true);
3541 : return _r;
3542 : }
3543 491481728 : next_after_fail1154:;
3544 : }
3545 : else
3546 : {
3547 83645 : if (CONSTRUCTOR_NELTS (ctor) == 1
3548 40 : && VECTOR_TYPE_P (TREE_TYPE (ctor))
3549 83680 : && operand_equal_p (TYPE_SIZE (type),
3550 35 : TYPE_SIZE (TREE_TYPE
3551 : (CONSTRUCTOR_ELT (ctor, 0)->value)))
3552 : )
3553 : {
3554 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1155;
3555 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1155;
3556 0 : {
3557 0 : tree res_op0;
3558 0 : res_op0 = CONSTRUCTOR_ELT (ctor, 0)->value;
3559 0 : tree _r;
3560 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3561 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 914, __FILE__, __LINE__, true);
3562 : return _r;
3563 : }
3564 491481728 : next_after_fail1155:;
3565 : }
3566 : }
3567 : }
3568 : }
3569 : break;
3570 : }
3571 290799 : case VEC_COND_EXPR:
3572 290799 : {
3573 290799 : tree _q20 = TREE_OPERAND (_p0, 0);
3574 290799 : tree _q21 = TREE_OPERAND (_p0, 1);
3575 290799 : tree _q22 = TREE_OPERAND (_p0, 2);
3576 290799 : {
3577 290799 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3578 290750 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3579 333217 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
3580 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[2])))
3581 42418 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[2])))
3582 332860 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
3583 371 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
3584 : )
3585 : {
3586 42061 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1156;
3587 42061 : {
3588 42061 : tree res_op0;
3589 42061 : res_op0 = captures[1];
3590 42061 : tree res_op1;
3591 42061 : {
3592 42061 : tree _o1[1], _r1;
3593 42061 : _o1[0] = captures[2];
3594 42061 : if (TREE_TYPE (_o1[0]) != type)
3595 : {
3596 42061 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3597 42061 : if (EXPR_P (_r1))
3598 166 : goto next_after_fail1156;
3599 : }
3600 : else
3601 : _r1 = _o1[0];
3602 41895 : res_op1 = _r1;
3603 : }
3604 41895 : tree res_op2;
3605 41895 : {
3606 41895 : tree _o1[1], _r1;
3607 41895 : _o1[0] = captures[3];
3608 41895 : if (TREE_TYPE (_o1[0]) != type)
3609 : {
3610 41895 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3611 41895 : if (EXPR_P (_r1))
3612 0 : goto next_after_fail1156;
3613 : }
3614 : else
3615 : _r1 = _o1[0];
3616 41895 : res_op2 = _r1;
3617 : }
3618 41895 : tree _r;
3619 41895 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3620 41895 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 915, __FILE__, __LINE__, true);
3621 : return _r;
3622 : }
3623 491481728 : next_after_fail1156:;
3624 : }
3625 : }
3626 : break;
3627 : }
3628 : default:;
3629 : }
3630 : return NULL_TREE;
3631 : }
3632 :
3633 : tree
3634 1799152741 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0)
3635 : {
3636 1799152741 : switch (code)
3637 : {
3638 3462195 : case ABS_EXPR:
3639 3462195 : return generic_simplify_ABS_EXPR (loc, code, type, _p0);
3640 900923812 : CASE_CONVERT:
3641 900923812 : return generic_simplify_CONVERT_EXPR (loc, code, type, _p0);
3642 2887577 : case BIT_NOT_EXPR:
3643 2887577 : return generic_simplify_BIT_NOT_EXPR (loc, code, type, _p0);
3644 943 : case ABSU_EXPR:
3645 943 : return generic_simplify_ABSU_EXPR (loc, code, type, _p0);
3646 4353536 : case NEGATE_EXPR:
3647 4353536 : return generic_simplify_NEGATE_EXPR (loc, code, type, _p0);
3648 6630384 : case FLOAT_EXPR:
3649 6630384 : return generic_simplify_FLOAT_EXPR (loc, code, type, _p0);
3650 491481728 : case VIEW_CONVERT_EXPR:
3651 491481728 : return generic_simplify_VIEW_CONVERT_EXPR (loc, code, type, _p0);
3652 518652 : case FIX_TRUNC_EXPR:
3653 518652 : return generic_simplify_FIX_TRUNC_EXPR (loc, code, type, _p0);
3654 3678 : case PAREN_EXPR:
3655 3678 : return generic_simplify_PAREN_EXPR (loc, code, type, _p0);
3656 1951651 : case REALPART_EXPR:
3657 1951651 : return generic_simplify_REALPART_EXPR (loc, code, type, _p0);
3658 2220383 : case IMAGPART_EXPR:
3659 2220383 : return generic_simplify_IMAGPART_EXPR (loc, code, type, _p0);
3660 1330 : case CONJ_EXPR:
3661 1330 : return generic_simplify_CONJ_EXPR (loc, code, type, _p0);
3662 : default:;
3663 : }
3664 : return NULL_TREE;
3665 : }
3666 :
3667 : tree
3668 82268105 : generic_simplify_POINTER_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3669 : {
3670 82268105 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3671 82268105 : if (integer_zerop (_p1))
3672 : {
3673 2811071 : {
3674 2811071 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3675 2811071 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1313;
3676 2811071 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1313;
3677 2811071 : {
3678 2811071 : tree res_op0;
3679 2811071 : res_op0 = captures[0];
3680 2811071 : tree _r;
3681 2811071 : _r = non_lvalue_loc (loc, res_op0);
3682 2811071 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 927, __FILE__, __LINE__, true);
3683 82268105 : return _r;
3684 : }
3685 79457034 : next_after_fail1313:;
3686 : }
3687 : }
3688 79457034 : switch (TREE_CODE (_p0))
3689 : {
3690 6060060 : case POINTER_PLUS_EXPR:
3691 6060060 : {
3692 6060060 : tree _q20 = TREE_OPERAND (_p0, 0);
3693 6060060 : tree _q21 = TREE_OPERAND (_p0, 1);
3694 6060060 : {
3695 6060060 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3696 6060060 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1314;
3697 6060060 : {
3698 6060060 : tree res_op0;
3699 6060060 : res_op0 = captures[1];
3700 6060060 : tree res_op1;
3701 6060060 : {
3702 6060060 : tree _o1[2], _r1;
3703 6060060 : _o1[0] = captures[2];
3704 6060060 : _o1[1] = captures[3];
3705 6060060 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3706 6060060 : res_op1 = _r1;
3707 : }
3708 6060060 : tree _r;
3709 6060060 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3710 6060060 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
3711 : return _r;
3712 : }
3713 0 : next_after_fail1314:;
3714 : }
3715 0 : break;
3716 : }
3717 49024054 : CASE_CONVERT:
3718 49024054 : {
3719 49024054 : tree _q20 = TREE_OPERAND (_p0, 0);
3720 49024054 : switch (TREE_CODE (_q20))
3721 : {
3722 27611 : case POINTER_PLUS_EXPR:
3723 27611 : {
3724 27611 : tree _q30 = TREE_OPERAND (_q20, 0);
3725 27611 : tree _q31 = TREE_OPERAND (_q20, 1);
3726 27611 : {
3727 27611 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
3728 27611 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1315;
3729 27611 : {
3730 27611 : tree res_op0;
3731 27611 : {
3732 27611 : tree _o1[1], _r1;
3733 27611 : _o1[0] = captures[2];
3734 27611 : if (TREE_TYPE (_o1[0]) != type)
3735 : {
3736 27505 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3737 : }
3738 : else
3739 : _r1 = _o1[0];
3740 27611 : res_op0 = _r1;
3741 : }
3742 27611 : tree res_op1;
3743 27611 : {
3744 27611 : tree _o1[2], _r1;
3745 27611 : _o1[0] = captures[3];
3746 27611 : _o1[1] = captures[4];
3747 27611 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3748 27611 : res_op1 = _r1;
3749 : }
3750 27611 : tree _r;
3751 27611 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3752 27611 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 949, __FILE__, __LINE__, true);
3753 : return _r;
3754 : }
3755 0 : next_after_fail1315:;
3756 : }
3757 0 : break;
3758 : }
3759 : default:;
3760 : }
3761 : break;
3762 : }
3763 73369363 : default:;
3764 : }
3765 73369363 : if (integer_zerop (_p0))
3766 : {
3767 649 : {
3768 649 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
3769 649 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1316;
3770 649 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1316;
3771 649 : {
3772 649 : tree res_op0;
3773 649 : {
3774 649 : tree _o1[1], _r1;
3775 649 : _o1[0] = captures[0];
3776 649 : if (TREE_TYPE (_o1[0]) != type)
3777 : {
3778 649 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3779 : }
3780 : else
3781 : _r1 = _o1[0];
3782 649 : res_op0 = _r1;
3783 : }
3784 649 : tree _r;
3785 649 : _r = non_lvalue_loc (loc, res_op0);
3786 649 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 950, __FILE__, __LINE__, true);
3787 82268105 : return _r;
3788 : }
3789 73368714 : next_after_fail1316:;
3790 : }
3791 : }
3792 73368714 : switch (TREE_CODE (_p1))
3793 : {
3794 9738565 : CASE_CONVERT:
3795 9738565 : {
3796 9738565 : tree _q30 = TREE_OPERAND (_p1, 0);
3797 9738565 : switch (TREE_CODE (_q30))
3798 : {
3799 209564 : case MINUS_EXPR:
3800 209564 : {
3801 209564 : tree _q40 = TREE_OPERAND (_q30, 0);
3802 209564 : tree _q41 = TREE_OPERAND (_q30, 1);
3803 209564 : switch (TREE_CODE (_q40))
3804 : {
3805 94422 : CASE_CONVERT:
3806 94422 : {
3807 94422 : tree _q50 = TREE_OPERAND (_q40, 0);
3808 94422 : switch (TREE_CODE (_q41))
3809 : {
3810 7381 : CASE_CONVERT:
3811 7381 : {
3812 7381 : tree _q70 = TREE_OPERAND (_q41, 0);
3813 7381 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3814 : {
3815 4488 : {
3816 4488 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
3817 4488 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3818 4488 : && ((
3819 :
3820 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3821 : || (
3822 : 1
3823 4488 : && type == TREE_TYPE (captures[3])))
3824 : )
3825 : {
3826 2915 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1317;
3827 2915 : {
3828 2915 : tree _r;
3829 2915 : _r = captures[3];
3830 2915 : if (TREE_SIDE_EFFECTS (captures[0]))
3831 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3832 2915 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
3833 : return _r;
3834 : }
3835 0 : next_after_fail1317:;
3836 : }
3837 : }
3838 : }
3839 : break;
3840 : }
3841 : default:;
3842 : }
3843 : break;
3844 : }
3845 : default:;
3846 : }
3847 : break;
3848 : }
3849 596 : case POINTER_DIFF_EXPR:
3850 596 : {
3851 596 : tree _q40 = TREE_OPERAND (_q30, 0);
3852 596 : tree _q41 = TREE_OPERAND (_q30, 1);
3853 596 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
3854 : {
3855 7 : {
3856 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
3857 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3858 : )
3859 : {
3860 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1318;
3861 7 : {
3862 7 : tree res_op0;
3863 7 : res_op0 = captures[3];
3864 7 : tree _r;
3865 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3866 7 : if (TREE_SIDE_EFFECTS (captures[4]))
3867 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3868 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 952, __FILE__, __LINE__, true);
3869 : return _r;
3870 : }
3871 0 : next_after_fail1318:;
3872 : }
3873 : }
3874 : }
3875 : break;
3876 : }
3877 : default:;
3878 : }
3879 : break;
3880 : }
3881 56001 : case MINUS_EXPR:
3882 56001 : {
3883 56001 : tree _q30 = TREE_OPERAND (_p1, 0);
3884 56001 : tree _q31 = TREE_OPERAND (_p1, 1);
3885 56001 : switch (TREE_CODE (_q30))
3886 : {
3887 52507 : CASE_CONVERT:
3888 52507 : {
3889 52507 : tree _q40 = TREE_OPERAND (_q30, 0);
3890 52507 : switch (TREE_CODE (_q31))
3891 : {
3892 35445 : CASE_CONVERT:
3893 35445 : {
3894 35445 : tree _q60 = TREE_OPERAND (_q31, 0);
3895 35445 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3896 : {
3897 24 : {
3898 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
3899 24 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3900 24 : && ((
3901 :
3902 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3903 : || (
3904 : 1
3905 24 : && type == TREE_TYPE (captures[3])))
3906 : )
3907 : {
3908 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1319;
3909 0 : {
3910 0 : tree _r;
3911 0 : _r = captures[3];
3912 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3913 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3914 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 951, __FILE__, __LINE__, true);
3915 : return _r;
3916 : }
3917 0 : next_after_fail1319:;
3918 : }
3919 : }
3920 : }
3921 : break;
3922 : }
3923 : default:;
3924 : }
3925 : break;
3926 : }
3927 444 : case INTEGER_CST:
3928 444 : {
3929 444 : switch (TREE_CODE (_q31))
3930 : {
3931 16 : case BIT_AND_EXPR:
3932 16 : {
3933 16 : tree _q50 = TREE_OPERAND (_q31, 0);
3934 16 : tree _q51 = TREE_OPERAND (_q31, 1);
3935 16 : switch (TREE_CODE (_q50))
3936 : {
3937 16 : CASE_CONVERT:
3938 16 : {
3939 16 : tree _q60 = TREE_OPERAND (_q50, 0);
3940 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3941 : {
3942 0 : switch (TREE_CODE (_q51))
3943 : {
3944 0 : case INTEGER_CST:
3945 0 : {
3946 0 : {
3947 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
3948 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
3949 : )
3950 : {
3951 0 : {
3952 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
3953 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1320;
3954 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1320;
3955 0 : {
3956 0 : tree res_op0;
3957 0 : {
3958 0 : tree _o1[2], _r1;
3959 0 : _o1[0] = captures[0];
3960 0 : _o1[1] = algn;
3961 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3962 0 : res_op0 = _r1;
3963 : }
3964 0 : tree res_op1;
3965 0 : res_op1 = captures[2];
3966 0 : tree _r;
3967 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3968 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 953, __FILE__, __LINE__, true);
3969 : return _r;
3970 : }
3971 16 : next_after_fail1320:;
3972 : }
3973 : }
3974 : }
3975 : break;
3976 : }
3977 : default:;
3978 : }
3979 : }
3980 16 : switch (TREE_CODE (_q60))
3981 : {
3982 0 : case POINTER_PLUS_EXPR:
3983 0 : {
3984 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3985 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3986 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3987 : {
3988 0 : switch (TREE_CODE (_q71))
3989 : {
3990 0 : case INTEGER_CST:
3991 0 : {
3992 0 : switch (TREE_CODE (_q51))
3993 : {
3994 0 : case INTEGER_CST:
3995 0 : {
3996 0 : {
3997 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
3998 0 : {
3999 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
4000 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
4001 : )
4002 : {
4003 0 : {
4004 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
4005 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1321;
4006 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1321;
4007 0 : {
4008 0 : tree res_op0;
4009 0 : {
4010 0 : tree _o1[2], _r1;
4011 0 : _o1[0] = captures[0];
4012 0 : _o1[1] = algn;
4013 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4014 0 : res_op0 = _r1;
4015 : }
4016 0 : tree res_op1;
4017 0 : res_op1 = captures[2];
4018 0 : tree _r;
4019 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
4020 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4021 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4022 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 954, __FILE__, __LINE__, true);
4023 : return _r;
4024 : }
4025 82268105 : next_after_fail1321:;
4026 : }
4027 : }
4028 : }
4029 : }
4030 : break;
4031 : }
4032 : default:;
4033 : }
4034 : break;
4035 : }
4036 : default:;
4037 : }
4038 : }
4039 : break;
4040 : }
4041 : default:;
4042 : }
4043 : break;
4044 : }
4045 : default:;
4046 : }
4047 : break;
4048 : }
4049 : default:;
4050 : }
4051 : break;
4052 : }
4053 : default:;
4054 : }
4055 : break;
4056 : }
4057 0 : case POINTER_DIFF_EXPR:
4058 0 : {
4059 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4060 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4061 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
4062 : {
4063 0 : {
4064 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
4065 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
4066 : )
4067 : {
4068 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1322;
4069 0 : {
4070 0 : tree res_op0;
4071 0 : res_op0 = captures[3];
4072 0 : tree _r;
4073 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4074 0 : if (TREE_SIDE_EFFECTS (captures[4]))
4075 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
4076 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 952, __FILE__, __LINE__, true);
4077 : return _r;
4078 : }
4079 0 : next_after_fail1322:;
4080 : }
4081 : }
4082 : }
4083 : break;
4084 : }
4085 372556 : case NEGATE_EXPR:
4086 372556 : {
4087 372556 : tree _q30 = TREE_OPERAND (_p1, 0);
4088 372556 : switch (TREE_CODE (_q30))
4089 : {
4090 22 : case BIT_AND_EXPR:
4091 22 : {
4092 22 : tree _q40 = TREE_OPERAND (_q30, 0);
4093 22 : tree _q41 = TREE_OPERAND (_q30, 1);
4094 22 : switch (TREE_CODE (_q40))
4095 : {
4096 22 : CASE_CONVERT:
4097 22 : {
4098 22 : tree _q50 = TREE_OPERAND (_q40, 0);
4099 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
4100 : {
4101 1 : switch (TREE_CODE (_q41))
4102 : {
4103 1 : case INTEGER_CST:
4104 1 : {
4105 1 : {
4106 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
4107 1 : {
4108 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
4109 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1323;
4110 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1323;
4111 1 : {
4112 1 : tree res_op0;
4113 1 : res_op0 = captures[0];
4114 1 : tree res_op1;
4115 1 : res_op1 = algn;
4116 1 : tree _r;
4117 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4118 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
4119 : return _r;
4120 : }
4121 21 : next_after_fail1323:;
4122 : }
4123 : }
4124 : break;
4125 : }
4126 : default:;
4127 : }
4128 : }
4129 21 : switch (TREE_CODE (_q50))
4130 : {
4131 0 : case POINTER_PLUS_EXPR:
4132 0 : {
4133 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4134 0 : tree _q61 = TREE_OPERAND (_q50, 1);
4135 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
4136 : {
4137 0 : switch (TREE_CODE (_q61))
4138 : {
4139 0 : case INTEGER_CST:
4140 0 : {
4141 0 : switch (TREE_CODE (_q41))
4142 : {
4143 0 : case INTEGER_CST:
4144 0 : {
4145 0 : {
4146 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
4147 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
4148 : )
4149 : {
4150 0 : {
4151 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
4152 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1324;
4153 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1324;
4154 0 : {
4155 0 : tree res_op0;
4156 0 : res_op0 = captures[0];
4157 0 : tree res_op1;
4158 0 : res_op1 = algn;
4159 0 : tree _r;
4160 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4161 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4162 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4163 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
4164 : return _r;
4165 : }
4166 82268105 : next_after_fail1324:;
4167 : }
4168 : }
4169 : }
4170 : break;
4171 : }
4172 : default:;
4173 : }
4174 : break;
4175 : }
4176 : default:;
4177 : }
4178 : }
4179 : break;
4180 : }
4181 : default:;
4182 : }
4183 : break;
4184 : }
4185 : default:;
4186 : }
4187 : break;
4188 : }
4189 : default:;
4190 : }
4191 : break;
4192 : }
4193 : default:;
4194 : }
4195 : return NULL_TREE;
4196 : }
4197 :
4198 : tree
4199 39445458 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4200 : {
4201 39445458 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4202 39445458 : switch (TREE_CODE (_p1))
4203 : {
4204 2266 : case NEGATE_EXPR:
4205 2266 : {
4206 2266 : tree _q30 = TREE_OPERAND (_p1, 0);
4207 2266 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4208 : {
4209 0 : {
4210 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4211 0 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4212 0 : if (res) return res;
4213 : }
4214 : }
4215 : break;
4216 : }
4217 39445458 : default:;
4218 : }
4219 39445458 : switch (TREE_CODE (_p0))
4220 : {
4221 6238 : case NEGATE_EXPR:
4222 6238 : {
4223 6238 : tree _q20 = TREE_OPERAND (_p0, 0);
4224 6238 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4225 : {
4226 88 : {
4227 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4228 88 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR);
4229 88 : if (res) return res;
4230 : }
4231 : }
4232 : break;
4233 : }
4234 0 : case CEIL_MOD_EXPR:
4235 0 : {
4236 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4237 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4238 0 : if (integer_pow2p (_q21))
4239 : {
4240 0 : if (integer_zerop (_p1))
4241 : {
4242 0 : {
4243 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4244 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
4245 0 : if (res) return res;
4246 : }
4247 : }
4248 : }
4249 : break;
4250 : }
4251 1617 : case FLOOR_MOD_EXPR:
4252 1617 : {
4253 1617 : tree _q20 = TREE_OPERAND (_p0, 0);
4254 1617 : tree _q21 = TREE_OPERAND (_p0, 1);
4255 1617 : if (integer_pow2p (_q21))
4256 : {
4257 20 : if (integer_zerop (_p1))
4258 : {
4259 20 : {
4260 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4261 20 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
4262 20 : if (res) return res;
4263 : }
4264 : }
4265 : }
4266 : break;
4267 : }
4268 0 : case ROUND_MOD_EXPR:
4269 0 : {
4270 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4271 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4272 0 : if (integer_pow2p (_q21))
4273 : {
4274 0 : if (integer_zerop (_p1))
4275 : {
4276 0 : {
4277 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4278 0 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
4279 0 : if (res) return res;
4280 : }
4281 : }
4282 : }
4283 : break;
4284 : }
4285 84641 : case TRUNC_MOD_EXPR:
4286 84641 : {
4287 84641 : tree _q20 = TREE_OPERAND (_p0, 0);
4288 84641 : tree _q21 = TREE_OPERAND (_p0, 1);
4289 84641 : if (integer_pow2p (_q21))
4290 : {
4291 21750 : if (integer_zerop (_p1))
4292 : {
4293 20368 : {
4294 20368 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4295 20368 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
4296 20368 : if (res) return res;
4297 : }
4298 : }
4299 : }
4300 : break;
4301 : }
4302 8839211 : CASE_CONVERT:
4303 8839211 : {
4304 8839211 : tree _q20 = TREE_OPERAND (_p0, 0);
4305 8839211 : switch (TREE_CODE (_p1))
4306 : {
4307 69 : case LSHIFT_EXPR:
4308 69 : {
4309 69 : tree _q40 = TREE_OPERAND (_p1, 0);
4310 69 : tree _q41 = TREE_OPERAND (_p1, 1);
4311 69 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4312 : {
4313 0 : {
4314 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4315 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4316 0 : if (res) return res;
4317 : }
4318 : }
4319 : break;
4320 : }
4321 8839211 : default:;
4322 : }
4323 8839211 : {
4324 8839211 : tree _p1_pops[1];
4325 8839211 : if (tree_nop_convert (_p1, _p1_pops))
4326 : {
4327 4783923 : tree _q40 = _p1_pops[0];
4328 4783923 : switch (TREE_CODE (_q40))
4329 : {
4330 0 : case LSHIFT_EXPR:
4331 0 : {
4332 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4333 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4334 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4335 : {
4336 0 : {
4337 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4338 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4339 0 : if (res) return res;
4340 : }
4341 : }
4342 : break;
4343 : }
4344 : default:;
4345 : }
4346 : }
4347 : }
4348 8839211 : switch (TREE_CODE (_q20))
4349 : {
4350 0 : case EXACT_DIV_EXPR:
4351 0 : {
4352 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4353 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4354 0 : switch (TREE_CODE (_q31))
4355 : {
4356 0 : case INTEGER_CST:
4357 0 : {
4358 0 : switch (TREE_CODE (_p1))
4359 : {
4360 0 : CASE_CONVERT:
4361 0 : {
4362 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4363 0 : switch (TREE_CODE (_q60))
4364 : {
4365 0 : case EXACT_DIV_EXPR:
4366 0 : {
4367 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4368 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4369 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4370 : {
4371 0 : {
4372 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4373 0 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
4374 0 : if (res) return res;
4375 : }
4376 : }
4377 : break;
4378 : }
4379 : default:;
4380 : }
4381 : break;
4382 : }
4383 : default:;
4384 : }
4385 : break;
4386 : }
4387 : default:;
4388 : }
4389 : break;
4390 : }
4391 8839211 : default:;
4392 : }
4393 8839211 : switch (TREE_CODE (_p1))
4394 : {
4395 20860 : case PLUS_EXPR:
4396 20860 : {
4397 20860 : tree _q40 = TREE_OPERAND (_p1, 0);
4398 20860 : tree _q41 = TREE_OPERAND (_p1, 1);
4399 20860 : switch (TREE_CODE (_q41))
4400 : {
4401 203 : CASE_CONVERT:
4402 203 : {
4403 203 : tree _q60 = TREE_OPERAND (_q41, 0);
4404 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4405 : {
4406 0 : {
4407 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4408 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
4409 0 : if (res) return res;
4410 : }
4411 : }
4412 : break;
4413 : }
4414 20860 : default:;
4415 : }
4416 20860 : switch (TREE_CODE (_q40))
4417 : {
4418 798 : CASE_CONVERT:
4419 798 : {
4420 798 : tree _q50 = TREE_OPERAND (_q40, 0);
4421 798 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4422 : {
4423 13 : {
4424 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4425 13 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
4426 13 : if (res) return res;
4427 : }
4428 : }
4429 : break;
4430 : }
4431 20855 : default:;
4432 : }
4433 20855 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4434 : {
4435 0 : {
4436 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4437 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
4438 0 : if (res) return res;
4439 : }
4440 : }
4441 20855 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4442 : {
4443 0 : {
4444 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4445 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
4446 0 : if (res) return res;
4447 : }
4448 : }
4449 : break;
4450 : }
4451 8839206 : default:;
4452 : }
4453 8839206 : {
4454 8839206 : tree _p1_pops[1];
4455 8839206 : if (tree_nop_convert (_p1, _p1_pops))
4456 : {
4457 4783923 : tree _q40 = _p1_pops[0];
4458 4783923 : switch (TREE_CODE (_q40))
4459 : {
4460 170 : case PLUS_EXPR:
4461 170 : {
4462 170 : tree _q50 = TREE_OPERAND (_q40, 0);
4463 170 : tree _q51 = TREE_OPERAND (_q40, 1);
4464 170 : switch (TREE_CODE (_q51))
4465 : {
4466 0 : CASE_CONVERT:
4467 0 : {
4468 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4469 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4470 : {
4471 0 : {
4472 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4473 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4474 0 : if (res) return res;
4475 : }
4476 : }
4477 : break;
4478 : }
4479 170 : default:;
4480 : }
4481 170 : switch (TREE_CODE (_q50))
4482 : {
4483 85 : CASE_CONVERT:
4484 85 : {
4485 85 : tree _q60 = TREE_OPERAND (_q50, 0);
4486 85 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4487 : {
4488 0 : {
4489 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4490 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4491 0 : if (res) return res;
4492 : }
4493 : }
4494 : break;
4495 : }
4496 170 : default:;
4497 : }
4498 170 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4499 : {
4500 0 : {
4501 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4502 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4503 0 : if (res) return res;
4504 : }
4505 : }
4506 170 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4507 : {
4508 0 : {
4509 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4510 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4511 0 : if (res) return res;
4512 : }
4513 : }
4514 : break;
4515 : }
4516 : default:;
4517 : }
4518 : }
4519 : }
4520 8839206 : break;
4521 : }
4522 39425065 : default:;
4523 : }
4524 39425065 : {
4525 39425065 : tree _p0_pops[1];
4526 39425065 : if (tree_nop_convert (_p0, _p0_pops))
4527 : {
4528 6507897 : tree _q20 = _p0_pops[0];
4529 6507897 : switch (TREE_CODE (_q20))
4530 : {
4531 15 : case LSHIFT_EXPR:
4532 15 : {
4533 15 : tree _q30 = TREE_OPERAND (_q20, 0);
4534 15 : tree _q31 = TREE_OPERAND (_q20, 1);
4535 15 : switch (TREE_CODE (_p1))
4536 : {
4537 1 : CASE_CONVERT:
4538 1 : {
4539 1 : tree _q60 = TREE_OPERAND (_p1, 0);
4540 1 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4541 : {
4542 0 : {
4543 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4544 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4545 0 : if (res) return res;
4546 : }
4547 : }
4548 : break;
4549 : }
4550 15 : default:;
4551 : }
4552 15 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4553 : {
4554 1 : {
4555 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4556 1 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4557 1 : if (res) return res;
4558 : }
4559 : }
4560 : break;
4561 : }
4562 33818 : case PLUS_EXPR:
4563 33818 : {
4564 33818 : tree _q30 = TREE_OPERAND (_q20, 0);
4565 33818 : tree _q31 = TREE_OPERAND (_q20, 1);
4566 33818 : switch (TREE_CODE (_q31))
4567 : {
4568 37 : CASE_CONVERT:
4569 37 : {
4570 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4571 37 : switch (TREE_CODE (_p1))
4572 : {
4573 0 : CASE_CONVERT:
4574 0 : {
4575 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4576 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4577 : {
4578 0 : {
4579 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4580 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4581 0 : if (res) return res;
4582 : }
4583 : }
4584 : break;
4585 : }
4586 : default:;
4587 : }
4588 : break;
4589 : }
4590 33818 : default:;
4591 : }
4592 33818 : switch (TREE_CODE (_q30))
4593 : {
4594 26431 : CASE_CONVERT:
4595 26431 : {
4596 26431 : tree _q40 = TREE_OPERAND (_q30, 0);
4597 26431 : switch (TREE_CODE (_p1))
4598 : {
4599 351 : CASE_CONVERT:
4600 351 : {
4601 351 : tree _q70 = TREE_OPERAND (_p1, 0);
4602 351 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4603 : {
4604 100 : {
4605 100 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4606 100 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4607 100 : if (res) return res;
4608 : }
4609 : }
4610 : break;
4611 : }
4612 26331 : default:;
4613 : }
4614 26331 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4615 : {
4616 20 : {
4617 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4618 20 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4619 20 : if (res) return res;
4620 : }
4621 : }
4622 : break;
4623 : }
4624 33698 : default:;
4625 : }
4626 33698 : switch (TREE_CODE (_q31))
4627 : {
4628 37 : CASE_CONVERT:
4629 37 : {
4630 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4631 37 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4632 : {
4633 0 : {
4634 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4635 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4636 0 : if (res) return res;
4637 : }
4638 : }
4639 : break;
4640 : }
4641 33698 : default:;
4642 : }
4643 33698 : switch (TREE_CODE (_p1))
4644 : {
4645 357 : CASE_CONVERT:
4646 357 : {
4647 357 : tree _q60 = TREE_OPERAND (_p1, 0);
4648 357 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4649 : {
4650 0 : {
4651 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4652 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4653 0 : if (res) return res;
4654 : }
4655 : }
4656 357 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4657 : {
4658 62 : {
4659 62 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4660 62 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4661 62 : if (res) return res;
4662 : }
4663 : }
4664 : break;
4665 : }
4666 33636 : default:;
4667 : }
4668 33636 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4669 : {
4670 0 : {
4671 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4672 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4673 0 : if (res) return res;
4674 : }
4675 : }
4676 33636 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4677 : {
4678 0 : {
4679 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4680 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4681 0 : if (res) return res;
4682 : }
4683 : }
4684 : break;
4685 : }
4686 : default:;
4687 : }
4688 : }
4689 : }
4690 39424882 : {
4691 39424882 : tree _p1_pops[1];
4692 39424882 : if (tree_nop_convert (_p1, _p1_pops))
4693 : {
4694 5155691 : tree _q30 = _p1_pops[0];
4695 5155691 : switch (TREE_CODE (_q30))
4696 : {
4697 0 : case LSHIFT_EXPR:
4698 0 : {
4699 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4700 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4701 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4702 : {
4703 0 : {
4704 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4705 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4706 0 : if (res) return res;
4707 : }
4708 : }
4709 : break;
4710 : }
4711 : default:;
4712 : }
4713 : }
4714 : }
4715 39424882 : switch (TREE_CODE (_p0))
4716 : {
4717 5113 : case LSHIFT_EXPR:
4718 5113 : {
4719 5113 : tree _q20 = TREE_OPERAND (_p0, 0);
4720 5113 : tree _q21 = TREE_OPERAND (_p0, 1);
4721 5113 : switch (TREE_CODE (_p1))
4722 : {
4723 35 : CASE_CONVERT:
4724 35 : {
4725 35 : tree _q50 = TREE_OPERAND (_p1, 0);
4726 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4727 : {
4728 4 : {
4729 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4730 4 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4731 4 : if (res) return res;
4732 : }
4733 : }
4734 : break;
4735 : }
4736 5112 : default:;
4737 : }
4738 5112 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4739 : {
4740 27 : {
4741 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4742 27 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4743 27 : if (res) return res;
4744 : }
4745 : }
4746 5108 : if (tree_zero_one_valued_p (_q20))
4747 : {
4748 474 : switch (TREE_CODE (_q21))
4749 : {
4750 114 : case INTEGER_CST:
4751 114 : {
4752 114 : if (integer_zerop (_p1))
4753 : {
4754 5 : {
4755 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4756 5 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
4757 5 : if (res) return res;
4758 : }
4759 : }
4760 : break;
4761 : }
4762 : default:;
4763 : }
4764 : }
4765 : break;
4766 : }
4767 39424872 : default:;
4768 : }
4769 39424872 : switch (TREE_CODE (_p1))
4770 : {
4771 264 : case LSHIFT_EXPR:
4772 264 : {
4773 264 : tree _q30 = TREE_OPERAND (_p1, 0);
4774 264 : tree _q31 = TREE_OPERAND (_p1, 1);
4775 264 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4776 : {
4777 0 : {
4778 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4779 0 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4780 0 : if (res) return res;
4781 : }
4782 : }
4783 : break;
4784 : }
4785 39424872 : default:;
4786 : }
4787 39424872 : switch (TREE_CODE (_p0))
4788 : {
4789 64708 : case EQ_EXPR:
4790 64708 : {
4791 64708 : tree _q20 = TREE_OPERAND (_p0, 0);
4792 64708 : tree _q21 = TREE_OPERAND (_p0, 1);
4793 64708 : switch (TREE_CODE (_q20))
4794 : {
4795 326 : case BIT_AND_EXPR:
4796 326 : {
4797 326 : tree _q30 = TREE_OPERAND (_q20, 0);
4798 326 : tree _q31 = TREE_OPERAND (_q20, 1);
4799 326 : if (integer_pow2p (_q31))
4800 : {
4801 312 : if (integer_zerop (_q21))
4802 : {
4803 312 : switch (TREE_CODE (_p1))
4804 : {
4805 0 : case EQ_EXPR:
4806 0 : {
4807 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4808 0 : tree _q71 = TREE_OPERAND (_p1, 1);
4809 0 : switch (TREE_CODE (_q70))
4810 : {
4811 0 : case BIT_AND_EXPR:
4812 0 : {
4813 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4814 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4815 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
4816 : {
4817 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
4818 : {
4819 0 : {
4820 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70, _q80 };
4821 0 : const enum tree_code icmp0 = EQ_EXPR;
4822 0 : const enum tree_code icmp1 = EQ_EXPR;
4823 0 : if (types_match (captures[2], captures[7])
4824 : )
4825 : {
4826 0 : {
4827 0 : bool innersame = icmp0 == icmp1;
4828 0 : if (innersame == (NE_EXPR == EQ_EXPR)
4829 : )
4830 : {
4831 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
4832 : {
4833 : tree res_op0;
4834 : {
4835 : tree _o1[2], _r1;
4836 : {
4837 : tree _o2[2], _r2;
4838 : _o2[0] = captures[2];
4839 : _o2[1] = captures[7];
4840 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4841 : _o1[0] = _r2;
4842 : }
4843 : _o1[1] = captures[3];
4844 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4845 : res_op0 = _r1;
4846 : }
4847 : tree res_op1;
4848 : res_op1 = captures[4];
4849 : tree _r;
4850 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
4851 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4852 : return _r;
4853 : }
4854 : next_after_fail1590:;
4855 : }
4856 : else
4857 : {
4858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1591;
4859 0 : {
4860 0 : tree res_op0;
4861 0 : {
4862 0 : tree _o1[2], _r1;
4863 0 : {
4864 0 : tree _o2[2], _r2;
4865 0 : _o2[0] = captures[2];
4866 0 : _o2[1] = captures[7];
4867 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4868 0 : _o1[0] = _r2;
4869 : }
4870 0 : _o1[1] = captures[3];
4871 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4872 0 : res_op0 = _r1;
4873 : }
4874 0 : tree res_op1;
4875 0 : res_op1 = captures[4];
4876 0 : tree _r;
4877 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4878 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
4879 : return _r;
4880 : }
4881 0 : next_after_fail1591:;
4882 : }
4883 : }
4884 : }
4885 : }
4886 : }
4887 : }
4888 : break;
4889 : }
4890 : default:;
4891 : }
4892 : break;
4893 : }
4894 0 : case NE_EXPR:
4895 0 : {
4896 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4897 0 : tree _q71 = TREE_OPERAND (_p1, 1);
4898 0 : switch (TREE_CODE (_q70))
4899 : {
4900 0 : case BIT_AND_EXPR:
4901 0 : {
4902 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4903 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4904 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
4905 : {
4906 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
4907 : {
4908 0 : {
4909 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70, _q80 };
4910 0 : const enum tree_code icmp0 = EQ_EXPR;
4911 0 : const enum tree_code icmp1 = NE_EXPR;
4912 0 : if (types_match (captures[2], captures[7])
4913 : )
4914 : {
4915 0 : {
4916 0 : bool innersame = icmp0 == icmp1;
4917 0 : if (innersame == (NE_EXPR == EQ_EXPR)
4918 : )
4919 : {
4920 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1592;
4921 0 : {
4922 0 : tree res_op0;
4923 0 : {
4924 0 : tree _o1[2], _r1;
4925 0 : {
4926 0 : tree _o2[2], _r2;
4927 0 : _o2[0] = captures[2];
4928 0 : _o2[1] = captures[7];
4929 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4930 0 : _o1[0] = _r2;
4931 : }
4932 0 : _o1[1] = captures[3];
4933 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4934 0 : res_op0 = _r1;
4935 : }
4936 0 : tree res_op1;
4937 0 : res_op1 = captures[4];
4938 0 : tree _r;
4939 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
4940 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
4941 : return _r;
4942 : }
4943 0 : next_after_fail1592:;
4944 : }
4945 : else
4946 : {
4947 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1593;
4948 : {
4949 : tree res_op0;
4950 : {
4951 : tree _o1[2], _r1;
4952 : {
4953 : tree _o2[2], _r2;
4954 : _o2[0] = captures[2];
4955 : _o2[1] = captures[7];
4956 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
4957 : _o1[0] = _r2;
4958 : }
4959 : _o1[1] = captures[3];
4960 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4961 : res_op0 = _r1;
4962 : }
4963 : tree res_op1;
4964 : res_op1 = captures[4];
4965 : tree _r;
4966 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4967 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
4968 : return _r;
4969 : }
4970 : next_after_fail1593:;
4971 : }
4972 : }
4973 : }
4974 : }
4975 : }
4976 : }
4977 : break;
4978 : }
4979 : default:;
4980 : }
4981 : break;
4982 : }
4983 : default:;
4984 : }
4985 : }
4986 : }
4987 : break;
4988 : }
4989 : default:;
4990 : }
4991 : break;
4992 : }
4993 70032 : case NE_EXPR:
4994 70032 : {
4995 70032 : tree _q20 = TREE_OPERAND (_p0, 0);
4996 70032 : tree _q21 = TREE_OPERAND (_p0, 1);
4997 70032 : switch (TREE_CODE (_q20))
4998 : {
4999 15 : case BIT_AND_EXPR:
5000 15 : {
5001 15 : tree _q30 = TREE_OPERAND (_q20, 0);
5002 15 : tree _q31 = TREE_OPERAND (_q20, 1);
5003 15 : if (integer_pow2p (_q31))
5004 : {
5005 15 : if (integer_zerop (_q21))
5006 : {
5007 15 : switch (TREE_CODE (_p1))
5008 : {
5009 0 : case EQ_EXPR:
5010 0 : {
5011 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5012 0 : tree _q71 = TREE_OPERAND (_p1, 1);
5013 0 : switch (TREE_CODE (_q70))
5014 : {
5015 0 : case BIT_AND_EXPR:
5016 0 : {
5017 0 : tree _q80 = TREE_OPERAND (_q70, 0);
5018 0 : tree _q81 = TREE_OPERAND (_q70, 1);
5019 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
5020 : {
5021 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
5022 : {
5023 0 : {
5024 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70, _q80 };
5025 0 : const enum tree_code icmp0 = NE_EXPR;
5026 0 : const enum tree_code icmp1 = EQ_EXPR;
5027 0 : if (types_match (captures[2], captures[7])
5028 : )
5029 : {
5030 0 : {
5031 0 : bool innersame = icmp0 == icmp1;
5032 0 : if (innersame == (NE_EXPR == EQ_EXPR)
5033 : )
5034 : {
5035 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1594;
5036 0 : {
5037 0 : tree res_op0;
5038 0 : {
5039 0 : tree _o1[2], _r1;
5040 0 : {
5041 0 : tree _o2[2], _r2;
5042 0 : _o2[0] = captures[2];
5043 0 : _o2[1] = captures[7];
5044 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5045 0 : _o1[0] = _r2;
5046 : }
5047 0 : _o1[1] = captures[3];
5048 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5049 0 : res_op0 = _r1;
5050 : }
5051 0 : tree res_op1;
5052 0 : res_op1 = captures[4];
5053 0 : tree _r;
5054 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
5056 : return _r;
5057 : }
5058 0 : next_after_fail1594:;
5059 : }
5060 : else
5061 : {
5062 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1595;
5063 : {
5064 : tree res_op0;
5065 : {
5066 : tree _o1[2], _r1;
5067 : {
5068 : tree _o2[2], _r2;
5069 : _o2[0] = captures[2];
5070 : _o2[1] = captures[7];
5071 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5072 : _o1[0] = _r2;
5073 : }
5074 : _o1[1] = captures[3];
5075 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5076 : res_op0 = _r1;
5077 : }
5078 : tree res_op1;
5079 : res_op1 = captures[4];
5080 : tree _r;
5081 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5082 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
5083 : return _r;
5084 : }
5085 : next_after_fail1595:;
5086 : }
5087 : }
5088 : }
5089 : }
5090 : }
5091 : }
5092 : break;
5093 : }
5094 : default:;
5095 : }
5096 : break;
5097 : }
5098 8 : case NE_EXPR:
5099 8 : {
5100 8 : tree _q70 = TREE_OPERAND (_p1, 0);
5101 8 : tree _q71 = TREE_OPERAND (_p1, 1);
5102 8 : switch (TREE_CODE (_q70))
5103 : {
5104 0 : case BIT_AND_EXPR:
5105 0 : {
5106 0 : tree _q80 = TREE_OPERAND (_q70, 0);
5107 0 : tree _q81 = TREE_OPERAND (_q70, 1);
5108 0 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
5109 : {
5110 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
5111 : {
5112 0 : {
5113 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70, _q80 };
5114 0 : const enum tree_code icmp0 = NE_EXPR;
5115 0 : const enum tree_code icmp1 = NE_EXPR;
5116 0 : if (types_match (captures[2], captures[7])
5117 : )
5118 : {
5119 0 : {
5120 0 : bool innersame = icmp0 == icmp1;
5121 0 : if (innersame == (NE_EXPR == EQ_EXPR)
5122 : )
5123 : {
5124 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1596;
5125 : {
5126 : tree res_op0;
5127 : {
5128 : tree _o1[2], _r1;
5129 : {
5130 : tree _o2[2], _r2;
5131 : _o2[0] = captures[2];
5132 : _o2[1] = captures[7];
5133 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5134 : _o1[0] = _r2;
5135 : }
5136 : _o1[1] = captures[3];
5137 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5138 : res_op0 = _r1;
5139 : }
5140 : tree res_op1;
5141 : res_op1 = captures[4];
5142 : tree _r;
5143 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
5144 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 928, __FILE__, __LINE__, true);
5145 : return _r;
5146 : }
5147 : next_after_fail1596:;
5148 : }
5149 : else
5150 : {
5151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1597;
5152 0 : {
5153 0 : tree res_op0;
5154 0 : {
5155 0 : tree _o1[2], _r1;
5156 0 : {
5157 0 : tree _o2[2], _r2;
5158 0 : _o2[0] = captures[2];
5159 0 : _o2[1] = captures[7];
5160 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
5161 0 : _o1[0] = _r2;
5162 : }
5163 0 : _o1[1] = captures[3];
5164 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5165 0 : res_op0 = _r1;
5166 : }
5167 0 : tree res_op1;
5168 0 : res_op1 = captures[4];
5169 0 : tree _r;
5170 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5171 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 929, __FILE__, __LINE__, true);
5172 : return _r;
5173 : }
5174 0 : next_after_fail1597:;
5175 : }
5176 : }
5177 : }
5178 : }
5179 : }
5180 : }
5181 : break;
5182 : }
5183 : default:;
5184 : }
5185 : break;
5186 : }
5187 : default:;
5188 : }
5189 : }
5190 : }
5191 : break;
5192 : }
5193 : default:;
5194 : }
5195 : break;
5196 : }
5197 255 : case VIEW_CONVERT_EXPR:
5198 255 : {
5199 255 : tree _q20 = TREE_OPERAND (_p0, 0);
5200 255 : if (tree_zero_one_valued_p (_q20))
5201 : {
5202 0 : if (integer_zerop (_p1))
5203 : {
5204 0 : {
5205 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5206 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5207 0 : if (res) return res;
5208 : }
5209 : }
5210 : }
5211 : break;
5212 : }
5213 21345 : case RSHIFT_EXPR:
5214 21345 : {
5215 21345 : tree _q20 = TREE_OPERAND (_p0, 0);
5216 21345 : tree _q21 = TREE_OPERAND (_p0, 1);
5217 21345 : switch (TREE_CODE (_q21))
5218 : {
5219 18993 : case INTEGER_CST:
5220 18993 : {
5221 18993 : switch (TREE_CODE (_p1))
5222 : {
5223 210 : case RSHIFT_EXPR:
5224 210 : {
5225 210 : tree _q50 = TREE_OPERAND (_p1, 0);
5226 210 : tree _q51 = TREE_OPERAND (_p1, 1);
5227 210 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5228 : {
5229 15 : switch (TREE_CODE (_q51))
5230 : {
5231 15 : case INTEGER_CST:
5232 15 : {
5233 15 : {
5234 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5235 15 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
5236 15 : if (res) return res;
5237 : }
5238 3 : break;
5239 : }
5240 : default:;
5241 : }
5242 : }
5243 : break;
5244 : }
5245 18981 : default:;
5246 : }
5247 18981 : if (integer_zerop (_p1))
5248 : {
5249 8330 : {
5250 8330 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5251 8330 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
5252 8330 : if (res) return res;
5253 : }
5254 : }
5255 : break;
5256 : }
5257 : default:;
5258 : }
5259 : break;
5260 : }
5261 110311 : case MULT_EXPR:
5262 110311 : {
5263 110311 : tree _q20 = TREE_OPERAND (_p0, 0);
5264 110311 : tree _q21 = TREE_OPERAND (_p0, 1);
5265 110311 : switch (TREE_CODE (_p1))
5266 : {
5267 3466 : case MULT_EXPR:
5268 3466 : {
5269 3466 : tree _q50 = TREE_OPERAND (_p1, 0);
5270 3466 : tree _q51 = TREE_OPERAND (_p1, 1);
5271 3466 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5272 : {
5273 1781 : {
5274 1781 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5275 1781 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5276 1781 : if (res) return res;
5277 : }
5278 : }
5279 3462 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5280 : {
5281 53 : {
5282 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5283 53 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5284 53 : if (res) return res;
5285 : }
5286 : }
5287 3462 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5288 : {
5289 22 : {
5290 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5291 22 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5292 22 : if (res) return res;
5293 : }
5294 : }
5295 3462 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5296 : {
5297 260 : {
5298 260 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5299 260 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5300 260 : if (res) return res;
5301 : }
5302 : }
5303 : break;
5304 : }
5305 110307 : default:;
5306 : }
5307 110307 : switch (TREE_CODE (_q21))
5308 : {
5309 91458 : case INTEGER_CST:
5310 91458 : {
5311 91458 : switch (TREE_CODE (_p1))
5312 : {
5313 2604 : case MULT_EXPR:
5314 2604 : {
5315 2604 : tree _q50 = TREE_OPERAND (_p1, 0);
5316 2604 : tree _q51 = TREE_OPERAND (_p1, 1);
5317 2604 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5318 : {
5319 1249 : {
5320 1249 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5321 1249 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5322 1249 : if (res) return res;
5323 : }
5324 : }
5325 : break;
5326 : }
5327 : default:;
5328 : }
5329 : break;
5330 : }
5331 : default:;
5332 : }
5333 : break;
5334 : }
5335 1850 : case EXACT_DIV_EXPR:
5336 1850 : {
5337 1850 : tree _q20 = TREE_OPERAND (_p0, 0);
5338 1850 : tree _q21 = TREE_OPERAND (_p0, 1);
5339 1850 : switch (TREE_CODE (_q21))
5340 : {
5341 1850 : case INTEGER_CST:
5342 1850 : {
5343 1850 : switch (TREE_CODE (_p1))
5344 : {
5345 22 : case EXACT_DIV_EXPR:
5346 22 : {
5347 22 : tree _q50 = TREE_OPERAND (_p1, 0);
5348 22 : tree _q51 = TREE_OPERAND (_p1, 1);
5349 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5350 : {
5351 12 : {
5352 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5353 12 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
5354 12 : if (res) return res;
5355 : }
5356 : }
5357 : break;
5358 : }
5359 : default:;
5360 : }
5361 : break;
5362 : }
5363 : default:;
5364 : }
5365 : break;
5366 : }
5367 11666 : case TRUNC_DIV_EXPR:
5368 11666 : {
5369 11666 : tree _q20 = TREE_OPERAND (_p0, 0);
5370 11666 : tree _q21 = TREE_OPERAND (_p0, 1);
5371 11666 : switch (TREE_CODE (_q21))
5372 : {
5373 8645 : case INTEGER_CST:
5374 8645 : {
5375 8645 : switch (TREE_CODE (_p1))
5376 : {
5377 2490 : case INTEGER_CST:
5378 2490 : {
5379 2490 : {
5380 2490 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5381 2490 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR);
5382 2490 : if (res) return res;
5383 : }
5384 386 : break;
5385 : }
5386 : default:;
5387 : }
5388 : break;
5389 : }
5390 : default:;
5391 : }
5392 : break;
5393 : }
5394 1563622 : case PLUS_EXPR:
5395 1563622 : {
5396 1563622 : tree _q20 = TREE_OPERAND (_p0, 0);
5397 1563622 : tree _q21 = TREE_OPERAND (_p0, 1);
5398 1563622 : switch (TREE_CODE (_p1))
5399 : {
5400 195130 : case PLUS_EXPR:
5401 195130 : {
5402 195130 : tree _q50 = TREE_OPERAND (_p1, 0);
5403 195130 : tree _q51 = TREE_OPERAND (_p1, 1);
5404 195130 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5405 : {
5406 763 : {
5407 763 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5408 1526 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5409 1495 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5410 645 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5411 : )
5412 : {
5413 732 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1598;
5414 732 : {
5415 732 : tree res_op0;
5416 732 : res_op0 = captures[0];
5417 732 : tree res_op1;
5418 732 : res_op1 = captures[2];
5419 732 : tree _r;
5420 732 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5421 732 : if (TREE_SIDE_EFFECTS (captures[1]))
5422 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5423 732 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5424 : return _r;
5425 : }
5426 0 : next_after_fail1598:;
5427 : }
5428 : }
5429 : }
5430 194398 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5431 : {
5432 0 : {
5433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5434 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5435 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5436 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5437 : )
5438 : {
5439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
5440 0 : {
5441 0 : tree res_op0;
5442 0 : res_op0 = captures[0];
5443 0 : tree res_op1;
5444 0 : res_op1 = captures[2];
5445 0 : tree _r;
5446 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5447 0 : if (TREE_SIDE_EFFECTS (captures[1]))
5448 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5449 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5450 : return _r;
5451 : }
5452 0 : next_after_fail1599:;
5453 : }
5454 : }
5455 : }
5456 194398 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5457 : {
5458 106 : {
5459 106 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5460 212 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5461 212 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5462 106 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5463 : )
5464 : {
5465 106 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1600;
5466 106 : {
5467 106 : tree res_op0;
5468 106 : res_op0 = captures[0];
5469 106 : tree res_op1;
5470 106 : res_op1 = captures[2];
5471 106 : tree _r;
5472 106 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5473 106 : if (TREE_SIDE_EFFECTS (captures[1]))
5474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5475 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5476 : return _r;
5477 : }
5478 0 : next_after_fail1600:;
5479 : }
5480 : }
5481 : }
5482 194292 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5483 : {
5484 111550 : {
5485 111550 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5486 223100 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5487 223077 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5488 111527 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5489 : )
5490 : {
5491 111527 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
5492 111527 : {
5493 111527 : tree res_op0;
5494 111527 : res_op0 = captures[0];
5495 111527 : tree res_op1;
5496 111527 : res_op1 = captures[2];
5497 111527 : tree _r;
5498 111527 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5499 111527 : if (TREE_SIDE_EFFECTS (captures[1]))
5500 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5501 111527 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5502 : return _r;
5503 : }
5504 0 : next_after_fail1601:;
5505 : }
5506 : }
5507 : }
5508 : break;
5509 : }
5510 1451257 : default:;
5511 : }
5512 1451257 : switch (TREE_CODE (_q21))
5513 : {
5514 819 : CASE_CONVERT:
5515 819 : {
5516 819 : tree _q40 = TREE_OPERAND (_q21, 0);
5517 819 : switch (TREE_CODE (_p1))
5518 : {
5519 88 : CASE_CONVERT:
5520 88 : {
5521 88 : tree _q60 = TREE_OPERAND (_p1, 0);
5522 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5523 : {
5524 0 : {
5525 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5526 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5527 0 : if (res) return res;
5528 : }
5529 : }
5530 : break;
5531 : }
5532 : default:;
5533 : }
5534 : break;
5535 : }
5536 1451257 : default:;
5537 : }
5538 1451257 : switch (TREE_CODE (_q20))
5539 : {
5540 141944 : CASE_CONVERT:
5541 141944 : {
5542 141944 : tree _q30 = TREE_OPERAND (_q20, 0);
5543 141944 : switch (TREE_CODE (_p1))
5544 : {
5545 3925 : CASE_CONVERT:
5546 3925 : {
5547 3925 : tree _q60 = TREE_OPERAND (_p1, 0);
5548 3925 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5549 : {
5550 369 : {
5551 369 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5552 369 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5553 369 : if (res) return res;
5554 : }
5555 : }
5556 : break;
5557 : }
5558 141575 : default:;
5559 : }
5560 141575 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5561 : {
5562 0 : {
5563 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5564 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5565 0 : if (res) return res;
5566 : }
5567 : }
5568 : break;
5569 : }
5570 1450888 : default:;
5571 : }
5572 1450888 : switch (TREE_CODE (_q21))
5573 : {
5574 819 : CASE_CONVERT:
5575 819 : {
5576 819 : tree _q40 = TREE_OPERAND (_q21, 0);
5577 819 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5578 : {
5579 0 : {
5580 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5581 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5582 0 : if (res) return res;
5583 : }
5584 : }
5585 : break;
5586 : }
5587 1450888 : default:;
5588 : }
5589 1450888 : switch (TREE_CODE (_p1))
5590 : {
5591 44884 : CASE_CONVERT:
5592 44884 : {
5593 44884 : tree _q50 = TREE_OPERAND (_p1, 0);
5594 44884 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5595 : {
5596 0 : {
5597 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5598 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5599 0 : if (res) return res;
5600 : }
5601 : }
5602 44884 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5603 : {
5604 0 : {
5605 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5606 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5607 0 : if (res) return res;
5608 : }
5609 : }
5610 : break;
5611 : }
5612 1450888 : default:;
5613 : }
5614 1450888 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5615 : {
5616 77804 : {
5617 77804 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5618 77804 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5619 77804 : if (res) return res;
5620 : }
5621 : }
5622 1373792 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5623 : {
5624 19393 : {
5625 19393 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5626 19393 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5627 19393 : if (res) return res;
5628 : }
5629 : }
5630 : break;
5631 : }
5632 554331 : case POINTER_PLUS_EXPR:
5633 554331 : {
5634 554331 : tree _q20 = TREE_OPERAND (_p0, 0);
5635 554331 : tree _q21 = TREE_OPERAND (_p0, 1);
5636 554331 : switch (TREE_CODE (_p1))
5637 : {
5638 36700 : case POINTER_PLUS_EXPR:
5639 36700 : {
5640 36700 : tree _q50 = TREE_OPERAND (_p1, 0);
5641 36700 : tree _q51 = TREE_OPERAND (_p1, 1);
5642 36700 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5643 : {
5644 10024 : {
5645 10024 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5646 10024 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5647 10024 : if (res) return res;
5648 : }
5649 : }
5650 : break;
5651 : }
5652 544307 : default:;
5653 : }
5654 544307 : switch (TREE_CODE (_q20))
5655 : {
5656 80441 : CASE_CONVERT:
5657 80441 : {
5658 80441 : tree _q30 = TREE_OPERAND (_q20, 0);
5659 80441 : switch (TREE_CODE (_p1))
5660 : {
5661 200 : CASE_CONVERT:
5662 200 : {
5663 200 : tree _q60 = TREE_OPERAND (_p1, 0);
5664 200 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5665 : {
5666 0 : {
5667 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5668 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
5669 0 : if (res) return res;
5670 : }
5671 : }
5672 : break;
5673 : }
5674 80441 : default:;
5675 : }
5676 80441 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5677 : {
5678 63 : {
5679 63 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5680 63 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
5681 63 : if (res) return res;
5682 : }
5683 : }
5684 : break;
5685 : }
5686 544244 : default:;
5687 : }
5688 544244 : switch (TREE_CODE (_p1))
5689 : {
5690 3766 : CASE_CONVERT:
5691 3766 : {
5692 3766 : tree _q50 = TREE_OPERAND (_p1, 0);
5693 3766 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5694 : {
5695 0 : {
5696 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5697 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
5698 0 : if (res) return res;
5699 : }
5700 : }
5701 : break;
5702 : }
5703 544244 : default:;
5704 : }
5705 544244 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5706 : {
5707 6029 : {
5708 6029 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5709 6029 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
5710 6029 : if (res) return res;
5711 : }
5712 : }
5713 : break;
5714 : }
5715 107721 : case MINUS_EXPR:
5716 107721 : {
5717 107721 : tree _q20 = TREE_OPERAND (_p0, 0);
5718 107721 : tree _q21 = TREE_OPERAND (_p0, 1);
5719 107721 : switch (TREE_CODE (_p1))
5720 : {
5721 5736 : case MINUS_EXPR:
5722 5736 : {
5723 5736 : tree _q50 = TREE_OPERAND (_p1, 0);
5724 5736 : tree _q51 = TREE_OPERAND (_p1, 1);
5725 5736 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5726 : {
5727 170 : {
5728 170 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5729 340 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5730 173 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5731 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5732 : )
5733 : {
5734 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1602;
5735 3 : {
5736 3 : tree res_op0;
5737 3 : res_op0 = captures[0];
5738 3 : tree res_op1;
5739 3 : res_op1 = captures[2];
5740 3 : tree _r;
5741 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5742 3 : if (TREE_SIDE_EFFECTS (captures[1]))
5743 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5744 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 967, __FILE__, __LINE__, true);
5745 : return _r;
5746 : }
5747 0 : next_after_fail1602:;
5748 : }
5749 : }
5750 : }
5751 5733 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5752 : {
5753 166 : {
5754 166 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5755 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5756 166 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5757 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5758 : )
5759 : {
5760 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1603;
5761 0 : {
5762 0 : tree res_op0;
5763 0 : res_op0 = captures[2];
5764 0 : tree res_op1;
5765 0 : res_op1 = captures[1];
5766 0 : tree _r;
5767 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5768 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5769 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5770 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
5771 : return _r;
5772 : }
5773 0 : next_after_fail1603:;
5774 : }
5775 : }
5776 : }
5777 : break;
5778 : }
5779 : default:;
5780 : }
5781 : break;
5782 : }
5783 26572 : case POINTER_DIFF_EXPR:
5784 26572 : {
5785 26572 : tree _q20 = TREE_OPERAND (_p0, 0);
5786 26572 : tree _q21 = TREE_OPERAND (_p0, 1);
5787 26572 : switch (TREE_CODE (_p1))
5788 : {
5789 2314 : case POINTER_DIFF_EXPR:
5790 2314 : {
5791 2314 : tree _q50 = TREE_OPERAND (_p1, 0);
5792 2314 : tree _q51 = TREE_OPERAND (_p1, 1);
5793 2314 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5794 : {
5795 0 : {
5796 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5797 0 : tree res = generic_simplify_234 (loc, type, _p0, _p1, captures, NE_EXPR);
5798 0 : if (res) return res;
5799 : }
5800 : }
5801 2314 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5802 : {
5803 0 : {
5804 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5805 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, NE_EXPR);
5806 0 : if (res) return res;
5807 : }
5808 : }
5809 : break;
5810 : }
5811 : default:;
5812 : }
5813 : break;
5814 : }
5815 39197243 : default:;
5816 : }
5817 39197243 : {
5818 39197243 : tree _p0_pops[1];
5819 39197243 : if (tree_logical_inverted_value (_p0, _p0_pops))
5820 : {
5821 677524 : tree _q20 = _p0_pops[0];
5822 677524 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5823 : {
5824 24 : if (tree_truth_valued_p (_p1))
5825 : {
5826 0 : {
5827 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5828 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1604;
5829 0 : {
5830 0 : tree _r;
5831 0 : _r = constant_boolean_node (NE_EXPR != EQ_EXPR, type);
5832 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5833 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5834 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 935, __FILE__, __LINE__, true);
5835 0 : return _r;
5836 : }
5837 0 : next_after_fail1604:;
5838 : }
5839 : }
5840 : }
5841 : }
5842 : }
5843 39197243 : if (tree_truth_valued_p (_p0))
5844 : {
5845 5726774 : {
5846 5726774 : tree _p1_pops[1];
5847 5726774 : if (tree_logical_inverted_value (_p1, _p1_pops))
5848 : {
5849 1168 : tree _q30 = _p1_pops[0];
5850 1168 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5851 : {
5852 0 : {
5853 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5854 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1605;
5855 0 : {
5856 0 : tree _r;
5857 0 : _r = constant_boolean_node (NE_EXPR != EQ_EXPR, type);
5858 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5859 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5860 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 935, __FILE__, __LINE__, true);
5861 0 : return _r;
5862 : }
5863 0 : next_after_fail1605:;
5864 : }
5865 : }
5866 : }
5867 : }
5868 : }
5869 39197243 : switch (TREE_CODE (_p1))
5870 : {
5871 123920 : case PLUS_EXPR:
5872 123920 : {
5873 123920 : tree _q30 = TREE_OPERAND (_p1, 0);
5874 123920 : tree _q31 = TREE_OPERAND (_p1, 1);
5875 123920 : switch (TREE_CODE (_q31))
5876 : {
5877 368 : CASE_CONVERT:
5878 368 : {
5879 368 : tree _q50 = TREE_OPERAND (_q31, 0);
5880 368 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5881 : {
5882 0 : {
5883 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5884 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5885 0 : if (res) return res;
5886 : }
5887 : }
5888 : break;
5889 : }
5890 123920 : default:;
5891 : }
5892 123920 : switch (TREE_CODE (_q30))
5893 : {
5894 5379 : CASE_CONVERT:
5895 5379 : {
5896 5379 : tree _q40 = TREE_OPERAND (_q30, 0);
5897 5379 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5898 : {
5899 0 : {
5900 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5901 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5902 0 : if (res) return res;
5903 : }
5904 : }
5905 : break;
5906 : }
5907 123920 : default:;
5908 : }
5909 123920 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5910 : {
5911 0 : {
5912 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5913 0 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5914 0 : if (res) return res;
5915 : }
5916 : }
5917 123920 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5918 : {
5919 8 : {
5920 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5921 8 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5922 8 : if (res) return res;
5923 : }
5924 : }
5925 : break;
5926 : }
5927 39197235 : default:;
5928 : }
5929 39197235 : {
5930 39197235 : tree _p1_pops[1];
5931 39197235 : if (tree_nop_convert (_p1, _p1_pops))
5932 : {
5933 5155320 : tree _q30 = _p1_pops[0];
5934 5155320 : switch (TREE_CODE (_q30))
5935 : {
5936 1977 : case PLUS_EXPR:
5937 1977 : {
5938 1977 : tree _q40 = TREE_OPERAND (_q30, 0);
5939 1977 : tree _q41 = TREE_OPERAND (_q30, 1);
5940 1977 : switch (TREE_CODE (_q41))
5941 : {
5942 3 : CASE_CONVERT:
5943 3 : {
5944 3 : tree _q60 = TREE_OPERAND (_q41, 0);
5945 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5946 : {
5947 0 : {
5948 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5949 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5950 0 : if (res) return res;
5951 : }
5952 : }
5953 : break;
5954 : }
5955 1977 : default:;
5956 : }
5957 1977 : switch (TREE_CODE (_q40))
5958 : {
5959 1160 : CASE_CONVERT:
5960 1160 : {
5961 1160 : tree _q50 = TREE_OPERAND (_q40, 0);
5962 1160 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5963 : {
5964 0 : {
5965 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5966 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5967 0 : if (res) return res;
5968 : }
5969 : }
5970 : break;
5971 : }
5972 1977 : default:;
5973 : }
5974 1977 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5975 : {
5976 0 : {
5977 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5978 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5979 0 : if (res) return res;
5980 : }
5981 : }
5982 1977 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5983 : {
5984 0 : {
5985 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5986 0 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
5987 0 : if (res) return res;
5988 : }
5989 : }
5990 : break;
5991 : }
5992 : default:;
5993 : }
5994 : }
5995 : }
5996 39197235 : switch (TREE_CODE (_p0))
5997 : {
5998 8839015 : CASE_CONVERT:
5999 8839015 : {
6000 8839015 : tree _q20 = TREE_OPERAND (_p0, 0);
6001 8839015 : switch (TREE_CODE (_p1))
6002 : {
6003 164 : case POINTER_PLUS_EXPR:
6004 164 : {
6005 164 : tree _q40 = TREE_OPERAND (_p1, 0);
6006 164 : tree _q41 = TREE_OPERAND (_p1, 1);
6007 164 : switch (TREE_CODE (_q40))
6008 : {
6009 48 : CASE_CONVERT:
6010 48 : {
6011 48 : tree _q50 = TREE_OPERAND (_q40, 0);
6012 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6013 : {
6014 0 : {
6015 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6016 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
6017 0 : if (res) return res;
6018 : }
6019 : }
6020 : break;
6021 : }
6022 164 : default:;
6023 : }
6024 164 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
6025 : {
6026 0 : {
6027 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
6028 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
6029 0 : if (res) return res;
6030 : }
6031 : }
6032 : break;
6033 : }
6034 8839015 : default:;
6035 : }
6036 8839015 : {
6037 8839015 : tree _p1_pops[1];
6038 8839015 : if (tree_nop_convert (_p1, _p1_pops))
6039 : {
6040 4783761 : tree _q40 = _p1_pops[0];
6041 4783761 : switch (TREE_CODE (_q40))
6042 : {
6043 48 : case POINTER_PLUS_EXPR:
6044 48 : {
6045 48 : tree _q50 = TREE_OPERAND (_q40, 0);
6046 48 : tree _q51 = TREE_OPERAND (_q40, 1);
6047 48 : switch (TREE_CODE (_q50))
6048 : {
6049 8 : CASE_CONVERT:
6050 8 : {
6051 8 : tree _q60 = TREE_OPERAND (_q50, 0);
6052 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6053 : {
6054 0 : {
6055 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6056 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6057 0 : if (res) return res;
6058 : }
6059 : }
6060 : break;
6061 : }
6062 48 : default:;
6063 : }
6064 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6065 : {
6066 0 : {
6067 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
6068 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6069 0 : if (res) return res;
6070 : }
6071 : }
6072 : break;
6073 : }
6074 : default:;
6075 : }
6076 : }
6077 : }
6078 8839015 : break;
6079 : }
6080 39197235 : default:;
6081 : }
6082 39197235 : {
6083 39197235 : tree _p0_pops[1];
6084 39197235 : if (tree_nop_convert (_p0, _p0_pops))
6085 : {
6086 6507714 : tree _q20 = _p0_pops[0];
6087 6507714 : switch (TREE_CODE (_q20))
6088 : {
6089 185 : case POINTER_PLUS_EXPR:
6090 185 : {
6091 185 : tree _q30 = TREE_OPERAND (_q20, 0);
6092 185 : tree _q31 = TREE_OPERAND (_q20, 1);
6093 185 : switch (TREE_CODE (_q30))
6094 : {
6095 24 : CASE_CONVERT:
6096 24 : {
6097 24 : tree _q40 = TREE_OPERAND (_q30, 0);
6098 24 : switch (TREE_CODE (_p1))
6099 : {
6100 8 : CASE_CONVERT:
6101 8 : {
6102 8 : tree _q70 = TREE_OPERAND (_p1, 0);
6103 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6104 : {
6105 0 : {
6106 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6107 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6108 0 : if (res) return res;
6109 : }
6110 : }
6111 : break;
6112 : }
6113 24 : default:;
6114 : }
6115 24 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6116 : {
6117 0 : {
6118 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
6119 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6120 0 : if (res) return res;
6121 : }
6122 : }
6123 : break;
6124 : }
6125 185 : default:;
6126 : }
6127 185 : switch (TREE_CODE (_p1))
6128 : {
6129 50 : CASE_CONVERT:
6130 50 : {
6131 50 : tree _q60 = TREE_OPERAND (_p1, 0);
6132 50 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
6133 : {
6134 0 : {
6135 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6136 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6137 0 : if (res) return res;
6138 : }
6139 : }
6140 : break;
6141 : }
6142 185 : default:;
6143 : }
6144 185 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6145 : {
6146 0 : {
6147 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
6148 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6149 0 : if (res) return res;
6150 : }
6151 : }
6152 : break;
6153 : }
6154 : default:;
6155 : }
6156 : }
6157 : }
6158 39197235 : switch (TREE_CODE (_p1))
6159 : {
6160 31487 : case POINTER_PLUS_EXPR:
6161 31487 : {
6162 31487 : tree _q30 = TREE_OPERAND (_p1, 0);
6163 31487 : tree _q31 = TREE_OPERAND (_p1, 1);
6164 31487 : switch (TREE_CODE (_q30))
6165 : {
6166 3534 : CASE_CONVERT:
6167 3534 : {
6168 3534 : tree _q40 = TREE_OPERAND (_q30, 0);
6169 3534 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6170 : {
6171 0 : {
6172 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6173 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
6174 0 : if (res) return res;
6175 : }
6176 : }
6177 : break;
6178 : }
6179 31487 : default:;
6180 : }
6181 31487 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6182 : {
6183 0 : {
6184 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
6185 0 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
6186 0 : if (res) return res;
6187 : }
6188 : }
6189 : break;
6190 : }
6191 39197235 : default:;
6192 : }
6193 39197235 : {
6194 39197235 : tree _p1_pops[1];
6195 39197235 : if (tree_nop_convert (_p1, _p1_pops))
6196 : {
6197 5155320 : tree _q30 = _p1_pops[0];
6198 5155320 : switch (TREE_CODE (_q30))
6199 : {
6200 387 : case POINTER_PLUS_EXPR:
6201 387 : {
6202 387 : tree _q40 = TREE_OPERAND (_q30, 0);
6203 387 : tree _q41 = TREE_OPERAND (_q30, 1);
6204 387 : switch (TREE_CODE (_q40))
6205 : {
6206 8 : CASE_CONVERT:
6207 8 : {
6208 8 : tree _q50 = TREE_OPERAND (_q40, 0);
6209 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6210 : {
6211 0 : {
6212 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6213 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6214 0 : if (res) return res;
6215 : }
6216 : }
6217 : break;
6218 : }
6219 387 : default:;
6220 : }
6221 387 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6222 : {
6223 0 : {
6224 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
6225 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
6226 0 : if (res) return res;
6227 : }
6228 : }
6229 : break;
6230 : }
6231 : default:;
6232 : }
6233 : }
6234 : }
6235 39197235 : switch (TREE_CODE (_p0))
6236 : {
6237 538215 : case POINTER_PLUS_EXPR:
6238 538215 : {
6239 538215 : tree _q20 = TREE_OPERAND (_p0, 0);
6240 538215 : tree _q21 = TREE_OPERAND (_p0, 1);
6241 538215 : {
6242 538215 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6243 538215 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR);
6244 538215 : if (res) return res;
6245 : }
6246 515547 : switch (TREE_CODE (_p1))
6247 : {
6248 25266 : case POINTER_PLUS_EXPR:
6249 25266 : {
6250 25266 : tree _q50 = TREE_OPERAND (_p1, 0);
6251 25266 : tree _q51 = TREE_OPERAND (_p1, 1);
6252 25266 : {
6253 25266 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
6254 25266 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR);
6255 25266 : if (res) return res;
6256 : }
6257 25266 : break;
6258 : }
6259 : default:;
6260 : }
6261 : break;
6262 : }
6263 39174567 : default:;
6264 : }
6265 39174567 : switch (TREE_CODE (_p1))
6266 : {
6267 30077 : case POINTER_PLUS_EXPR:
6268 30077 : {
6269 30077 : tree _q30 = TREE_OPERAND (_p1, 0);
6270 30077 : tree _q31 = TREE_OPERAND (_p1, 1);
6271 30077 : {
6272 30077 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
6273 30077 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR);
6274 30077 : if (res) return res;
6275 : }
6276 30077 : break;
6277 : }
6278 30501 : case MINUS_EXPR:
6279 30501 : {
6280 30501 : tree _q30 = TREE_OPERAND (_p1, 0);
6281 30501 : tree _q31 = TREE_OPERAND (_p1, 1);
6282 30501 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6283 : {
6284 0 : {
6285 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6286 0 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR);
6287 0 : if (res) return res;
6288 : }
6289 : }
6290 : break;
6291 : }
6292 39174567 : default:;
6293 : }
6294 39174567 : switch (TREE_CODE (_p0))
6295 : {
6296 107718 : case MINUS_EXPR:
6297 107718 : {
6298 107718 : tree _q20 = TREE_OPERAND (_p0, 0);
6299 107718 : tree _q21 = TREE_OPERAND (_p0, 1);
6300 107718 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6301 : {
6302 1754 : {
6303 1754 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
6304 1754 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR);
6305 1754 : if (res) return res;
6306 : }
6307 : }
6308 : break;
6309 : }
6310 9562 : case TRUNC_DIV_EXPR:
6311 9562 : {
6312 9562 : tree _q20 = TREE_OPERAND (_p0, 0);
6313 9562 : tree _q21 = TREE_OPERAND (_p0, 1);
6314 9562 : if (tree_expr_nonnegative_p (_q20))
6315 : {
6316 3826 : if (tree_expr_nonnegative_p (_q21))
6317 : {
6318 3680 : if (integer_zerop (_p1))
6319 : {
6320 449 : {
6321 449 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6322 449 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
6323 449 : if (res) return res;
6324 : }
6325 : }
6326 : }
6327 : }
6328 : break;
6329 : }
6330 64273 : case TRUNC_MOD_EXPR:
6331 64273 : {
6332 64273 : tree _q20 = TREE_OPERAND (_p0, 0);
6333 64273 : tree _q21 = TREE_OPERAND (_p0, 1);
6334 64273 : if (tree_expr_nonnegative_p (_q20))
6335 : {
6336 51961 : if (tree_expr_nonnegative_p (_q21))
6337 : {
6338 51504 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6339 : {
6340 85 : {
6341 85 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6342 85 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
6343 85 : if (res) return res;
6344 : }
6345 : }
6346 : }
6347 : }
6348 : break;
6349 : }
6350 39172828 : default:;
6351 : }
6352 39172828 : switch (TREE_CODE (_p1))
6353 : {
6354 12887 : case TRUNC_MOD_EXPR:
6355 12887 : {
6356 12887 : tree _q30 = TREE_OPERAND (_p1, 0);
6357 12887 : tree _q31 = TREE_OPERAND (_p1, 1);
6358 12887 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6359 : {
6360 0 : if (tree_expr_nonnegative_p (_q30))
6361 : {
6362 0 : if (tree_expr_nonnegative_p (_q31))
6363 : {
6364 0 : {
6365 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6366 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
6367 0 : if (res) return res;
6368 : }
6369 : }
6370 : }
6371 : }
6372 : break;
6373 : }
6374 39172828 : default:;
6375 : }
6376 39172828 : switch (TREE_CODE (_p0))
6377 : {
6378 8839015 : CASE_CONVERT:
6379 8839015 : {
6380 8839015 : tree _q20 = TREE_OPERAND (_p0, 0);
6381 8839015 : switch (TREE_CODE (_p1))
6382 : {
6383 4924766 : CASE_CONVERT:
6384 4924766 : {
6385 4924766 : tree _q40 = TREE_OPERAND (_p1, 0);
6386 4924766 : switch (TREE_CODE (_q40))
6387 : {
6388 0 : case MINUS_EXPR:
6389 0 : {
6390 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6391 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6392 0 : switch (TREE_CODE (_q50))
6393 : {
6394 0 : case INTEGER_CST:
6395 0 : {
6396 0 : switch (TREE_CODE (_q51))
6397 : {
6398 0 : CASE_CONVERT:
6399 0 : {
6400 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6401 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6402 : {
6403 0 : {
6404 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6405 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6406 0 : if (res) return res;
6407 : }
6408 : }
6409 : break;
6410 : }
6411 : default:;
6412 : }
6413 : break;
6414 : }
6415 : default:;
6416 : }
6417 : break;
6418 : }
6419 : default:;
6420 : }
6421 : break;
6422 : }
6423 8839015 : default:;
6424 : }
6425 8839015 : switch (TREE_CODE (_q20))
6426 : {
6427 108 : case MINUS_EXPR:
6428 108 : {
6429 108 : tree _q30 = TREE_OPERAND (_q20, 0);
6430 108 : tree _q31 = TREE_OPERAND (_q20, 1);
6431 108 : switch (TREE_CODE (_q30))
6432 : {
6433 58 : case INTEGER_CST:
6434 58 : {
6435 58 : switch (TREE_CODE (_q31))
6436 : {
6437 0 : CASE_CONVERT:
6438 0 : {
6439 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6440 0 : switch (TREE_CODE (_p1))
6441 : {
6442 0 : CASE_CONVERT:
6443 0 : {
6444 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6445 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
6446 : {
6447 0 : {
6448 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6449 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6450 0 : if (res) return res;
6451 : }
6452 : }
6453 : break;
6454 : }
6455 0 : default:;
6456 : }
6457 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6458 : {
6459 0 : {
6460 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
6461 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6462 0 : if (res) return res;
6463 : }
6464 : }
6465 : break;
6466 : }
6467 58 : default:;
6468 : }
6469 58 : switch (TREE_CODE (_p1))
6470 : {
6471 0 : CASE_CONVERT:
6472 0 : {
6473 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6474 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
6475 : {
6476 0 : {
6477 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6478 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6479 0 : if (res) return res;
6480 : }
6481 : }
6482 : break;
6483 : }
6484 58 : default:;
6485 : }
6486 58 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6487 : {
6488 0 : {
6489 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
6490 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6491 0 : if (res) return res;
6492 : }
6493 : }
6494 : break;
6495 : }
6496 : default:;
6497 : }
6498 : break;
6499 : }
6500 8839015 : default:;
6501 : }
6502 8839015 : switch (TREE_CODE (_p1))
6503 : {
6504 4924766 : CASE_CONVERT:
6505 4924766 : {
6506 4924766 : tree _q40 = TREE_OPERAND (_p1, 0);
6507 4924766 : switch (TREE_CODE (_q40))
6508 : {
6509 0 : case MINUS_EXPR:
6510 0 : {
6511 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6512 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6513 0 : switch (TREE_CODE (_q50))
6514 : {
6515 0 : case INTEGER_CST:
6516 0 : {
6517 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6518 : {
6519 0 : {
6520 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6521 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6522 0 : if (res) return res;
6523 : }
6524 : }
6525 : break;
6526 : }
6527 : default:;
6528 : }
6529 : break;
6530 : }
6531 : default:;
6532 : }
6533 : break;
6534 : }
6535 21620 : case MINUS_EXPR:
6536 21620 : {
6537 21620 : tree _q40 = TREE_OPERAND (_p1, 0);
6538 21620 : tree _q41 = TREE_OPERAND (_p1, 1);
6539 21620 : switch (TREE_CODE (_q40))
6540 : {
6541 401 : case INTEGER_CST:
6542 401 : {
6543 401 : switch (TREE_CODE (_q41))
6544 : {
6545 20 : CASE_CONVERT:
6546 20 : {
6547 20 : tree _q60 = TREE_OPERAND (_q41, 0);
6548 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6549 : {
6550 0 : {
6551 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6552 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6553 0 : if (res) return res;
6554 : }
6555 : }
6556 : break;
6557 : }
6558 401 : default:;
6559 : }
6560 401 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6561 : {
6562 0 : {
6563 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6564 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6565 0 : if (res) return res;
6566 : }
6567 : }
6568 : break;
6569 : }
6570 : default:;
6571 : }
6572 : break;
6573 : }
6574 8839015 : default:;
6575 : }
6576 8839015 : switch (TREE_CODE (_q20))
6577 : {
6578 399 : case EQ_EXPR:
6579 399 : {
6580 399 : tree _q30 = TREE_OPERAND (_q20, 0);
6581 399 : tree _q31 = TREE_OPERAND (_q20, 1);
6582 399 : if (tree_zero_one_valued_p (_q30))
6583 : {
6584 0 : if (integer_zerop (_q31))
6585 : {
6586 0 : switch (TREE_CODE (_p1))
6587 : {
6588 0 : CASE_CONVERT:
6589 0 : {
6590 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6591 0 : if (tree_zero_one_valued_p (_q60))
6592 : {
6593 0 : {
6594 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q60 };
6595 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6596 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
6597 : )
6598 : {
6599 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1606;
6600 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1606;
6601 0 : {
6602 0 : tree res_op0;
6603 0 : res_op0 = captures[0];
6604 0 : tree res_op1;
6605 0 : res_op1 = captures[1];
6606 0 : tree _r;
6607 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6608 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
6609 : return _r;
6610 : }
6611 8839015 : next_after_fail1606:;
6612 : }
6613 : }
6614 : }
6615 : break;
6616 : }
6617 : default:;
6618 : }
6619 : }
6620 : }
6621 : break;
6622 : }
6623 8839015 : default:;
6624 : }
6625 8839015 : if (tree_zero_one_valued_p (_q20))
6626 : {
6627 751721 : switch (TREE_CODE (_p1))
6628 : {
6629 12984 : CASE_CONVERT:
6630 12984 : {
6631 12984 : tree _q40 = TREE_OPERAND (_p1, 0);
6632 12984 : switch (TREE_CODE (_q40))
6633 : {
6634 0 : case EQ_EXPR:
6635 0 : {
6636 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6637 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6638 0 : if (tree_zero_one_valued_p (_q50))
6639 : {
6640 0 : if (integer_zerop (_q51))
6641 : {
6642 0 : {
6643 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
6644 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6645 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
6646 : )
6647 : {
6648 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1607;
6649 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1607;
6650 0 : {
6651 0 : tree res_op0;
6652 0 : res_op0 = captures[0];
6653 0 : tree res_op1;
6654 0 : res_op1 = captures[1];
6655 0 : tree _r;
6656 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
6657 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1030, __FILE__, __LINE__, true);
6658 : return _r;
6659 : }
6660 39172827 : next_after_fail1607:;
6661 : }
6662 : }
6663 : }
6664 : }
6665 : break;
6666 : }
6667 : default:;
6668 : }
6669 : break;
6670 : }
6671 : default:;
6672 : }
6673 : }
6674 : break;
6675 : }
6676 106006 : case MINUS_EXPR:
6677 106006 : {
6678 106006 : tree _q20 = TREE_OPERAND (_p0, 0);
6679 106006 : tree _q21 = TREE_OPERAND (_p0, 1);
6680 106006 : switch (TREE_CODE (_q20))
6681 : {
6682 2335 : case INTEGER_CST:
6683 2335 : {
6684 2335 : switch (TREE_CODE (_q21))
6685 : {
6686 199 : CASE_CONVERT:
6687 199 : {
6688 199 : tree _q40 = TREE_OPERAND (_q21, 0);
6689 199 : switch (TREE_CODE (_p1))
6690 : {
6691 0 : CASE_CONVERT:
6692 0 : {
6693 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6694 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6695 : {
6696 0 : {
6697 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6698 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6699 0 : if (res) return res;
6700 : }
6701 : }
6702 : break;
6703 : }
6704 199 : default:;
6705 : }
6706 199 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6707 : {
6708 0 : {
6709 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6710 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6711 0 : if (res) return res;
6712 : }
6713 : }
6714 : break;
6715 : }
6716 2335 : default:;
6717 : }
6718 2335 : switch (TREE_CODE (_p1))
6719 : {
6720 318 : CASE_CONVERT:
6721 318 : {
6722 318 : tree _q50 = TREE_OPERAND (_p1, 0);
6723 318 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6724 : {
6725 0 : {
6726 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6727 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6728 0 : if (res) return res;
6729 : }
6730 : }
6731 : break;
6732 : }
6733 2335 : default:;
6734 : }
6735 2335 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6736 : {
6737 19 : {
6738 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6739 19 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6740 19 : if (res) return res;
6741 : }
6742 : }
6743 : break;
6744 : }
6745 : default:;
6746 : }
6747 : break;
6748 : }
6749 39172827 : default:;
6750 : }
6751 39172827 : switch (TREE_CODE (_p1))
6752 : {
6753 5325507 : CASE_CONVERT:
6754 5325507 : {
6755 5325507 : tree _q30 = TREE_OPERAND (_p1, 0);
6756 5325507 : switch (TREE_CODE (_q30))
6757 : {
6758 556 : case MINUS_EXPR:
6759 556 : {
6760 556 : tree _q40 = TREE_OPERAND (_q30, 0);
6761 556 : tree _q41 = TREE_OPERAND (_q30, 1);
6762 556 : switch (TREE_CODE (_q40))
6763 : {
6764 17 : case INTEGER_CST:
6765 17 : {
6766 17 : switch (TREE_CODE (_q41))
6767 : {
6768 0 : CASE_CONVERT:
6769 0 : {
6770 0 : tree _q60 = TREE_OPERAND (_q41, 0);
6771 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6772 : {
6773 0 : {
6774 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6775 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6776 0 : if (res) return res;
6777 : }
6778 : }
6779 : break;
6780 : }
6781 17 : default:;
6782 : }
6783 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6784 : {
6785 0 : {
6786 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6787 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6788 0 : if (res) return res;
6789 : }
6790 : }
6791 : break;
6792 : }
6793 : default:;
6794 : }
6795 : break;
6796 : }
6797 : default:;
6798 : }
6799 : break;
6800 : }
6801 30501 : case MINUS_EXPR:
6802 30501 : {
6803 30501 : tree _q30 = TREE_OPERAND (_p1, 0);
6804 30501 : tree _q31 = TREE_OPERAND (_p1, 1);
6805 30501 : switch (TREE_CODE (_q30))
6806 : {
6807 658 : case INTEGER_CST:
6808 658 : {
6809 658 : switch (TREE_CODE (_q31))
6810 : {
6811 28 : CASE_CONVERT:
6812 28 : {
6813 28 : tree _q50 = TREE_OPERAND (_q31, 0);
6814 28 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6815 : {
6816 0 : {
6817 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6818 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6819 0 : if (res) return res;
6820 : }
6821 : }
6822 : break;
6823 : }
6824 658 : default:;
6825 : }
6826 658 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6827 : {
6828 0 : {
6829 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6830 0 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR);
6831 0 : if (res) return res;
6832 : }
6833 : }
6834 : break;
6835 : }
6836 : default:;
6837 : }
6838 : break;
6839 : }
6840 39172827 : default:;
6841 : }
6842 39172827 : switch (TREE_CODE (_p0))
6843 : {
6844 18915 : case LT_EXPR:
6845 18915 : {
6846 18915 : tree _q20 = TREE_OPERAND (_p0, 0);
6847 18915 : tree _q21 = TREE_OPERAND (_p0, 1);
6848 18915 : switch (TREE_CODE (_p1))
6849 : {
6850 18 : case GT_EXPR:
6851 18 : {
6852 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6853 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6854 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6855 : {
6856 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6857 : {
6858 0 : {
6859 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6860 0 : const enum tree_code cmp1 = LT_EXPR;
6861 0 : const enum tree_code cmp2 = GT_EXPR;
6862 0 : const enum tree_code rcmp = NE_EXPR;
6863 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6864 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6865 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6866 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6867 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6868 : )
6869 : {
6870 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
6871 0 : {
6872 0 : tree res_op0;
6873 0 : res_op0 = captures[0];
6874 0 : tree res_op1;
6875 0 : res_op1 = captures[1];
6876 0 : tree _r;
6877 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6878 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
6879 : return _r;
6880 : }
6881 0 : next_after_fail1608:;
6882 : }
6883 : }
6884 : }
6885 : }
6886 : break;
6887 : }
6888 100 : case EQ_EXPR:
6889 100 : {
6890 100 : tree _q50 = TREE_OPERAND (_p1, 0);
6891 100 : tree _q51 = TREE_OPERAND (_p1, 1);
6892 100 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6893 : {
6894 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6895 : {
6896 0 : {
6897 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6898 0 : const enum tree_code cmp1 = LT_EXPR;
6899 0 : const enum tree_code cmp2 = EQ_EXPR;
6900 0 : const enum tree_code rcmp = LE_EXPR;
6901 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6902 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6903 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6904 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6905 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6906 : )
6907 : {
6908 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1609;
6909 0 : {
6910 0 : tree res_op0;
6911 0 : res_op0 = captures[0];
6912 0 : tree res_op1;
6913 0 : res_op1 = captures[1];
6914 0 : tree _r;
6915 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6916 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
6917 : return _r;
6918 : }
6919 0 : next_after_fail1609:;
6920 : }
6921 : }
6922 : }
6923 : }
6924 : break;
6925 : }
6926 23 : case NE_EXPR:
6927 23 : {
6928 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6929 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6930 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6931 : {
6932 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6933 : {
6934 0 : {
6935 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6936 0 : const enum tree_code cmp1 = LT_EXPR;
6937 0 : const enum tree_code cmp2 = NE_EXPR;
6938 0 : const enum tree_code rcmp = GT_EXPR;
6939 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6940 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6941 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6942 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6943 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6944 : )
6945 : {
6946 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1610;
6947 0 : {
6948 0 : tree res_op0;
6949 0 : res_op0 = captures[0];
6950 0 : tree res_op1;
6951 0 : res_op1 = captures[1];
6952 0 : tree _r;
6953 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6954 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
6955 : return _r;
6956 : }
6957 0 : next_after_fail1610:;
6958 : }
6959 : }
6960 : }
6961 : }
6962 : break;
6963 : }
6964 : default:;
6965 : }
6966 : break;
6967 : }
6968 12262 : case LE_EXPR:
6969 12262 : {
6970 12262 : tree _q20 = TREE_OPERAND (_p0, 0);
6971 12262 : tree _q21 = TREE_OPERAND (_p0, 1);
6972 12262 : switch (TREE_CODE (_p1))
6973 : {
6974 25 : case GE_EXPR:
6975 25 : {
6976 25 : tree _q50 = TREE_OPERAND (_p1, 0);
6977 25 : tree _q51 = TREE_OPERAND (_p1, 1);
6978 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6979 : {
6980 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6981 : {
6982 0 : {
6983 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6984 0 : const enum tree_code cmp1 = LE_EXPR;
6985 0 : const enum tree_code cmp2 = GE_EXPR;
6986 0 : const enum tree_code rcmp = NE_EXPR;
6987 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6988 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6989 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6990 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6991 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6992 : )
6993 : {
6994 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1611;
6995 0 : {
6996 0 : tree res_op0;
6997 0 : res_op0 = captures[0];
6998 0 : tree res_op1;
6999 0 : res_op1 = captures[1];
7000 0 : tree _r;
7001 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7002 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7003 : return _r;
7004 : }
7005 0 : next_after_fail1611:;
7006 : }
7007 : }
7008 : }
7009 : }
7010 : break;
7011 : }
7012 41 : case EQ_EXPR:
7013 41 : {
7014 41 : tree _q50 = TREE_OPERAND (_p1, 0);
7015 41 : tree _q51 = TREE_OPERAND (_p1, 1);
7016 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7017 : {
7018 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7019 : {
7020 0 : {
7021 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7022 0 : const enum tree_code cmp1 = LE_EXPR;
7023 0 : const enum tree_code cmp2 = EQ_EXPR;
7024 0 : const enum tree_code rcmp = LT_EXPR;
7025 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7026 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7027 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7028 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7029 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7030 : )
7031 : {
7032 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1612;
7033 0 : {
7034 0 : tree res_op0;
7035 0 : res_op0 = captures[0];
7036 0 : tree res_op1;
7037 0 : res_op1 = captures[1];
7038 0 : tree _r;
7039 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7040 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7041 : return _r;
7042 : }
7043 0 : next_after_fail1612:;
7044 : }
7045 : }
7046 : }
7047 : }
7048 : break;
7049 : }
7050 67 : case NE_EXPR:
7051 67 : {
7052 67 : tree _q50 = TREE_OPERAND (_p1, 0);
7053 67 : tree _q51 = TREE_OPERAND (_p1, 1);
7054 67 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7055 : {
7056 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7057 : {
7058 0 : {
7059 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7060 0 : const enum tree_code cmp1 = LE_EXPR;
7061 0 : const enum tree_code cmp2 = NE_EXPR;
7062 0 : const enum tree_code rcmp = GE_EXPR;
7063 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7064 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7065 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7066 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7067 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7068 : )
7069 : {
7070 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1613;
7071 0 : {
7072 0 : tree res_op0;
7073 0 : res_op0 = captures[0];
7074 0 : tree res_op1;
7075 0 : res_op1 = captures[1];
7076 0 : tree _r;
7077 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7078 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7079 : return _r;
7080 : }
7081 0 : next_after_fail1613:;
7082 : }
7083 : }
7084 : }
7085 : }
7086 : break;
7087 : }
7088 : default:;
7089 : }
7090 : break;
7091 : }
7092 36367 : case GT_EXPR:
7093 36367 : {
7094 36367 : tree _q20 = TREE_OPERAND (_p0, 0);
7095 36367 : tree _q21 = TREE_OPERAND (_p0, 1);
7096 36367 : switch (TREE_CODE (_p1))
7097 : {
7098 77 : case GT_EXPR:
7099 77 : {
7100 77 : tree _q50 = TREE_OPERAND (_p1, 0);
7101 77 : tree _q51 = TREE_OPERAND (_p1, 1);
7102 77 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7103 : {
7104 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7105 : {
7106 0 : {
7107 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7108 0 : const enum tree_code cmp1 = LT_EXPR;
7109 0 : const enum tree_code cmp2 = GT_EXPR;
7110 0 : const enum tree_code rcmp = NE_EXPR;
7111 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7112 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7113 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7114 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7115 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7116 : )
7117 : {
7118 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1614;
7119 0 : {
7120 0 : tree res_op0;
7121 0 : res_op0 = captures[0];
7122 0 : tree res_op1;
7123 0 : res_op1 = captures[1];
7124 0 : tree _r;
7125 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7126 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7127 : return _r;
7128 : }
7129 0 : next_after_fail1614:;
7130 : }
7131 : }
7132 0 : {
7133 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7134 0 : const enum tree_code cmp1 = LT_EXPR;
7135 0 : const enum tree_code cmp2 = GT_EXPR;
7136 0 : const enum tree_code rcmp = NE_EXPR;
7137 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7138 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7139 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7140 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7141 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7142 : )
7143 : {
7144 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1615;
7145 0 : {
7146 0 : tree res_op0;
7147 0 : res_op0 = captures[0];
7148 0 : tree res_op1;
7149 0 : res_op1 = captures[1];
7150 0 : tree _r;
7151 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7152 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7153 : return _r;
7154 : }
7155 0 : next_after_fail1615:;
7156 : }
7157 : }
7158 : }
7159 : }
7160 : break;
7161 : }
7162 101 : case EQ_EXPR:
7163 101 : {
7164 101 : tree _q50 = TREE_OPERAND (_p1, 0);
7165 101 : tree _q51 = TREE_OPERAND (_p1, 1);
7166 101 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7167 : {
7168 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7169 : {
7170 0 : {
7171 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7172 0 : const enum tree_code cmp1 = LT_EXPR;
7173 0 : const enum tree_code cmp2 = EQ_EXPR;
7174 0 : const enum tree_code rcmp = LE_EXPR;
7175 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7176 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7177 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7178 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7179 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7180 : )
7181 : {
7182 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1616;
7183 0 : {
7184 0 : tree res_op0;
7185 0 : res_op0 = captures[0];
7186 0 : tree res_op1;
7187 0 : res_op1 = captures[1];
7188 0 : tree _r;
7189 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7190 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7191 : return _r;
7192 : }
7193 0 : next_after_fail1616:;
7194 : }
7195 : }
7196 : }
7197 : }
7198 : break;
7199 : }
7200 53 : case NE_EXPR:
7201 53 : {
7202 53 : tree _q50 = TREE_OPERAND (_p1, 0);
7203 53 : tree _q51 = TREE_OPERAND (_p1, 1);
7204 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7205 : {
7206 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7207 : {
7208 0 : {
7209 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7210 0 : const enum tree_code cmp1 = LT_EXPR;
7211 0 : const enum tree_code cmp2 = NE_EXPR;
7212 0 : const enum tree_code rcmp = GT_EXPR;
7213 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7214 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7215 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7216 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7217 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7218 : )
7219 : {
7220 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1617;
7221 0 : {
7222 0 : tree res_op0;
7223 0 : res_op0 = captures[0];
7224 0 : tree res_op1;
7225 0 : res_op1 = captures[1];
7226 0 : tree _r;
7227 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7228 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7229 : return _r;
7230 : }
7231 0 : next_after_fail1617:;
7232 : }
7233 : }
7234 : }
7235 : }
7236 : break;
7237 : }
7238 32 : case LT_EXPR:
7239 32 : {
7240 32 : tree _q50 = TREE_OPERAND (_p1, 0);
7241 32 : tree _q51 = TREE_OPERAND (_p1, 1);
7242 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7243 : {
7244 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7245 : {
7246 0 : {
7247 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7248 0 : const enum tree_code cmp1 = LT_EXPR;
7249 0 : const enum tree_code cmp2 = GT_EXPR;
7250 0 : const enum tree_code rcmp = NE_EXPR;
7251 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7252 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7253 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7254 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7255 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7256 : )
7257 : {
7258 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1618;
7259 0 : {
7260 0 : tree res_op0;
7261 0 : res_op0 = captures[0];
7262 0 : tree res_op1;
7263 0 : res_op1 = captures[1];
7264 0 : tree _r;
7265 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7266 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7267 : return _r;
7268 : }
7269 0 : next_after_fail1618:;
7270 : }
7271 : }
7272 : }
7273 : }
7274 : break;
7275 : }
7276 : default:;
7277 : }
7278 : break;
7279 : }
7280 6323 : case GE_EXPR:
7281 6323 : {
7282 6323 : tree _q20 = TREE_OPERAND (_p0, 0);
7283 6323 : tree _q21 = TREE_OPERAND (_p0, 1);
7284 6323 : switch (TREE_CODE (_p1))
7285 : {
7286 76 : case GE_EXPR:
7287 76 : {
7288 76 : tree _q50 = TREE_OPERAND (_p1, 0);
7289 76 : tree _q51 = TREE_OPERAND (_p1, 1);
7290 76 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7291 : {
7292 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7293 : {
7294 0 : {
7295 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7296 0 : const enum tree_code cmp1 = LE_EXPR;
7297 0 : const enum tree_code cmp2 = GE_EXPR;
7298 0 : const enum tree_code rcmp = NE_EXPR;
7299 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7300 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7301 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7302 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7303 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7304 : )
7305 : {
7306 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1619;
7307 0 : {
7308 0 : tree res_op0;
7309 0 : res_op0 = captures[0];
7310 0 : tree res_op1;
7311 0 : res_op1 = captures[1];
7312 0 : tree _r;
7313 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7315 : return _r;
7316 : }
7317 0 : next_after_fail1619:;
7318 : }
7319 : }
7320 0 : {
7321 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7322 0 : const enum tree_code cmp1 = LE_EXPR;
7323 0 : const enum tree_code cmp2 = GE_EXPR;
7324 0 : const enum tree_code rcmp = NE_EXPR;
7325 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7326 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7327 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7328 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7329 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7330 : )
7331 : {
7332 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1620;
7333 0 : {
7334 0 : tree res_op0;
7335 0 : res_op0 = captures[0];
7336 0 : tree res_op1;
7337 0 : res_op1 = captures[1];
7338 0 : tree _r;
7339 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7340 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7341 : return _r;
7342 : }
7343 0 : next_after_fail1620:;
7344 : }
7345 : }
7346 : }
7347 : }
7348 : break;
7349 : }
7350 52 : case EQ_EXPR:
7351 52 : {
7352 52 : tree _q50 = TREE_OPERAND (_p1, 0);
7353 52 : tree _q51 = TREE_OPERAND (_p1, 1);
7354 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7355 : {
7356 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7357 : {
7358 0 : {
7359 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7360 0 : const enum tree_code cmp1 = LE_EXPR;
7361 0 : const enum tree_code cmp2 = EQ_EXPR;
7362 0 : const enum tree_code rcmp = LT_EXPR;
7363 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7364 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7365 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7366 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7367 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7368 : )
7369 : {
7370 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1621;
7371 0 : {
7372 0 : tree res_op0;
7373 0 : res_op0 = captures[0];
7374 0 : tree res_op1;
7375 0 : res_op1 = captures[1];
7376 0 : tree _r;
7377 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7378 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7379 : return _r;
7380 : }
7381 0 : next_after_fail1621:;
7382 : }
7383 : }
7384 : }
7385 : }
7386 : break;
7387 : }
7388 65 : case NE_EXPR:
7389 65 : {
7390 65 : tree _q50 = TREE_OPERAND (_p1, 0);
7391 65 : tree _q51 = TREE_OPERAND (_p1, 1);
7392 65 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7393 : {
7394 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7395 : {
7396 0 : {
7397 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7398 0 : const enum tree_code cmp1 = LE_EXPR;
7399 0 : const enum tree_code cmp2 = NE_EXPR;
7400 0 : const enum tree_code rcmp = GE_EXPR;
7401 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7402 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7403 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7404 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7405 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7406 : )
7407 : {
7408 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1622;
7409 0 : {
7410 0 : tree res_op0;
7411 0 : res_op0 = captures[0];
7412 0 : tree res_op1;
7413 0 : res_op1 = captures[1];
7414 0 : tree _r;
7415 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7416 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7417 : return _r;
7418 : }
7419 0 : next_after_fail1622:;
7420 : }
7421 : }
7422 : }
7423 : }
7424 : break;
7425 : }
7426 16 : case LE_EXPR:
7427 16 : {
7428 16 : tree _q50 = TREE_OPERAND (_p1, 0);
7429 16 : tree _q51 = TREE_OPERAND (_p1, 1);
7430 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7431 : {
7432 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7433 : {
7434 0 : {
7435 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7436 0 : const enum tree_code cmp1 = LE_EXPR;
7437 0 : const enum tree_code cmp2 = GE_EXPR;
7438 0 : const enum tree_code rcmp = NE_EXPR;
7439 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7440 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7441 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7442 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7443 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7444 : )
7445 : {
7446 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1623;
7447 0 : {
7448 0 : tree res_op0;
7449 0 : res_op0 = captures[0];
7450 0 : tree res_op1;
7451 0 : res_op1 = captures[1];
7452 0 : tree _r;
7453 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7454 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7455 : return _r;
7456 : }
7457 0 : next_after_fail1623:;
7458 : }
7459 : }
7460 : }
7461 : }
7462 : break;
7463 : }
7464 : default:;
7465 : }
7466 : break;
7467 : }
7468 64708 : case EQ_EXPR:
7469 64708 : {
7470 64708 : tree _q20 = TREE_OPERAND (_p0, 0);
7471 64708 : tree _q21 = TREE_OPERAND (_p0, 1);
7472 64708 : switch (TREE_CODE (_p1))
7473 : {
7474 20 : case LT_EXPR:
7475 20 : {
7476 20 : tree _q50 = TREE_OPERAND (_p1, 0);
7477 20 : tree _q51 = TREE_OPERAND (_p1, 1);
7478 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7479 : {
7480 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7481 : {
7482 0 : {
7483 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7484 0 : const enum tree_code cmp1 = LT_EXPR;
7485 0 : const enum tree_code cmp2 = EQ_EXPR;
7486 0 : const enum tree_code rcmp = LE_EXPR;
7487 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7488 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7489 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7490 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7491 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7492 : )
7493 : {
7494 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1624;
7495 0 : {
7496 0 : tree res_op0;
7497 0 : res_op0 = captures[0];
7498 0 : tree res_op1;
7499 0 : res_op1 = captures[1];
7500 0 : tree _r;
7501 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7502 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7503 : return _r;
7504 : }
7505 0 : next_after_fail1624:;
7506 : }
7507 : }
7508 : }
7509 : }
7510 : break;
7511 : }
7512 42 : case LE_EXPR:
7513 42 : {
7514 42 : tree _q50 = TREE_OPERAND (_p1, 0);
7515 42 : tree _q51 = TREE_OPERAND (_p1, 1);
7516 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7517 : {
7518 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7519 : {
7520 0 : {
7521 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7522 0 : const enum tree_code cmp1 = LE_EXPR;
7523 0 : const enum tree_code cmp2 = EQ_EXPR;
7524 0 : const enum tree_code rcmp = LT_EXPR;
7525 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7526 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7527 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7528 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7529 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7530 : )
7531 : {
7532 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1625;
7533 0 : {
7534 0 : tree res_op0;
7535 0 : res_op0 = captures[0];
7536 0 : tree res_op1;
7537 0 : res_op1 = captures[1];
7538 0 : tree _r;
7539 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7540 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7541 : return _r;
7542 : }
7543 0 : next_after_fail1625:;
7544 : }
7545 : }
7546 : }
7547 : }
7548 : break;
7549 : }
7550 27 : case GT_EXPR:
7551 27 : {
7552 27 : tree _q50 = TREE_OPERAND (_p1, 0);
7553 27 : tree _q51 = TREE_OPERAND (_p1, 1);
7554 27 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7555 : {
7556 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7557 : {
7558 0 : {
7559 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7560 0 : const enum tree_code cmp1 = LT_EXPR;
7561 0 : const enum tree_code cmp2 = EQ_EXPR;
7562 0 : const enum tree_code rcmp = LE_EXPR;
7563 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7564 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7565 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7566 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7567 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7568 : )
7569 : {
7570 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1626;
7571 0 : {
7572 0 : tree res_op0;
7573 0 : res_op0 = captures[0];
7574 0 : tree res_op1;
7575 0 : res_op1 = captures[1];
7576 0 : tree _r;
7577 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7578 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7579 : return _r;
7580 : }
7581 0 : next_after_fail1626:;
7582 : }
7583 : }
7584 : }
7585 : }
7586 : break;
7587 : }
7588 14 : case GE_EXPR:
7589 14 : {
7590 14 : tree _q50 = TREE_OPERAND (_p1, 0);
7591 14 : tree _q51 = TREE_OPERAND (_p1, 1);
7592 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7593 : {
7594 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7595 : {
7596 0 : {
7597 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7598 0 : const enum tree_code cmp1 = LE_EXPR;
7599 0 : const enum tree_code cmp2 = EQ_EXPR;
7600 0 : const enum tree_code rcmp = LT_EXPR;
7601 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7602 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7603 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7604 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7605 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7606 : )
7607 : {
7608 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1627;
7609 0 : {
7610 0 : tree res_op0;
7611 0 : res_op0 = captures[0];
7612 0 : tree res_op1;
7613 0 : res_op1 = captures[1];
7614 0 : tree _r;
7615 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7616 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7617 : return _r;
7618 : }
7619 0 : next_after_fail1627:;
7620 : }
7621 : }
7622 : }
7623 : }
7624 : break;
7625 : }
7626 64708 : default:;
7627 : }
7628 64708 : if (tree_zero_one_valued_p (_q20))
7629 : {
7630 973 : if (integer_zerop (_q21))
7631 : {
7632 1 : switch (TREE_CODE (_p1))
7633 : {
7634 0 : case EQ_EXPR:
7635 0 : {
7636 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7637 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7638 0 : if (tree_zero_one_valued_p (_q50))
7639 : {
7640 0 : if (integer_zerop (_q51))
7641 : {
7642 0 : {
7643 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
7644 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR, NE_EXPR);
7645 0 : if (res) return res;
7646 : }
7647 0 : {
7648 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7649 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR, NE_EXPR);
7650 0 : if (res) return res;
7651 : }
7652 : }
7653 : }
7654 : break;
7655 : }
7656 0 : case NE_EXPR:
7657 0 : {
7658 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7659 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7660 0 : if (tree_zero_one_valued_p (_q50))
7661 : {
7662 0 : if (integer_zerop (_q51))
7663 : {
7664 0 : {
7665 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
7666 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, NE_EXPR, EQ_EXPR);
7667 0 : if (res) return res;
7668 : }
7669 0 : {
7670 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7671 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, EQ_EXPR, EQ_EXPR);
7672 0 : if (res) return res;
7673 : }
7674 : }
7675 : }
7676 : break;
7677 : }
7678 : default:;
7679 : }
7680 : }
7681 : }
7682 : break;
7683 : }
7684 70032 : case NE_EXPR:
7685 70032 : {
7686 70032 : tree _q20 = TREE_OPERAND (_p0, 0);
7687 70032 : tree _q21 = TREE_OPERAND (_p0, 1);
7688 70032 : switch (TREE_CODE (_p1))
7689 : {
7690 7 : case LT_EXPR:
7691 7 : {
7692 7 : tree _q50 = TREE_OPERAND (_p1, 0);
7693 7 : tree _q51 = TREE_OPERAND (_p1, 1);
7694 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7695 : {
7696 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7697 : {
7698 0 : {
7699 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7700 0 : const enum tree_code cmp1 = LT_EXPR;
7701 0 : const enum tree_code cmp2 = NE_EXPR;
7702 0 : const enum tree_code rcmp = GT_EXPR;
7703 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7704 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7705 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7706 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7707 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7708 : )
7709 : {
7710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1628;
7711 0 : {
7712 0 : tree res_op0;
7713 0 : res_op0 = captures[0];
7714 0 : tree res_op1;
7715 0 : res_op1 = captures[1];
7716 0 : tree _r;
7717 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7718 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7719 : return _r;
7720 : }
7721 0 : next_after_fail1628:;
7722 : }
7723 : }
7724 : }
7725 : }
7726 : break;
7727 : }
7728 340 : case LE_EXPR:
7729 340 : {
7730 340 : tree _q50 = TREE_OPERAND (_p1, 0);
7731 340 : tree _q51 = TREE_OPERAND (_p1, 1);
7732 340 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7733 : {
7734 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7735 : {
7736 0 : {
7737 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7738 0 : const enum tree_code cmp1 = LE_EXPR;
7739 0 : const enum tree_code cmp2 = NE_EXPR;
7740 0 : const enum tree_code rcmp = GE_EXPR;
7741 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7742 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7743 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7744 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7745 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7746 : )
7747 : {
7748 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1629;
7749 0 : {
7750 0 : tree res_op0;
7751 0 : res_op0 = captures[0];
7752 0 : tree res_op1;
7753 0 : res_op1 = captures[1];
7754 0 : tree _r;
7755 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7756 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7757 : return _r;
7758 : }
7759 0 : next_after_fail1629:;
7760 : }
7761 : }
7762 : }
7763 : }
7764 : break;
7765 : }
7766 323 : case GT_EXPR:
7767 323 : {
7768 323 : tree _q50 = TREE_OPERAND (_p1, 0);
7769 323 : tree _q51 = TREE_OPERAND (_p1, 1);
7770 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7771 : {
7772 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7773 : {
7774 0 : {
7775 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7776 0 : const enum tree_code cmp1 = LT_EXPR;
7777 0 : const enum tree_code cmp2 = NE_EXPR;
7778 0 : const enum tree_code rcmp = GT_EXPR;
7779 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7780 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7781 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7782 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7783 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7784 : )
7785 : {
7786 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1630;
7787 0 : {
7788 0 : tree res_op0;
7789 0 : res_op0 = captures[0];
7790 0 : tree res_op1;
7791 0 : res_op1 = captures[1];
7792 0 : tree _r;
7793 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7794 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7795 : return _r;
7796 : }
7797 0 : next_after_fail1630:;
7798 : }
7799 : }
7800 : }
7801 : }
7802 : break;
7803 : }
7804 40 : case GE_EXPR:
7805 40 : {
7806 40 : tree _q50 = TREE_OPERAND (_p1, 0);
7807 40 : tree _q51 = TREE_OPERAND (_p1, 1);
7808 40 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7809 : {
7810 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7811 : {
7812 0 : {
7813 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7814 0 : const enum tree_code cmp1 = LE_EXPR;
7815 0 : const enum tree_code cmp2 = NE_EXPR;
7816 0 : const enum tree_code rcmp = GE_EXPR;
7817 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7818 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7819 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7820 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7821 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7822 : )
7823 : {
7824 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1631;
7825 0 : {
7826 0 : tree res_op0;
7827 0 : res_op0 = captures[0];
7828 0 : tree res_op1;
7829 0 : res_op1 = captures[1];
7830 0 : tree _r;
7831 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7832 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
7833 : return _r;
7834 : }
7835 0 : next_after_fail1631:;
7836 : }
7837 : }
7838 : }
7839 : }
7840 : break;
7841 : }
7842 70032 : default:;
7843 : }
7844 70032 : if (tree_zero_one_valued_p (_q20))
7845 : {
7846 394 : if (integer_zerop (_q21))
7847 : {
7848 82 : switch (TREE_CODE (_p1))
7849 : {
7850 39 : case NE_EXPR:
7851 39 : {
7852 39 : tree _q50 = TREE_OPERAND (_p1, 0);
7853 39 : tree _q51 = TREE_OPERAND (_p1, 1);
7854 39 : if (tree_zero_one_valued_p (_q50))
7855 : {
7856 0 : if (integer_zerop (_q51))
7857 : {
7858 0 : {
7859 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
7860 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, NE_EXPR, NE_EXPR);
7861 0 : if (res) return res;
7862 : }
7863 0 : {
7864 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7865 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, NE_EXPR, NE_EXPR);
7866 0 : if (res) return res;
7867 : }
7868 : }
7869 : }
7870 : break;
7871 : }
7872 0 : case EQ_EXPR:
7873 0 : {
7874 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7875 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7876 0 : if (tree_zero_one_valued_p (_q50))
7877 : {
7878 0 : if (integer_zerop (_q51))
7879 : {
7880 0 : {
7881 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
7882 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, EQ_EXPR, EQ_EXPR);
7883 0 : if (res) return res;
7884 : }
7885 0 : {
7886 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7887 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, NE_EXPR, EQ_EXPR);
7888 0 : if (res) return res;
7889 : }
7890 : }
7891 : }
7892 : break;
7893 : }
7894 : default:;
7895 : }
7896 : }
7897 : }
7898 : break;
7899 : }
7900 8326 : case MIN_EXPR:
7901 8326 : {
7902 8326 : tree _q20 = TREE_OPERAND (_p0, 0);
7903 8326 : tree _q21 = TREE_OPERAND (_p0, 1);
7904 8326 : switch (TREE_CODE (_p1))
7905 : {
7906 0 : case MAX_EXPR:
7907 0 : {
7908 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7909 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7910 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7911 : {
7912 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7913 : {
7914 0 : {
7915 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7916 0 : if (!HONOR_NANS (captures[0])
7917 : )
7918 : {
7919 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1632;
7920 0 : {
7921 0 : tree res_op0;
7922 0 : res_op0 = captures[0];
7923 0 : tree res_op1;
7924 0 : res_op1 = captures[1];
7925 0 : tree _r;
7926 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7927 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
7928 : return _r;
7929 : }
7930 0 : next_after_fail1632:;
7931 : }
7932 : }
7933 : }
7934 : }
7935 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7936 : {
7937 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7938 : {
7939 0 : {
7940 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7941 0 : if (!HONOR_NANS (captures[0])
7942 : )
7943 : {
7944 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1633;
7945 0 : {
7946 0 : tree res_op0;
7947 0 : res_op0 = captures[0];
7948 0 : tree res_op1;
7949 0 : res_op1 = captures[1];
7950 0 : tree _r;
7951 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7952 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
7953 : return _r;
7954 : }
7955 0 : next_after_fail1633:;
7956 : }
7957 : }
7958 : }
7959 : }
7960 : break;
7961 : }
7962 8326 : default:;
7963 : }
7964 8326 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7965 : {
7966 0 : {
7967 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7968 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7969 0 : if (res) return res;
7970 : }
7971 : }
7972 8326 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7973 : {
7974 616 : {
7975 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7976 616 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7977 616 : if (res) return res;
7978 : }
7979 : }
7980 : break;
7981 : }
7982 7683 : case MAX_EXPR:
7983 7683 : {
7984 7683 : tree _q20 = TREE_OPERAND (_p0, 0);
7985 7683 : tree _q21 = TREE_OPERAND (_p0, 1);
7986 7683 : switch (TREE_CODE (_p1))
7987 : {
7988 0 : case MIN_EXPR:
7989 0 : {
7990 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7991 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7992 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7993 : {
7994 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7995 : {
7996 0 : {
7997 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7998 0 : if (!HONOR_NANS (captures[0])
7999 : )
8000 : {
8001 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1634;
8002 0 : {
8003 0 : tree res_op0;
8004 0 : res_op0 = captures[0];
8005 0 : tree res_op1;
8006 0 : res_op1 = captures[1];
8007 0 : tree _r;
8008 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8010 : return _r;
8011 : }
8012 0 : next_after_fail1634:;
8013 : }
8014 : }
8015 : }
8016 : }
8017 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8018 : {
8019 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8020 : {
8021 0 : {
8022 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8023 0 : if (!HONOR_NANS (captures[0])
8024 : )
8025 : {
8026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1635;
8027 0 : {
8028 0 : tree res_op0;
8029 0 : res_op0 = captures[0];
8030 0 : tree res_op1;
8031 0 : res_op1 = captures[1];
8032 0 : tree _r;
8033 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
8034 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
8035 : return _r;
8036 : }
8037 0 : next_after_fail1635:;
8038 : }
8039 : }
8040 : }
8041 : }
8042 : break;
8043 : }
8044 7683 : default:;
8045 : }
8046 7683 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
8047 : {
8048 0 : {
8049 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8050 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8051 0 : if (res) return res;
8052 : }
8053 : }
8054 7683 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8055 : {
8056 425 : {
8057 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8058 425 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8059 425 : if (res) return res;
8060 : }
8061 : }
8062 : break;
8063 : }
8064 39172698 : default:;
8065 : }
8066 39172698 : if (tree_with_possible_nonzero_bits (_p0))
8067 : {
8068 15917985 : if (tree_with_known_nonzero_bits (_p1))
8069 : {
8070 14396680 : {
8071 14396680 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8072 14396680 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR);
8073 14396680 : if (res) return res;
8074 : }
8075 : }
8076 : }
8077 39111329 : if (tree_with_known_nonzero_bits (_p0))
8078 : {
8079 11680898 : if (tree_with_possible_nonzero_bits (_p1))
8080 : {
8081 11631267 : {
8082 11631267 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
8083 11631267 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR);
8084 11631267 : if (res) return res;
8085 : }
8086 : }
8087 : }
8088 39109941 : switch (TREE_CODE (_p1))
8089 : {
8090 144 : case MIN_EXPR:
8091 144 : {
8092 144 : tree _q30 = TREE_OPERAND (_p1, 0);
8093 144 : tree _q31 = TREE_OPERAND (_p1, 1);
8094 144 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8095 : {
8096 0 : {
8097 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8098 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8099 0 : if (res) return res;
8100 : }
8101 : }
8102 144 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8103 : {
8104 0 : {
8105 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8106 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
8107 0 : if (res) return res;
8108 : }
8109 : }
8110 : break;
8111 : }
8112 1830 : case MAX_EXPR:
8113 1830 : {
8114 1830 : tree _q30 = TREE_OPERAND (_p1, 0);
8115 1830 : tree _q31 = TREE_OPERAND (_p1, 1);
8116 1830 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
8117 : {
8118 0 : {
8119 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
8120 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8121 0 : if (res) return res;
8122 : }
8123 : }
8124 1830 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
8125 : {
8126 0 : {
8127 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
8128 0 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
8129 0 : if (res) return res;
8130 : }
8131 : }
8132 : break;
8133 : }
8134 39109941 : default:;
8135 : }
8136 39109941 : switch (TREE_CODE (_p0))
8137 : {
8138 8326 : case MIN_EXPR:
8139 8326 : {
8140 8326 : tree _q20 = TREE_OPERAND (_p0, 0);
8141 8326 : tree _q21 = TREE_OPERAND (_p0, 1);
8142 8326 : switch (TREE_CODE (_q21))
8143 : {
8144 570 : case INTEGER_CST:
8145 570 : {
8146 570 : switch (TREE_CODE (_p1))
8147 : {
8148 0 : case INTEGER_CST:
8149 0 : {
8150 0 : {
8151 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8152 0 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, NE_EXPR);
8153 0 : if (res) return res;
8154 : }
8155 0 : break;
8156 : }
8157 : default:;
8158 : }
8159 : break;
8160 : }
8161 : default:;
8162 : }
8163 : break;
8164 : }
8165 7554 : case MAX_EXPR:
8166 7554 : {
8167 7554 : tree _q20 = TREE_OPERAND (_p0, 0);
8168 7554 : tree _q21 = TREE_OPERAND (_p0, 1);
8169 7554 : switch (TREE_CODE (_q21))
8170 : {
8171 6502 : case INTEGER_CST:
8172 6502 : {
8173 6502 : switch (TREE_CODE (_p1))
8174 : {
8175 696 : case INTEGER_CST:
8176 696 : {
8177 696 : {
8178 696 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8179 696 : tree res = generic_simplify_248 (loc, type, _p0, _p1, captures, NE_EXPR);
8180 696 : if (res) return res;
8181 : }
8182 0 : break;
8183 : }
8184 : default:;
8185 : }
8186 : break;
8187 : }
8188 6858 : default:;
8189 : }
8190 6858 : if (tree_expr_nonnegative_p (_q20))
8191 : {
8192 362 : if (tree_expr_nonnegative_p (_q21))
8193 : {
8194 350 : if (integer_zerop (_p1))
8195 : {
8196 0 : {
8197 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8198 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR);
8199 0 : if (res) return res;
8200 : }
8201 : }
8202 : }
8203 : }
8204 : break;
8205 : }
8206 1320893 : case BIT_AND_EXPR:
8207 1320893 : {
8208 1320893 : tree _q20 = TREE_OPERAND (_p0, 0);
8209 1320893 : tree _q21 = TREE_OPERAND (_p0, 1);
8210 1320893 : switch (TREE_CODE (_q20))
8211 : {
8212 3583 : case LSHIFT_EXPR:
8213 3583 : {
8214 3583 : tree _q30 = TREE_OPERAND (_q20, 0);
8215 3583 : tree _q31 = TREE_OPERAND (_q20, 1);
8216 3583 : if (integer_pow2p (_q30))
8217 : {
8218 3562 : if (integer_pow2p (_q21))
8219 : {
8220 21 : if (integer_zerop (_p1))
8221 : {
8222 21 : {
8223 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8224 21 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8225 21 : if (res) return res;
8226 : }
8227 : }
8228 : }
8229 : }
8230 3562 : switch (TREE_CODE (_q31))
8231 : {
8232 13 : case INTEGER_CST:
8233 13 : {
8234 13 : switch (TREE_CODE (_q21))
8235 : {
8236 13 : case INTEGER_CST:
8237 13 : {
8238 13 : switch (TREE_CODE (_p1))
8239 : {
8240 13 : case INTEGER_CST:
8241 13 : {
8242 13 : {
8243 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8244 13 : tree res = generic_simplify_251 (loc, type, _p0, _p1, captures, NE_EXPR);
8245 13 : if (res) return res;
8246 : }
8247 0 : break;
8248 : }
8249 : default:;
8250 : }
8251 : break;
8252 : }
8253 : default:;
8254 : }
8255 : break;
8256 : }
8257 3549 : default:;
8258 : }
8259 3549 : if (integer_onep (_q30))
8260 : {
8261 3540 : if (integer_pow2p (_q21))
8262 : {
8263 0 : if (integer_zerop (_p1))
8264 : {
8265 0 : {
8266 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
8267 0 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8268 0 : if (res) return res;
8269 : }
8270 : }
8271 : }
8272 : }
8273 : break;
8274 : }
8275 4806 : case RSHIFT_EXPR:
8276 4806 : {
8277 4806 : tree _q30 = TREE_OPERAND (_q20, 0);
8278 4806 : tree _q31 = TREE_OPERAND (_q20, 1);
8279 4806 : if (integer_pow2p (_q30))
8280 : {
8281 41 : if (integer_pow2p (_q21))
8282 : {
8283 9 : if (integer_zerop (_p1))
8284 : {
8285 9 : {
8286 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
8287 9 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8288 9 : if (res) return res;
8289 : }
8290 : }
8291 : }
8292 : }
8293 4797 : switch (TREE_CODE (_q31))
8294 : {
8295 329 : case INTEGER_CST:
8296 329 : {
8297 329 : switch (TREE_CODE (_q21))
8298 : {
8299 305 : case INTEGER_CST:
8300 305 : {
8301 305 : switch (TREE_CODE (_p1))
8302 : {
8303 280 : case INTEGER_CST:
8304 280 : {
8305 280 : {
8306 280 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8307 280 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR);
8308 280 : if (res) return res;
8309 : }
8310 14 : break;
8311 : }
8312 : default:;
8313 : }
8314 : break;
8315 : }
8316 : default:;
8317 : }
8318 : break;
8319 : }
8320 : default:;
8321 : }
8322 : break;
8323 : }
8324 7461 : case PLUS_EXPR:
8325 7461 : {
8326 7461 : tree _q30 = TREE_OPERAND (_q20, 0);
8327 7461 : tree _q31 = TREE_OPERAND (_q20, 1);
8328 7461 : switch (TREE_CODE (_q31))
8329 : {
8330 6248 : case INTEGER_CST:
8331 6248 : {
8332 6248 : switch (TREE_CODE (_q21))
8333 : {
8334 137 : case INTEGER_CST:
8335 137 : {
8336 137 : switch (TREE_CODE (_p1))
8337 : {
8338 137 : case INTEGER_CST:
8339 137 : {
8340 137 : {
8341 137 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
8342 137 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR);
8343 137 : if (res) return res;
8344 : }
8345 111 : break;
8346 : }
8347 : default:;
8348 : }
8349 : break;
8350 : }
8351 : default:;
8352 : }
8353 : break;
8354 : }
8355 : default:;
8356 : }
8357 : break;
8358 : }
8359 1320558 : default:;
8360 : }
8361 1320558 : {
8362 1320558 : tree _q20_pops[1];
8363 1320558 : if (tree_nop_convert (_q20, _q20_pops))
8364 : {
8365 143067 : tree _q30 = _q20_pops[0];
8366 143067 : switch (TREE_CODE (_q30))
8367 : {
8368 37198 : case LSHIFT_EXPR:
8369 37198 : {
8370 37198 : tree _q40 = TREE_OPERAND (_q30, 0);
8371 37198 : tree _q41 = TREE_OPERAND (_q30, 1);
8372 37198 : if (integer_onep (_q40))
8373 : {
8374 37198 : if (integer_pow2p (_q21))
8375 : {
8376 8 : if (integer_zerop (_p1))
8377 : {
8378 8 : {
8379 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
8380 8 : tree res = generic_simplify_252 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
8381 8 : if (res) return res;
8382 : }
8383 : }
8384 : }
8385 : }
8386 : break;
8387 : }
8388 : default:;
8389 : }
8390 : }
8391 : }
8392 1320558 : break;
8393 : }
8394 5103 : case LSHIFT_EXPR:
8395 5103 : {
8396 5103 : tree _q20 = TREE_OPERAND (_p0, 0);
8397 5103 : tree _q21 = TREE_OPERAND (_p0, 1);
8398 5103 : switch (TREE_CODE (_q20))
8399 : {
8400 534 : case INTEGER_CST:
8401 534 : {
8402 534 : switch (TREE_CODE (_p1))
8403 : {
8404 159 : case INTEGER_CST:
8405 159 : {
8406 159 : {
8407 159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8408 159 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8409 159 : if (res) return res;
8410 : }
8411 88 : break;
8412 : }
8413 : default:;
8414 : }
8415 : break;
8416 : }
8417 : default:;
8418 : }
8419 : break;
8420 : }
8421 393 : case LROTATE_EXPR:
8422 393 : {
8423 393 : tree _q20 = TREE_OPERAND (_p0, 0);
8424 393 : tree _q21 = TREE_OPERAND (_p0, 1);
8425 393 : switch (TREE_CODE (_p1))
8426 : {
8427 0 : case LROTATE_EXPR:
8428 0 : {
8429 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8430 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8431 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8432 : {
8433 0 : {
8434 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8435 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8436 0 : if (res) return res;
8437 : }
8438 : }
8439 : break;
8440 : }
8441 393 : default:;
8442 : }
8443 393 : switch (TREE_CODE (_q21))
8444 : {
8445 112 : case INTEGER_CST:
8446 112 : {
8447 112 : switch (TREE_CODE (_p1))
8448 : {
8449 112 : case INTEGER_CST:
8450 112 : {
8451 112 : {
8452 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8453 112 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8454 112 : if (res) return res;
8455 : }
8456 0 : break;
8457 : }
8458 : default:;
8459 : }
8460 : break;
8461 : }
8462 281 : default:;
8463 : }
8464 281 : switch (TREE_CODE (_p1))
8465 : {
8466 193 : case INTEGER_CST:
8467 193 : {
8468 193 : {
8469 193 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8470 193 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
8471 193 : if (res) return res;
8472 : }
8473 193 : break;
8474 : }
8475 : default:;
8476 : }
8477 : break;
8478 : }
8479 439 : case RROTATE_EXPR:
8480 439 : {
8481 439 : tree _q20 = TREE_OPERAND (_p0, 0);
8482 439 : tree _q21 = TREE_OPERAND (_p0, 1);
8483 439 : switch (TREE_CODE (_p1))
8484 : {
8485 0 : case RROTATE_EXPR:
8486 0 : {
8487 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8488 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8489 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8490 : {
8491 0 : {
8492 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
8493 0 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8494 0 : if (res) return res;
8495 : }
8496 : }
8497 : break;
8498 : }
8499 439 : default:;
8500 : }
8501 439 : switch (TREE_CODE (_q21))
8502 : {
8503 233 : case INTEGER_CST:
8504 233 : {
8505 233 : switch (TREE_CODE (_p1))
8506 : {
8507 12 : case INTEGER_CST:
8508 12 : {
8509 12 : {
8510 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8511 12 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8512 12 : if (res) return res;
8513 : }
8514 0 : break;
8515 : }
8516 : default:;
8517 : }
8518 : break;
8519 : }
8520 427 : default:;
8521 : }
8522 427 : switch (TREE_CODE (_p1))
8523 : {
8524 190 : case INTEGER_CST:
8525 190 : {
8526 190 : {
8527 190 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8528 190 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
8529 190 : if (res) return res;
8530 : }
8531 190 : break;
8532 : }
8533 : default:;
8534 : }
8535 : break;
8536 : }
8537 110297 : case MULT_EXPR:
8538 110297 : {
8539 110297 : tree _q20 = TREE_OPERAND (_p0, 0);
8540 110297 : tree _q21 = TREE_OPERAND (_p0, 1);
8541 110297 : switch (TREE_CODE (_q20))
8542 : {
8543 9 : case TRUNC_DIV_EXPR:
8544 9 : {
8545 9 : tree _q30 = TREE_OPERAND (_q20, 0);
8546 9 : tree _q31 = TREE_OPERAND (_q20, 1);
8547 9 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
8548 : {
8549 9 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
8550 : {
8551 9 : {
8552 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
8553 9 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
8554 9 : if (res) return res;
8555 : }
8556 : }
8557 : }
8558 : break;
8559 : }
8560 110288 : default:;
8561 : }
8562 110288 : switch (TREE_CODE (_q21))
8563 : {
8564 0 : case TRUNC_DIV_EXPR:
8565 0 : {
8566 0 : tree _q40 = TREE_OPERAND (_q21, 0);
8567 0 : tree _q41 = TREE_OPERAND (_q21, 1);
8568 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
8569 : {
8570 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
8571 : {
8572 0 : {
8573 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
8574 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
8575 0 : if (res) return res;
8576 : }
8577 : }
8578 : }
8579 : break;
8580 : }
8581 : default:;
8582 : }
8583 : break;
8584 : }
8585 39108706 : default:;
8586 : }
8587 39108706 : switch (TREE_CODE (_p1))
8588 : {
8589 12096 : case MULT_EXPR:
8590 12096 : {
8591 12096 : tree _q30 = TREE_OPERAND (_p1, 0);
8592 12096 : tree _q31 = TREE_OPERAND (_p1, 1);
8593 12096 : switch (TREE_CODE (_q30))
8594 : {
8595 2 : case TRUNC_DIV_EXPR:
8596 2 : {
8597 2 : tree _q40 = TREE_OPERAND (_q30, 0);
8598 2 : tree _q41 = TREE_OPERAND (_q30, 1);
8599 2 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
8600 : {
8601 0 : if ((_q31 == _q41 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q41, 0) && types_match (_q31, _q41)))
8602 : {
8603 0 : {
8604 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
8605 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
8606 0 : if (res) return res;
8607 : }
8608 : }
8609 : }
8610 : break;
8611 : }
8612 12096 : default:;
8613 : }
8614 12096 : switch (TREE_CODE (_q31))
8615 : {
8616 0 : case TRUNC_DIV_EXPR:
8617 0 : {
8618 0 : tree _q50 = TREE_OPERAND (_q31, 0);
8619 0 : tree _q51 = TREE_OPERAND (_q31, 1);
8620 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
8621 : {
8622 0 : if ((_q51 == _q30 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q30, 0) && types_match (_q51, _q30)))
8623 : {
8624 0 : {
8625 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _p0, _q30 };
8626 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR);
8627 0 : if (res) return res;
8628 : }
8629 : }
8630 : }
8631 : break;
8632 : }
8633 : default:;
8634 : }
8635 : break;
8636 : }
8637 39108706 : default:;
8638 : }
8639 39108706 : switch (TREE_CODE (_p0))
8640 : {
8641 352 : case VEC_COND_EXPR:
8642 352 : {
8643 352 : tree _q20 = TREE_OPERAND (_p0, 0);
8644 352 : tree _q21 = TREE_OPERAND (_p0, 1);
8645 352 : tree _q22 = TREE_OPERAND (_p0, 2);
8646 352 : switch (TREE_CODE (_p1))
8647 : {
8648 16 : case VEC_COND_EXPR:
8649 16 : {
8650 16 : tree _q60 = TREE_OPERAND (_p1, 0);
8651 16 : tree _q61 = TREE_OPERAND (_p1, 1);
8652 16 : tree _q62 = TREE_OPERAND (_p1, 2);
8653 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8654 : {
8655 0 : {
8656 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8657 0 : if (VECTOR_TYPE_P (type)
8658 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8659 0 : || types_match (type, TREE_TYPE (captures[2]))
8660 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8661 : || (optimize_vectors_before_lowering_p ()
8662 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8663 : )
8664 : {
8665 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1636;
8666 0 : {
8667 0 : tree res_op0;
8668 0 : res_op0 = captures[1];
8669 0 : tree res_op1;
8670 0 : {
8671 0 : tree _o1[2], _r1;
8672 0 : _o1[0] = captures[2];
8673 0 : _o1[1] = captures[5];
8674 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8675 0 : if (EXPR_P (_r1))
8676 0 : goto next_after_fail1636;
8677 0 : res_op1 = _r1;
8678 : }
8679 0 : tree res_op2;
8680 0 : {
8681 0 : tree _o1[2], _r1;
8682 0 : _o1[0] = captures[3];
8683 0 : _o1[1] = captures[6];
8684 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8685 0 : if (EXPR_P (_r1))
8686 0 : goto next_after_fail1636;
8687 0 : res_op2 = _r1;
8688 : }
8689 0 : tree _r;
8690 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8691 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
8692 : return _r;
8693 : }
8694 352 : next_after_fail1636:;
8695 : }
8696 : }
8697 : }
8698 : break;
8699 : }
8700 352 : default:;
8701 : }
8702 352 : {
8703 352 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8704 352 : if (VECTOR_TYPE_P (type)
8705 702 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8706 350 : || types_match (type, TREE_TYPE (captures[2]))
8707 350 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8708 : || (optimize_vectors_before_lowering_p ()
8709 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8710 : )
8711 : {
8712 350 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1637;
8713 350 : {
8714 350 : if (! tree_invariant_p (captures[4])) goto next_after_fail1637;
8715 88 : tree res_op0;
8716 88 : res_op0 = captures[1];
8717 88 : tree res_op1;
8718 88 : {
8719 88 : tree _o1[2], _r1;
8720 88 : _o1[0] = captures[2];
8721 88 : _o1[1] = unshare_expr (captures[4]);
8722 88 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8723 88 : if (EXPR_P (_r1))
8724 16 : goto next_after_fail1637;
8725 72 : res_op1 = _r1;
8726 : }
8727 72 : tree res_op2;
8728 72 : {
8729 72 : tree _o1[2], _r1;
8730 72 : _o1[0] = captures[3];
8731 72 : _o1[1] = captures[4];
8732 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8733 72 : if (EXPR_P (_r1))
8734 0 : goto next_after_fail1637;
8735 72 : res_op2 = _r1;
8736 : }
8737 72 : tree _r;
8738 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8739 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 940, __FILE__, __LINE__, true);
8740 : return _r;
8741 : }
8742 39108627 : next_after_fail1637:;
8743 : }
8744 : }
8745 : break;
8746 : }
8747 2508972 : case CALL_EXPR:
8748 2508972 : switch (get_call_combined_fn (_p0))
8749 : {
8750 0 : case CFN_BUILT_IN_BITREVERSE128:
8751 0 : if (call_expr_nargs (_p0) == 1)
8752 : {
8753 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8754 0 : switch (TREE_CODE (_p1))
8755 : {
8756 0 : case INTEGER_CST:
8757 0 : {
8758 0 : {
8759 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8760 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
8761 0 : if (res) return res;
8762 : }
8763 0 : break;
8764 : }
8765 0 : case CALL_EXPR:
8766 0 : switch (get_call_combined_fn (_p1))
8767 : {
8768 0 : case CFN_BUILT_IN_BITREVERSE128:
8769 0 : if (call_expr_nargs (_p1) == 1)
8770 : {
8771 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8772 0 : {
8773 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8774 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
8775 0 : if (res) return res;
8776 : }
8777 : }
8778 : break;
8779 : default:;
8780 : }
8781 : break;
8782 : default:;
8783 : }
8784 : }
8785 : break;
8786 0 : case CFN_BUILT_IN_BITREVERSE16:
8787 0 : if (call_expr_nargs (_p0) == 1)
8788 : {
8789 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8790 0 : switch (TREE_CODE (_p1))
8791 : {
8792 0 : case INTEGER_CST:
8793 0 : {
8794 0 : {
8795 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8796 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
8797 0 : if (res) return res;
8798 : }
8799 0 : break;
8800 : }
8801 0 : case CALL_EXPR:
8802 0 : switch (get_call_combined_fn (_p1))
8803 : {
8804 0 : case CFN_BUILT_IN_BITREVERSE16:
8805 0 : if (call_expr_nargs (_p1) == 1)
8806 : {
8807 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8808 0 : {
8809 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8810 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
8811 0 : if (res) return res;
8812 : }
8813 : }
8814 : break;
8815 : default:;
8816 : }
8817 : break;
8818 : default:;
8819 : }
8820 : }
8821 : break;
8822 0 : case CFN_BUILT_IN_BITREVERSE32:
8823 0 : if (call_expr_nargs (_p0) == 1)
8824 : {
8825 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8826 0 : switch (TREE_CODE (_p1))
8827 : {
8828 0 : case INTEGER_CST:
8829 0 : {
8830 0 : {
8831 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8832 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
8833 0 : if (res) return res;
8834 : }
8835 0 : break;
8836 : }
8837 0 : case CALL_EXPR:
8838 0 : switch (get_call_combined_fn (_p1))
8839 : {
8840 0 : case CFN_BUILT_IN_BITREVERSE32:
8841 0 : if (call_expr_nargs (_p1) == 1)
8842 : {
8843 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8844 0 : {
8845 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8846 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
8847 0 : if (res) return res;
8848 : }
8849 : }
8850 : break;
8851 : default:;
8852 : }
8853 : break;
8854 : default:;
8855 : }
8856 : }
8857 : break;
8858 0 : case CFN_BUILT_IN_BITREVERSE64:
8859 0 : if (call_expr_nargs (_p0) == 1)
8860 : {
8861 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8862 0 : switch (TREE_CODE (_p1))
8863 : {
8864 0 : case INTEGER_CST:
8865 0 : {
8866 0 : {
8867 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8868 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
8869 0 : if (res) return res;
8870 : }
8871 0 : break;
8872 : }
8873 0 : case CALL_EXPR:
8874 0 : switch (get_call_combined_fn (_p1))
8875 : {
8876 0 : case CFN_BUILT_IN_BITREVERSE64:
8877 0 : if (call_expr_nargs (_p1) == 1)
8878 : {
8879 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8880 0 : {
8881 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8882 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
8883 0 : if (res) return res;
8884 : }
8885 : }
8886 : break;
8887 : default:;
8888 : }
8889 : break;
8890 : default:;
8891 : }
8892 : }
8893 : break;
8894 0 : case CFN_BITREVERSE:
8895 0 : if (call_expr_nargs (_p0) == 1)
8896 : {
8897 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8898 0 : switch (TREE_CODE (_p1))
8899 : {
8900 0 : case INTEGER_CST:
8901 0 : {
8902 0 : {
8903 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8904 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8905 0 : if (res) return res;
8906 : }
8907 0 : break;
8908 : }
8909 0 : case CALL_EXPR:
8910 0 : switch (get_call_combined_fn (_p1))
8911 : {
8912 0 : case CFN_BITREVERSE:
8913 0 : if (call_expr_nargs (_p1) == 1)
8914 : {
8915 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8916 0 : {
8917 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8918 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8919 0 : if (res) return res;
8920 : }
8921 : }
8922 : break;
8923 : default:;
8924 : }
8925 : break;
8926 : default:;
8927 : }
8928 : }
8929 : break;
8930 0 : case CFN_BSWAP:
8931 0 : if (call_expr_nargs (_p0) == 1)
8932 : {
8933 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8934 0 : switch (TREE_CODE (_p1))
8935 : {
8936 0 : case INTEGER_CST:
8937 0 : {
8938 0 : {
8939 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8940 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8941 0 : if (res) return res;
8942 : }
8943 0 : break;
8944 : }
8945 0 : case CALL_EXPR:
8946 0 : switch (get_call_combined_fn (_p1))
8947 : {
8948 0 : case CFN_BSWAP:
8949 0 : if (call_expr_nargs (_p1) == 1)
8950 : {
8951 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8952 0 : {
8953 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8954 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8955 0 : if (res) return res;
8956 : }
8957 : }
8958 : break;
8959 : default:;
8960 : }
8961 : break;
8962 : default:;
8963 : }
8964 : }
8965 : break;
8966 2 : case CFN_BUILT_IN_BSWAP128:
8967 2 : if (call_expr_nargs (_p0) == 1)
8968 : {
8969 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8970 2 : switch (TREE_CODE (_p1))
8971 : {
8972 0 : case INTEGER_CST:
8973 0 : {
8974 0 : {
8975 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8976 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8977 0 : if (res) return res;
8978 : }
8979 0 : break;
8980 : }
8981 1 : case CALL_EXPR:
8982 1 : switch (get_call_combined_fn (_p1))
8983 : {
8984 0 : case CFN_BUILT_IN_BSWAP128:
8985 0 : if (call_expr_nargs (_p1) == 1)
8986 : {
8987 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8988 0 : {
8989 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8990 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8991 0 : if (res) return res;
8992 : }
8993 : }
8994 : break;
8995 : default:;
8996 : }
8997 : break;
8998 : default:;
8999 : }
9000 : }
9001 : break;
9002 0 : case CFN_BUILT_IN_BITREVERSE8:
9003 0 : if (call_expr_nargs (_p0) == 1)
9004 : {
9005 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9006 0 : switch (TREE_CODE (_p1))
9007 : {
9008 0 : case INTEGER_CST:
9009 0 : {
9010 0 : {
9011 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9012 0 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
9013 0 : if (res) return res;
9014 : }
9015 0 : break;
9016 : }
9017 0 : case CALL_EXPR:
9018 0 : switch (get_call_combined_fn (_p1))
9019 : {
9020 0 : case CFN_BUILT_IN_BITREVERSE8:
9021 0 : if (call_expr_nargs (_p1) == 1)
9022 : {
9023 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9024 0 : {
9025 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9026 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
9027 0 : if (res) return res;
9028 : }
9029 : }
9030 : break;
9031 : default:;
9032 : }
9033 : break;
9034 : default:;
9035 : }
9036 : }
9037 : break;
9038 11 : case CFN_BUILT_IN_BSWAP16:
9039 11 : if (call_expr_nargs (_p0) == 1)
9040 : {
9041 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9042 11 : switch (TREE_CODE (_p1))
9043 : {
9044 9 : case INTEGER_CST:
9045 9 : {
9046 9 : {
9047 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9048 9 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
9049 9 : if (res) return res;
9050 : }
9051 9 : break;
9052 : }
9053 1 : case CALL_EXPR:
9054 1 : switch (get_call_combined_fn (_p1))
9055 : {
9056 1 : case CFN_BUILT_IN_BSWAP16:
9057 1 : if (call_expr_nargs (_p1) == 1)
9058 : {
9059 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9060 1 : {
9061 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9062 1 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
9063 1 : if (res) return res;
9064 : }
9065 : }
9066 : break;
9067 : default:;
9068 : }
9069 : break;
9070 : default:;
9071 : }
9072 : }
9073 : break;
9074 7 : case CFN_BUILT_IN_BSWAP32:
9075 7 : if (call_expr_nargs (_p0) == 1)
9076 : {
9077 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9078 7 : switch (TREE_CODE (_p1))
9079 : {
9080 3 : case INTEGER_CST:
9081 3 : {
9082 3 : {
9083 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9084 3 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
9085 3 : if (res) return res;
9086 : }
9087 3 : break;
9088 : }
9089 3 : case CALL_EXPR:
9090 3 : switch (get_call_combined_fn (_p1))
9091 : {
9092 3 : case CFN_BUILT_IN_BSWAP32:
9093 3 : if (call_expr_nargs (_p1) == 1)
9094 : {
9095 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9096 3 : {
9097 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9098 3 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
9099 3 : if (res) return res;
9100 : }
9101 : }
9102 : break;
9103 : default:;
9104 : }
9105 : break;
9106 : default:;
9107 : }
9108 : }
9109 : break;
9110 7 : case CFN_BUILT_IN_BSWAP64:
9111 7 : if (call_expr_nargs (_p0) == 1)
9112 : {
9113 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9114 7 : switch (TREE_CODE (_p1))
9115 : {
9116 3 : case INTEGER_CST:
9117 3 : {
9118 3 : {
9119 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9120 3 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
9121 3 : if (res) return res;
9122 : }
9123 3 : break;
9124 : }
9125 3 : case CALL_EXPR:
9126 3 : switch (get_call_combined_fn (_p1))
9127 : {
9128 3 : case CFN_BUILT_IN_BSWAP64:
9129 3 : if (call_expr_nargs (_p1) == 1)
9130 : {
9131 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9132 3 : {
9133 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
9134 3 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
9135 3 : if (res) return res;
9136 : }
9137 : }
9138 : break;
9139 : default:;
9140 : }
9141 : break;
9142 : default:;
9143 : }
9144 : }
9145 : break;
9146 : default:;
9147 : }
9148 : break;
9149 39108627 : default:;
9150 : }
9151 39108627 : switch (TREE_CODE (_p1))
9152 : {
9153 40 : case VEC_COND_EXPR:
9154 40 : {
9155 40 : tree _q30 = TREE_OPERAND (_p1, 0);
9156 40 : tree _q31 = TREE_OPERAND (_p1, 1);
9157 40 : tree _q32 = TREE_OPERAND (_p1, 2);
9158 40 : {
9159 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9160 40 : if (VECTOR_TYPE_P (type)
9161 80 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
9162 40 : || types_match (type, TREE_TYPE (captures[3]))
9163 40 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9164 : || (optimize_vectors_before_lowering_p ()
9165 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9166 : )
9167 : {
9168 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1638;
9169 40 : {
9170 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1638;
9171 0 : tree res_op0;
9172 0 : res_op0 = captures[2];
9173 0 : tree res_op1;
9174 0 : {
9175 0 : tree _o1[2], _r1;
9176 0 : _o1[0] = unshare_expr (captures[0]);
9177 0 : _o1[1] = captures[3];
9178 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
9179 0 : if (EXPR_P (_r1))
9180 0 : goto next_after_fail1638;
9181 0 : res_op1 = _r1;
9182 : }
9183 0 : tree res_op2;
9184 0 : {
9185 0 : tree _o1[2], _r1;
9186 0 : _o1[0] = captures[0];
9187 0 : _o1[1] = captures[4];
9188 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
9189 0 : if (EXPR_P (_r1))
9190 0 : goto next_after_fail1638;
9191 0 : res_op2 = _r1;
9192 : }
9193 0 : tree _r;
9194 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9195 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 941, __FILE__, __LINE__, true);
9196 : return _r;
9197 : }
9198 39108627 : next_after_fail1638:;
9199 : }
9200 : }
9201 : break;
9202 : }
9203 39108627 : default:;
9204 : }
9205 39108627 : switch (TREE_CODE (_p0))
9206 : {
9207 98134 : case COND_EXPR:
9208 98134 : {
9209 98134 : tree _q20 = TREE_OPERAND (_p0, 0);
9210 98134 : tree _q21 = TREE_OPERAND (_p0, 1);
9211 98134 : tree _q22 = TREE_OPERAND (_p0, 2);
9212 98134 : switch (TREE_CODE (_p1))
9213 : {
9214 276 : case COND_EXPR:
9215 276 : {
9216 276 : tree _q60 = TREE_OPERAND (_p1, 0);
9217 276 : tree _q61 = TREE_OPERAND (_p1, 1);
9218 276 : tree _q62 = TREE_OPERAND (_p1, 2);
9219 276 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
9220 : {
9221 72 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9222 : {
9223 72 : {
9224 72 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9225 72 : const enum tree_code eqne = NE_EXPR;
9226 72 : if (!HONOR_NANS (captures[1])
9227 56 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9228 49 : && types_match (type, TREE_TYPE (captures[0]))
9229 49 : && expr_no_side_effects_p (captures[1])
9230 114 : && expr_no_side_effects_p (captures[2])
9231 : )
9232 : {
9233 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1639;
9234 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1639;
9235 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1639;
9236 42 : {
9237 42 : tree res_op0;
9238 42 : {
9239 42 : tree _o1[2], _r1;
9240 42 : {
9241 42 : tree _o2[2], _r2;
9242 42 : _o2[0] = captures[0];
9243 42 : _o2[1] = captures[3];
9244 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9245 42 : _o1[0] = _r2;
9246 : }
9247 42 : {
9248 42 : tree _o2[2], _r2;
9249 42 : _o2[0] = captures[1];
9250 42 : _o2[1] = captures[2];
9251 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
9252 42 : _o1[1] = _r2;
9253 : }
9254 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9255 42 : res_op0 = _r1;
9256 : }
9257 42 : tree res_op1;
9258 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
9259 42 : tree res_op2;
9260 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
9261 42 : tree _r;
9262 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
9263 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1024, __FILE__, __LINE__, true);
9264 : return _r;
9265 : }
9266 234 : next_after_fail1639:;
9267 : }
9268 : }
9269 : }
9270 : }
9271 234 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
9272 : {
9273 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
9274 : {
9275 0 : {
9276 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9277 0 : const enum tree_code eqne = NE_EXPR;
9278 0 : if (!HONOR_NANS (captures[1])
9279 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9280 0 : && types_match (type, TREE_TYPE (captures[0]))
9281 0 : && expr_no_side_effects_p (captures[1])
9282 0 : && expr_no_side_effects_p (captures[2])
9283 : )
9284 : {
9285 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1640;
9286 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1640;
9287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1640;
9288 0 : {
9289 0 : tree res_op0;
9290 0 : {
9291 0 : tree _o1[2], _r1;
9292 0 : {
9293 0 : tree _o2[2], _r2;
9294 0 : _o2[0] = captures[0];
9295 0 : _o2[1] = captures[3];
9296 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9297 0 : _o1[0] = _r2;
9298 : }
9299 0 : {
9300 0 : tree _o2[2], _r2;
9301 0 : _o2[0] = captures[1];
9302 0 : _o2[1] = captures[2];
9303 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
9304 0 : _o1[1] = _r2;
9305 : }
9306 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9307 0 : res_op0 = _r1;
9308 : }
9309 0 : tree res_op1;
9310 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
9311 0 : tree res_op2;
9312 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
9313 0 : tree _r;
9314 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
9315 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1025, __FILE__, __LINE__, true);
9316 : return _r;
9317 : }
9318 38971003 : next_after_fail1640:;
9319 : }
9320 : }
9321 : }
9322 : }
9323 : break;
9324 : }
9325 : default:;
9326 : }
9327 : break;
9328 : }
9329 280 : case VEC_COND_EXPR:
9330 280 : {
9331 280 : tree _q20 = TREE_OPERAND (_p0, 0);
9332 280 : tree _q21 = TREE_OPERAND (_p0, 1);
9333 280 : tree _q22 = TREE_OPERAND (_p0, 2);
9334 280 : switch (TREE_CODE (_p1))
9335 : {
9336 16 : case VEC_COND_EXPR:
9337 16 : {
9338 16 : tree _q60 = TREE_OPERAND (_p1, 0);
9339 16 : tree _q61 = TREE_OPERAND (_p1, 1);
9340 16 : tree _q62 = TREE_OPERAND (_p1, 2);
9341 16 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
9342 : {
9343 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
9344 : {
9345 0 : {
9346 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9347 0 : const enum tree_code eqne = NE_EXPR;
9348 0 : if (!HONOR_NANS (captures[1])
9349 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9350 0 : && types_match (type, TREE_TYPE (captures[0]))
9351 0 : && expr_no_side_effects_p (captures[1])
9352 0 : && expr_no_side_effects_p (captures[2])
9353 : )
9354 : {
9355 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1641;
9356 0 : {
9357 0 : tree res_op0;
9358 0 : {
9359 0 : tree _o1[2], _r1;
9360 0 : {
9361 0 : tree _o2[2], _r2;
9362 0 : _o2[0] = captures[0];
9363 0 : _o2[1] = captures[3];
9364 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9365 0 : _o1[0] = _r2;
9366 : }
9367 0 : {
9368 0 : tree _o2[2], _r2;
9369 0 : _o2[0] = captures[1];
9370 0 : _o2[1] = captures[2];
9371 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
9372 0 : _o1[1] = _r2;
9373 : }
9374 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9375 0 : res_op0 = _r1;
9376 : }
9377 0 : tree res_op1;
9378 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
9379 0 : tree res_op2;
9380 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
9381 0 : tree _r;
9382 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9383 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1024, __FILE__, __LINE__, true);
9384 : return _r;
9385 : }
9386 0 : next_after_fail1641:;
9387 : }
9388 : }
9389 : }
9390 : }
9391 16 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
9392 : {
9393 16 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
9394 : {
9395 16 : {
9396 16 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
9397 16 : const enum tree_code eqne = NE_EXPR;
9398 16 : if (!HONOR_NANS (captures[1])
9399 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
9400 0 : && types_match (type, TREE_TYPE (captures[0]))
9401 0 : && expr_no_side_effects_p (captures[1])
9402 16 : && expr_no_side_effects_p (captures[2])
9403 : )
9404 : {
9405 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1642;
9406 0 : {
9407 0 : tree res_op0;
9408 0 : {
9409 0 : tree _o1[2], _r1;
9410 0 : {
9411 0 : tree _o2[2], _r2;
9412 0 : _o2[0] = captures[0];
9413 0 : _o2[1] = captures[3];
9414 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9415 0 : _o1[0] = _r2;
9416 : }
9417 0 : {
9418 0 : tree _o2[2], _r2;
9419 0 : _o2[0] = captures[1];
9420 0 : _o2[1] = captures[2];
9421 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
9422 0 : _o1[1] = _r2;
9423 : }
9424 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9425 0 : res_op0 = _r1;
9426 : }
9427 0 : tree res_op1;
9428 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
9429 0 : tree res_op2;
9430 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
9431 0 : tree _r;
9432 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9433 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1025, __FILE__, __LINE__, true);
9434 : return _r;
9435 : }
9436 0 : next_after_fail1642:;
9437 : }
9438 : }
9439 : }
9440 : }
9441 : break;
9442 : }
9443 : default:;
9444 : }
9445 : break;
9446 : }
9447 18915 : case LT_EXPR:
9448 18915 : {
9449 18915 : tree _q20 = TREE_OPERAND (_p0, 0);
9450 18915 : tree _q21 = TREE_OPERAND (_p0, 1);
9451 18915 : if (integer_zerop (_p1))
9452 : {
9453 17172 : {
9454 17172 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9455 17172 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
9456 17172 : if (res) return res;
9457 : }
9458 : }
9459 15955 : if (integer_truep (_p1))
9460 : {
9461 563 : {
9462 563 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9463 563 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
9464 563 : if (res) return res;
9465 : }
9466 : }
9467 : break;
9468 : }
9469 12262 : case LE_EXPR:
9470 12262 : {
9471 12262 : tree _q20 = TREE_OPERAND (_p0, 0);
9472 12262 : tree _q21 = TREE_OPERAND (_p0, 1);
9473 12262 : if (integer_zerop (_p1))
9474 : {
9475 9510 : {
9476 9510 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9477 9510 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
9478 9510 : if (res) return res;
9479 : }
9480 : }
9481 11471 : if (integer_truep (_p1))
9482 : {
9483 473 : {
9484 473 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9485 473 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
9486 473 : if (res) return res;
9487 : }
9488 : }
9489 : break;
9490 : }
9491 64708 : case EQ_EXPR:
9492 64708 : {
9493 64708 : tree _q20 = TREE_OPERAND (_p0, 0);
9494 64708 : tree _q21 = TREE_OPERAND (_p0, 1);
9495 64708 : if (integer_zerop (_p1))
9496 : {
9497 36758 : {
9498 36758 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9499 36758 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9500 36758 : if (res) return res;
9501 : }
9502 : }
9503 63586 : if (integer_truep (_p1))
9504 : {
9505 21941 : {
9506 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9507 21941 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
9508 21941 : if (res) return res;
9509 : }
9510 : }
9511 : break;
9512 : }
9513 70032 : case NE_EXPR:
9514 70032 : {
9515 70032 : tree _q20 = TREE_OPERAND (_p0, 0);
9516 70032 : tree _q21 = TREE_OPERAND (_p0, 1);
9517 70032 : if (integer_zerop (_p1))
9518 : {
9519 57856 : {
9520 57856 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9521 57856 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9522 57856 : if (res) return res;
9523 : }
9524 : }
9525 35029 : if (integer_truep (_p1))
9526 : {
9527 141 : {
9528 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9529 141 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
9530 141 : if (res) return res;
9531 : }
9532 : }
9533 : break;
9534 : }
9535 6323 : case GE_EXPR:
9536 6323 : {
9537 6323 : tree _q20 = TREE_OPERAND (_p0, 0);
9538 6323 : tree _q21 = TREE_OPERAND (_p0, 1);
9539 6323 : if (integer_zerop (_p1))
9540 : {
9541 4201 : {
9542 4201 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9543 4201 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9544 4201 : if (res) return res;
9545 : }
9546 : }
9547 5665 : if (integer_truep (_p1))
9548 : {
9549 489 : {
9550 489 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9551 489 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
9552 489 : if (res) return res;
9553 : }
9554 : }
9555 : break;
9556 : }
9557 36367 : case GT_EXPR:
9558 36367 : {
9559 36367 : tree _q20 = TREE_OPERAND (_p0, 0);
9560 36367 : tree _q21 = TREE_OPERAND (_p0, 1);
9561 36367 : if (integer_zerop (_p1))
9562 : {
9563 34124 : {
9564 34124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9565 34124 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9566 34124 : if (res) return res;
9567 : }
9568 : }
9569 30312 : if (integer_truep (_p1))
9570 : {
9571 324 : {
9572 324 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9573 324 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
9574 324 : if (res) return res;
9575 : }
9576 : }
9577 : break;
9578 : }
9579 139057 : case UNORDERED_EXPR:
9580 139057 : {
9581 139057 : tree _q20 = TREE_OPERAND (_p0, 0);
9582 139057 : tree _q21 = TREE_OPERAND (_p0, 1);
9583 139057 : if (integer_zerop (_p1))
9584 : {
9585 136909 : {
9586 136909 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9587 136909 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9588 136909 : if (res) return res;
9589 : }
9590 : }
9591 138667 : if (integer_truep (_p1))
9592 : {
9593 42 : {
9594 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9595 42 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
9596 42 : if (res) return res;
9597 : }
9598 : }
9599 : break;
9600 : }
9601 113 : case ORDERED_EXPR:
9602 113 : {
9603 113 : tree _q20 = TREE_OPERAND (_p0, 0);
9604 113 : tree _q21 = TREE_OPERAND (_p0, 1);
9605 113 : if (integer_zerop (_p1))
9606 : {
9607 42 : {
9608 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9609 42 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9610 42 : if (res) return res;
9611 : }
9612 : }
9613 71 : if (integer_truep (_p1))
9614 : {
9615 0 : {
9616 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9617 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
9618 0 : if (res) return res;
9619 : }
9620 : }
9621 : break;
9622 : }
9623 213 : case UNLT_EXPR:
9624 213 : {
9625 213 : tree _q20 = TREE_OPERAND (_p0, 0);
9626 213 : tree _q21 = TREE_OPERAND (_p0, 1);
9627 213 : if (integer_zerop (_p1))
9628 : {
9629 28 : {
9630 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9631 28 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9632 28 : if (res) return res;
9633 : }
9634 : }
9635 185 : if (integer_truep (_p1))
9636 : {
9637 161 : {
9638 161 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9639 161 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
9640 161 : if (res) return res;
9641 : }
9642 : }
9643 : break;
9644 : }
9645 1593 : case UNLE_EXPR:
9646 1593 : {
9647 1593 : tree _q20 = TREE_OPERAND (_p0, 0);
9648 1593 : tree _q21 = TREE_OPERAND (_p0, 1);
9649 1593 : if (integer_zerop (_p1))
9650 : {
9651 104 : {
9652 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9653 104 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9654 104 : if (res) return res;
9655 : }
9656 : }
9657 1489 : if (integer_truep (_p1))
9658 : {
9659 1465 : {
9660 1465 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9661 1465 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
9662 1465 : if (res) return res;
9663 : }
9664 : }
9665 : break;
9666 : }
9667 3322 : case UNGT_EXPR:
9668 3322 : {
9669 3322 : tree _q20 = TREE_OPERAND (_p0, 0);
9670 3322 : tree _q21 = TREE_OPERAND (_p0, 1);
9671 3322 : if (integer_zerop (_p1))
9672 : {
9673 96 : {
9674 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9675 96 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9676 96 : if (res) return res;
9677 : }
9678 : }
9679 3226 : if (integer_truep (_p1))
9680 : {
9681 3091 : {
9682 3091 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9683 3091 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
9684 3091 : if (res) return res;
9685 : }
9686 : }
9687 : break;
9688 : }
9689 391 : case UNGE_EXPR:
9690 391 : {
9691 391 : tree _q20 = TREE_OPERAND (_p0, 0);
9692 391 : tree _q21 = TREE_OPERAND (_p0, 1);
9693 391 : if (integer_zerop (_p1))
9694 : {
9695 16 : {
9696 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9697 16 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9698 16 : if (res) return res;
9699 : }
9700 : }
9701 375 : if (integer_truep (_p1))
9702 : {
9703 211 : {
9704 211 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9705 211 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
9706 211 : if (res) return res;
9707 : }
9708 : }
9709 : break;
9710 : }
9711 161 : case UNEQ_EXPR:
9712 161 : {
9713 161 : tree _q20 = TREE_OPERAND (_p0, 0);
9714 161 : tree _q21 = TREE_OPERAND (_p0, 1);
9715 161 : if (integer_zerop (_p1))
9716 : {
9717 0 : {
9718 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9719 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9720 0 : if (res) return res;
9721 : }
9722 : }
9723 161 : if (integer_truep (_p1))
9724 : {
9725 124 : {
9726 124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9727 124 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
9728 124 : if (res) return res;
9729 : }
9730 : }
9731 : break;
9732 : }
9733 24 : case LTGT_EXPR:
9734 24 : {
9735 24 : tree _q20 = TREE_OPERAND (_p0, 0);
9736 24 : tree _q21 = TREE_OPERAND (_p0, 1);
9737 24 : if (integer_zerop (_p1))
9738 : {
9739 6 : {
9740 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9741 6 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9742 6 : if (res) return res;
9743 : }
9744 : }
9745 24 : if (integer_truep (_p1))
9746 : {
9747 0 : {
9748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9749 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
9750 0 : if (res) return res;
9751 : }
9752 : }
9753 : break;
9754 : }
9755 106005 : case MINUS_EXPR:
9756 106005 : {
9757 106005 : tree _q20 = TREE_OPERAND (_p0, 0);
9758 106005 : tree _q21 = TREE_OPERAND (_p0, 1);
9759 106005 : if (integer_zerop (_p1))
9760 : {
9761 37396 : {
9762 37396 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9763 37396 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, NE_EXPR);
9764 37396 : if (res) return res;
9765 : }
9766 : }
9767 : break;
9768 : }
9769 26572 : case POINTER_DIFF_EXPR:
9770 26572 : {
9771 26572 : tree _q20 = TREE_OPERAND (_p0, 0);
9772 26572 : tree _q21 = TREE_OPERAND (_p0, 1);
9773 26572 : if (integer_zerop (_p1))
9774 : {
9775 13910 : {
9776 13910 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
9777 13910 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, NE_EXPR);
9778 13910 : if (res) return res;
9779 : }
9780 : }
9781 : break;
9782 : }
9783 110288 : case MULT_EXPR:
9784 110288 : {
9785 110288 : tree _q20 = TREE_OPERAND (_p0, 0);
9786 110288 : tree _q21 = TREE_OPERAND (_p0, 1);
9787 110288 : switch (TREE_CODE (_q21))
9788 : {
9789 91442 : case INTEGER_CST:
9790 91442 : {
9791 91442 : switch (TREE_CODE (_p1))
9792 : {
9793 63578 : case INTEGER_CST:
9794 63578 : {
9795 63578 : {
9796 63578 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9797 63578 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR);
9798 63578 : if (res) return res;
9799 : }
9800 46603 : break;
9801 : }
9802 74467 : default:;
9803 : }
9804 74467 : if (integer_zerop (_p1))
9805 : {
9806 22971 : {
9807 22971 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9808 22971 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9809 22971 : if (res) return res;
9810 : }
9811 : }
9812 : break;
9813 : }
9814 : default:;
9815 : }
9816 : break;
9817 : }
9818 38971003 : default:;
9819 : }
9820 38971003 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9821 : {
9822 281443 : {
9823 281443 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9824 281443 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, NE_EXPR);
9825 281443 : if (res) return res;
9826 : }
9827 : }
9828 38696130 : switch (TREE_CODE (_p0))
9829 : {
9830 8583514 : CASE_CONVERT:
9831 8583514 : {
9832 8583514 : tree _q20 = TREE_OPERAND (_p0, 0);
9833 8583514 : switch (TREE_CODE (_p1))
9834 : {
9835 4669323 : CASE_CONVERT:
9836 4669323 : {
9837 4669323 : tree _q40 = TREE_OPERAND (_p1, 0);
9838 4669323 : {
9839 4669323 : tree _q40_pops[1];
9840 4669323 : if (tree_maybe_bit_not (_q40, _q40_pops))
9841 : {
9842 0 : tree _q50 = _q40_pops[0];
9843 0 : {
9844 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
9845 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9846 0 : if (res) return res;
9847 : }
9848 : }
9849 : }
9850 4669323 : break;
9851 : }
9852 8583514 : default:;
9853 : }
9854 8583514 : {
9855 8583514 : tree _q20_pops[1];
9856 8583514 : if (tree_maybe_bit_not (_q20, _q20_pops))
9857 : {
9858 13869 : tree _q30 = _q20_pops[0];
9859 13869 : switch (TREE_CODE (_p1))
9860 : {
9861 0 : CASE_CONVERT:
9862 0 : {
9863 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9864 0 : {
9865 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
9866 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9867 0 : if (res) return res;
9868 : }
9869 0 : break;
9870 : }
9871 : default:;
9872 : }
9873 : }
9874 : }
9875 8583514 : break;
9876 : }
9877 38696130 : default:;
9878 : }
9879 38696130 : {
9880 38696130 : tree _p1_pops[1];
9881 38696130 : if (tree_maybe_bit_not (_p1, _p1_pops))
9882 : {
9883 27124611 : tree _q30 = _p1_pops[0];
9884 27124611 : {
9885 27124611 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9886 27124611 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9887 27124611 : if (res) return res;
9888 : }
9889 : }
9890 : }
9891 38696130 : switch (TREE_CODE (_p0))
9892 : {
9893 14251 : case BIT_NOT_EXPR:
9894 14251 : {
9895 14251 : tree _q20 = TREE_OPERAND (_p0, 0);
9896 14251 : switch (TREE_CODE (_p1))
9897 : {
9898 1 : case BIT_NOT_EXPR:
9899 1 : {
9900 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9901 1 : {
9902 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
9903 1 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9904 1 : if (res) return res;
9905 : }
9906 0 : break;
9907 : }
9908 14250 : default:;
9909 : }
9910 14250 : {
9911 14250 : tree _p1_pops[1];
9912 14250 : if (tree_nop_convert (_p1, _p1_pops))
9913 : {
9914 80 : tree _q40 = _p1_pops[0];
9915 80 : switch (TREE_CODE (_q40))
9916 : {
9917 0 : case BIT_NOT_EXPR:
9918 0 : {
9919 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9920 0 : {
9921 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
9922 0 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9923 0 : if (res) return res;
9924 : }
9925 0 : break;
9926 : }
9927 : default:;
9928 : }
9929 : }
9930 : }
9931 14250 : if (CONSTANT_CLASS_P (_p1))
9932 : {
9933 13109 : {
9934 13109 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9935 13109 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9936 13109 : if (res) return res;
9937 : }
9938 : }
9939 : break;
9940 : }
9941 38683020 : default:;
9942 : }
9943 38683020 : {
9944 38683020 : tree _p0_pops[1];
9945 38683020 : if (tree_maybe_bit_not (_p0, _p0_pops))
9946 : {
9947 300415 : tree _q20 = _p0_pops[0];
9948 300415 : {
9949 300415 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9950 300415 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR);
9951 300415 : if (res) return res;
9952 : }
9953 : }
9954 : }
9955 38683018 : {
9956 38683018 : tree _p0_pops[1];
9957 38683018 : if (tree_nop_convert (_p0, _p0_pops))
9958 : {
9959 6252276 : tree _q20 = _p0_pops[0];
9960 6252276 : switch (TREE_CODE (_q20))
9961 : {
9962 1 : case BIT_NOT_EXPR:
9963 1 : {
9964 1 : tree _q30 = TREE_OPERAND (_q20, 0);
9965 1 : switch (TREE_CODE (_p1))
9966 : {
9967 0 : case BIT_NOT_EXPR:
9968 0 : {
9969 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9970 0 : {
9971 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9972 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9973 0 : if (res) return res;
9974 : }
9975 0 : break;
9976 : }
9977 1 : default:;
9978 : }
9979 1 : {
9980 1 : tree _p1_pops[1];
9981 1 : if (tree_nop_convert (_p1, _p1_pops))
9982 : {
9983 0 : tree _q50 = _p1_pops[0];
9984 0 : switch (TREE_CODE (_q50))
9985 : {
9986 0 : case BIT_NOT_EXPR:
9987 0 : {
9988 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9989 0 : {
9990 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9991 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR);
9992 0 : if (res) return res;
9993 : }
9994 0 : break;
9995 : }
9996 : default:;
9997 : }
9998 : }
9999 : }
10000 1 : if (CONSTANT_CLASS_P (_p1))
10001 : {
10002 1 : {
10003 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
10004 1 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10005 1 : if (res) return res;
10006 : }
10007 : }
10008 : break;
10009 : }
10010 : default:;
10011 : }
10012 : }
10013 : }
10014 38683017 : switch (TREE_CODE (_p1))
10015 : {
10016 716113 : case REAL_CST:
10017 716113 : {
10018 716113 : {
10019 716113 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10020 716113 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
10021 716113 : if (res) return res;
10022 : }
10023 643224 : break;
10024 : }
10025 38610128 : default:;
10026 : }
10027 38610128 : switch (TREE_CODE (_p0))
10028 : {
10029 1354415 : case PLUS_EXPR:
10030 1354415 : {
10031 1354415 : tree _q20 = TREE_OPERAND (_p0, 0);
10032 1354415 : tree _q21 = TREE_OPERAND (_p0, 1);
10033 1354415 : switch (TREE_CODE (_q21))
10034 : {
10035 3843 : case REAL_CST:
10036 3843 : {
10037 3843 : switch (TREE_CODE (_p1))
10038 : {
10039 3069 : case REAL_CST:
10040 3069 : {
10041 3069 : {
10042 3069 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10043 3069 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
10044 3069 : if (res) return res;
10045 : }
10046 3069 : break;
10047 : }
10048 : default:;
10049 : }
10050 : break;
10051 : }
10052 : default:;
10053 : }
10054 : break;
10055 : }
10056 68605 : case MINUS_EXPR:
10057 68605 : {
10058 68605 : tree _q20 = TREE_OPERAND (_p0, 0);
10059 68605 : tree _q21 = TREE_OPERAND (_p0, 1);
10060 68605 : switch (TREE_CODE (_q21))
10061 : {
10062 3215 : case REAL_CST:
10063 3215 : {
10064 3215 : switch (TREE_CODE (_p1))
10065 : {
10066 2849 : case REAL_CST:
10067 2849 : {
10068 2849 : {
10069 2849 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10070 2849 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
10071 2849 : if (res) return res;
10072 : }
10073 2849 : break;
10074 : }
10075 : default:;
10076 : }
10077 : break;
10078 : }
10079 68605 : default:;
10080 : }
10081 68605 : switch (TREE_CODE (_q20))
10082 : {
10083 87 : case REAL_CST:
10084 87 : {
10085 87 : switch (TREE_CODE (_p1))
10086 : {
10087 44 : case REAL_CST:
10088 44 : {
10089 44 : {
10090 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10091 44 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
10092 44 : if (res) return res;
10093 : }
10094 44 : break;
10095 : }
10096 : default:;
10097 : }
10098 : break;
10099 : }
10100 : default:;
10101 : }
10102 : break;
10103 : }
10104 10551 : case FLOAT_EXPR:
10105 10551 : {
10106 10551 : tree _q20 = TREE_OPERAND (_p0, 0);
10107 10551 : switch (TREE_CODE (_p1))
10108 : {
10109 1116 : case FLOAT_EXPR:
10110 1116 : {
10111 1116 : tree _q40 = TREE_OPERAND (_p1, 0);
10112 1116 : {
10113 1116 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10114 1116 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10115 1116 : if (res) return res;
10116 : }
10117 972 : break;
10118 : }
10119 2177 : case REAL_CST:
10120 2177 : {
10121 2177 : {
10122 2177 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10123 2177 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10124 2177 : if (res) return res;
10125 : }
10126 1905 : break;
10127 : }
10128 : default:;
10129 : }
10130 : break;
10131 : }
10132 1838 : case EXACT_DIV_EXPR:
10133 1838 : {
10134 1838 : tree _q20 = TREE_OPERAND (_p0, 0);
10135 1838 : tree _q21 = TREE_OPERAND (_p0, 1);
10136 1838 : switch (TREE_CODE (_p1))
10137 : {
10138 36 : case INTEGER_CST:
10139 36 : {
10140 36 : {
10141 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10142 36 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
10143 36 : if (res) return res;
10144 : }
10145 0 : break;
10146 : }
10147 : default:;
10148 : }
10149 : break;
10150 : }
10151 6238 : case NEGATE_EXPR:
10152 6238 : {
10153 6238 : tree _q20 = TREE_OPERAND (_p0, 0);
10154 6238 : switch (TREE_CODE (_p1))
10155 : {
10156 4 : case NEGATE_EXPR:
10157 4 : {
10158 4 : tree _q40 = TREE_OPERAND (_p1, 0);
10159 4 : {
10160 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10161 4 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10162 4 : if (res) return res;
10163 : }
10164 0 : break;
10165 : }
10166 6234 : default:;
10167 : }
10168 6234 : if (CONSTANT_CLASS_P (_p1))
10169 : {
10170 577 : {
10171 577 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10172 577 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10173 577 : if (res) return res;
10174 : }
10175 : }
10176 : break;
10177 : }
10178 1936 : case ABS_EXPR:
10179 1936 : {
10180 1936 : tree _q20 = TREE_OPERAND (_p0, 0);
10181 1936 : if (zerop (_p1))
10182 : {
10183 72 : {
10184 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10185 72 : const enum tree_code eqne = NE_EXPR;
10186 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1643;
10187 72 : {
10188 72 : tree res_op0;
10189 72 : res_op0 = captures[0];
10190 72 : tree res_op1;
10191 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
10192 72 : tree _r;
10193 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
10194 72 : if (TREE_SIDE_EFFECTS (captures[1]))
10195 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10196 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1026, __FILE__, __LINE__, true);
10197 : return _r;
10198 : }
10199 0 : next_after_fail1643:;
10200 : }
10201 : }
10202 : break;
10203 : }
10204 1616 : case ABSU_EXPR:
10205 1616 : {
10206 1616 : tree _q20 = TREE_OPERAND (_p0, 0);
10207 1616 : if (zerop (_p1))
10208 : {
10209 65 : {
10210 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10211 65 : const enum tree_code eqne = NE_EXPR;
10212 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1644;
10213 65 : {
10214 65 : tree res_op0;
10215 65 : res_op0 = captures[0];
10216 65 : tree res_op1;
10217 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
10218 65 : tree _r;
10219 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
10220 65 : if (TREE_SIDE_EFFECTS (captures[1]))
10221 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10222 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1026, __FILE__, __LINE__, true);
10223 : return _r;
10224 : }
10225 0 : next_after_fail1644:;
10226 : }
10227 : }
10228 : break;
10229 : }
10230 8583434 : CASE_CONVERT:
10231 8583434 : {
10232 8583434 : tree _q20 = TREE_OPERAND (_p0, 0);
10233 8583434 : switch (TREE_CODE (_p1))
10234 : {
10235 4669323 : CASE_CONVERT:
10236 4669323 : {
10237 4669323 : tree _q40 = TREE_OPERAND (_p1, 0);
10238 4669323 : {
10239 4669323 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10240 4669323 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR);
10241 4669323 : if (res) return res;
10242 : }
10243 4462749 : break;
10244 : }
10245 8376860 : default:;
10246 : }
10247 8376860 : {
10248 8376860 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10249 8376860 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR);
10250 8376860 : if (res) return res;
10251 : }
10252 6125758 : switch (TREE_CODE (_q20))
10253 : {
10254 12 : case BIT_IOR_EXPR:
10255 12 : {
10256 12 : tree _q30 = TREE_OPERAND (_q20, 0);
10257 12 : tree _q31 = TREE_OPERAND (_q20, 1);
10258 12 : switch (TREE_CODE (_q31))
10259 : {
10260 0 : case INTEGER_CST:
10261 0 : {
10262 0 : switch (TREE_CODE (_p1))
10263 : {
10264 0 : case INTEGER_CST:
10265 0 : {
10266 0 : {
10267 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
10268 0 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR);
10269 0 : if (res) return res;
10270 : }
10271 0 : break;
10272 : }
10273 : default:;
10274 : }
10275 : break;
10276 : }
10277 : default:;
10278 : }
10279 : break;
10280 : }
10281 : default:;
10282 : }
10283 : break;
10284 : }
10285 15195031 : case SSA_NAME:
10286 15195031 : {
10287 15195031 : switch (TREE_CODE (_p1))
10288 : {
10289 306014 : case ADDR_EXPR:
10290 306014 : {
10291 306014 : {
10292 306014 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10293 306014 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, NE_EXPR);
10294 306014 : if (res) return res;
10295 : }
10296 306012 : break;
10297 : }
10298 : default:;
10299 : }
10300 : break;
10301 : }
10302 243839 : case BIT_IOR_EXPR:
10303 243839 : {
10304 243839 : tree _q20 = TREE_OPERAND (_p0, 0);
10305 243839 : tree _q21 = TREE_OPERAND (_p0, 1);
10306 243839 : switch (TREE_CODE (_q21))
10307 : {
10308 835 : case INTEGER_CST:
10309 835 : {
10310 835 : switch (TREE_CODE (_p1))
10311 : {
10312 223 : case INTEGER_CST:
10313 223 : {
10314 223 : {
10315 223 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10316 223 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR);
10317 223 : if (res) return res;
10318 : }
10319 223 : break;
10320 : }
10321 : default:;
10322 : }
10323 : break;
10324 : }
10325 : default:;
10326 : }
10327 : break;
10328 : }
10329 31689 : case BIT_XOR_EXPR:
10330 31689 : {
10331 31689 : tree _q20 = TREE_OPERAND (_p0, 0);
10332 31689 : tree _q21 = TREE_OPERAND (_p0, 1);
10333 31689 : if (integer_zerop (_p1))
10334 : {
10335 27314 : {
10336 27314 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10337 27314 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR);
10338 27314 : if (res) return res;
10339 : }
10340 : }
10341 4375 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10342 : {
10343 1 : {
10344 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10345 1 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10346 1 : if (res) return res;
10347 : }
10348 : }
10349 4374 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10350 : {
10351 2 : {
10352 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10353 2 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10354 2 : if (res) return res;
10355 : }
10356 : }
10357 : break;
10358 : }
10359 2502871 : case CALL_EXPR:
10360 2502871 : switch (get_call_combined_fn (_p0))
10361 : {
10362 42 : case CFN_BUILT_IN_SQRTF:
10363 42 : if (call_expr_nargs (_p0) == 1)
10364 : {
10365 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10366 42 : switch (TREE_CODE (_p1))
10367 : {
10368 0 : case REAL_CST:
10369 0 : {
10370 0 : {
10371 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10372 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
10373 0 : if (res) return res;
10374 : }
10375 0 : break;
10376 : }
10377 42 : case CALL_EXPR:
10378 42 : switch (get_call_combined_fn (_p1))
10379 : {
10380 0 : case CFN_BUILT_IN_SQRTF:
10381 0 : if (call_expr_nargs (_p1) == 1)
10382 : {
10383 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10384 0 : {
10385 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10386 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
10387 0 : if (res) return res;
10388 : }
10389 : }
10390 : break;
10391 : default:;
10392 : }
10393 : break;
10394 : default:;
10395 : }
10396 : }
10397 : break;
10398 42 : case CFN_BUILT_IN_SQRTL:
10399 42 : if (call_expr_nargs (_p0) == 1)
10400 : {
10401 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10402 42 : switch (TREE_CODE (_p1))
10403 : {
10404 0 : case REAL_CST:
10405 0 : {
10406 0 : {
10407 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10408 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
10409 0 : if (res) return res;
10410 : }
10411 0 : break;
10412 : }
10413 42 : case CALL_EXPR:
10414 42 : switch (get_call_combined_fn (_p1))
10415 : {
10416 0 : case CFN_BUILT_IN_SQRTL:
10417 0 : if (call_expr_nargs (_p1) == 1)
10418 : {
10419 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10420 0 : {
10421 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10422 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
10423 0 : if (res) return res;
10424 : }
10425 : }
10426 : break;
10427 : default:;
10428 : }
10429 : break;
10430 : default:;
10431 : }
10432 : }
10433 : break;
10434 46 : case CFN_BUILT_IN_SQRT:
10435 46 : if (call_expr_nargs (_p0) == 1)
10436 : {
10437 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10438 46 : switch (TREE_CODE (_p1))
10439 : {
10440 2 : case REAL_CST:
10441 2 : {
10442 2 : {
10443 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10444 2 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
10445 2 : if (res) return res;
10446 : }
10447 2 : break;
10448 : }
10449 43 : case CALL_EXPR:
10450 43 : switch (get_call_combined_fn (_p1))
10451 : {
10452 0 : case CFN_BUILT_IN_SQRT:
10453 0 : if (call_expr_nargs (_p1) == 1)
10454 : {
10455 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10456 0 : {
10457 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10458 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
10459 0 : if (res) return res;
10460 : }
10461 : }
10462 : break;
10463 : default:;
10464 : }
10465 : break;
10466 : default:;
10467 : }
10468 : }
10469 : break;
10470 0 : case CFN_SQRT:
10471 0 : if (call_expr_nargs (_p0) == 1)
10472 : {
10473 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10474 0 : switch (TREE_CODE (_p1))
10475 : {
10476 0 : case REAL_CST:
10477 0 : {
10478 0 : {
10479 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10480 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
10481 0 : if (res) return res;
10482 : }
10483 0 : break;
10484 : }
10485 0 : case CALL_EXPR:
10486 0 : switch (get_call_combined_fn (_p1))
10487 : {
10488 0 : case CFN_SQRT:
10489 0 : if (call_expr_nargs (_p1) == 1)
10490 : {
10491 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10492 0 : {
10493 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10494 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
10495 0 : if (res) return res;
10496 : }
10497 : }
10498 : break;
10499 : default:;
10500 : }
10501 : break;
10502 : default:;
10503 : }
10504 : }
10505 : break;
10506 : default:;
10507 : }
10508 : break;
10509 36123981 : default:;
10510 : }
10511 36123981 : switch (TREE_CODE (_p1))
10512 : {
10513 840 : case BIT_XOR_EXPR:
10514 840 : {
10515 840 : tree _q30 = TREE_OPERAND (_p1, 0);
10516 840 : tree _q31 = TREE_OPERAND (_p1, 1);
10517 840 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10518 : {
10519 0 : {
10520 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10521 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10522 0 : if (res) return res;
10523 : }
10524 : }
10525 840 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10526 : {
10527 0 : {
10528 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10529 0 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR);
10530 0 : if (res) return res;
10531 : }
10532 : }
10533 : break;
10534 : }
10535 36123981 : default:;
10536 : }
10537 36123981 : switch (TREE_CODE (_p0))
10538 : {
10539 1320546 : case BIT_AND_EXPR:
10540 1320546 : {
10541 1320546 : tree _q20 = TREE_OPERAND (_p0, 0);
10542 1320546 : tree _q21 = TREE_OPERAND (_p0, 1);
10543 1320546 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10544 : {
10545 179 : {
10546 179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10547 179 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10548 179 : if (res) return res;
10549 : }
10550 : }
10551 1320518 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10552 : {
10553 4956 : {
10554 4956 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10555 4956 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10556 4956 : if (res) return res;
10557 : }
10558 : }
10559 : break;
10560 : }
10561 36123953 : default:;
10562 : }
10563 36123953 : switch (TREE_CODE (_p1))
10564 : {
10565 16369 : case BIT_AND_EXPR:
10566 16369 : {
10567 16369 : tree _q30 = TREE_OPERAND (_p1, 0);
10568 16369 : tree _q31 = TREE_OPERAND (_p1, 1);
10569 16369 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10570 : {
10571 0 : {
10572 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
10573 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10574 0 : if (res) return res;
10575 : }
10576 : }
10577 16369 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10578 : {
10579 0 : {
10580 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
10581 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10582 0 : if (res) return res;
10583 : }
10584 : }
10585 : break;
10586 : }
10587 36123953 : default:;
10588 : }
10589 36123953 : switch (TREE_CODE (_p0))
10590 : {
10591 6125758 : CASE_CONVERT:
10592 6125758 : {
10593 6125758 : tree _q20 = TREE_OPERAND (_p0, 0);
10594 6125758 : switch (TREE_CODE (_q20))
10595 : {
10596 8 : case BIT_AND_EXPR:
10597 8 : {
10598 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10599 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10600 8 : switch (TREE_CODE (_q30))
10601 : {
10602 0 : CASE_CONVERT:
10603 0 : {
10604 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10605 0 : switch (TREE_CODE (_q31))
10606 : {
10607 0 : case INTEGER_CST:
10608 0 : {
10609 0 : switch (TREE_CODE (_p1))
10610 : {
10611 0 : CASE_CONVERT:
10612 0 : {
10613 0 : tree _q70 = TREE_OPERAND (_p1, 0);
10614 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
10615 : {
10616 0 : {
10617 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
10618 0 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10619 0 : if (res) return res;
10620 : }
10621 : }
10622 : break;
10623 : }
10624 : default:;
10625 : }
10626 : break;
10627 : }
10628 : default:;
10629 : }
10630 : break;
10631 : }
10632 : default:;
10633 : }
10634 : break;
10635 : }
10636 6125758 : default:;
10637 : }
10638 6125758 : switch (TREE_CODE (_p1))
10639 : {
10640 4462749 : CASE_CONVERT:
10641 4462749 : {
10642 4462749 : tree _q40 = TREE_OPERAND (_p1, 0);
10643 4462749 : switch (TREE_CODE (_q40))
10644 : {
10645 0 : case BIT_AND_EXPR:
10646 0 : {
10647 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10648 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10649 0 : switch (TREE_CODE (_q50))
10650 : {
10651 0 : CASE_CONVERT:
10652 0 : {
10653 0 : tree _q60 = TREE_OPERAND (_q50, 0);
10654 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10655 : {
10656 0 : switch (TREE_CODE (_q51))
10657 : {
10658 0 : case INTEGER_CST:
10659 0 : {
10660 0 : {
10661 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
10662 0 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10663 0 : if (res) return res;
10664 : }
10665 0 : break;
10666 : }
10667 : default:;
10668 : }
10669 : }
10670 : break;
10671 : }
10672 : default:;
10673 : }
10674 : break;
10675 : }
10676 : default:;
10677 : }
10678 : break;
10679 : }
10680 : default:;
10681 : }
10682 : break;
10683 : }
10684 243839 : case BIT_IOR_EXPR:
10685 243839 : {
10686 243839 : tree _q20 = TREE_OPERAND (_p0, 0);
10687 243839 : tree _q21 = TREE_OPERAND (_p0, 1);
10688 243839 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10689 : {
10690 124 : {
10691 124 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10692 124 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10693 124 : if (res) return res;
10694 : }
10695 : }
10696 243831 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10697 : {
10698 257 : {
10699 257 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10700 257 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10701 257 : if (res) return res;
10702 : }
10703 : }
10704 : break;
10705 : }
10706 36123945 : default:;
10707 : }
10708 36123945 : switch (TREE_CODE (_p1))
10709 : {
10710 518 : case BIT_IOR_EXPR:
10711 518 : {
10712 518 : tree _q30 = TREE_OPERAND (_p1, 0);
10713 518 : tree _q31 = TREE_OPERAND (_p1, 1);
10714 518 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10715 : {
10716 0 : {
10717 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10718 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10719 0 : if (res) return res;
10720 : }
10721 : }
10722 518 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10723 : {
10724 0 : {
10725 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10726 0 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10727 0 : if (res) return res;
10728 : }
10729 : }
10730 : break;
10731 : }
10732 36123945 : default:;
10733 : }
10734 36123945 : switch (TREE_CODE (_p0))
10735 : {
10736 6125758 : CASE_CONVERT:
10737 6125758 : {
10738 6125758 : tree _q20 = TREE_OPERAND (_p0, 0);
10739 6125758 : switch (TREE_CODE (_q20))
10740 : {
10741 698 : case BIT_XOR_EXPR:
10742 698 : {
10743 698 : tree _q30 = TREE_OPERAND (_q20, 0);
10744 698 : tree _q31 = TREE_OPERAND (_q20, 1);
10745 698 : switch (TREE_CODE (_q31))
10746 : {
10747 0 : case INTEGER_CST:
10748 0 : {
10749 0 : switch (TREE_CODE (_p1))
10750 : {
10751 0 : case INTEGER_CST:
10752 0 : {
10753 0 : {
10754 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
10755 0 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR);
10756 0 : if (res) return res;
10757 : }
10758 0 : break;
10759 : }
10760 : default:;
10761 : }
10762 : break;
10763 : }
10764 : default:;
10765 : }
10766 : break;
10767 : }
10768 : default:;
10769 : }
10770 : break;
10771 : }
10772 4372 : case BIT_XOR_EXPR:
10773 4372 : {
10774 4372 : tree _q20 = TREE_OPERAND (_p0, 0);
10775 4372 : tree _q21 = TREE_OPERAND (_p0, 1);
10776 4372 : switch (TREE_CODE (_q21))
10777 : {
10778 881 : case INTEGER_CST:
10779 881 : {
10780 881 : switch (TREE_CODE (_p1))
10781 : {
10782 10 : case INTEGER_CST:
10783 10 : {
10784 10 : {
10785 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10786 10 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR);
10787 10 : if (res) return res;
10788 : }
10789 0 : break;
10790 : }
10791 : default:;
10792 : }
10793 : break;
10794 : }
10795 : default:;
10796 : }
10797 : break;
10798 : }
10799 36123935 : default:;
10800 : }
10801 36123935 : {
10802 36123935 : tree _p0_pops[1];
10803 36123935 : if (tree_nop_convert (_p0, _p0_pops))
10804 : {
10805 5398313 : tree _q20 = _p0_pops[0];
10806 5398313 : if (integer_zerop (_p1))
10807 : {
10808 838401 : {
10809 838401 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10810 838401 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR);
10811 838401 : if (res) return res;
10812 : }
10813 : }
10814 : }
10815 : }
10816 35659425 : if (integer_zerop (_p1))
10817 : {
10818 19224489 : {
10819 19224489 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10820 19224489 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR);
10821 19224489 : if (res) return res;
10822 : }
10823 : }
10824 35467346 : switch (TREE_CODE (_p0))
10825 : {
10826 1320518 : case BIT_AND_EXPR:
10827 1320518 : {
10828 1320518 : tree _q20 = TREE_OPERAND (_p0, 0);
10829 1320518 : tree _q21 = TREE_OPERAND (_p0, 1);
10830 1320518 : switch (TREE_CODE (_p1))
10831 : {
10832 14960 : case BIT_AND_EXPR:
10833 14960 : {
10834 14960 : tree _q50 = TREE_OPERAND (_p1, 0);
10835 14960 : tree _q51 = TREE_OPERAND (_p1, 1);
10836 14960 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10837 : {
10838 14714 : {
10839 14714 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10840 14714 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR);
10841 14714 : if (res) return res;
10842 : }
10843 : }
10844 246 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10845 : {
10846 2 : {
10847 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10848 2 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR);
10849 2 : if (res) return res;
10850 : }
10851 : }
10852 244 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10853 : {
10854 1 : {
10855 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10856 1 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR);
10857 1 : if (res) return res;
10858 : }
10859 : }
10860 243 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10861 : {
10862 8 : {
10863 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
10864 8 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR);
10865 8 : if (res) return res;
10866 : }
10867 : }
10868 : break;
10869 : }
10870 1305793 : default:;
10871 : }
10872 1305793 : if (integer_pow2p (_q21))
10873 : {
10874 672028 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10875 : {
10876 604 : {
10877 604 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10878 604 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10879 604 : if (res) return res;
10880 : }
10881 : }
10882 : }
10883 : break;
10884 : }
10885 243831 : case BIT_IOR_EXPR:
10886 243831 : {
10887 243831 : tree _q20 = TREE_OPERAND (_p0, 0);
10888 243831 : tree _q21 = TREE_OPERAND (_p0, 1);
10889 243831 : switch (TREE_CODE (_p1))
10890 : {
10891 143 : case BIT_IOR_EXPR:
10892 143 : {
10893 143 : tree _q50 = TREE_OPERAND (_p1, 0);
10894 143 : tree _q51 = TREE_OPERAND (_p1, 1);
10895 143 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10896 : {
10897 74 : {
10898 74 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10899 74 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR);
10900 74 : if (res) return res;
10901 : }
10902 : }
10903 71 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10904 : {
10905 8 : {
10906 8 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10907 8 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR);
10908 8 : if (res) return res;
10909 : }
10910 : }
10911 71 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10912 : {
10913 0 : {
10914 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10915 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR);
10916 0 : if (res) return res;
10917 : }
10918 : }
10919 71 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10920 : {
10921 0 : {
10922 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
10923 0 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, NE_EXPR);
10924 0 : if (res) return res;
10925 : }
10926 : }
10927 : break;
10928 : }
10929 243759 : default:;
10930 : }
10931 243759 : if (integer_pow2p (_q21))
10932 : {
10933 658 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10934 : {
10935 0 : {
10936 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10937 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10938 0 : if (res) return res;
10939 : }
10940 : }
10941 : }
10942 : break;
10943 : }
10944 5612 : case GE_EXPR:
10945 5612 : {
10946 5612 : tree _q20 = TREE_OPERAND (_p0, 0);
10947 5612 : tree _q21 = TREE_OPERAND (_p0, 1);
10948 5612 : if (integer_zerop (_q21))
10949 : {
10950 977 : switch (TREE_CODE (_p1))
10951 : {
10952 1 : case GE_EXPR:
10953 1 : {
10954 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10955 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10956 1 : if (integer_zerop (_q51))
10957 : {
10958 1 : {
10959 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10960 1 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
10961 1 : if (res) return res;
10962 : }
10963 : }
10964 : break;
10965 : }
10966 3 : case LT_EXPR:
10967 3 : {
10968 3 : tree _q50 = TREE_OPERAND (_p1, 0);
10969 3 : tree _q51 = TREE_OPERAND (_p1, 1);
10970 3 : if (integer_zerop (_q51))
10971 : {
10972 3 : {
10973 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10974 3 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10975 3 : if (res) return res;
10976 : }
10977 : }
10978 : break;
10979 : }
10980 : default:;
10981 : }
10982 : }
10983 : break;
10984 : }
10985 15899 : case LT_EXPR:
10986 15899 : {
10987 15899 : tree _q20 = TREE_OPERAND (_p0, 0);
10988 15899 : tree _q21 = TREE_OPERAND (_p0, 1);
10989 15899 : if (integer_zerop (_q21))
10990 : {
10991 9011 : switch (TREE_CODE (_p1))
10992 : {
10993 79 : case LT_EXPR:
10994 79 : {
10995 79 : tree _q50 = TREE_OPERAND (_p1, 0);
10996 79 : tree _q51 = TREE_OPERAND (_p1, 1);
10997 79 : if (integer_zerop (_q51))
10998 : {
10999 79 : {
11000 79 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11001 79 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
11002 79 : if (res) return res;
11003 : }
11004 : }
11005 : break;
11006 : }
11007 17 : case GE_EXPR:
11008 17 : {
11009 17 : tree _q50 = TREE_OPERAND (_p1, 0);
11010 17 : tree _q51 = TREE_OPERAND (_p1, 1);
11011 17 : if (integer_zerop (_q51))
11012 : {
11013 17 : {
11014 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
11015 17 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11016 17 : if (res) return res;
11017 : }
11018 : }
11019 : break;
11020 : }
11021 : default:;
11022 : }
11023 : }
11024 : break;
11025 : }
11026 35451865 : default:;
11027 : }
11028 35451865 : switch (TREE_CODE (_p1))
11029 : {
11030 446 : case BIT_IOR_EXPR:
11031 446 : {
11032 446 : tree _q30 = TREE_OPERAND (_p1, 0);
11033 446 : tree _q31 = TREE_OPERAND (_p1, 1);
11034 446 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
11035 : {
11036 0 : if (integer_pow2p (_q31))
11037 : {
11038 0 : {
11039 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
11040 0 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
11041 0 : if (res) return res;
11042 : }
11043 : }
11044 : }
11045 : break;
11046 : }
11047 35451865 : default:;
11048 : }
11049 35451865 : switch (TREE_CODE (_p0))
11050 : {
11051 1305193 : case BIT_AND_EXPR:
11052 1305193 : {
11053 1305193 : tree _q20 = TREE_OPERAND (_p0, 0);
11054 1305193 : tree _q21 = TREE_OPERAND (_p0, 1);
11055 1305193 : switch (TREE_CODE (_q20))
11056 : {
11057 201675 : CASE_CONVERT:
11058 201675 : {
11059 201675 : tree _q30 = TREE_OPERAND (_q20, 0);
11060 201675 : if (integer_pow2p (_q21))
11061 : {
11062 101590 : if (integer_zerop (_p1))
11063 : {
11064 101495 : {
11065 101495 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11066 101495 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
11067 101495 : if (res) return res;
11068 : }
11069 : }
11070 : }
11071 : break;
11072 : }
11073 1299707 : default:;
11074 : }
11075 1299707 : if (integer_pow2p (_q21))
11076 : {
11077 665942 : if (integer_zerop (_p1))
11078 : {
11079 662492 : {
11080 662492 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
11081 662492 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
11082 662492 : if (res) return res;
11083 : }
11084 : }
11085 : }
11086 : break;
11087 : }
11088 243759 : case BIT_IOR_EXPR:
11089 243759 : {
11090 243759 : tree _q20 = TREE_OPERAND (_p0, 0);
11091 243759 : tree _q21 = TREE_OPERAND (_p0, 1);
11092 243759 : switch (TREE_CODE (_q21))
11093 : {
11094 284 : CASE_CONVERT:
11095 284 : {
11096 284 : tree _q40 = TREE_OPERAND (_q21, 0);
11097 284 : switch (TREE_CODE (_q40))
11098 : {
11099 0 : case NE_EXPR:
11100 0 : {
11101 0 : tree _q50 = TREE_OPERAND (_q40, 0);
11102 0 : tree _q51 = TREE_OPERAND (_q40, 1);
11103 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
11104 : {
11105 0 : if (integer_zerop (_q51))
11106 : {
11107 0 : if (integer_zerop (_p1))
11108 : {
11109 0 : {
11110 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11111 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR);
11112 0 : if (res) return res;
11113 : }
11114 : }
11115 : }
11116 : }
11117 : break;
11118 : }
11119 : default:;
11120 : }
11121 : break;
11122 : }
11123 243759 : default:;
11124 : }
11125 243759 : switch (TREE_CODE (_q20))
11126 : {
11127 793 : CASE_CONVERT:
11128 793 : {
11129 793 : tree _q30 = TREE_OPERAND (_q20, 0);
11130 793 : switch (TREE_CODE (_q30))
11131 : {
11132 0 : case NE_EXPR:
11133 0 : {
11134 0 : tree _q40 = TREE_OPERAND (_q30, 0);
11135 0 : tree _q41 = TREE_OPERAND (_q30, 1);
11136 0 : if (integer_zerop (_q41))
11137 : {
11138 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
11139 : {
11140 0 : if (integer_zerop (_p1))
11141 : {
11142 0 : {
11143 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
11144 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR);
11145 0 : if (res) return res;
11146 : }
11147 : }
11148 : }
11149 : }
11150 : break;
11151 : }
11152 : default:;
11153 : }
11154 : break;
11155 : }
11156 243759 : default:;
11157 : }
11158 243759 : switch (TREE_CODE (_q21))
11159 : {
11160 24 : case NE_EXPR:
11161 24 : {
11162 24 : tree _q40 = TREE_OPERAND (_q21, 0);
11163 24 : tree _q41 = TREE_OPERAND (_q21, 1);
11164 24 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
11165 : {
11166 0 : if (integer_zerop (_q41))
11167 : {
11168 0 : if (integer_zerop (_p1))
11169 : {
11170 0 : {
11171 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11172 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR);
11173 0 : if (res) return res;
11174 : }
11175 : }
11176 : }
11177 : }
11178 : break;
11179 : }
11180 243759 : default:;
11181 : }
11182 243759 : switch (TREE_CODE (_q20))
11183 : {
11184 2 : case NE_EXPR:
11185 2 : {
11186 2 : tree _q30 = TREE_OPERAND (_q20, 0);
11187 2 : tree _q31 = TREE_OPERAND (_q20, 1);
11188 2 : if (integer_zerop (_q31))
11189 : {
11190 1 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
11191 : {
11192 0 : if (integer_zerop (_p1))
11193 : {
11194 0 : {
11195 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
11196 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR);
11197 0 : if (res) return res;
11198 : }
11199 : }
11200 : }
11201 : }
11202 : break;
11203 : }
11204 : default:;
11205 : }
11206 : break;
11207 : }
11208 5661248 : CASE_CONVERT:
11209 5661248 : {
11210 5661248 : tree _q20 = TREE_OPERAND (_p0, 0);
11211 5661248 : switch (TREE_CODE (_q20))
11212 : {
11213 4363851 : case ADDR_EXPR:
11214 4363851 : {
11215 4363851 : switch (TREE_CODE (_p1))
11216 : {
11217 4333852 : CASE_CONVERT:
11218 4333852 : {
11219 4333852 : tree _q40 = TREE_OPERAND (_p1, 0);
11220 4333852 : switch (TREE_CODE (_q40))
11221 : {
11222 4333852 : case ADDR_EXPR:
11223 4333852 : {
11224 4333852 : {
11225 4333852 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
11226 4333852 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, NE_EXPR);
11227 4333852 : if (res) return res;
11228 : }
11229 33 : break;
11230 : }
11231 : default:;
11232 : }
11233 : break;
11234 : }
11235 21280 : case ADDR_EXPR:
11236 21280 : {
11237 21280 : {
11238 21280 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11239 21280 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, NE_EXPR);
11240 21280 : if (res) return res;
11241 : }
11242 7935 : break;
11243 : }
11244 : default:;
11245 : }
11246 : break;
11247 : }
11248 : default:;
11249 : }
11250 : break;
11251 : }
11252 66555 : case ADDR_EXPR:
11253 66555 : {
11254 66555 : switch (TREE_CODE (_p1))
11255 : {
11256 379 : CASE_CONVERT:
11257 379 : {
11258 379 : tree _q30 = TREE_OPERAND (_p1, 0);
11259 379 : switch (TREE_CODE (_q30))
11260 : {
11261 379 : case ADDR_EXPR:
11262 379 : {
11263 379 : {
11264 379 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
11265 379 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, NE_EXPR);
11266 379 : if (res) return res;
11267 : }
11268 143 : break;
11269 : }
11270 : default:;
11271 : }
11272 : break;
11273 : }
11274 57478 : case ADDR_EXPR:
11275 57478 : {
11276 57478 : {
11277 57478 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
11278 57478 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, NE_EXPR);
11279 57478 : if (res) return res;
11280 : }
11281 4587 : break;
11282 : }
11283 : default:;
11284 : }
11285 : break;
11286 : }
11287 31031560 : default:;
11288 : }
11289 31031560 : {
11290 31031560 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11291 31031560 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, NE_EXPR);
11292 31031560 : if (res) return res;
11293 : }
11294 31023205 : switch (TREE_CODE (_p0))
11295 : {
11296 1314084 : CASE_CONVERT:
11297 1314084 : {
11298 1314084 : tree _q20 = TREE_OPERAND (_p0, 0);
11299 1314084 : switch (TREE_CODE (_p1))
11300 : {
11301 850473 : case INTEGER_CST:
11302 850473 : {
11303 850473 : {
11304 850473 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11305 850473 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, NE_EXPR);
11306 850473 : if (res) return res;
11307 : }
11308 841494 : break;
11309 : }
11310 1305105 : default:;
11311 : }
11312 1305105 : switch (TREE_CODE (_q20))
11313 : {
11314 8 : case NE_EXPR:
11315 8 : {
11316 8 : tree _q30 = TREE_OPERAND (_q20, 0);
11317 8 : tree _q31 = TREE_OPERAND (_q20, 1);
11318 8 : switch (TREE_CODE (_q31))
11319 : {
11320 8 : case INTEGER_CST:
11321 8 : {
11322 8 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11323 : {
11324 0 : {
11325 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
11326 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
11327 0 : if (res) return res;
11328 : }
11329 : }
11330 : break;
11331 : }
11332 : default:;
11333 : }
11334 : break;
11335 : }
11336 0 : case EQ_EXPR:
11337 0 : {
11338 0 : tree _q30 = TREE_OPERAND (_q20, 0);
11339 0 : tree _q31 = TREE_OPERAND (_q20, 1);
11340 0 : switch (TREE_CODE (_q31))
11341 : {
11342 0 : case INTEGER_CST:
11343 0 : {
11344 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
11345 : {
11346 0 : {
11347 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
11348 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
11349 0 : if (res) return res;
11350 : }
11351 : }
11352 : break;
11353 : }
11354 : default:;
11355 : }
11356 : break;
11357 : }
11358 : default:;
11359 : }
11360 : break;
11361 : }
11362 31014226 : default:;
11363 : }
11364 31014226 : switch (TREE_CODE (_p1))
11365 : {
11366 529435 : CASE_CONVERT:
11367 529435 : {
11368 529435 : tree _q30 = TREE_OPERAND (_p1, 0);
11369 529435 : switch (TREE_CODE (_q30))
11370 : {
11371 0 : case NE_EXPR:
11372 0 : {
11373 0 : tree _q40 = TREE_OPERAND (_q30, 0);
11374 0 : tree _q41 = TREE_OPERAND (_q30, 1);
11375 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
11376 : {
11377 0 : switch (TREE_CODE (_q41))
11378 : {
11379 0 : case INTEGER_CST:
11380 0 : {
11381 0 : {
11382 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
11383 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
11384 0 : if (res) return res;
11385 : }
11386 0 : break;
11387 : }
11388 : default:;
11389 : }
11390 : }
11391 : break;
11392 : }
11393 0 : case EQ_EXPR:
11394 0 : {
11395 0 : tree _q40 = TREE_OPERAND (_q30, 0);
11396 0 : tree _q41 = TREE_OPERAND (_q30, 1);
11397 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
11398 : {
11399 0 : switch (TREE_CODE (_q41))
11400 : {
11401 0 : case INTEGER_CST:
11402 0 : {
11403 0 : {
11404 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
11405 0 : tree res = generic_simplify_309 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
11406 0 : if (res) return res;
11407 : }
11408 0 : break;
11409 : }
11410 : default:;
11411 : }
11412 : }
11413 : break;
11414 : }
11415 : default:;
11416 : }
11417 : break;
11418 : }
11419 31014226 : default:;
11420 : }
11421 31014226 : if (integer_zerop (_p1))
11422 : {
11423 19003933 : {
11424 19003933 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11425 19003933 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
11426 19003933 : && types_match (type, TREE_TYPE (captures[0]))
11427 : )
11428 : {
11429 3452351 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1645;
11430 3452351 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1645;
11431 3452351 : {
11432 3452351 : tree res_op0;
11433 3452351 : res_op0 = captures[0];
11434 3452351 : tree _r;
11435 3452351 : _r = non_lvalue_loc (loc, res_op0);
11436 3452351 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1031, __FILE__, __LINE__, true);
11437 39445458 : return _r;
11438 : }
11439 27561875 : next_after_fail1645:;
11440 : }
11441 : }
11442 : }
11443 27561875 : switch (TREE_CODE (_p0))
11444 : {
11445 1000171 : case BIT_AND_EXPR:
11446 1000171 : {
11447 1000171 : tree _q20 = TREE_OPERAND (_p0, 0);
11448 1000171 : tree _q21 = TREE_OPERAND (_p0, 1);
11449 1000171 : switch (TREE_CODE (_q21))
11450 : {
11451 2063 : case VECTOR_CST:
11452 2063 : {
11453 2063 : if (integer_zerop (_p1))
11454 : {
11455 2063 : {
11456 2063 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
11457 2063 : const enum tree_code cmp = NE_EXPR;
11458 2063 : const enum tree_code icmp = GT_EXPR;
11459 2063 : {
11460 2063 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11461 2063 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11462 : )
11463 : {
11464 13 : {
11465 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11466 13 : ? optab_vector : optab_default;
11467 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11468 13 : if (target_supports_op_p (utype, icmp, optab)
11469 13 : || (optimize_vectors_before_lowering_p ()
11470 7 : && (!target_supports_op_p (type, cmp, optab)
11471 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11472 : )
11473 : {
11474 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11475 : )
11476 : {
11477 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1646;
11478 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1646;
11479 0 : {
11480 0 : tree res_op0;
11481 0 : res_op0 = captures[1];
11482 0 : tree res_op1;
11483 0 : res_op1 = csts;
11484 0 : tree _r;
11485 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11486 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11487 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11488 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1028, __FILE__, __LINE__, true);
11489 : return _r;
11490 : }
11491 999010 : next_after_fail1646:;
11492 : }
11493 : else
11494 : {
11495 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1647;
11496 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1647;
11497 7 : {
11498 7 : tree res_op0;
11499 7 : {
11500 7 : tree _o1[1], _r1;
11501 7 : _o1[0] = captures[1];
11502 7 : if (TREE_TYPE (_o1[0]) != utype)
11503 : {
11504 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11505 : }
11506 : else
11507 : _r1 = _o1[0];
11508 7 : res_op0 = _r1;
11509 : }
11510 7 : tree res_op1;
11511 7 : res_op1 = csts;
11512 7 : tree _r;
11513 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11514 7 : if (TREE_SIDE_EFFECTS (captures[2]))
11515 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11516 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
11517 : return _r;
11518 : }
11519 999010 : next_after_fail1647:;
11520 : }
11521 : }
11522 : }
11523 : }
11524 : }
11525 : }
11526 : }
11527 : break;
11528 : }
11529 800070 : case INTEGER_CST:
11530 800070 : {
11531 800070 : if (integer_zerop (_p1))
11532 : {
11533 766073 : {
11534 766073 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
11535 766073 : const enum tree_code cmp = NE_EXPR;
11536 766073 : const enum tree_code icmp = GT_EXPR;
11537 766073 : {
11538 766073 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11539 766073 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11540 : )
11541 : {
11542 1336 : {
11543 1336 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11544 1336 : ? optab_vector : optab_default;
11545 1336 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11546 1336 : if (target_supports_op_p (utype, icmp, optab)
11547 1336 : || (optimize_vectors_before_lowering_p ()
11548 1154 : && (!target_supports_op_p (type, cmp, optab)
11549 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11550 : )
11551 : {
11552 1154 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11553 : )
11554 : {
11555 990 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1648;
11556 990 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1648;
11557 990 : {
11558 990 : tree res_op0;
11559 990 : res_op0 = captures[1];
11560 990 : tree res_op1;
11561 990 : res_op1 = csts;
11562 990 : tree _r;
11563 990 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11564 990 : if (TREE_SIDE_EFFECTS (captures[2]))
11565 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11566 990 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1028, __FILE__, __LINE__, true);
11567 : return _r;
11568 : }
11569 999010 : next_after_fail1648:;
11570 : }
11571 : else
11572 : {
11573 164 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1649;
11574 164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1649;
11575 164 : {
11576 164 : tree res_op0;
11577 164 : {
11578 164 : tree _o1[1], _r1;
11579 164 : _o1[0] = captures[1];
11580 164 : if (TREE_TYPE (_o1[0]) != utype)
11581 : {
11582 164 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11583 : }
11584 : else
11585 : _r1 = _o1[0];
11586 164 : res_op0 = _r1;
11587 : }
11588 164 : tree res_op1;
11589 164 : res_op1 = csts;
11590 164 : tree _r;
11591 164 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11592 164 : if (TREE_SIDE_EFFECTS (captures[2]))
11593 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11594 164 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
11595 : return _r;
11596 : }
11597 999010 : next_after_fail1649:;
11598 : }
11599 : }
11600 : }
11601 : }
11602 : }
11603 : }
11604 : }
11605 : break;
11606 : }
11607 999010 : default:;
11608 : }
11609 999010 : switch (TREE_CODE (_q20))
11610 : {
11611 0 : case VECTOR_CST:
11612 0 : {
11613 0 : if (integer_zerop (_p1))
11614 : {
11615 0 : {
11616 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
11617 0 : const enum tree_code cmp = NE_EXPR;
11618 0 : const enum tree_code icmp = GT_EXPR;
11619 0 : {
11620 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11621 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11622 : )
11623 : {
11624 0 : {
11625 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11626 0 : ? optab_vector : optab_default;
11627 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11628 0 : if (target_supports_op_p (utype, icmp, optab)
11629 0 : || (optimize_vectors_before_lowering_p ()
11630 0 : && (!target_supports_op_p (type, cmp, optab)
11631 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11632 : )
11633 : {
11634 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11635 : )
11636 : {
11637 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1650;
11638 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1650;
11639 0 : {
11640 0 : tree res_op0;
11641 0 : res_op0 = captures[1];
11642 0 : tree res_op1;
11643 0 : res_op1 = csts;
11644 0 : tree _r;
11645 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11646 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11647 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11648 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1028, __FILE__, __LINE__, true);
11649 : return _r;
11650 : }
11651 39445458 : next_after_fail1650:;
11652 : }
11653 : else
11654 : {
11655 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1651;
11656 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1651;
11657 0 : {
11658 0 : tree res_op0;
11659 0 : {
11660 0 : tree _o1[1], _r1;
11661 0 : _o1[0] = captures[1];
11662 0 : if (TREE_TYPE (_o1[0]) != utype)
11663 : {
11664 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11665 : }
11666 : else
11667 : _r1 = _o1[0];
11668 0 : res_op0 = _r1;
11669 : }
11670 0 : tree res_op1;
11671 0 : res_op1 = csts;
11672 0 : tree _r;
11673 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11674 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11675 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11676 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
11677 : return _r;
11678 : }
11679 39445458 : next_after_fail1651:;
11680 : }
11681 : }
11682 : }
11683 : }
11684 : }
11685 : }
11686 : }
11687 : break;
11688 : }
11689 0 : case INTEGER_CST:
11690 0 : {
11691 0 : if (integer_zerop (_p1))
11692 : {
11693 0 : {
11694 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
11695 0 : const enum tree_code cmp = NE_EXPR;
11696 0 : const enum tree_code icmp = GT_EXPR;
11697 0 : {
11698 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
11699 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
11700 : )
11701 : {
11702 0 : {
11703 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
11704 0 : ? optab_vector : optab_default;
11705 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
11706 0 : if (target_supports_op_p (utype, icmp, optab)
11707 0 : || (optimize_vectors_before_lowering_p ()
11708 0 : && (!target_supports_op_p (type, cmp, optab)
11709 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
11710 : )
11711 : {
11712 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
11713 : )
11714 : {
11715 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1652;
11716 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1652;
11717 0 : {
11718 0 : tree res_op0;
11719 0 : res_op0 = captures[1];
11720 0 : tree res_op1;
11721 0 : res_op1 = csts;
11722 0 : tree _r;
11723 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11724 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11725 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1028, __FILE__, __LINE__, true);
11727 : return _r;
11728 : }
11729 39445458 : next_after_fail1652:;
11730 : }
11731 : else
11732 : {
11733 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1653;
11734 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1653;
11735 0 : {
11736 0 : tree res_op0;
11737 0 : {
11738 0 : tree _o1[1], _r1;
11739 0 : _o1[0] = captures[1];
11740 0 : if (TREE_TYPE (_o1[0]) != utype)
11741 : {
11742 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
11743 : }
11744 : else
11745 : _r1 = _o1[0];
11746 0 : res_op0 = _r1;
11747 : }
11748 0 : tree res_op1;
11749 0 : res_op1 = csts;
11750 0 : tree _r;
11751 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
11752 0 : if (TREE_SIDE_EFFECTS (captures[2]))
11753 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
11754 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1029, __FILE__, __LINE__, true);
11755 : return _r;
11756 : }
11757 39445458 : next_after_fail1653:;
11758 : }
11759 : }
11760 : }
11761 : }
11762 : }
11763 : }
11764 : }
11765 : break;
11766 : }
11767 : default:;
11768 : }
11769 : break;
11770 : }
11771 21154 : case RSHIFT_EXPR:
11772 21154 : {
11773 21154 : tree _q20 = TREE_OPERAND (_p0, 0);
11774 21154 : tree _q21 = TREE_OPERAND (_p0, 1);
11775 21154 : switch (TREE_CODE (_q20))
11776 : {
11777 7 : case MULT_EXPR:
11778 7 : {
11779 7 : tree _q30 = TREE_OPERAND (_q20, 0);
11780 7 : tree _q31 = TREE_OPERAND (_q20, 1);
11781 7 : switch (TREE_CODE (_q30))
11782 : {
11783 7 : CASE_CONVERT:
11784 7 : {
11785 7 : tree _q40 = TREE_OPERAND (_q30, 0);
11786 7 : switch (TREE_CODE (_q31))
11787 : {
11788 7 : CASE_CONVERT:
11789 7 : {
11790 7 : tree _q60 = TREE_OPERAND (_q31, 0);
11791 7 : switch (TREE_CODE (_q21))
11792 : {
11793 7 : case INTEGER_CST:
11794 7 : {
11795 7 : if (integer_zerop (_p1))
11796 : {
11797 7 : {
11798 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
11799 7 : tree res = generic_simplify_310 (loc, type, _p0, _p1, captures, NE_EXPR, GT_EXPR);
11800 7 : if (res) return res;
11801 : }
11802 : }
11803 : break;
11804 : }
11805 : default:;
11806 : }
11807 : break;
11808 : }
11809 : default:;
11810 : }
11811 : break;
11812 : }
11813 : default:;
11814 : }
11815 : break;
11816 : }
11817 : default:;
11818 : }
11819 : break;
11820 : }
11821 1354046 : case PLUS_EXPR:
11822 1354046 : {
11823 1354046 : tree _q20 = TREE_OPERAND (_p0, 0);
11824 1354046 : tree _q21 = TREE_OPERAND (_p0, 1);
11825 1354046 : switch (TREE_CODE (_q21))
11826 : {
11827 1227298 : case INTEGER_CST:
11828 1227298 : {
11829 1227298 : switch (TREE_CODE (_p1))
11830 : {
11831 729653 : case INTEGER_CST:
11832 729653 : {
11833 729653 : {
11834 729653 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11835 729653 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
11836 729653 : if (res) return res;
11837 : }
11838 361 : break;
11839 : }
11840 : default:;
11841 : }
11842 : break;
11843 : }
11844 : default:;
11845 : }
11846 : break;
11847 : }
11848 68605 : case MINUS_EXPR:
11849 68605 : {
11850 68605 : tree _q20 = TREE_OPERAND (_p0, 0);
11851 68605 : tree _q21 = TREE_OPERAND (_p0, 1);
11852 68605 : switch (TREE_CODE (_q21))
11853 : {
11854 193 : case INTEGER_CST:
11855 193 : {
11856 193 : switch (TREE_CODE (_p1))
11857 : {
11858 72 : case INTEGER_CST:
11859 72 : {
11860 72 : {
11861 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11862 72 : tree res = generic_simplify_311 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
11863 72 : if (res) return res;
11864 : }
11865 72 : break;
11866 : }
11867 : default:;
11868 : }
11869 : break;
11870 : }
11871 68605 : default:;
11872 : }
11873 68605 : switch (TREE_CODE (_q20))
11874 : {
11875 1901 : case INTEGER_CST:
11876 1901 : {
11877 1901 : switch (TREE_CODE (_p1))
11878 : {
11879 70 : case INTEGER_CST:
11880 70 : {
11881 70 : {
11882 70 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
11883 70 : tree res = generic_simplify_312 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
11884 70 : if (res) return res;
11885 : }
11886 0 : break;
11887 : }
11888 : default:;
11889 : }
11890 : break;
11891 : }
11892 : default:;
11893 : }
11894 : break;
11895 : }
11896 2500118 : case CALL_EXPR:
11897 2500118 : switch (get_call_combined_fn (_p0))
11898 : {
11899 224 : case CFN_BUILT_IN_CLZ:
11900 224 : if (call_expr_nargs (_p0) == 1)
11901 : {
11902 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11903 224 : switch (TREE_CODE (_p1))
11904 : {
11905 210 : case INTEGER_CST:
11906 210 : {
11907 210 : {
11908 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11909 210 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
11910 210 : if (res) return res;
11911 : }
11912 135 : break;
11913 : }
11914 : default:;
11915 : }
11916 : }
11917 : break;
11918 246 : case CFN_BUILT_IN_CTZ:
11919 246 : if (call_expr_nargs (_p0) == 1)
11920 : {
11921 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11922 246 : switch (TREE_CODE (_p1))
11923 : {
11924 200 : case INTEGER_CST:
11925 200 : {
11926 200 : {
11927 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11928 200 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
11929 200 : if (res) return res;
11930 : }
11931 0 : break;
11932 : }
11933 : default:;
11934 : }
11935 : }
11936 : break;
11937 31 : case CFN_BUILT_IN_FFS:
11938 31 : if (call_expr_nargs (_p0) == 1)
11939 : {
11940 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11941 31 : switch (TREE_CODE (_p1))
11942 : {
11943 11 : case INTEGER_CST:
11944 11 : {
11945 11 : {
11946 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11947 11 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
11948 11 : if (res) return res;
11949 : }
11950 0 : break;
11951 : }
11952 : default:;
11953 : }
11954 : }
11955 : break;
11956 0 : case CFN_REDUC_IOR:
11957 0 : if (call_expr_nargs (_p0) == 1)
11958 : {
11959 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11960 0 : if (integer_zerop (_p1))
11961 : {
11962 0 : {
11963 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11964 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, NE_EXPR);
11965 0 : if (res) return res;
11966 : }
11967 : }
11968 : }
11969 : break;
11970 0 : case CFN_BUILT_IN_FFSIMAX:
11971 0 : if (call_expr_nargs (_p0) == 1)
11972 : {
11973 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11974 0 : switch (TREE_CODE (_p1))
11975 : {
11976 0 : case INTEGER_CST:
11977 0 : {
11978 0 : {
11979 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11980 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
11981 0 : if (res) return res;
11982 : }
11983 0 : break;
11984 : }
11985 : default:;
11986 : }
11987 : }
11988 : break;
11989 13 : case CFN_BUILT_IN_POPCOUNT:
11990 13 : if (call_expr_nargs (_p0) == 1)
11991 : {
11992 13 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11993 13 : if (integer_zerop (_p1))
11994 : {
11995 1 : {
11996 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11997 1 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
11998 1 : if (res) return res;
11999 : }
12000 : }
12001 : }
12002 : break;
12003 87 : case CFN_BUILT_IN_CLZL:
12004 87 : if (call_expr_nargs (_p0) == 1)
12005 : {
12006 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12007 87 : switch (TREE_CODE (_p1))
12008 : {
12009 79 : case INTEGER_CST:
12010 79 : {
12011 79 : {
12012 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12013 79 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
12014 79 : if (res) return res;
12015 : }
12016 43 : break;
12017 : }
12018 : default:;
12019 : }
12020 : }
12021 : break;
12022 85 : case CFN_BUILT_IN_CTZL:
12023 85 : if (call_expr_nargs (_p0) == 1)
12024 : {
12025 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12026 85 : switch (TREE_CODE (_p1))
12027 : {
12028 77 : case INTEGER_CST:
12029 77 : {
12030 77 : {
12031 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12032 77 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
12033 77 : if (res) return res;
12034 : }
12035 16 : break;
12036 : }
12037 : default:;
12038 : }
12039 : }
12040 : break;
12041 8 : case CFN_BUILT_IN_FFSL:
12042 8 : if (call_expr_nargs (_p0) == 1)
12043 : {
12044 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12045 8 : switch (TREE_CODE (_p1))
12046 : {
12047 0 : case INTEGER_CST:
12048 0 : {
12049 0 : {
12050 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12051 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
12052 0 : if (res) return res;
12053 : }
12054 0 : break;
12055 : }
12056 : default:;
12057 : }
12058 : }
12059 : break;
12060 11 : case CFN_BUILT_IN_POPCOUNTLL:
12061 11 : if (call_expr_nargs (_p0) == 1)
12062 : {
12063 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12064 11 : if (integer_zerop (_p1))
12065 : {
12066 1 : {
12067 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12068 1 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
12069 1 : if (res) return res;
12070 : }
12071 : }
12072 : }
12073 : break;
12074 0 : case CFN_BUILT_IN_CTZIMAX:
12075 0 : if (call_expr_nargs (_p0) == 1)
12076 : {
12077 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12078 0 : switch (TREE_CODE (_p1))
12079 : {
12080 0 : case INTEGER_CST:
12081 0 : {
12082 0 : {
12083 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12084 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
12085 0 : if (res) return res;
12086 : }
12087 0 : break;
12088 : }
12089 : default:;
12090 : }
12091 : }
12092 : break;
12093 0 : case CFN_POPCOUNT:
12094 0 : if (call_expr_nargs (_p0) == 1)
12095 : {
12096 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12097 0 : if (integer_zerop (_p1))
12098 : {
12099 0 : {
12100 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12101 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
12102 0 : if (res) return res;
12103 : }
12104 : }
12105 : }
12106 : break;
12107 0 : case CFN_CLZ:
12108 0 : if (call_expr_nargs (_p0) == 1)
12109 : {
12110 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12111 0 : switch (TREE_CODE (_p1))
12112 : {
12113 0 : case INTEGER_CST:
12114 0 : {
12115 0 : {
12116 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12117 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
12118 0 : if (res) return res;
12119 : }
12120 0 : break;
12121 : }
12122 : default:;
12123 : }
12124 : }
12125 0 : if (call_expr_nargs (_p0) == 2)
12126 : {
12127 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12128 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12129 0 : switch (TREE_CODE (_p1))
12130 : {
12131 0 : case INTEGER_CST:
12132 0 : {
12133 0 : {
12134 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
12135 0 : tree res = generic_simplify_314 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
12136 0 : if (res) return res;
12137 : }
12138 0 : break;
12139 : }
12140 : default:;
12141 : }
12142 : }
12143 : break;
12144 0 : case CFN_CTZ:
12145 0 : if (call_expr_nargs (_p0) == 1)
12146 : {
12147 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12148 0 : switch (TREE_CODE (_p1))
12149 : {
12150 0 : case INTEGER_CST:
12151 0 : {
12152 0 : {
12153 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12154 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
12155 0 : if (res) return res;
12156 : }
12157 0 : break;
12158 : }
12159 : default:;
12160 : }
12161 : }
12162 0 : if (call_expr_nargs (_p0) == 2)
12163 : {
12164 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12165 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12166 0 : switch (TREE_CODE (_p1))
12167 : {
12168 0 : case INTEGER_CST:
12169 0 : {
12170 0 : {
12171 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
12172 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, NE_EXPR);
12173 0 : if (res) return res;
12174 : }
12175 0 : break;
12176 : }
12177 : default:;
12178 : }
12179 : }
12180 : break;
12181 0 : case CFN_FFS:
12182 0 : if (call_expr_nargs (_p0) == 1)
12183 : {
12184 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12185 0 : switch (TREE_CODE (_p1))
12186 : {
12187 0 : case INTEGER_CST:
12188 0 : {
12189 0 : {
12190 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12191 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
12192 0 : if (res) return res;
12193 : }
12194 0 : break;
12195 : }
12196 : default:;
12197 : }
12198 : }
12199 : break;
12200 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
12201 0 : if (call_expr_nargs (_p0) == 1)
12202 : {
12203 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12204 0 : if (integer_zerop (_p1))
12205 : {
12206 0 : {
12207 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12208 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
12209 0 : if (res) return res;
12210 : }
12211 : }
12212 : }
12213 : break;
12214 0 : case CFN_BUILT_IN_CLZIMAX:
12215 0 : if (call_expr_nargs (_p0) == 1)
12216 : {
12217 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12218 0 : switch (TREE_CODE (_p1))
12219 : {
12220 0 : case INTEGER_CST:
12221 0 : {
12222 0 : {
12223 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12224 0 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
12225 0 : if (res) return res;
12226 : }
12227 0 : break;
12228 : }
12229 : default:;
12230 : }
12231 : }
12232 : break;
12233 12 : case CFN_BUILT_IN_POPCOUNTL:
12234 12 : if (call_expr_nargs (_p0) == 1)
12235 : {
12236 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12237 12 : if (integer_zerop (_p1))
12238 : {
12239 1 : {
12240 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
12241 1 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
12242 1 : if (res) return res;
12243 : }
12244 : }
12245 : }
12246 : break;
12247 52 : case CFN_BUILT_IN_CLZLL:
12248 52 : if (call_expr_nargs (_p0) == 1)
12249 : {
12250 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12251 52 : switch (TREE_CODE (_p1))
12252 : {
12253 42 : case INTEGER_CST:
12254 42 : {
12255 42 : {
12256 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12257 42 : tree res = generic_simplify_313 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
12258 42 : if (res) return res;
12259 : }
12260 18 : break;
12261 : }
12262 : default:;
12263 : }
12264 : }
12265 : break;
12266 74 : case CFN_BUILT_IN_CTZLL:
12267 74 : if (call_expr_nargs (_p0) == 1)
12268 : {
12269 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12270 74 : switch (TREE_CODE (_p1))
12271 : {
12272 64 : case INTEGER_CST:
12273 64 : {
12274 64 : {
12275 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12276 64 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
12277 64 : if (res) return res;
12278 : }
12279 16 : break;
12280 : }
12281 : default:;
12282 : }
12283 : }
12284 : break;
12285 11 : case CFN_BUILT_IN_FFSLL:
12286 11 : if (call_expr_nargs (_p0) == 1)
12287 : {
12288 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12289 11 : switch (TREE_CODE (_p1))
12290 : {
12291 1 : case INTEGER_CST:
12292 1 : {
12293 1 : {
12294 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12295 1 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
12296 1 : if (res) return res;
12297 : }
12298 0 : break;
12299 : }
12300 : default:;
12301 : }
12302 : }
12303 : break;
12304 : default:;
12305 : }
12306 : break;
12307 : default:;
12308 : }
12309 : return NULL_TREE;
12310 : }
12311 :
12312 : tree
12313 16253 : generic_simplify_BIT_INSERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
12314 : {
12315 16253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
12316 16253 : switch (TREE_CODE (_p1))
12317 : {
12318 0 : case BIT_FIELD_REF:
12319 0 : {
12320 0 : tree _q30 = TREE_OPERAND (_p1, 0);
12321 0 : tree _q31 = TREE_OPERAND (_p1, 1);
12322 0 : tree _q32 = TREE_OPERAND (_p1, 2);
12323 0 : {
12324 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32, _p2 };
12325 0 : if (VECTOR_TYPE_P (type)
12326 0 : && (VECTOR_MODE_P (TYPE_MODE (type))
12327 : || optimize_vectors_before_lowering_p ())
12328 0 : && operand_equal_p (TYPE_SIZE (TREE_TYPE (captures[0])),
12329 0 : TYPE_SIZE (TREE_TYPE (captures[2])), 0)
12330 0 : && types_match (TREE_TYPE (TREE_TYPE (captures[0])), TREE_TYPE (captures[1]))
12331 0 : && TYPE_VECTOR_SUBPARTS (type).is_constant ()
12332 0 : && multiple_p (wi::to_poly_offset (captures[4]),
12333 0 : wi::to_poly_offset (TYPE_SIZE (TREE_TYPE (type))))
12334 : )
12335 : {
12336 0 : {
12337 0 : unsigned HOST_WIDE_INT elsz
12338 0 : = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))));
12339 0 : poly_uint64 relt = exact_div (tree_to_poly_uint64 (captures[4]), elsz);
12340 0 : poly_uint64 ielt = exact_div (tree_to_poly_uint64 (captures[5]), elsz);
12341 0 : unsigned nunits = TYPE_VECTOR_SUBPARTS (type).to_constant ();
12342 0 : vec_perm_builder builder;
12343 0 : builder.new_vector (nunits, nunits, 1);
12344 0 : for (unsigned i = 0; i < nunits; ++i)
12345 0 : builder.quick_push (known_eq (ielt, i) ? nunits + relt : i);
12346 0 : vec_perm_indices sel (builder, 2, nunits);
12347 0 : if (!VECTOR_MODE_P (TYPE_MODE (type))
12348 0 : || can_vec_perm_const_p (TYPE_MODE (type),
12349 0 : TYPE_MODE (type), sel, false)
12350 : )
12351 : {
12352 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail2072;
12353 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail2072;
12354 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2072;
12355 0 : {
12356 0 : tree res_op0;
12357 0 : res_op0 = captures[0];
12358 0 : tree res_op1;
12359 0 : {
12360 0 : tree _o1[1], _r1;
12361 0 : _o1[0] = captures[2];
12362 0 : if (TREE_TYPE (_o1[0]) != type)
12363 : {
12364 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
12365 : }
12366 : else
12367 : _r1 = _o1[0];
12368 0 : res_op1 = _r1;
12369 : }
12370 0 : tree res_op2;
12371 0 : res_op2 = vec_perm_indices_to_tree (build_vector_type (ssizetype, nunits),
12372 : sel);
12373 0 : tree _r;
12374 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12375 0 : if (TREE_SIDE_EFFECTS (captures[3]))
12376 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
12377 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1145, __FILE__, __LINE__, true);
12378 0 : return _r;
12379 : }
12380 0 : next_after_fail2072:;
12381 : }
12382 0 : }
12383 : }
12384 : }
12385 : break;
12386 : }
12387 16253 : default:;
12388 : }
12389 16253 : switch (TREE_CODE (_p0))
12390 : {
12391 0 : case VEC_PERM_EXPR:
12392 0 : {
12393 0 : tree _q20 = TREE_OPERAND (_p0, 0);
12394 0 : tree _q21 = TREE_OPERAND (_p0, 1);
12395 0 : tree _q22 = TREE_OPERAND (_p0, 2);
12396 0 : switch (TREE_CODE (_q22))
12397 : {
12398 0 : case VECTOR_CST:
12399 0 : {
12400 0 : switch (TREE_CODE (_p2))
12401 : {
12402 0 : case INTEGER_CST:
12403 0 : {
12404 0 : {
12405 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _p2 };
12406 0 : {
12407 0 : bool from0 = false;
12408 0 : bool from1 = false;
12409 0 : tree single_op = NULL_TREE;
12410 0 : unsigned elt_size = vector_element_bits (type);
12411 0 : unsigned HOST_WIDE_INT nelts;
12412 0 : unsigned ins_lane_idx;
12413 0 : vec_perm_indices sel;
12414 0 : if (TYPE_VECTOR_SUBPARTS (type).is_constant (&nelts)
12415 0 : && captures[1] != captures[2]
12416 0 : && tree_to_vec_perm_indices (&sel, captures[1], captures[2], captures[3])
12417 0 : && tree_to_uhwi (TYPE_SIZE (TREE_TYPE (captures[4]))) == elt_size
12418 0 : && multiple_p (tree_to_uhwi (captures[5]), elt_size, &ins_lane_idx))
12419 : {
12420 0 : for (unsigned i = 0; i < nelts; i++)
12421 : {
12422 0 : if (i == ins_lane_idx)
12423 0 : continue;
12424 0 : unsigned HOST_WIDE_INT elt = sel[i].to_constant ();
12425 0 : if (elt < nelts)
12426 : from0 = true;
12427 : else
12428 0 : from1 = true;
12429 : }
12430 0 : if (from0 ^ from1)
12431 : {
12432 0 : single_op = from0 ? captures[1] : captures[2];
12433 0 : vec_perm_indices new_sel;
12434 0 : if (!tree_to_vec_perm_indices (&new_sel, single_op, single_op, captures[3])
12435 0 : || !can_vec_perm_const_p (TYPE_MODE (type),
12436 0 : TYPE_MODE (TREE_TYPE (single_op)),
12437 : new_sel,
12438 : false))
12439 : single_op = NULL_TREE;
12440 0 : }
12441 : }
12442 0 : if (single_op != NULL_TREE
12443 : )
12444 : {
12445 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail2073;
12446 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail2073;
12447 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail2073;
12448 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail2073;
12449 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail2073;
12450 0 : {
12451 0 : tree res_op0;
12452 0 : {
12453 0 : tree _o1[3], _r1;
12454 0 : _o1[0] = single_op;
12455 0 : _o1[1] = single_op;
12456 0 : _o1[2] = captures[3];
12457 0 : _r1 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1], _o1[2]);
12458 0 : res_op0 = _r1;
12459 : }
12460 0 : tree res_op1;
12461 0 : res_op1 = captures[4];
12462 0 : tree res_op2;
12463 0 : res_op2 = captures[5];
12464 0 : tree _r;
12465 0 : _r = fold_build3_loc (loc, BIT_INSERT_EXPR, type, res_op0, res_op1, res_op2);
12466 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1146, __FILE__, __LINE__, true);
12467 0 : return _r;
12468 : }
12469 0 : next_after_fail2073:;
12470 : }
12471 0 : }
12472 : }
12473 0 : break;
12474 : }
12475 : default:;
12476 : }
12477 : break;
12478 : }
12479 : default:;
12480 : }
12481 : break;
12482 : }
12483 : default:;
12484 : }
12485 : return NULL_TREE;
12486 : }
12487 : #pragma GCC diagnostic pop
|