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 163857876 : tree_truth_valued_p (tree t)
11 : {
12 163857876 : const tree type = TREE_TYPE (t);
13 163857876 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 163857876 : if (TREE_SIDE_EFFECTS (t)) return false;
15 158826012 : {
16 158826012 : tree captures[1] ATTRIBUTE_UNUSED = { t };
17 158826012 : if (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1
18 : )
19 : {
20 5725812 : {
21 5725812 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 20, __FILE__, __LINE__, false);
22 5725812 : return true;
23 : }
24 : }
25 : }
26 153100200 : switch (TREE_CODE (t))
27 : {
28 820 : case LT_EXPR:
29 820 : {
30 820 : tree _p0 = TREE_OPERAND (t, 0);
31 820 : tree _p1 = TREE_OPERAND (t, 1);
32 820 : {
33 820 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
34 820 : {
35 820 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
36 820 : return true;
37 : }
38 : }
39 708 : break;
40 : }
41 708 : case LE_EXPR:
42 708 : {
43 708 : tree _p0 = TREE_OPERAND (t, 0);
44 708 : tree _p1 = TREE_OPERAND (t, 1);
45 708 : {
46 708 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
47 708 : {
48 708 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
49 708 : return true;
50 : }
51 : }
52 11610 : break;
53 : }
54 11610 : case EQ_EXPR:
55 11610 : {
56 11610 : tree _p0 = TREE_OPERAND (t, 0);
57 11610 : tree _p1 = TREE_OPERAND (t, 1);
58 11610 : {
59 11610 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
60 11610 : {
61 11610 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
62 11610 : return true;
63 : }
64 : }
65 4459 : break;
66 : }
67 4459 : case NE_EXPR:
68 4459 : {
69 4459 : tree _p0 = TREE_OPERAND (t, 0);
70 4459 : tree _p1 = TREE_OPERAND (t, 1);
71 4459 : {
72 4459 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
73 4459 : {
74 4459 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
75 4459 : return true;
76 : }
77 : }
78 377 : break;
79 : }
80 377 : case GE_EXPR:
81 377 : {
82 377 : tree _p0 = TREE_OPERAND (t, 0);
83 377 : tree _p1 = TREE_OPERAND (t, 1);
84 377 : {
85 377 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
86 377 : {
87 377 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
88 377 : return true;
89 : }
90 : }
91 221576 : break;
92 : }
93 221576 : case GT_EXPR:
94 221576 : {
95 221576 : tree _p0 = TREE_OPERAND (t, 0);
96 221576 : tree _p1 = TREE_OPERAND (t, 1);
97 221576 : {
98 221576 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
99 221576 : {
100 221576 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
101 221576 : return true;
102 : }
103 : }
104 127207 : break;
105 : }
106 127207 : case UNORDERED_EXPR:
107 127207 : {
108 127207 : tree _p0 = TREE_OPERAND (t, 0);
109 127207 : tree _p1 = TREE_OPERAND (t, 1);
110 127207 : {
111 127207 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
112 127207 : {
113 127207 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
114 127207 : return true;
115 : }
116 : }
117 16 : break;
118 : }
119 16 : case ORDERED_EXPR:
120 16 : {
121 16 : tree _p0 = TREE_OPERAND (t, 0);
122 16 : tree _p1 = TREE_OPERAND (t, 1);
123 16 : {
124 16 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
125 16 : {
126 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
127 16 : return true;
128 : }
129 : }
130 70 : break;
131 : }
132 70 : case UNLT_EXPR:
133 70 : {
134 70 : tree _p0 = TREE_OPERAND (t, 0);
135 70 : tree _p1 = TREE_OPERAND (t, 1);
136 70 : {
137 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
138 70 : {
139 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
140 70 : return true;
141 : }
142 : }
143 1157 : break;
144 : }
145 1157 : case UNLE_EXPR:
146 1157 : {
147 1157 : tree _p0 = TREE_OPERAND (t, 0);
148 1157 : tree _p1 = TREE_OPERAND (t, 1);
149 1157 : {
150 1157 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
151 1157 : {
152 1157 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
153 1157 : return true;
154 : }
155 : }
156 70 : break;
157 : }
158 70 : case UNGT_EXPR:
159 70 : {
160 70 : tree _p0 = TREE_OPERAND (t, 0);
161 70 : tree _p1 = TREE_OPERAND (t, 1);
162 70 : {
163 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
164 70 : {
165 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
166 70 : return true;
167 : }
168 : }
169 70 : break;
170 : }
171 70 : case UNGE_EXPR:
172 70 : {
173 70 : tree _p0 = TREE_OPERAND (t, 0);
174 70 : tree _p1 = TREE_OPERAND (t, 1);
175 70 : {
176 70 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
177 70 : {
178 70 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
179 70 : return true;
180 : }
181 : }
182 84 : break;
183 : }
184 84 : case UNEQ_EXPR:
185 84 : {
186 84 : tree _p0 = TREE_OPERAND (t, 0);
187 84 : tree _p1 = TREE_OPERAND (t, 1);
188 84 : {
189 84 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
190 84 : {
191 84 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
192 84 : return true;
193 : }
194 : }
195 24 : break;
196 : }
197 24 : case LTGT_EXPR:
198 24 : {
199 24 : tree _p0 = TREE_OPERAND (t, 0);
200 24 : tree _p1 = TREE_OPERAND (t, 1);
201 24 : {
202 24 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
203 24 : {
204 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
205 24 : return true;
206 : }
207 : }
208 106 : break;
209 : }
210 106 : case TRUTH_AND_EXPR:
211 106 : {
212 106 : tree _p0 = TREE_OPERAND (t, 0);
213 106 : tree _p1 = TREE_OPERAND (t, 1);
214 106 : {
215 106 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
216 106 : {
217 106 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
218 106 : return true;
219 : }
220 : }
221 512 : break;
222 : }
223 512 : case TRUTH_ANDIF_EXPR:
224 512 : {
225 512 : tree _p0 = TREE_OPERAND (t, 0);
226 512 : tree _p1 = TREE_OPERAND (t, 1);
227 512 : {
228 512 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
229 512 : {
230 512 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
231 512 : return true;
232 : }
233 : }
234 53 : break;
235 : }
236 53 : case TRUTH_OR_EXPR:
237 53 : {
238 53 : tree _p0 = TREE_OPERAND (t, 0);
239 53 : tree _p1 = TREE_OPERAND (t, 1);
240 53 : {
241 53 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
242 53 : {
243 53 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
244 53 : return true;
245 : }
246 : }
247 1409 : break;
248 : }
249 1409 : case TRUTH_ORIF_EXPR:
250 1409 : {
251 1409 : tree _p0 = TREE_OPERAND (t, 0);
252 1409 : tree _p1 = TREE_OPERAND (t, 1);
253 1409 : {
254 1409 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
255 1409 : {
256 1409 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
257 1409 : return true;
258 : }
259 : }
260 0 : break;
261 : }
262 0 : case TRUTH_XOR_EXPR:
263 0 : {
264 0 : tree _p0 = TREE_OPERAND (t, 0);
265 0 : tree _p1 = TREE_OPERAND (t, 1);
266 0 : {
267 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
268 0 : {
269 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 21, __FILE__, __LINE__, false);
270 0 : return true;
271 : }
272 : }
273 473193 : break;
274 : }
275 473193 : case TRUTH_NOT_EXPR:
276 473193 : {
277 473193 : tree _p0 = TREE_OPERAND (t, 0);
278 473193 : {
279 473193 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
280 473193 : {
281 473193 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 22, __FILE__, __LINE__, false);
282 473193 : return true;
283 : }
284 : }
285 : break;
286 : }
287 : default:;
288 : }
289 : return false;
290 : }
291 :
292 : tree
293 0 : generic_simplify_41 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
294 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
295 : const enum tree_code ARG_UNUSED (op))
296 : {
297 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
298 0 : if (INTEGRAL_TYPE_P (type)
299 0 : && tree_int_cst_sgn (captures[5]) > 0
300 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
301 : )
302 : {
303 0 : {
304 0 : tree t = type;
305 0 : if (!TYPE_OVERFLOW_WRAPS (t))
306 0 : t = unsigned_type_for (t);
307 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
308 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
309 0 : wi::lshift (wone, wi::to_wide (captures[5])));
310 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail118;
311 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail118;
312 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail118;
313 0 : {
314 0 : tree res_op0;
315 0 : {
316 0 : tree _o1[2], _r1;
317 0 : {
318 0 : tree _o2[1], _r2;
319 0 : _o2[0] = captures[2];
320 0 : if (TREE_TYPE (_o2[0]) != t)
321 : {
322 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
323 : }
324 : else
325 : _r2 = _o2[0];
326 0 : _o1[0] = _r2;
327 : }
328 0 : _o1[1] = wide_int_to_tree (t, c);
329 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
330 0 : res_op0 = _r1;
331 : }
332 0 : tree _r;
333 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
334 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 89, __FILE__, __LINE__, true);
335 0 : return _r;
336 : }
337 0 : next_after_fail118:;
338 0 : }
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 11 : generic_simplify_53 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
345 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
346 : const combined_fn ARG_UNUSED (PARITY))
347 : {
348 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
349 11 : if (types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
350 : )
351 : {
352 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail132;
353 10 : {
354 10 : tree res_op0;
355 10 : {
356 10 : tree _o1[2], _r1;
357 10 : _o1[0] = captures[1];
358 10 : _o1[1] = captures[3];
359 10 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
360 10 : res_op0 = _r1;
361 : }
362 10 : tree _r;
363 10 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
364 10 : if (!_r)
365 0 : goto next_after_fail132;
366 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 100, __FILE__, __LINE__, true);
367 10 : return _r;
368 : }
369 : next_after_fail132:;
370 : }
371 : else
372 : {
373 2 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
374 2 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[3]))
375 : )
376 : {
377 1 : {
378 1 : tree utype = TREE_TYPE (captures[1]);
379 1 : if (TYPE_PRECISION (utype) < TYPE_PRECISION (TREE_TYPE (captures[3])))
380 1 : utype = TREE_TYPE (captures[3]);
381 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail133;
382 1 : {
383 1 : tree res_op0;
384 1 : {
385 1 : tree _o1[2], _r1;
386 1 : {
387 1 : tree _o2[1], _r2;
388 1 : _o2[0] = captures[1];
389 1 : if (TREE_TYPE (_o2[0]) != utype)
390 : {
391 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
392 : }
393 : else
394 : _r2 = _o2[0];
395 1 : _o1[0] = _r2;
396 : }
397 1 : {
398 1 : tree _o2[1], _r2;
399 1 : _o2[0] = captures[3];
400 1 : if (TREE_TYPE (_o2[0]) != utype)
401 : {
402 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
403 : }
404 : else
405 : _r2 = _o2[0];
406 1 : _o1[1] = _r2;
407 : }
408 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
409 1 : res_op0 = _r1;
410 : }
411 1 : tree _r;
412 1 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
413 1 : if (!_r)
414 1 : goto next_after_fail133;
415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 101, __FILE__, __LINE__, true);
416 0 : return _r;
417 : }
418 : next_after_fail133:;
419 : }
420 : }
421 : }
422 : return NULL_TREE;
423 : }
424 :
425 : tree
426 116486 : generic_simplify_70 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
427 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
428 : {
429 116486 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
430 116486 : if (!TYPE_SATURATING (type)
431 : )
432 : {
433 116486 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
434 232972 : && !FIXED_POINT_TYPE_P (type)
435 : )
436 : {
437 116486 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
438 : )
439 : {
440 115629 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail159;
441 115629 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail159;
442 115629 : {
443 115629 : tree res_op0;
444 115629 : {
445 115629 : tree _o1[1], _r1;
446 115629 : _o1[0] = captures[0];
447 115629 : if (TREE_TYPE (_o1[0]) != type)
448 : {
449 112969 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
450 : }
451 : else
452 : _r1 = _o1[0];
453 115629 : res_op0 = _r1;
454 : }
455 115629 : tree _r;
456 115629 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
457 115629 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 127, __FILE__, __LINE__, true);
458 115629 : return _r;
459 : }
460 : next_after_fail159:;
461 : }
462 : }
463 : }
464 : return NULL_TREE;
465 : }
466 :
467 : tree
468 0 : generic_simplify_77 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
469 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
470 : {
471 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
472 0 : if (VECTOR_TYPE_P (type)
473 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
474 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
475 0 : && (TYPE_MODE (TREE_TYPE (type))
476 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
477 : )
478 : {
479 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail167;
480 0 : {
481 0 : tree res_op0;
482 0 : res_op0 = captures[0];
483 0 : tree res_op1;
484 0 : {
485 0 : tree _o1[1], _r1;
486 0 : {
487 0 : tree _o2[3], _r2;
488 0 : _o2[0] = captures[2];
489 0 : {
490 0 : tree _o3[1], _r3;
491 0 : _o3[0] = captures[3];
492 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
493 0 : _o2[1] = _r3;
494 : }
495 0 : _o2[2] = captures[4];
496 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
497 0 : _o1[0] = _r2;
498 : }
499 0 : if (TREE_TYPE (_o1[0]) != type)
500 : {
501 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
502 : }
503 : else
504 : _r1 = _o1[0];
505 0 : res_op1 = _r1;
506 : }
507 0 : tree _r;
508 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
509 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 135, __FILE__, __LINE__, true);
510 0 : return _r;
511 : }
512 0 : next_after_fail167:;
513 : }
514 : return NULL_TREE;
515 : }
516 :
517 : tree
518 95 : generic_simplify_86 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
519 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
520 : {
521 95 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
522 95 : if (INTEGRAL_TYPE_P (type)
523 95 : || (VECTOR_INTEGER_TYPE_P (type)
524 : && ((optimize_vectors_before_lowering_p ()
525 1 : && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
526 0 : || target_supports_op_p (type, TRUNC_MOD_EXPR,
527 : optab_vector)))
528 : )
529 : {
530 95 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail177;
531 95 : {
532 95 : tree res_op0;
533 95 : {
534 95 : tree _o1[2], _r1;
535 95 : _o1[0] = captures[0];
536 95 : _o1[1] = captures[1];
537 95 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
538 95 : res_op0 = _r1;
539 : }
540 95 : tree _r;
541 95 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
542 95 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 145, __FILE__, __LINE__, true);
543 95 : return _r;
544 : }
545 0 : next_after_fail177:;
546 : }
547 : return NULL_TREE;
548 : }
549 :
550 : tree
551 1 : generic_simplify_93 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
552 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
553 : {
554 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
555 1 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
556 1 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
557 : )
558 : {
559 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail184;
560 1 : {
561 1 : tree res_op0;
562 1 : {
563 1 : tree _o1[2], _r1;
564 1 : {
565 1 : tree _o2[1], _r2;
566 1 : _o2[0] = captures[3];
567 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
568 1 : _o1[0] = _r2;
569 : }
570 1 : _o1[1] = captures[0];
571 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
572 1 : res_op0 = _r1;
573 : }
574 1 : tree _r;
575 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
576 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 152, __FILE__, __LINE__, true);
577 1 : return _r;
578 : }
579 0 : next_after_fail184:;
580 : }
581 : return NULL_TREE;
582 : }
583 :
584 : tree
585 668 : generic_simplify_101 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
586 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
587 : {
588 668 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
589 668 : if (!TYPE_SATURATING (type)
590 : )
591 : {
592 668 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
593 1336 : && !FIXED_POINT_TYPE_P (type)
594 : )
595 : {
596 668 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
597 : )
598 : {
599 28 : if (!CONSTANT_CLASS_P (captures[2])
600 : )
601 : {
602 28 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail194;
603 28 : {
604 28 : tree res_op0;
605 28 : {
606 28 : tree _o1[1], _r1;
607 28 : _o1[0] = captures[2];
608 28 : if (TREE_TYPE (_o1[0]) != type)
609 : {
610 28 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
611 : }
612 : else
613 : _r1 = _o1[0];
614 28 : res_op0 = _r1;
615 : }
616 28 : tree res_op1;
617 28 : {
618 28 : tree _o1[2], _r1;
619 28 : _o1[0] = captures[0];
620 28 : {
621 28 : tree _o2[1], _r2;
622 28 : _o2[0] = captures[1];
623 28 : if (TREE_TYPE (_o2[0]) != type)
624 : {
625 28 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
626 : }
627 : else
628 : _r2 = _o2[0];
629 28 : _o1[1] = _r2;
630 : }
631 28 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
632 28 : if (EXPR_P (_r1))
633 0 : goto next_after_fail194;
634 28 : res_op1 = _r1;
635 : }
636 28 : tree _r;
637 28 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
638 28 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 161, __FILE__, __LINE__, true);
639 28 : return _r;
640 : }
641 : next_after_fail194:;
642 : }
643 : }
644 : else
645 : {
646 1280 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
647 1280 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
648 : )
649 : {
650 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail195;
651 1 : {
652 1 : tree res_op0;
653 1 : {
654 1 : tree _o1[2], _r1;
655 1 : _o1[0] = captures[2];
656 1 : {
657 1 : tree _o2[2], _r2;
658 1 : {
659 1 : tree _o3[1], _r3;
660 1 : _o3[0] = captures[0];
661 1 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
662 : {
663 1 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
664 : }
665 : else
666 : _r3 = _o3[0];
667 1 : _o2[0] = _r3;
668 : }
669 1 : _o2[1] = captures[1];
670 1 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
671 1 : if (EXPR_P (_r2))
672 0 : goto next_after_fail195;
673 1 : _o1[1] = _r2;
674 : }
675 1 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
676 1 : res_op0 = _r1;
677 : }
678 1 : tree _r;
679 1 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
680 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 162, __FILE__, __LINE__, true);
681 1 : return _r;
682 : }
683 : next_after_fail195:;
684 : }
685 : else
686 : {
687 639 : if (types_match (type, captures[2]) && !TYPE_OVERFLOW_SANITIZED (type)
688 : )
689 : {
690 630 : {
691 630 : tree cst = const_binop (MINUS_EXPR, type, captures[0], captures[1]);
692 630 : if (cst && !TREE_OVERFLOW (cst)
693 : )
694 : {
695 630 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail196;
696 630 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail196;
697 630 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail196;
698 630 : {
699 630 : tree res_op0;
700 630 : res_op0 = cst;
701 630 : tree res_op1;
702 630 : res_op1 = captures[2];
703 630 : tree _r;
704 630 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
705 630 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 163, __FILE__, __LINE__, true);
706 630 : return _r;
707 : }
708 : next_after_fail196:;
709 : }
710 : }
711 : }
712 : }
713 : }
714 : }
715 : }
716 : return NULL_TREE;
717 : }
718 :
719 : tree
720 253 : generic_simplify_129 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
721 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
722 : const enum tree_code ARG_UNUSED (bitop))
723 : {
724 253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
725 253 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail226;
726 253 : {
727 253 : tree res_op0;
728 253 : res_op0 = captures[0];
729 253 : tree _r;
730 253 : _r = non_lvalue_loc (loc, res_op0);
731 253 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
732 : return _r;
733 : }
734 0 : next_after_fail226:;
735 0 : return NULL_TREE;
736 : }
737 :
738 : tree
739 0 : generic_simplify_140 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
740 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
741 : const enum tree_code ARG_UNUSED (op))
742 : {
743 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
744 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
745 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
746 : )
747 : {
748 0 : if (single_use (captures[4]) && single_use (captures[5])
749 : )
750 : {
751 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail239;
752 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail239;
753 0 : {
754 0 : tree res_op0;
755 0 : res_op0 = captures[0];
756 0 : tree res_op1;
757 0 : {
758 0 : tree _o1[1], _r1;
759 0 : _o1[0] = captures[6];
760 0 : if (TREE_TYPE (_o1[0]) != type)
761 : {
762 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
763 : }
764 : else
765 : _r1 = _o1[0];
766 0 : res_op1 = _r1;
767 : }
768 0 : tree _r;
769 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
770 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
771 0 : return _r;
772 : }
773 : next_after_fail239:;
774 : }
775 : else
776 : {
777 : if (single_use (captures[0]) && single_use (captures[1])
778 : )
779 : {
780 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail240;
781 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail240;
782 : {
783 : tree res_op0;
784 : {
785 : tree _o1[1], _r1;
786 : _o1[0] = captures[3];
787 : if (TREE_TYPE (_o1[0]) != type)
788 : {
789 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
790 : }
791 : else
792 : _r1 = _o1[0];
793 : res_op0 = _r1;
794 : }
795 : tree res_op1;
796 : res_op1 = captures[4];
797 : tree _r;
798 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
799 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 196, __FILE__, __LINE__, true);
800 : return _r;
801 : }
802 : next_after_fail240:;
803 : }
804 : }
805 : }
806 : return NULL_TREE;
807 : }
808 :
809 : tree
810 4 : generic_simplify_155 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
811 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
812 : {
813 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
814 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail260;
815 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail260;
816 4 : {
817 4 : tree _r;
818 4 : _r = captures[2];
819 4 : if (TREE_SIDE_EFFECTS (captures[1]))
820 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
821 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
822 : return _r;
823 : }
824 : next_after_fail260:;
825 : return NULL_TREE;
826 : }
827 :
828 : tree
829 0 : generic_simplify_157 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
830 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
831 : {
832 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
833 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
834 0 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
835 : )
836 : {
837 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail262;
838 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail262;
839 0 : {
840 0 : tree res_op0;
841 0 : res_op0 = captures[3];
842 0 : tree res_op1;
843 0 : {
844 0 : tree _o1[2], _r1;
845 0 : _o1[0] = captures[1];
846 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
847 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
848 0 : res_op1 = _r1;
849 : }
850 0 : tree _r;
851 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
852 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
853 0 : return _r;
854 : }
855 : next_after_fail262:;
856 : }
857 : return NULL_TREE;
858 : }
859 :
860 : tree
861 0 : generic_simplify_166 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
862 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
863 : const enum tree_code ARG_UNUSED (eqne))
864 : {
865 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
866 0 : if (eqne == EQ_EXPR
867 : )
868 : {
869 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail289;
870 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail289;
871 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail289;
872 0 : {
873 0 : tree _r;
874 0 : _r = captures[0];
875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 229, __FILE__, __LINE__, true);
876 0 : return _r;
877 : }
878 : next_after_fail289:;
879 : }
880 : else
881 : {
882 0 : if (eqne == NE_EXPR
883 : )
884 : {
885 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail290;
886 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail290;
887 0 : {
888 0 : tree _r;
889 0 : _r = constant_boolean_node (true, type);
890 0 : if (TREE_SIDE_EFFECTS (captures[2]))
891 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
892 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 230, __FILE__, __LINE__, true);
893 0 : return _r;
894 : }
895 : next_after_fail290:;
896 : }
897 : }
898 : return NULL_TREE;
899 : }
900 :
901 : tree
902 0 : generic_simplify_174 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
903 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
904 : {
905 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
906 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail311;
907 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail311;
908 0 : {
909 0 : tree _r;
910 0 : _r = captures[1];
911 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 233, __FILE__, __LINE__, true);
912 : return _r;
913 : }
914 : next_after_fail311:;
915 : return NULL_TREE;
916 : }
917 :
918 : tree
919 0 : generic_simplify_177 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
920 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
921 : {
922 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
923 0 : if (type_has_mode_precision_p (type)
924 0 : && tree_fits_uhwi_p (captures[1])
925 0 : && tree_fits_uhwi_p (captures[3])
926 0 : && tree_fits_uhwi_p (captures[4])
927 0 : && ((~((HOST_WIDE_INT_1U << tree_to_uhwi (captures[1])) - 1)) & tree_to_uhwi (captures[4])) == 0
928 0 : && (tree_to_uhwi (captures[1]) + tree_to_uhwi (captures[3])) == TYPE_PRECISION (type)
929 0 : && TYPE_UNSIGNED (type)
930 0 : && captures[0] == captures[2]
931 : )
932 : {
933 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail314;
934 0 : {
935 0 : tree res_op0;
936 0 : {
937 0 : tree _o1[2], _r1;
938 0 : _o1[0] = captures[0];
939 0 : _o1[1] = captures[3];
940 0 : _r1 = fold_build2_loc (loc, RROTATE_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
941 0 : res_op0 = _r1;
942 : }
943 0 : tree res_op1;
944 0 : res_op1 = captures[4];
945 0 : tree _r;
946 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
947 0 : if (TREE_SIDE_EFFECTS (captures[1]))
948 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
949 0 : if (TREE_SIDE_EFFECTS (captures[2]))
950 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 235, __FILE__, __LINE__, true);
952 0 : return _r;
953 : }
954 0 : next_after_fail314:;
955 : }
956 : return NULL_TREE;
957 : }
958 :
959 : tree
960 0 : generic_simplify_184 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
961 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
962 : const combined_fn ARG_UNUSED (copysigns))
963 : {
964 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
965 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail321;
966 0 : {
967 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail321;
968 0 : tree res_op0;
969 0 : res_op0 = unshare_expr (captures[1]);
970 0 : tree res_op1;
971 0 : res_op1 = captures[1];
972 0 : tree _r;
973 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
974 0 : if (TREE_SIDE_EFFECTS (captures[2]))
975 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
976 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 240, __FILE__, __LINE__, true);
977 : return _r;
978 : }
979 : next_after_fail321:;
980 : return NULL_TREE;
981 : }
982 :
983 : tree
984 0 : generic_simplify_193 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
985 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
986 : const enum tree_code ARG_UNUSED (cmp))
987 : {
988 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
989 0 : if (fold_before_rtl_expansion_p ()
990 : )
991 : {
992 0 : if (INTEGRAL_TYPE_P (type)
993 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
994 : )
995 : {
996 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail332;
997 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail332;
998 0 : {
999 0 : tree res_op0;
1000 0 : res_op0 = captures[0];
1001 0 : tree res_op1;
1002 0 : res_op1 = captures[3];
1003 0 : tree res_op2;
1004 0 : res_op2 = build_zero_cst (type);
1005 0 : tree _r;
1006 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
1007 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 246, __FILE__, __LINE__, true);
1008 0 : return _r;
1009 : }
1010 : next_after_fail332:;
1011 : }
1012 : }
1013 : return NULL_TREE;
1014 : }
1015 :
1016 : tree
1017 5148 : generic_simplify_197 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1018 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1019 : const enum tree_code ARG_UNUSED (op))
1020 : {
1021 5148 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1022 5148 : {
1023 5148 : poly_widest_int factor;
1024 5148 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
1025 5117 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1026 10265 : && multiple_p (wi::to_poly_widest (captures[3]), wi::to_widest (captures[1]), &factor)
1027 : )
1028 : {
1029 5071 : {
1030 5071 : wi::overflow_type overflow;
1031 5071 : wide_int mul;
1032 5071 : if (types_match (type, TREE_TYPE (captures[2]))
1033 5025 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1034 0 : && TREE_CODE (captures[2]) == INTEGER_CST
1035 0 : && TREE_CODE (captures[3]) == INTEGER_CST
1036 5071 : && (mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1037 0 : TYPE_SIGN (type), &overflow),
1038 0 : !overflow)
1039 5071 : && (TYPE_UNSIGNED (type)
1040 5071 : || known_eq (factor, 1)
1041 0 : || (get_range_pos_neg (captures[0])
1042 0 : | (((op == PLUS_EXPR) ^ (tree_int_cst_sgn (captures[2]) < 0))
1043 0 : ? 1 : 2)) != 3)
1044 : )
1045 : {
1046 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail336;
1047 0 : {
1048 0 : tree res_op0;
1049 0 : {
1050 0 : tree _o1[2], _r1;
1051 0 : _o1[0] = captures[0];
1052 0 : _o1[1] = wide_int_to_tree (type, factor);
1053 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1054 0 : res_op0 = _r1;
1055 : }
1056 0 : tree res_op1;
1057 0 : res_op1 = wide_int_to_tree (type, mul);
1058 0 : tree _r;
1059 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1060 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1061 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1062 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1063 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1064 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1065 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1066 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 251, __FILE__, __LINE__, true);
1067 0 : return _r;
1068 : }
1069 0 : next_after_fail336:;
1070 : }
1071 : else
1072 : {
1073 5071 : {
1074 5071 : tree utype = unsigned_type_for (type);
1075 5071 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail337;
1076 5071 : {
1077 5071 : tree res_op0;
1078 5071 : {
1079 5071 : tree _o1[2], _r1;
1080 5071 : {
1081 5071 : tree _o2[2], _r2;
1082 5071 : {
1083 5071 : tree _o3[1], _r3;
1084 5071 : _o3[0] = captures[0];
1085 5071 : if (TREE_TYPE (_o3[0]) != utype)
1086 : {
1087 5071 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1088 : }
1089 : else
1090 : _r3 = _o3[0];
1091 5071 : _o2[0] = _r3;
1092 : }
1093 5071 : _o2[1] = wide_int_to_tree (utype, factor);
1094 5071 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1095 5071 : _o1[0] = _r2;
1096 : }
1097 5071 : {
1098 5071 : tree _o2[2], _r2;
1099 5071 : {
1100 5071 : tree _o3[1], _r3;
1101 5071 : _o3[0] = captures[3];
1102 5071 : if (TREE_TYPE (_o3[0]) != utype)
1103 : {
1104 14 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1105 : }
1106 : else
1107 : _r3 = _o3[0];
1108 5071 : _o2[0] = _r3;
1109 : }
1110 5071 : {
1111 5071 : tree _o3[1], _r3;
1112 5071 : _o3[0] = captures[2];
1113 5071 : if (TREE_TYPE (_o3[0]) != utype)
1114 : {
1115 46 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1116 : }
1117 : else
1118 : _r3 = _o3[0];
1119 5071 : _o2[1] = _r3;
1120 : }
1121 5071 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1122 5071 : _o1[1] = _r2;
1123 : }
1124 5071 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1125 5071 : res_op0 = _r1;
1126 : }
1127 5071 : tree _r;
1128 5071 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1129 5071 : if (TREE_SIDE_EFFECTS (captures[1]))
1130 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1131 5071 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 252, __FILE__, __LINE__, true);
1132 5071 : return _r;
1133 : }
1134 0 : next_after_fail337:;
1135 : }
1136 : }
1137 0 : }
1138 : }
1139 5148 : }
1140 77 : return NULL_TREE;
1141 : }
1142 :
1143 : tree
1144 6 : generic_simplify_227 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1145 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1146 : const enum tree_code ARG_UNUSED (neeq))
1147 : {
1148 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1149 6 : {
1150 6 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1151 6 : if (ptr_difference_const (captures[0], captures[2], &diff)
1152 : )
1153 : {
1154 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail383;
1155 0 : {
1156 0 : tree res_op0;
1157 0 : {
1158 0 : tree _o1[2], _r1;
1159 0 : _o1[0] = build_int_cst_type (inner_type, diff);
1160 0 : _o1[1] = captures[1];
1161 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1162 0 : res_op0 = _r1;
1163 : }
1164 0 : tree res_op1;
1165 0 : res_op1 = captures[3];
1166 0 : tree _r;
1167 0 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1168 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1169 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1170 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1171 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1172 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 296, __FILE__, __LINE__, true);
1173 0 : return _r;
1174 : }
1175 0 : next_after_fail383:;
1176 : }
1177 : }
1178 6 : return NULL_TREE;
1179 : }
1180 :
1181 : tree
1182 13 : generic_simplify_237 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1183 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1184 : const enum tree_code ARG_UNUSED (cmp))
1185 : {
1186 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1187 13 : if (tree_fits_shwi_p (captures[3])
1188 13 : && tree_to_shwi (captures[3]) > 0
1189 26 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1190 : )
1191 : {
1192 13 : if (tree_to_shwi (captures[3]) > wi::ctz (wi::to_wide (captures[5]))
1193 : )
1194 : {
1195 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail396;
1196 0 : {
1197 0 : tree _r;
1198 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1199 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1200 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1201 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1202 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1203 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1204 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1205 0 : if (TREE_SIDE_EFFECTS (captures[5]))
1206 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
1207 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 309, __FILE__, __LINE__, true);
1208 0 : return _r;
1209 : }
1210 0 : next_after_fail396:;
1211 : }
1212 : else
1213 : {
1214 13 : {
1215 13 : wide_int c1 = wi::to_wide (captures[3]);
1216 13 : wide_int c2 = wi::lrshift (wi::to_wide (captures[4]), c1);
1217 13 : wide_int c3 = wi::lrshift (wi::to_wide (captures[5]), c1);
1218 13 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail397;
1219 13 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail397;
1220 13 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail397;
1221 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail397;
1222 13 : {
1223 13 : tree res_op0;
1224 13 : {
1225 13 : tree _o1[2], _r1;
1226 13 : _o1[0] = captures[2];
1227 13 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[2]), c2);
1228 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1229 13 : res_op0 = _r1;
1230 : }
1231 13 : tree res_op1;
1232 13 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[2]), c3);
1233 13 : tree _r;
1234 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1235 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 310, __FILE__, __LINE__, true);
1236 13 : return _r;
1237 : }
1238 0 : next_after_fail397:;
1239 13 : }
1240 : }
1241 : }
1242 : return NULL_TREE;
1243 : }
1244 :
1245 : tree
1246 91646 : generic_simplify_250 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1247 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1248 : const enum tree_code ARG_UNUSED (cmp))
1249 : {
1250 91646 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1251 91646 : if (single_use (captures[0])
1252 : )
1253 : {
1254 91646 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail419;
1255 91646 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail419;
1256 91646 : {
1257 91646 : tree res_op0;
1258 91646 : res_op0 = captures[1];
1259 91646 : tree res_op1;
1260 91646 : res_op1 = captures[2];
1261 91646 : tree _r;
1262 91646 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1263 91646 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 332, __FILE__, __LINE__, true);
1264 91646 : return _r;
1265 : }
1266 : next_after_fail419:;
1267 : }
1268 : return NULL_TREE;
1269 : }
1270 :
1271 : tree
1272 921344 : generic_simplify_257 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1273 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1274 : const enum tree_code ARG_UNUSED (cmp),
1275 : const enum tree_code ARG_UNUSED (scmp))
1276 : {
1277 921344 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1278 921344 : if (single_use (captures[0])
1279 921344 : && (TREE_CODE (captures[2]) == INTEGER_CST || TREE_CODE (captures[2]) == VECTOR_CST)
1280 : )
1281 : {
1282 921344 : {
1283 921344 : tree otype = TREE_TYPE (captures[2]);
1284 921344 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail431;
1285 921344 : {
1286 921344 : tree res_op0;
1287 921344 : {
1288 921344 : tree _o1[1], _r1;
1289 921344 : _o1[0] = captures[1];
1290 921344 : if (TREE_TYPE (_o1[0]) != otype)
1291 : {
1292 191 : _r1 = fold_build1_loc (loc, NOP_EXPR, otype, _o1[0]);
1293 : }
1294 : else
1295 : _r1 = _o1[0];
1296 921344 : res_op0 = _r1;
1297 : }
1298 921344 : tree res_op1;
1299 921344 : {
1300 921344 : tree _o1[1], _r1;
1301 921344 : _o1[0] = captures[2];
1302 921344 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
1303 921344 : res_op1 = _r1;
1304 : }
1305 921344 : tree _r;
1306 921344 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1307 921344 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 343, __FILE__, __LINE__, true);
1308 921344 : return _r;
1309 : }
1310 0 : next_after_fail431:;
1311 : }
1312 : }
1313 : return NULL_TREE;
1314 : }
1315 :
1316 : tree
1317 1255 : generic_simplify_264 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1318 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1319 : const enum tree_code ARG_UNUSED (cmp),
1320 : const enum tree_code ARG_UNUSED (icmp))
1321 : {
1322 1255 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1323 1255 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1324 1255 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1325 : )
1326 : {
1327 1255 : {
1328 1255 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[0]))));
1329 1255 : tree type1 = TREE_TYPE (captures[1]);
1330 1255 : bool type1_signed_p = TYPE_SIGN (type1) == SIGNED;
1331 1255 : tree type2 = TREE_TYPE (captures[2]);
1332 1255 : bool type2_signed_p = TYPE_SIGN (type2) == SIGNED;
1333 1255 : if (fmt.can_represent_integral_type_p (type1)
1334 1255 : && fmt.can_represent_integral_type_p (type2)
1335 : )
1336 : {
1337 229 : if (cmp == ORDERED_EXPR || cmp == UNORDERED_EXPR
1338 : )
1339 : {
1340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail470;
1341 0 : {
1342 0 : tree _r;
1343 0 : _r = constant_boolean_node (cmp == ORDERED_EXPR, type);
1344 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1345 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1346 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1347 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1348 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 381, __FILE__, __LINE__, true);
1349 183 : return _r;
1350 : }
1351 0 : next_after_fail470:;
1352 : }
1353 : else
1354 : {
1355 229 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (type2)
1356 229 : && type1_signed_p >= type2_signed_p
1357 : )
1358 : {
1359 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail471;
1360 0 : {
1361 0 : tree res_op0;
1362 0 : res_op0 = captures[1];
1363 0 : tree res_op1;
1364 0 : {
1365 0 : tree _o1[1], _r1;
1366 0 : _o1[0] = captures[2];
1367 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1368 : {
1369 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1370 : }
1371 : else
1372 : _r1 = _o1[0];
1373 0 : res_op1 = _r1;
1374 : }
1375 0 : tree _r;
1376 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1377 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 382, __FILE__, __LINE__, true);
1378 0 : return _r;
1379 : }
1380 0 : next_after_fail471:;
1381 : }
1382 : else
1383 : {
1384 229 : if (TYPE_PRECISION (type1) < TYPE_PRECISION (type2)
1385 229 : && type1_signed_p <= type2_signed_p
1386 : )
1387 : {
1388 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail472;
1389 7 : {
1390 7 : tree res_op0;
1391 7 : {
1392 7 : tree _o1[1], _r1;
1393 7 : _o1[0] = captures[1];
1394 7 : if (TREE_TYPE (_o1[0]) != type2)
1395 : {
1396 7 : _r1 = fold_build1_loc (loc, NOP_EXPR, type2, _o1[0]);
1397 : }
1398 : else
1399 : _r1 = _o1[0];
1400 7 : res_op0 = _r1;
1401 : }
1402 7 : tree res_op1;
1403 7 : res_op1 = captures[2];
1404 7 : tree _r;
1405 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1406 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 383, __FILE__, __LINE__, true);
1407 7 : return _r;
1408 : }
1409 0 : next_after_fail472:;
1410 : }
1411 : else
1412 : {
1413 222 : if (TYPE_PRECISION (type1) == TYPE_PRECISION (type2)
1414 222 : && type1_signed_p == type2_signed_p
1415 : )
1416 : {
1417 176 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail473;
1418 176 : {
1419 176 : tree res_op0;
1420 176 : res_op0 = captures[1];
1421 176 : tree res_op1;
1422 176 : {
1423 176 : tree _o1[1], _r1;
1424 176 : _o1[0] = captures[2];
1425 176 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1426 : {
1427 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1428 : }
1429 : else
1430 : _r1 = _o1[0];
1431 176 : res_op1 = _r1;
1432 : }
1433 176 : tree _r;
1434 176 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1435 176 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 384, __FILE__, __LINE__, true);
1436 176 : return _r;
1437 : }
1438 0 : next_after_fail473:;
1439 : }
1440 : }
1441 : }
1442 : }
1443 : }
1444 : }
1445 : }
1446 : return NULL_TREE;
1447 : }
1448 :
1449 : tree
1450 0 : generic_simplify_276 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1451 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1452 : const enum tree_code ARG_UNUSED (cmp))
1453 : {
1454 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1455 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1456 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1457 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1458 0 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
1459 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1460 0 : && !wi::neg_p (wi::to_wide (captures[3]))
1461 : )
1462 : {
1463 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail508;
1464 0 : {
1465 0 : tree res_op0;
1466 0 : {
1467 0 : tree _o1[2], _r1;
1468 0 : _o1[0] = captures[2];
1469 0 : {
1470 0 : tree _o2[1], _r2;
1471 0 : {
1472 0 : tree _o3[1], _r3;
1473 0 : _o3[0] = captures[3];
1474 0 : _r3 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
1475 0 : _o2[0] = _r3;
1476 : }
1477 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1478 : {
1479 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1480 : }
1481 : else
1482 : _r2 = _o2[0];
1483 0 : _o1[1] = _r2;
1484 : }
1485 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1486 0 : res_op0 = _r1;
1487 : }
1488 0 : tree res_op1;
1489 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[2]));
1490 0 : tree _r;
1491 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1492 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 411, __FILE__, __LINE__, true);
1493 0 : return _r;
1494 : }
1495 0 : next_after_fail508:;
1496 : }
1497 : return NULL_TREE;
1498 : }
1499 :
1500 : tree
1501 805612 : generic_simplify_283 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1502 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1503 : const enum tree_code ARG_UNUSED (cmp),
1504 : const enum tree_code ARG_UNUSED (ncmp))
1505 : {
1506 805612 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1507 1547807 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1508 805612 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
1509 804316 : && element_precision (captures[0]) >= element_precision (captures[1])
1510 1611224 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
1511 : )
1512 : {
1513 12957 : {
1514 12957 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1515 12957 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail515;
1516 12957 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail515;
1517 12957 : {
1518 12957 : tree res_op0;
1519 12957 : {
1520 12957 : tree _o1[1], _r1;
1521 12957 : _o1[0] = captures[1];
1522 12957 : if (TREE_TYPE (_o1[0]) != stype)
1523 : {
1524 12740 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1525 : }
1526 : else
1527 : _r1 = _o1[0];
1528 12957 : res_op0 = _r1;
1529 : }
1530 12957 : tree res_op1;
1531 12957 : res_op1 = build_zero_cst (stype);
1532 12957 : tree _r;
1533 12957 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1534 12957 : if (TREE_SIDE_EFFECTS (captures[2]))
1535 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1536 12957 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
1537 12957 : return _r;
1538 : }
1539 : next_after_fail515:;
1540 : }
1541 : }
1542 : return NULL_TREE;
1543 : }
1544 :
1545 : tree
1546 2 : generic_simplify_293 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1547 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1548 : const enum tree_code ARG_UNUSED (cmp))
1549 : {
1550 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1551 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1552 2 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1553 2 : && TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1554 2 : && (TYPE_PRECISION (TREE_TYPE (captures[1]))
1555 2 : >= 2 * TYPE_PRECISION (TREE_TYPE (captures[2])))
1556 2 : && tree_fits_uhwi_p (captures[4])
1557 2 : && tree_to_uhwi (captures[4]) == TYPE_PRECISION (TREE_TYPE (captures[2]))
1558 2 : && types_match (captures[2], captures[3])
1559 2 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
1560 6 : && (optab_handler (umulv4_optab, TYPE_MODE (TREE_TYPE (captures[2])))
1561 : != CODE_FOR_nothing)
1562 : )
1563 : {
1564 2 : {
1565 2 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
1566 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail543;
1567 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail543;
1568 2 : {
1569 2 : tree res_op0;
1570 2 : {
1571 2 : tree _o1[1], _r1;
1572 2 : {
1573 2 : tree _o2[2], _r2;
1574 2 : _o2[0] = captures[2];
1575 2 : _o2[1] = captures[3];
1576 2 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
1577 2 : if (!_r2)
1578 0 : goto next_after_fail543;
1579 2 : _o1[0] = _r2;
1580 : }
1581 2 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
1582 2 : res_op0 = _r1;
1583 : }
1584 2 : tree res_op1;
1585 2 : res_op1 = build_zero_cst (t);
1586 2 : tree _r;
1587 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1588 2 : if (TREE_SIDE_EFFECTS (captures[4]))
1589 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1590 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 436, __FILE__, __LINE__, true);
1591 2 : return _r;
1592 : }
1593 : next_after_fail543:;
1594 : }
1595 : }
1596 : return NULL_TREE;
1597 : }
1598 :
1599 : tree
1600 366 : generic_simplify_296 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1601 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1602 : const enum tree_code ARG_UNUSED (op),
1603 : const enum tree_code ARG_UNUSED (cmp),
1604 : const combined_fn ARG_UNUSED (clz))
1605 : {
1606 366 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1607 366 : if (!sanitize_flags_p (SANITIZE_BUILTIN)
1608 366 : || (cfun && (cfun->curr_properties & PROP_ssa) != 0)
1609 : )
1610 : {
1611 302 : if (integer_zerop (captures[2]) && single_use (captures[0])
1612 : )
1613 : {
1614 59 : {
1615 59 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1616 59 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail555;
1617 59 : {
1618 59 : tree res_op0;
1619 59 : {
1620 59 : tree _o1[1], _r1;
1621 59 : _o1[0] = captures[1];
1622 59 : if (TREE_TYPE (_o1[0]) != stype)
1623 : {
1624 59 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1625 : }
1626 : else
1627 : _r1 = _o1[0];
1628 59 : res_op0 = _r1;
1629 : }
1630 59 : tree res_op1;
1631 59 : res_op1 = build_zero_cst (stype);
1632 59 : tree _r;
1633 59 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1634 59 : if (TREE_SIDE_EFFECTS (captures[2]))
1635 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1636 59 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 448, __FILE__, __LINE__, true);
1637 59 : return _r;
1638 : }
1639 0 : next_after_fail555:;
1640 : }
1641 : }
1642 : else
1643 : {
1644 243 : if (wi::to_wide (captures[2]) == TYPE_PRECISION (TREE_TYPE (captures[1])) - 1
1645 : )
1646 : {
1647 79 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail556;
1648 79 : {
1649 79 : tree res_op0;
1650 79 : res_op0 = captures[1];
1651 79 : tree res_op1;
1652 79 : res_op1 = build_one_cst (TREE_TYPE (captures[1]));
1653 79 : tree _r;
1654 79 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1655 79 : if (TREE_SIDE_EFFECTS (captures[2]))
1656 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1657 79 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 449, __FILE__, __LINE__, true);
1658 79 : return _r;
1659 : }
1660 0 : next_after_fail556:;
1661 : }
1662 : }
1663 : }
1664 : return NULL_TREE;
1665 : }
1666 :
1667 : tree
1668 0 : generic_simplify_299 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1669 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1670 : const enum tree_code ARG_UNUSED (op))
1671 : {
1672 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1673 0 : {
1674 0 : HOST_WIDE_INT zero_val = tree_to_shwi (captures[2]);
1675 0 : tree type0 = TREE_TYPE (captures[1]);
1676 0 : int prec = TYPE_PRECISION (type0);
1677 0 : if (prec <= MAX_FIXED_MODE_SIZE
1678 : )
1679 : {
1680 0 : if (tree_int_cst_sgn (captures[3]) < 0 || wi::to_widest (captures[3]) >= prec
1681 : )
1682 : {
1683 0 : if (zero_val != wi::to_widest (captures[3])
1684 : )
1685 : {
1686 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail561;
1687 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail561;
1688 0 : {
1689 0 : tree _r;
1690 0 : _r = constant_boolean_node (op == EQ_EXPR ? false : true, type);
1691 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1692 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1693 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1694 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 454, __FILE__, __LINE__, true);
1696 0 : return _r;
1697 : }
1698 0 : next_after_fail561:;
1699 : }
1700 : }
1701 : else
1702 : {
1703 0 : if (zero_val < 0 || zero_val >= prec
1704 : )
1705 : {
1706 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail562;
1707 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail562;
1708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail562;
1709 0 : {
1710 0 : tree res_op0;
1711 0 : {
1712 0 : tree _o1[2], _r1;
1713 0 : _o1[0] = captures[1];
1714 0 : _o1[1] = wide_int_to_tree (type0,
1715 0 : wi::mask (tree_to_uhwi (captures[3]) + 1,
1716 : false, prec));
1717 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1718 0 : res_op0 = _r1;
1719 : }
1720 0 : tree res_op1;
1721 0 : res_op1 = wide_int_to_tree (type0,
1722 0 : wi::shifted_mask (tree_to_uhwi (captures[3]), 1,
1723 : false, prec));
1724 0 : tree _r;
1725 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
1727 0 : return _r;
1728 : }
1729 0 : next_after_fail562:;
1730 : }
1731 : }
1732 : }
1733 : }
1734 0 : return NULL_TREE;
1735 : }
1736 :
1737 : tree
1738 2363 : generic_simplify_314 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1739 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1740 : const enum tree_code ARG_UNUSED (div))
1741 : {
1742 2363 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1743 2363 : if (!integer_zerop (captures[1])
1744 : )
1745 : {
1746 1737 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail582;
1747 1737 : {
1748 1737 : tree _r;
1749 1737 : _r = captures[0];
1750 1737 : if (TREE_SIDE_EFFECTS (captures[1]))
1751 59 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1752 1737 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 473, __FILE__, __LINE__, true);
1753 1737 : return _r;
1754 : }
1755 0 : next_after_fail582:;
1756 : }
1757 : return NULL_TREE;
1758 : }
1759 :
1760 : tree
1761 9049 : generic_simplify_320 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1762 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1763 : const enum tree_code ARG_UNUSED (div))
1764 : {
1765 9049 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1766 9049 : {
1767 9049 : wi::overflow_type overflow;
1768 9049 : wide_int mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1769 18098 : TYPE_SIGN (type), &overflow);
1770 9049 : if (div == EXACT_DIV_EXPR
1771 9049 : || optimize_successive_divisions_p (captures[3], captures[0])
1772 : )
1773 : {
1774 0 : if (!overflow
1775 : )
1776 : {
1777 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail588;
1778 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail588;
1779 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail588;
1780 0 : {
1781 0 : tree res_op0;
1782 0 : res_op0 = captures[1];
1783 0 : tree res_op1;
1784 0 : res_op1 = wide_int_to_tree (type, mul);
1785 0 : tree _r;
1786 0 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1787 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 479, __FILE__, __LINE__, true);
1788 0 : return _r;
1789 : }
1790 9049 : next_after_fail588:;
1791 : }
1792 : else
1793 : {
1794 0 : if (TYPE_UNSIGNED (type)
1795 0 : || mul != wi::min_value (TYPE_PRECISION (type), SIGNED)
1796 : )
1797 : {
1798 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail589;
1799 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail589;
1800 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail589;
1801 0 : {
1802 0 : tree _r;
1803 0 : _r = build_zero_cst (type);
1804 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1805 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1806 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
1807 0 : return _r;
1808 : }
1809 9049 : next_after_fail589:;
1810 : }
1811 : }
1812 : }
1813 0 : }
1814 9049 : return NULL_TREE;
1815 : }
1816 :
1817 : tree
1818 1572803 : generic_simplify_332 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1819 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1820 : const enum tree_code ARG_UNUSED (mod))
1821 : {
1822 1572803 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1823 1853140 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1824 1294935 : && INTEGRAL_TYPE_P (type)
1825 1294935 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1826 1294935 : && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[1]))
1827 3 : || TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1828 1 : || !TYPE_UNSIGNED (type))
1829 2867738 : && integer_pow2p (captures[2]) && tree_int_cst_sgn (captures[2]) > 0
1830 : )
1831 : {
1832 949356 : {
1833 949356 : tree utype = TREE_TYPE (captures[1]);
1834 949356 : if (!TYPE_OVERFLOW_WRAPS (utype))
1835 303 : utype = unsigned_type_for (utype);
1836 949356 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail601;
1837 949356 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail601;
1838 949356 : {
1839 949356 : tree res_op0;
1840 949356 : res_op0 = captures[0];
1841 949356 : tree res_op1;
1842 949356 : {
1843 949356 : tree _o1[1], _r1;
1844 949356 : {
1845 949356 : tree _o2[2], _r2;
1846 949356 : {
1847 949356 : tree _o3[1], _r3;
1848 949356 : _o3[0] = captures[1];
1849 949356 : if (TREE_TYPE (_o3[0]) != utype)
1850 : {
1851 303 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1852 : }
1853 : else
1854 : _r3 = _o3[0];
1855 949356 : _o2[0] = _r3;
1856 : }
1857 949356 : _o2[1] = build_one_cst (utype);
1858 949356 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1859 949356 : _o1[0] = _r2;
1860 : }
1861 949356 : if (TREE_TYPE (_o1[0]) != type)
1862 : {
1863 19205 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1864 : }
1865 : else
1866 : _r1 = _o1[0];
1867 949356 : res_op1 = _r1;
1868 : }
1869 949356 : tree _r;
1870 949356 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
1871 949356 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 492, __FILE__, __LINE__, true);
1872 949356 : return _r;
1873 : }
1874 : next_after_fail601:;
1875 : }
1876 : }
1877 : return NULL_TREE;
1878 : }
1879 :
1880 : tree
1881 0 : generic_simplify_349 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1882 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1883 : const enum tree_code ARG_UNUSED (cmp),
1884 : const enum tree_code ARG_UNUSED (minmax))
1885 : {
1886 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1887 0 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1888 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1889 : )
1890 : {
1891 0 : {
1892 0 : tree_code code;
1893 0 : widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (type) - 1, 0);
1894 0 : tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
1895 0 : code = minmax_from_comparison (ncmp, captures[0], c1, wi::to_widest (captures[4]));
1896 0 : if (ncmp == LE_EXPR
1897 0 : && code == MIN_EXPR
1898 0 : && wi::le_p (wi::to_wide (captures[3]),
1899 0 : wi::to_wide (captures[4]),
1900 0 : TYPE_SIGN (type))
1901 : )
1902 : {
1903 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail625;
1904 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail625;
1905 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail625;
1906 0 : {
1907 0 : tree res_op0;
1908 0 : res_op0 = captures[2];
1909 0 : tree res_op1;
1910 0 : res_op1 = captures[4];
1911 0 : tree _r;
1912 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
1913 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1914 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1915 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 516, __FILE__, __LINE__, true);
1916 0 : return _r;
1917 : }
1918 0 : next_after_fail625:;
1919 : }
1920 : else
1921 : {
1922 0 : if (ncmp == GT_EXPR
1923 0 : && code == MAX_EXPR
1924 0 : && wi::ge_p (wi::to_wide (captures[3]),
1925 0 : wi::to_wide (captures[4]),
1926 0 : TYPE_SIGN (type))
1927 : )
1928 : {
1929 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail626;
1930 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail626;
1931 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail626;
1932 0 : {
1933 0 : tree res_op0;
1934 0 : res_op0 = captures[2];
1935 0 : tree res_op1;
1936 0 : res_op1 = captures[4];
1937 0 : tree _r;
1938 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
1939 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1940 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1941 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 517, __FILE__, __LINE__, true);
1942 0 : return _r;
1943 : }
1944 0 : next_after_fail626:;
1945 : }
1946 : }
1947 0 : }
1948 : }
1949 : return NULL_TREE;
1950 : }
1951 :
1952 : tree
1953 0 : generic_simplify_367 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1954 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1955 : const enum tree_code ARG_UNUSED (cmp))
1956 : {
1957 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1958 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail644;
1959 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail644;
1960 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail644;
1961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail644;
1962 0 : {
1963 0 : tree _r;
1964 0 : _r = captures[3];
1965 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
1966 : return _r;
1967 : }
1968 : next_after_fail644:;
1969 : return NULL_TREE;
1970 : }
1971 :
1972 : tree
1973 1979 : generic_simplify_374 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1974 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1975 : {
1976 1979 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1977 1979 : if (INTEGRAL_TYPE_P (type)
1978 : )
1979 : {
1980 1979 : {
1981 1979 : tree itype = TREE_TYPE (captures[2]);
1982 1979 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail652;
1983 1979 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail652;
1984 1979 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail652;
1985 1979 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail652;
1986 1979 : {
1987 1979 : tree res_op0;
1988 1979 : {
1989 1979 : tree _o1[2], _r1;
1990 1979 : _o1[0] = captures[2];
1991 1979 : {
1992 1979 : tree _o2[1], _r2;
1993 1979 : _o2[0] = captures[0];
1994 1979 : if (TREE_TYPE (_o2[0]) != itype)
1995 : {
1996 1979 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
1997 : }
1998 : else
1999 : _r2 = _o2[0];
2000 1979 : _o1[1] = _r2;
2001 : }
2002 1979 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2003 1979 : res_op0 = _r1;
2004 : }
2005 1979 : tree _r;
2006 1979 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2007 1979 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 541, __FILE__, __LINE__, true);
2008 1979 : return _r;
2009 : }
2010 : next_after_fail652:;
2011 : }
2012 : }
2013 : return NULL_TREE;
2014 : }
2015 :
2016 : tree
2017 944 : generic_simplify_383 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2018 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2019 : const enum tree_code ARG_UNUSED (op))
2020 : {
2021 944 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2022 1888 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2023 1888 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
2024 : )
2025 : {
2026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail665;
2027 0 : {
2028 0 : tree res_op0;
2029 0 : res_op0 = captures[0];
2030 0 : tree res_op1;
2031 0 : res_op1 = captures[2];
2032 0 : tree _r;
2033 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2034 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2035 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 554, __FILE__, __LINE__, true);
2037 0 : return _r;
2038 : }
2039 0 : next_after_fail665:;
2040 : }
2041 : return NULL_TREE;
2042 : }
2043 :
2044 : tree
2045 6 : generic_simplify_388 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2046 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2047 : const enum tree_code ARG_UNUSED (minmax),
2048 : const enum tree_code ARG_UNUSED (cmp))
2049 : {
2050 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2051 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail671;
2052 6 : {
2053 6 : tree _r;
2054 6 : _r = constant_boolean_node (cmp == GE_EXPR || cmp == LE_EXPR, type);
2055 6 : if (TREE_SIDE_EFFECTS (captures[0]))
2056 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2057 6 : if (TREE_SIDE_EFFECTS (captures[1]))
2058 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2059 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 560, __FILE__, __LINE__, true);
2060 : return _r;
2061 : }
2062 0 : next_after_fail671:;
2063 0 : return NULL_TREE;
2064 : }
2065 :
2066 : tree
2067 9096 : generic_simplify_398 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2068 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2069 : const enum tree_code ARG_UNUSED (cmp))
2070 : {
2071 9096 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2072 9096 : if (single_use (captures[0])
2073 9096 : && ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2074 9080 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2075 : )
2076 : {
2077 6702 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail713;
2078 6702 : {
2079 6702 : tree res_op0;
2080 6702 : res_op0 = captures[2];
2081 6702 : tree res_op1;
2082 6702 : res_op1 = captures[1];
2083 6702 : tree _r;
2084 6702 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2085 6702 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 585, __FILE__, __LINE__, true);
2086 6702 : return _r;
2087 : }
2088 0 : next_after_fail713:;
2089 : }
2090 : return NULL_TREE;
2091 : }
2092 :
2093 : tree
2094 1484 : generic_simplify_403 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2095 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2096 : const enum tree_code ARG_UNUSED (cmp),
2097 : const enum tree_code ARG_UNUSED (neg_cmp))
2098 : {
2099 1484 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2100 1484 : if (flag_unsafe_math_optimizations
2101 : )
2102 : {
2103 9 : {
2104 9 : tree tem = const_binop (RDIV_EXPR, type, captures[2], captures[1]);
2105 9 : if (tem
2106 27 : && !(REAL_VALUE_ISINF (TREE_REAL_CST (tem))
2107 15 : || (real_zerop (tem) && !real_zerop (captures[1])))
2108 : )
2109 : {
2110 3 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[1]))
2111 : )
2112 : {
2113 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail718;
2114 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail718;
2115 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail718;
2116 2 : {
2117 2 : tree res_op0;
2118 2 : res_op0 = captures[0];
2119 2 : tree res_op1;
2120 2 : res_op1 = tem;
2121 2 : tree _r;
2122 2 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2123 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 590, __FILE__, __LINE__, true);
2124 2 : return _r;
2125 : }
2126 : next_after_fail718:;
2127 : }
2128 : else
2129 : {
2130 1 : if (real_less (TREE_REAL_CST_PTR (captures[1]), &dconst0)
2131 : )
2132 : {
2133 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail719;
2134 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail719;
2135 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail719;
2136 1 : {
2137 1 : tree res_op0;
2138 1 : res_op0 = captures[0];
2139 1 : tree res_op1;
2140 1 : res_op1 = tem;
2141 1 : tree _r;
2142 1 : _r = fold_build2_loc (loc, neg_cmp, type, res_op0, res_op1);
2143 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 591, __FILE__, __LINE__, true);
2144 1 : return _r;
2145 : }
2146 : next_after_fail719:;
2147 : }
2148 : }
2149 : }
2150 : }
2151 : }
2152 : return NULL_TREE;
2153 : }
2154 :
2155 : tree
2156 0 : generic_simplify_412 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2157 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2158 : const enum tree_code ARG_UNUSED (cmp),
2159 : const enum tree_code ARG_UNUSED (out))
2160 : {
2161 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2162 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2163 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2164 : )
2165 : {
2166 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail734;
2167 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail734;
2168 0 : {
2169 0 : tree res_op0;
2170 0 : {
2171 0 : tree _o1[1], _r1;
2172 0 : _o1[0] = captures[0];
2173 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2174 0 : res_op0 = _r1;
2175 : }
2176 0 : tree res_op1;
2177 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2178 0 : tree _r;
2179 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2180 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 588, __FILE__, __LINE__, true);
2181 0 : return _r;
2182 : }
2183 : next_after_fail734:;
2184 : }
2185 : return NULL_TREE;
2186 : }
2187 :
2188 : tree
2189 94 : generic_simplify_417 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2190 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2191 : {
2192 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2193 188 : if (INTEGRAL_TYPE_P (type)
2194 93 : && !TYPE_UNSIGNED (type)
2195 93 : && !TYPE_OVERFLOW_TRAPS (type)
2196 93 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2197 281 : && (expr_not_equal_to (captures[0], wi::to_wide (TYPE_MIN_VALUE (type)))
2198 187 : || expr_not_equal_to (captures[2], wi::minus_one (TYPE_PRECISION
2199 : (TREE_TYPE (captures[2]))),
2200 : gimple_match_ctx (captures[1])))
2201 : )
2202 : {
2203 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail743;
2204 0 : {
2205 0 : tree res_op0;
2206 0 : res_op0 = captures[0];
2207 0 : tree res_op1;
2208 0 : {
2209 0 : tree _o1[1], _r1;
2210 0 : _o1[0] = captures[2];
2211 0 : if (TREE_TYPE (_o1[0]) != type)
2212 : {
2213 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2214 : }
2215 : else
2216 : _r1 = _o1[0];
2217 0 : res_op1 = _r1;
2218 : }
2219 0 : tree _r;
2220 0 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
2221 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 611, __FILE__, __LINE__, true);
2222 0 : return _r;
2223 : }
2224 0 : next_after_fail743:;
2225 : }
2226 : return NULL_TREE;
2227 : }
2228 :
2229 : tree
2230 0 : generic_simplify_424 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2231 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2232 : const enum tree_code ARG_UNUSED (shiftrotate))
2233 : {
2234 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2235 0 : {
2236 0 : tree tem = uniform_vector_p (captures[1]);
2237 0 : if (tem
2238 : )
2239 : {
2240 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail750;
2241 0 : {
2242 0 : tree res_op0;
2243 0 : res_op0 = captures[0];
2244 0 : tree res_op1;
2245 0 : res_op1 = tem;
2246 0 : tree _r;
2247 0 : _r = fold_build2_loc (loc, shiftrotate, type, res_op0, res_op1);
2248 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2249 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2250 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 617, __FILE__, __LINE__, true);
2251 0 : return _r;
2252 : }
2253 0 : next_after_fail750:;
2254 : }
2255 : }
2256 : return NULL_TREE;
2257 : }
2258 :
2259 : tree
2260 3572112 : generic_simplify_431 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2261 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2262 : const enum tree_code ARG_UNUSED (bitop))
2263 : {
2264 3572112 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2265 3572112 : if (0
2266 : && INTEGRAL_TYPE_P (type)
2267 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2268 : && TREE_CODE (captures[3]) != INTEGER_CST
2269 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2270 : && TYPE_PRECISION (TREE_TYPE (captures[2])) > TYPE_PRECISION (type)
2271 : )
2272 : {
2273 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail764;
2274 : {
2275 : tree res_op0;
2276 : {
2277 : tree _o1[1], _r1;
2278 : _o1[0] = captures[2];
2279 : if (TREE_TYPE (_o1[0]) != type)
2280 : {
2281 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2282 : }
2283 : else
2284 : _r1 = _o1[0];
2285 : res_op0 = _r1;
2286 : }
2287 : tree res_op1;
2288 : {
2289 : tree _o1[1], _r1;
2290 : _o1[0] = captures[3];
2291 : if (TREE_TYPE (_o1[0]) != type)
2292 : {
2293 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2294 : }
2295 : else
2296 : _r1 = _o1[0];
2297 : res_op1 = _r1;
2298 : }
2299 : tree _r;
2300 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2301 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 630, __FILE__, __LINE__, true);
2302 : return _r;
2303 : }
2304 : next_after_fail764:;
2305 : }
2306 : else
2307 : {
2308 3572112 : if (0
2309 : && INTEGRAL_TYPE_P (type)
2310 : && types_match (type, TREE_TYPE (captures[2]))
2311 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)
2312 : )
2313 : {
2314 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail765;
2315 : {
2316 : tree res_op0;
2317 : res_op0 = captures[2];
2318 : tree res_op1;
2319 : {
2320 : tree _o1[1], _r1;
2321 : _o1[0] = captures[3];
2322 : if (TREE_TYPE (_o1[0]) != type)
2323 : {
2324 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2325 : }
2326 : else
2327 : _r1 = _o1[0];
2328 : res_op1 = _r1;
2329 : }
2330 : tree _r;
2331 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2332 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 631, __FILE__, __LINE__, true);
2333 : return _r;
2334 : }
2335 : next_after_fail765:;
2336 : }
2337 : }
2338 3572112 : return NULL_TREE;
2339 : }
2340 :
2341 : tree
2342 20286737 : generic_simplify_438 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2343 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2344 : const enum tree_code ARG_UNUSED (op))
2345 : {
2346 20286737 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2347 20286737 : if (INTEGRAL_TYPE_P (type)
2348 19908311 : && op != MULT_EXPR
2349 19908311 : && op != RDIV_EXPR
2350 10977425 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2351 10977425 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2352 10977425 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2353 10976117 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2354 10976117 : && type_has_mode_precision_p (type)
2355 10941962 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2356 0 : && types_match (captures[2], type)
2357 20286737 : && (types_match (captures[2], captures[4])
2358 0 : || poly_int_tree_p (captures[3]))
2359 : )
2360 : {
2361 0 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2362 : )
2363 : {
2364 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail782;
2365 0 : {
2366 0 : tree res_op0;
2367 0 : res_op0 = captures[2];
2368 0 : tree res_op1;
2369 0 : {
2370 0 : tree _o1[1], _r1;
2371 0 : _o1[0] = captures[4];
2372 0 : if (TREE_TYPE (_o1[0]) != type)
2373 : {
2374 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2375 : }
2376 : else
2377 : _r1 = _o1[0];
2378 0 : res_op1 = _r1;
2379 : }
2380 0 : tree _r;
2381 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2382 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2383 0 : return _r;
2384 : }
2385 0 : next_after_fail782:;
2386 : }
2387 : else
2388 : {
2389 0 : {
2390 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2391 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail783;
2392 0 : {
2393 0 : tree res_op0;
2394 0 : {
2395 0 : tree _o1[2], _r1;
2396 0 : {
2397 0 : tree _o2[1], _r2;
2398 0 : _o2[0] = captures[2];
2399 0 : if (TREE_TYPE (_o2[0]) != utype)
2400 : {
2401 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2402 : }
2403 : else
2404 : _r2 = _o2[0];
2405 0 : _o1[0] = _r2;
2406 : }
2407 0 : {
2408 0 : tree _o2[1], _r2;
2409 0 : _o2[0] = captures[4];
2410 0 : if (TREE_TYPE (_o2[0]) != utype)
2411 : {
2412 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2413 : }
2414 : else
2415 : _r2 = _o2[0];
2416 0 : _o1[1] = _r2;
2417 : }
2418 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2419 0 : res_op0 = _r1;
2420 : }
2421 0 : tree _r;
2422 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2423 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2424 0 : return _r;
2425 : }
2426 0 : next_after_fail783:;
2427 : }
2428 : }
2429 : }
2430 : else
2431 : {
2432 20239297 : if (FLOAT_TYPE_P (type)
2433 20334177 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2434 47440 : == DECIMAL_FLOAT_TYPE_P (type)
2435 : )
2436 : {
2437 47400 : {
2438 47400 : tree arg0 = strip_float_extensions (captures[2]);
2439 47400 : tree arg1 = strip_float_extensions (captures[4]);
2440 47400 : tree itype = TREE_TYPE (captures[0]);
2441 47400 : tree ty1 = TREE_TYPE (arg0);
2442 47400 : tree ty2 = TREE_TYPE (arg1);
2443 47400 : enum tree_code code = TREE_CODE (itype);
2444 0 : if (FLOAT_TYPE_P (ty1)
2445 47400 : && FLOAT_TYPE_P (ty2)
2446 : )
2447 : {
2448 47400 : {
2449 47400 : tree newtype = type;
2450 47400 : if (TYPE_MODE (ty1) == SDmode
2451 47132 : || TYPE_MODE (ty2) == SDmode
2452 94532 : || TYPE_MODE (type) == SDmode)
2453 283 : newtype = dfloat32_type_node;
2454 47400 : if (TYPE_MODE (ty1) == DDmode
2455 47254 : || TYPE_MODE (ty2) == DDmode
2456 94527 : || TYPE_MODE (type) == DDmode)
2457 275 : newtype = dfloat64_type_node;
2458 47400 : if (TYPE_MODE (ty1) == TDmode
2459 47399 : || TYPE_MODE (ty2) == TDmode
2460 94547 : || TYPE_MODE (type) == TDmode)
2461 268 : newtype = dfloat128_type_node;
2462 47400 : if ((newtype == dfloat32_type_node
2463 47396 : || newtype == dfloat64_type_node
2464 47253 : || newtype == dfloat128_type_node)
2465 415 : && newtype == type
2466 47411 : && types_match (newtype, type)
2467 : )
2468 : {
2469 11 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail784;
2470 5 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail784;
2471 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail784;
2472 5 : {
2473 5 : tree res_op0;
2474 5 : {
2475 5 : tree _o1[1], _r1;
2476 5 : _o1[0] = captures[2];
2477 5 : if (TREE_TYPE (_o1[0]) != newtype)
2478 : {
2479 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2480 : }
2481 : else
2482 : _r1 = _o1[0];
2483 5 : res_op0 = _r1;
2484 : }
2485 5 : tree res_op1;
2486 5 : {
2487 5 : tree _o1[1], _r1;
2488 5 : _o1[0] = captures[4];
2489 5 : if (TREE_TYPE (_o1[0]) != newtype)
2490 : {
2491 5 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2492 : }
2493 : else
2494 : _r1 = _o1[0];
2495 5 : res_op1 = _r1;
2496 : }
2497 5 : tree _r;
2498 5 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2499 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2500 5 : return _r;
2501 : }
2502 : next_after_fail784:;
2503 : }
2504 : else
2505 : {
2506 47389 : {
2507 47389 : if (element_precision (ty1) > element_precision (newtype))
2508 9826 : newtype = ty1;
2509 47389 : if (element_precision (ty2) > element_precision (newtype))
2510 4344 : newtype = ty2;
2511 47389 : if (element_precision (newtype) < element_precision (itype)
2512 12603 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2513 0 : || target_supports_op_p (newtype, op, optab_default))
2514 12603 : && (flag_unsafe_math_optimizations
2515 12595 : || (element_precision (newtype) == element_precision (type)
2516 12566 : && real_can_shorten_arithmetic (element_mode (itype),
2517 : element_mode (type))
2518 3603 : && !excess_precision_type (newtype)))
2519 47544 : && !types_match (itype, newtype)
2520 : )
2521 : {
2522 155 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail785;
2523 154 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail785;
2524 136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail785;
2525 136 : {
2526 136 : tree res_op0;
2527 136 : {
2528 136 : tree _o1[2], _r1;
2529 136 : {
2530 136 : tree _o2[1], _r2;
2531 136 : _o2[0] = captures[2];
2532 136 : if (TREE_TYPE (_o2[0]) != newtype)
2533 : {
2534 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2535 : }
2536 : else
2537 : _r2 = _o2[0];
2538 136 : _o1[0] = _r2;
2539 : }
2540 136 : {
2541 136 : tree _o2[1], _r2;
2542 136 : _o2[0] = captures[4];
2543 136 : if (TREE_TYPE (_o2[0]) != newtype)
2544 : {
2545 136 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2546 : }
2547 : else
2548 : _r2 = _o2[0];
2549 136 : _o1[1] = _r2;
2550 : }
2551 136 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2552 136 : res_op0 = _r1;
2553 : }
2554 136 : tree _r;
2555 136 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2556 136 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2557 136 : return _r;
2558 : }
2559 : next_after_fail785:;
2560 : }
2561 : }
2562 : }
2563 : }
2564 : }
2565 : }
2566 : }
2567 : }
2568 : return NULL_TREE;
2569 : }
2570 :
2571 : tree
2572 0 : generic_simplify_470 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2573 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2574 : const enum tree_code ARG_UNUSED (cmp))
2575 : {
2576 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2577 0 : if (fold_before_rtl_expansion_p ()
2578 : )
2579 : {
2580 0 : if (INTEGRAL_TYPE_P (type)
2581 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2582 : )
2583 : {
2584 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail817;
2585 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail817;
2586 0 : {
2587 0 : tree res_op0;
2588 0 : res_op0 = captures[0];
2589 0 : tree res_op1;
2590 0 : res_op1 = captures[3];
2591 0 : tree res_op2;
2592 0 : res_op2 = build_zero_cst (type);
2593 0 : tree _r;
2594 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2595 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 670, __FILE__, __LINE__, true);
2596 0 : return _r;
2597 : }
2598 : next_after_fail817:;
2599 : }
2600 : }
2601 : return NULL_TREE;
2602 : }
2603 :
2604 : tree
2605 0 : generic_simplify_479 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2606 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2607 : {
2608 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2609 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail847;
2610 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail847;
2611 0 : {
2612 0 : tree _r;
2613 0 : _r = captures[2];
2614 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2615 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2616 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2617 : return _r;
2618 : }
2619 : next_after_fail847:;
2620 : return NULL_TREE;
2621 : }
2622 :
2623 : tree
2624 214 : generic_simplify_483 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2625 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2626 : const enum tree_code ARG_UNUSED (code2),
2627 : const enum tree_code ARG_UNUSED (code1))
2628 : {
2629 214 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2630 214 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2631 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2632 214 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2633 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2634 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2635 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2636 208 : && bitwise_equal_p (captures[2], captures[5]))
2637 : )
2638 : {
2639 6 : {
2640 6 : bool one_before = false;
2641 6 : bool one_after = false;
2642 6 : int cmp = 0;
2643 6 : bool allbits = true;
2644 6 : if (TREE_CODE (captures[2]) == INTEGER_CST
2645 6 : && TREE_CODE (captures[5]) == INTEGER_CST)
2646 : {
2647 6 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2648 6 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2649 6 : auto t2 = wi::to_wide (captures[5]);
2650 6 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2651 6 : if (cmp < 0
2652 6 : && t1 == t2 - 1)
2653 : one_before = true;
2654 6 : if (cmp > 0
2655 6 : && t1 == t2 + 1)
2656 : one_after = true;
2657 : }
2658 6 : bool val;
2659 6 : switch (code2)
2660 : {
2661 0 : case EQ_EXPR: val = (cmp == 0); break;
2662 2 : case NE_EXPR: val = (cmp != 0); break;
2663 0 : case LT_EXPR: val = (cmp < 0); break;
2664 4 : case GT_EXPR: val = (cmp > 0); break;
2665 0 : case LE_EXPR: val = (cmp <= 0); break;
2666 0 : case GE_EXPR: val = (cmp >= 0); break;
2667 0 : default: gcc_unreachable ();
2668 : }
2669 6 : if (code1 == EQ_EXPR && val
2670 : )
2671 : {
2672 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail858;
2673 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail858;
2674 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail858;
2675 0 : {
2676 0 : tree _r;
2677 0 : _r = captures[0];
2678 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2679 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2680 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2681 0 : return _r;
2682 : }
2683 : next_after_fail858:;
2684 : }
2685 : else
2686 : {
2687 6 : if (code1 == EQ_EXPR && !val
2688 : )
2689 : {
2690 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail859;
2691 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail859;
2692 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail859;
2693 0 : {
2694 0 : tree _r;
2695 0 : _r = constant_boolean_node (false, type);
2696 0 : if (TREE_SIDE_EFFECTS (captures[4]))
2697 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
2698 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2699 0 : return _r;
2700 : }
2701 : next_after_fail859:;
2702 : }
2703 : else
2704 : {
2705 6 : if (code1 == NE_EXPR && !val && allbits
2706 : )
2707 : {
2708 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail860;
2709 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail860;
2710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail860;
2711 0 : {
2712 0 : tree _r;
2713 0 : _r = captures[3];
2714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2715 0 : return _r;
2716 : }
2717 : next_after_fail860:;
2718 : }
2719 : else
2720 : {
2721 6 : if ((code1 == NE_EXPR
2722 6 : && code2 == GE_EXPR
2723 0 : && cmp == 0
2724 0 : && allbits)
2725 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2726 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2727 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2728 : )
2729 : {
2730 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail861;
2731 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail861;
2732 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail861;
2733 0 : {
2734 0 : tree res_op0;
2735 0 : res_op0 = captures[4];
2736 0 : tree res_op1;
2737 0 : {
2738 0 : tree _o1[1], _r1;
2739 0 : _o1[0] = captures[2];
2740 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2741 : {
2742 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2743 : }
2744 : else
2745 : _r1 = _o1[0];
2746 0 : res_op1 = _r1;
2747 : }
2748 0 : tree _r;
2749 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2750 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2751 0 : return _r;
2752 : }
2753 : next_after_fail861:;
2754 : }
2755 : else
2756 : {
2757 6 : if ((code1 == NE_EXPR
2758 6 : && code2 == LE_EXPR
2759 0 : && cmp == 0
2760 0 : && allbits)
2761 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2762 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2763 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2764 : )
2765 : {
2766 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail862;
2767 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail862;
2768 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail862;
2769 0 : {
2770 0 : tree res_op0;
2771 0 : res_op0 = captures[4];
2772 0 : tree res_op1;
2773 0 : {
2774 0 : tree _o1[1], _r1;
2775 0 : _o1[0] = captures[2];
2776 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2777 : {
2778 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2779 : }
2780 : else
2781 : _r1 = _o1[0];
2782 0 : res_op1 = _r1;
2783 : }
2784 0 : tree _r;
2785 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2786 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2787 0 : return _r;
2788 : }
2789 : next_after_fail862:;
2790 : }
2791 : else
2792 : {
2793 6 : if ((code1 == NE_EXPR
2794 6 : && code2 == GT_EXPR
2795 : && one_after
2796 4 : && allbits)
2797 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2798 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2799 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2800 : )
2801 : {
2802 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail863;
2803 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail863;
2804 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail863;
2805 0 : {
2806 0 : tree res_op0;
2807 0 : res_op0 = captures[4];
2808 0 : tree res_op1;
2809 0 : {
2810 0 : tree _o1[1], _r1;
2811 0 : _o1[0] = captures[2];
2812 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2813 : {
2814 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2815 : }
2816 : else
2817 : _r1 = _o1[0];
2818 0 : res_op1 = _r1;
2819 : }
2820 0 : tree _r;
2821 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
2823 0 : return _r;
2824 : }
2825 : next_after_fail863:;
2826 : }
2827 : else
2828 : {
2829 6 : if ((code1 == NE_EXPR
2830 6 : && code2 == LT_EXPR
2831 : && one_before
2832 0 : && allbits)
2833 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2834 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2835 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2836 : )
2837 : {
2838 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail864;
2839 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail864;
2840 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail864;
2841 0 : {
2842 0 : tree res_op0;
2843 0 : res_op0 = captures[4];
2844 0 : tree res_op1;
2845 0 : {
2846 0 : tree _o1[1], _r1;
2847 0 : _o1[0] = captures[2];
2848 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2849 : {
2850 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2851 : }
2852 : else
2853 : _r1 = _o1[0];
2854 0 : res_op1 = _r1;
2855 : }
2856 0 : tree _r;
2857 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2858 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2859 0 : return _r;
2860 : }
2861 : next_after_fail864:;
2862 : }
2863 : }
2864 : }
2865 : }
2866 : }
2867 : }
2868 : }
2869 : }
2870 : }
2871 : return NULL_TREE;
2872 : }
2873 :
2874 : tree
2875 147 : generic_simplify_516 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2876 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2877 : {
2878 147 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2879 147 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail908;
2880 147 : {
2881 147 : tree res_op0;
2882 147 : {
2883 147 : tree _o1[1], _r1;
2884 147 : _o1[0] = captures[0];
2885 147 : if (TREE_TYPE (_o1[0]) != type)
2886 : {
2887 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2888 : }
2889 : else
2890 : _r1 = _o1[0];
2891 147 : res_op0 = _r1;
2892 : }
2893 147 : tree res_op1;
2894 147 : res_op1 = build_each_one_cst (type);
2895 147 : tree _r;
2896 147 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
2897 147 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 720, __FILE__, __LINE__, true);
2898 : return _r;
2899 : }
2900 0 : next_after_fail908:;
2901 0 : return NULL_TREE;
2902 : }
2903 :
2904 : tree
2905 0 : generic_simplify_523 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2906 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2907 : const enum tree_code ARG_UNUSED (minmax))
2908 : {
2909 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2910 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail916;
2911 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail916;
2912 0 : {
2913 0 : tree _r;
2914 0 : _r = captures[0];
2915 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 727, __FILE__, __LINE__, true);
2916 : return _r;
2917 : }
2918 : next_after_fail916:;
2919 : return NULL_TREE;
2920 : }
2921 :
2922 : tree
2923 0 : generic_simplify_531 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2924 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2925 : const enum tree_code ARG_UNUSED (minmax),
2926 : const enum tree_code ARG_UNUSED (cmp))
2927 : {
2928 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2929 0 : {
2930 0 : poly_int64 off0, off1;
2931 0 : tree base0, base1;
2932 0 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2933 : off0, off1,
2934 : 1
2935 : );
2936 0 : if (equal == 1
2937 : )
2938 : {
2939 0 : if (minmax == MIN_EXPR
2940 : )
2941 : {
2942 0 : if (known_le (off0, off1)
2943 : )
2944 : {
2945 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail929;
2946 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail929;
2947 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail929;
2948 0 : {
2949 0 : tree _r;
2950 0 : _r = captures[0];
2951 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 736, __FILE__, __LINE__, true);
2952 0 : return _r;
2953 : }
2954 0 : next_after_fail929:;
2955 : }
2956 : else
2957 : {
2958 0 : if (known_gt (off0, off1)
2959 : )
2960 : {
2961 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail930;
2962 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail930;
2963 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail930;
2964 0 : {
2965 0 : tree _r;
2966 0 : _r = captures[2];
2967 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 737, __FILE__, __LINE__, true);
2968 0 : return _r;
2969 : }
2970 0 : next_after_fail930:;
2971 : }
2972 : }
2973 : }
2974 : else
2975 : {
2976 0 : if (known_ge (off0, off1)
2977 : )
2978 : {
2979 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail931;
2980 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail931;
2981 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail931;
2982 0 : {
2983 0 : tree _r;
2984 0 : _r = captures[0];
2985 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2986 0 : return _r;
2987 : }
2988 0 : next_after_fail931:;
2989 : }
2990 : else
2991 : {
2992 0 : if (known_lt (off0, off1)
2993 : )
2994 : {
2995 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail932;
2996 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail932;
2997 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail932;
2998 0 : {
2999 0 : tree _r;
3000 0 : _r = captures[2];
3001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 739, __FILE__, __LINE__, true);
3002 0 : return _r;
3003 : }
3004 0 : next_after_fail932:;
3005 : }
3006 : }
3007 : }
3008 : }
3009 : }
3010 0 : return NULL_TREE;
3011 : }
3012 :
3013 : tree
3014 0 : generic_simplify_552 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3015 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3016 : const combined_fn ARG_UNUSED (cond_len_op))
3017 : {
3018 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3019 0 : {
3020 0 : tree op_type = TREE_TYPE (captures[5]);
3021 0 : if (inverse_conditions_p (captures[0], captures[2])
3022 0 : && element_precision (type) == element_precision (op_type)
3023 : )
3024 : {
3025 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail959;
3026 0 : {
3027 0 : tree res_op0;
3028 0 : {
3029 0 : tree _o1[6], _r1;
3030 0 : _o1[0] = captures[2];
3031 0 : _o1[1] = captures[3];
3032 0 : _o1[2] = captures[4];
3033 0 : {
3034 0 : tree _o2[1], _r2;
3035 0 : _o2[0] = captures[1];
3036 0 : if (TREE_TYPE (_o2[0]) != op_type)
3037 : {
3038 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3039 : }
3040 : else
3041 : _r2 = _o2[0];
3042 0 : _o1[3] = _r2;
3043 : }
3044 0 : _o1[4] = captures[6];
3045 0 : _o1[5] = captures[7];
3046 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 6, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5]);
3047 0 : if (!_r1)
3048 0 : goto next_after_fail959;
3049 0 : res_op0 = _r1;
3050 : }
3051 0 : tree _r;
3052 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3053 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3054 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3055 0 : if (TREE_SIDE_EFFECTS (captures[5]))
3056 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
3057 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 753, __FILE__, __LINE__, true);
3058 0 : return _r;
3059 : }
3060 : next_after_fail959:;
3061 : }
3062 : }
3063 : return NULL_TREE;
3064 : }
3065 :
3066 : tree
3067 1811703 : generic_simplify_564 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3068 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3069 : const enum tree_code ARG_UNUSED (cmp))
3070 : {
3071 1811703 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3072 1811703 : if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1]))
3073 1811703 : && (cmp != LTGT_EXPR || ! flag_trapping_math)
3074 : )
3075 : {
3076 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail974;
3077 10 : {
3078 10 : tree _r;
3079 20 : _r = constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR
3080 10 : ? false : true, type);
3081 10 : if (TREE_SIDE_EFFECTS (captures[0]))
3082 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3083 10 : if (TREE_SIDE_EFFECTS (captures[1]))
3084 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3085 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 768, __FILE__, __LINE__, true);
3086 10 : return _r;
3087 : }
3088 0 : next_after_fail974:;
3089 : }
3090 : return NULL_TREE;
3091 : }
3092 :
3093 : tree
3094 0 : generic_simplify_574 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3095 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3096 : const combined_fn ARG_UNUSED (sinhs),
3097 : const combined_fn ARG_UNUSED (atanhs),
3098 : const combined_fn ARG_UNUSED (sqrts))
3099 : {
3100 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3101 0 : if (!flag_errno_math
3102 : )
3103 : {
3104 0 : {
3105 0 : tree t_one = build_one_cst (type);
3106 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
3107 0 : {
3108 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail984;
3109 0 : tree res_op0;
3110 0 : res_op0 = unshare_expr (captures[1]);
3111 0 : tree res_op1;
3112 0 : {
3113 0 : tree _o1[1], _r1;
3114 0 : {
3115 0 : tree _o2[2], _r2;
3116 0 : {
3117 0 : tree _o3[2], _r3;
3118 0 : _o3[0] = t_one;
3119 0 : _o3[1] = unshare_expr (captures[1]);
3120 0 : _r3 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3121 0 : _o2[0] = _r3;
3122 : }
3123 0 : {
3124 0 : tree _o3[2], _r3;
3125 0 : _o3[0] = t_one;
3126 0 : _o3[1] = captures[1];
3127 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
3128 0 : _o2[1] = _r3;
3129 : }
3130 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3131 0 : _o1[0] = _r2;
3132 : }
3133 0 : _r1 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o1[0]), 1, _o1[0]);
3134 0 : if (!_r1)
3135 0 : goto next_after_fail984;
3136 0 : res_op1 = _r1;
3137 : }
3138 0 : tree _r;
3139 0 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
3140 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
3141 0 : return _r;
3142 : }
3143 : next_after_fail984:;
3144 : }
3145 : }
3146 : return NULL_TREE;
3147 : }
3148 :
3149 : tree
3150 0 : generic_simplify_589 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3151 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3152 : const combined_fn ARG_UNUSED (SIGNBIT))
3153 : {
3154 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3155 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail999;
3156 0 : {
3157 0 : tree _r;
3158 0 : _r = integer_zero_node;
3159 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3160 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3161 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 793, __FILE__, __LINE__, true);
3162 : return _r;
3163 : }
3164 0 : next_after_fail999:;
3165 0 : return NULL_TREE;
3166 : }
3167 :
3168 : tree
3169 0 : generic_simplify_596 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3170 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3171 : {
3172 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3173 0 : if (canonicalize_math_after_vectorization_p ()
3174 : )
3175 : {
3176 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1006;
3177 : {
3178 : tree res_op0;
3179 : res_op0 = captures[0];
3180 : tree res_op1;
3181 : res_op1 = captures[1];
3182 : tree res_op2;
3183 : res_op2 = captures[2];
3184 : tree _r;
3185 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3186 : if (!_r)
3187 : goto next_after_fail1006;
3188 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
3189 : return _r;
3190 : }
3191 0 : next_after_fail1006:;
3192 : }
3193 0 : return NULL_TREE;
3194 : }
3195 :
3196 : tree
3197 0 : generic_simplify_605 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3198 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3199 : {
3200 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3201 0 : if (canonicalize_math_after_vectorization_p ()
3202 : )
3203 : {
3204 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
3205 : {
3206 : tree res_op0;
3207 : res_op0 = captures[0];
3208 : tree res_op1;
3209 : res_op1 = captures[1];
3210 : tree res_op2;
3211 : res_op2 = captures[2];
3212 : tree res_op3;
3213 : res_op3 = captures[3];
3214 : tree res_op4;
3215 : res_op4 = captures[4];
3216 : tree _r;
3217 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3218 : if (!_r)
3219 : goto next_after_fail1015;
3220 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 809, __FILE__, __LINE__, true);
3221 : return _r;
3222 : }
3223 0 : next_after_fail1015:;
3224 : }
3225 0 : return NULL_TREE;
3226 : }
3227 :
3228 : tree
3229 0 : generic_simplify_614 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3230 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3231 : const enum tree_code ARG_UNUSED (rot),
3232 : const combined_fn ARG_UNUSED (popcount))
3233 : {
3234 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3235 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3236 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3237 0 : && (
3238 :
3239 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3240 : )
3241 : {
3242 0 : {
3243 0 : tree type0 = TREE_TYPE (captures[0]);
3244 0 : tree type1 = TREE_TYPE (captures[1]);
3245 0 : unsigned int prec0 = TYPE_PRECISION (type0);
3246 0 : unsigned int prec1 = TYPE_PRECISION (type1);
3247 0 : if (prec0 == prec1 || (prec0 > prec1 && TYPE_UNSIGNED (type1))
3248 : )
3249 : {
3250 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1024;
3251 0 : {
3252 0 : tree res_op0;
3253 0 : {
3254 0 : tree _o1[1], _r1;
3255 0 : _o1[0] = captures[2];
3256 0 : if (TREE_TYPE (_o1[0]) != type0)
3257 : {
3258 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3259 : }
3260 : else
3261 : _r1 = _o1[0];
3262 0 : res_op0 = _r1;
3263 : }
3264 0 : tree _r;
3265 0 : _r = maybe_build_call_expr_loc (loc, popcount, type, 1, res_op0);
3266 0 : if (!_r)
3267 0 : goto next_after_fail1024;
3268 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3269 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3270 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 815, __FILE__, __LINE__, true);
3271 0 : return _r;
3272 : }
3273 : next_after_fail1024:;
3274 : }
3275 : }
3276 : }
3277 : return NULL_TREE;
3278 : }
3279 :
3280 : tree
3281 0 : generic_simplify_626 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3282 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3283 : const enum tree_code ARG_UNUSED (plusminus),
3284 : const enum tree_code ARG_UNUSED (minusplus))
3285 : {
3286 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3287 0 : if (!VECTOR_INTEGER_TYPE_P (type)
3288 : && !FLOAT_WORDS_BIG_ENDIAN
3289 0 : && (operand_equal_p (captures[0], captures[2], 0)
3290 0 : ? operand_equal_p (captures[1], captures[3], 0)
3291 0 : : operand_equal_p (captures[0], captures[3], 0) && operand_equal_p (captures[1], captures[2], 0))
3292 : )
3293 : {
3294 0 : {
3295 0 : vec_perm_builder builder;
3296 0 : if (tree_to_vec_perm_builder (&builder, captures[4])
3297 : )
3298 : {
3299 0 : {
3300 0 : poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (type);
3301 0 : vec_perm_indices sel (builder, 2, nelts);
3302 0 : machine_mode vec_mode = TYPE_MODE (type);
3303 0 : machine_mode wide_mode;
3304 0 : scalar_mode wide_elt_mode;
3305 0 : poly_uint64 wide_nunits;
3306 0 : scalar_mode inner_mode = GET_MODE_INNER (vec_mode);
3307 0 : if (VECTOR_MODE_P (vec_mode)
3308 0 : && sel.series_p (0, 2, 0, 2)
3309 0 : && sel.series_p (1, 2, nelts + 1, 2)
3310 0 : && GET_MODE_2XWIDER_MODE (inner_mode).exists (&wide_elt_mode)
3311 0 : && multiple_p (GET_MODE_NUNITS (vec_mode), 2, &wide_nunits)
3312 0 : && related_vector_mode (vec_mode, wide_elt_mode,
3313 0 : wide_nunits).exists (&wide_mode)
3314 : )
3315 : {
3316 0 : {
3317 0 : tree stype
3318 0 : = lang_hooks.types.type_for_mode (GET_MODE_INNER (wide_mode),
3319 0 : TYPE_UNSIGNED (type));
3320 0 : tree ntype = build_vector_type_for_mode (stype, wide_mode);
3321 0 : const struct real_format *fmt_old = FLOAT_MODE_FORMAT (vec_mode);
3322 0 : const struct real_format *fmt_new = FLOAT_MODE_FORMAT (wide_mode);
3323 0 : if (TYPE_MODE (stype) != BLKmode
3324 0 : && VECTOR_TYPE_P (ntype)
3325 0 : && fmt_old != NULL
3326 0 : && fmt_new != NULL
3327 : )
3328 : {
3329 0 : {
3330 0 : if (known_eq (GET_MODE_NUNITS (wide_mode), 1)
3331 0 : && !target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3332 : ntype = stype;
3333 0 : if (fmt_new->signbit_rw
3334 0 : == fmt_old->signbit_rw + GET_MODE_UNIT_BITSIZE (vec_mode)
3335 0 : && fmt_new->signbit_rw == fmt_new->signbit_ro
3336 0 : && targetm.can_change_mode_class (TYPE_MODE (ntype),
3337 0 : TYPE_MODE (type), ALL_REGS)
3338 0 : && ((optimize_vectors_before_lowering_p ()
3339 0 : && VECTOR_TYPE_P (ntype))
3340 0 : || target_supports_op_p (ntype, NEGATE_EXPR, optab_vector))
3341 : )
3342 : {
3343 0 : if (plusminus == PLUS_EXPR
3344 : )
3345 : {
3346 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1037;
3347 0 : {
3348 0 : tree res_op0;
3349 0 : {
3350 0 : tree _o1[1], _r1;
3351 0 : {
3352 0 : tree _o2[1], _r2;
3353 0 : {
3354 0 : tree _o3[1], _r3;
3355 0 : _o3[0] = captures[3];
3356 0 : if (TREE_TYPE (_o3[0]) != ntype)
3357 : {
3358 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3359 : }
3360 : else
3361 : _r3 = _o3[0];
3362 0 : _o2[0] = _r3;
3363 : }
3364 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3365 0 : _o1[0] = _r2;
3366 : }
3367 0 : if (TREE_TYPE (_o1[0]) != type)
3368 : {
3369 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3370 : }
3371 : else
3372 : _r1 = _o1[0];
3373 0 : res_op0 = _r1;
3374 : }
3375 0 : tree res_op1;
3376 0 : res_op1 = captures[2];
3377 0 : tree _r;
3378 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3379 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3380 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3381 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3382 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3383 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3384 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3385 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
3386 0 : return _r;
3387 : }
3388 0 : next_after_fail1037:;
3389 : }
3390 : else
3391 : {
3392 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1038;
3393 0 : {
3394 0 : tree res_op0;
3395 0 : res_op0 = captures[0];
3396 0 : tree res_op1;
3397 0 : {
3398 0 : tree _o1[1], _r1;
3399 0 : {
3400 0 : tree _o2[1], _r2;
3401 0 : {
3402 0 : tree _o3[1], _r3;
3403 0 : _o3[0] = captures[1];
3404 0 : if (TREE_TYPE (_o3[0]) != ntype)
3405 : {
3406 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o3[0]);
3407 : }
3408 : else
3409 : _r3 = _o3[0];
3410 0 : _o2[0] = _r3;
3411 : }
3412 0 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
3413 0 : _o1[0] = _r2;
3414 : }
3415 0 : if (TREE_TYPE (_o1[0]) != type)
3416 : {
3417 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3418 : }
3419 : else
3420 : _r1 = _o1[0];
3421 0 : res_op1 = _r1;
3422 : }
3423 0 : tree _r;
3424 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3425 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3426 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3427 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3428 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3429 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3430 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3431 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 825, __FILE__, __LINE__, true);
3432 0 : return _r;
3433 : }
3434 0 : next_after_fail1038:;
3435 : }
3436 : }
3437 : }
3438 : }
3439 : }
3440 : }
3441 0 : }
3442 : }
3443 0 : }
3444 : }
3445 : return NULL_TREE;
3446 : }
3447 :
3448 : tree
3449 1330 : generic_simplify_CONJ_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3450 : {
3451 1330 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3452 1330 : switch (TREE_CODE (_p0))
3453 : {
3454 0 : CASE_CONVERT:
3455 0 : {
3456 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3457 0 : switch (TREE_CODE (_q20))
3458 : {
3459 0 : case CONJ_EXPR:
3460 0 : {
3461 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3462 0 : {
3463 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3464 0 : tree res = generic_simplify_560 (loc, type, _p0, captures);
3465 0 : if (res) return res;
3466 : }
3467 0 : break;
3468 : }
3469 0 : case COMPLEX_EXPR:
3470 0 : {
3471 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3472 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3473 0 : {
3474 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3475 0 : {
3476 0 : tree itype = TREE_TYPE (type);
3477 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1161;
3478 0 : {
3479 0 : tree res_op0;
3480 0 : {
3481 0 : tree _o1[1], _r1;
3482 0 : _o1[0] = captures[2];
3483 0 : if (TREE_TYPE (_o1[0]) != itype)
3484 : {
3485 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3486 : }
3487 : else
3488 : _r1 = _o1[0];
3489 0 : res_op0 = _r1;
3490 : }
3491 0 : tree res_op1;
3492 0 : {
3493 0 : tree _o1[1], _r1;
3494 0 : {
3495 0 : tree _o2[1], _r2;
3496 0 : _o2[0] = captures[3];
3497 0 : if (TREE_TYPE (_o2[0]) != itype)
3498 : {
3499 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3500 : }
3501 : else
3502 : _r2 = _o2[0];
3503 0 : _o1[0] = _r2;
3504 : }
3505 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3506 0 : res_op1 = _r1;
3507 : }
3508 0 : tree _r;
3509 0 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3510 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 887, __FILE__, __LINE__, true);
3511 0 : return _r;
3512 : }
3513 0 : next_after_fail1161:;
3514 : }
3515 : }
3516 0 : break;
3517 : }
3518 : default:;
3519 : }
3520 : break;
3521 : }
3522 1 : case CONJ_EXPR:
3523 1 : {
3524 1 : tree _q20 = TREE_OPERAND (_p0, 0);
3525 1 : {
3526 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3527 1 : tree res = generic_simplify_560 (loc, type, _p0, captures);
3528 1 : if (res) return res;
3529 : }
3530 0 : break;
3531 : }
3532 12 : case COMPLEX_EXPR:
3533 12 : {
3534 12 : tree _q20 = TREE_OPERAND (_p0, 0);
3535 12 : tree _q21 = TREE_OPERAND (_p0, 1);
3536 12 : {
3537 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3538 12 : {
3539 12 : tree itype = TREE_TYPE (type);
3540 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1162;
3541 12 : {
3542 12 : tree res_op0;
3543 12 : {
3544 12 : tree _o1[1], _r1;
3545 12 : _o1[0] = captures[2];
3546 12 : if (TREE_TYPE (_o1[0]) != itype)
3547 : {
3548 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
3549 : }
3550 : else
3551 : _r1 = _o1[0];
3552 12 : res_op0 = _r1;
3553 : }
3554 12 : tree res_op1;
3555 12 : {
3556 12 : tree _o1[1], _r1;
3557 12 : {
3558 12 : tree _o2[1], _r2;
3559 12 : _o2[0] = captures[3];
3560 12 : if (TREE_TYPE (_o2[0]) != itype)
3561 : {
3562 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
3563 : }
3564 : else
3565 : _r2 = _o2[0];
3566 12 : _o1[0] = _r2;
3567 : }
3568 12 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3569 12 : res_op1 = _r1;
3570 : }
3571 12 : tree _r;
3572 12 : _r = fold_build2_loc (loc, COMPLEX_EXPR, type, res_op0, res_op1);
3573 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 887, __FILE__, __LINE__, true);
3574 12 : return _r;
3575 : }
3576 0 : next_after_fail1162:;
3577 : }
3578 : }
3579 0 : break;
3580 : }
3581 : default:;
3582 : }
3583 : return NULL_TREE;
3584 : }
3585 :
3586 : tree
3587 96777583 : generic_simplify_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3588 : {
3589 96777583 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3590 96777583 : if (integer_zerop (_p1))
3591 : {
3592 26583903 : {
3593 26583903 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3594 26583903 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1242;
3595 26583903 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1242;
3596 26583903 : {
3597 26583903 : tree res_op0;
3598 26583903 : res_op0 = captures[0];
3599 26583903 : tree _r;
3600 26583903 : _r = non_lvalue_loc (loc, res_op0);
3601 26583903 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
3602 26583903 : return _r;
3603 : }
3604 : next_after_fail1242:;
3605 : }
3606 : }
3607 70193680 : if (real_zerop (_p1))
3608 : {
3609 5301 : {
3610 5301 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3611 5301 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures);
3612 5301 : if (res) return res;
3613 : }
3614 : }
3615 70193585 : switch (TREE_CODE (_p0))
3616 : {
3617 6569744 : case PLUS_EXPR:
3618 6569744 : {
3619 6569744 : tree _q20 = TREE_OPERAND (_p0, 0);
3620 6569744 : tree _q21 = TREE_OPERAND (_p0, 1);
3621 6569744 : switch (TREE_CODE (_q21))
3622 : {
3623 115434 : case REAL_CST:
3624 115434 : {
3625 115434 : switch (TREE_CODE (_p1))
3626 : {
3627 70 : case REAL_CST:
3628 70 : {
3629 70 : {
3630 70 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3631 70 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures, PLUS_EXPR, PLUS_EXPR);
3632 70 : if (res) return res;
3633 : }
3634 67 : break;
3635 : }
3636 : default:;
3637 : }
3638 : break;
3639 : }
3640 : default:;
3641 : }
3642 : break;
3643 : }
3644 2114442 : case MINUS_EXPR:
3645 2114442 : {
3646 2114442 : tree _q20 = TREE_OPERAND (_p0, 0);
3647 2114442 : tree _q21 = TREE_OPERAND (_p0, 1);
3648 2114442 : switch (TREE_CODE (_q21))
3649 : {
3650 21844 : case REAL_CST:
3651 21844 : {
3652 21844 : switch (TREE_CODE (_p1))
3653 : {
3654 190 : case REAL_CST:
3655 190 : {
3656 190 : {
3657 190 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3658 190 : tree res = generic_simplify_55 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR);
3659 190 : if (res) return res;
3660 : }
3661 188 : break;
3662 : }
3663 : default:;
3664 : }
3665 : break;
3666 : }
3667 : default:;
3668 : }
3669 : break;
3670 : }
3671 12239 : case MAX_EXPR:
3672 12239 : {
3673 12239 : tree _q20 = TREE_OPERAND (_p0, 0);
3674 12239 : tree _q21 = TREE_OPERAND (_p0, 1);
3675 12239 : if (integer_zerop (_q21))
3676 : {
3677 4652 : switch (TREE_CODE (_p1))
3678 : {
3679 114 : case MAX_EXPR:
3680 114 : {
3681 114 : tree _q50 = TREE_OPERAND (_p1, 0);
3682 114 : tree _q51 = TREE_OPERAND (_p1, 1);
3683 114 : switch (TREE_CODE (_q50))
3684 : {
3685 48 : case NEGATE_EXPR:
3686 48 : {
3687 48 : tree _q60 = TREE_OPERAND (_q50, 0);
3688 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
3689 : {
3690 48 : if (integer_zerop (_q51))
3691 : {
3692 48 : {
3693 48 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3694 48 : tree res = generic_simplify_56 (loc, type, _p0, _p1, captures);
3695 48 : if (res) return res;
3696 : }
3697 : }
3698 : }
3699 : break;
3700 : }
3701 : default:;
3702 : }
3703 : break;
3704 : }
3705 : default:;
3706 : }
3707 : }
3708 12191 : switch (TREE_CODE (_q20))
3709 : {
3710 18 : case NEGATE_EXPR:
3711 18 : {
3712 18 : tree _q30 = TREE_OPERAND (_q20, 0);
3713 18 : if (integer_zerop (_q21))
3714 : {
3715 18 : switch (TREE_CODE (_p1))
3716 : {
3717 18 : case MAX_EXPR:
3718 18 : {
3719 18 : tree _q60 = TREE_OPERAND (_p1, 0);
3720 18 : tree _q61 = TREE_OPERAND (_p1, 1);
3721 18 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
3722 : {
3723 18 : if (integer_zerop (_q61))
3724 : {
3725 18 : {
3726 18 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
3727 18 : tree res = generic_simplify_56 (loc, type, _p0, _p1, captures);
3728 18 : if (res) return res;
3729 : }
3730 : }
3731 : }
3732 : break;
3733 : }
3734 : default:;
3735 : }
3736 : }
3737 : break;
3738 : }
3739 : default:;
3740 : }
3741 : break;
3742 : }
3743 13340583 : case MULT_EXPR:
3744 13340583 : {
3745 13340583 : tree _q20 = TREE_OPERAND (_p0, 0);
3746 13340583 : tree _q21 = TREE_OPERAND (_p0, 1);
3747 13340583 : switch (TREE_CODE (_q20))
3748 : {
3749 1967178 : case PLUS_EXPR:
3750 1967178 : {
3751 1967178 : tree _q30 = TREE_OPERAND (_q20, 0);
3752 1967178 : tree _q31 = TREE_OPERAND (_q20, 1);
3753 1967178 : switch (TREE_CODE (_q31))
3754 : {
3755 635333 : case INTEGER_CST:
3756 635333 : {
3757 635333 : switch (TREE_CODE (_q21))
3758 : {
3759 191501 : case INTEGER_CST:
3760 191501 : {
3761 191501 : switch (TREE_CODE (_p1))
3762 : {
3763 126865 : case INTEGER_CST:
3764 126865 : {
3765 126865 : {
3766 126865 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
3767 126865 : {
3768 126865 : bool overflowed = true;
3769 126865 : wi::overflow_type ovf1;
3770 126865 : wi::overflow_type ovf2;
3771 126865 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[4]),
3772 253730 : TYPE_SIGN (type), &ovf1);
3773 380595 : wide_int add = wi::add (mul, wi::to_wide (captures[5]),
3774 126865 : TYPE_SIGN (type), &ovf2);
3775 126865 : if (TYPE_OVERFLOW_UNDEFINED (type))
3776 : {
3777 : }
3778 : else
3779 66004 : overflowed = false;
3780 66004 : if (!overflowed
3781 : )
3782 : {
3783 66004 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1243;
3784 66004 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1243;
3785 66004 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1243;
3786 66004 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1243;
3787 66004 : {
3788 66004 : tree res_op0;
3789 66004 : {
3790 66004 : tree _o1[2], _r1;
3791 66004 : _o1[0] = captures[2];
3792 66004 : _o1[1] = captures[4];
3793 66004 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3794 66004 : res_op0 = _r1;
3795 : }
3796 66004 : tree res_op1;
3797 66004 : res_op1 = wide_int_to_tree (type, add);
3798 66004 : tree _r;
3799 66004 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
3800 66004 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
3801 66004 : return _r;
3802 : }
3803 60861 : next_after_fail1243:;
3804 : }
3805 126865 : }
3806 : }
3807 60861 : break;
3808 : }
3809 : default:;
3810 : }
3811 : break;
3812 : }
3813 : default:;
3814 : }
3815 : break;
3816 : }
3817 : default:;
3818 : }
3819 : break;
3820 : }
3821 : default:;
3822 : }
3823 : break;
3824 : }
3825 25841 : case LSHIFT_EXPR:
3826 25841 : {
3827 25841 : tree _q20 = TREE_OPERAND (_p0, 0);
3828 25841 : tree _q21 = TREE_OPERAND (_p0, 1);
3829 25841 : switch (TREE_CODE (_p1))
3830 : {
3831 688 : case LSHIFT_EXPR:
3832 688 : {
3833 688 : tree _q50 = TREE_OPERAND (_p1, 0);
3834 688 : tree _q51 = TREE_OPERAND (_p1, 1);
3835 688 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3836 : {
3837 7 : {
3838 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
3839 7 : tree res = generic_simplify_57 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3840 7 : if (res) return res;
3841 : }
3842 : }
3843 : break;
3844 : }
3845 : default:;
3846 : }
3847 : break;
3848 : }
3849 222369 : case BIT_AND_EXPR:
3850 222369 : {
3851 222369 : tree _q20 = TREE_OPERAND (_p0, 0);
3852 222369 : tree _q21 = TREE_OPERAND (_p0, 1);
3853 222369 : switch (TREE_CODE (_p1))
3854 : {
3855 300 : case BIT_AND_EXPR:
3856 300 : {
3857 300 : tree _q50 = TREE_OPERAND (_p1, 0);
3858 300 : tree _q51 = TREE_OPERAND (_p1, 1);
3859 300 : {
3860 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
3861 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3862 300 : if (res) return res;
3863 : }
3864 300 : {
3865 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q50 };
3866 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3867 300 : if (res) return res;
3868 : }
3869 300 : {
3870 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q51 };
3871 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3872 300 : if (res) return res;
3873 : }
3874 300 : {
3875 300 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q50 };
3876 300 : tree res = generic_simplify_5 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3877 300 : if (res) return res;
3878 : }
3879 300 : break;
3880 : }
3881 222369 : default:;
3882 : }
3883 222369 : if (integer_onep (_q21))
3884 : {
3885 124943 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
3886 : {
3887 29 : {
3888 29 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
3889 29 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
3890 29 : if (res) return res;
3891 : }
3892 : }
3893 : }
3894 : break;
3895 : }
3896 70127474 : default:;
3897 : }
3898 70127474 : if (real_zerop (_p0))
3899 : {
3900 0 : {
3901 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
3902 0 : tree res = generic_simplify_54 (loc, type, _p0, _p1, captures);
3903 0 : if (res) return res;
3904 : }
3905 : }
3906 70127474 : switch (TREE_CODE (_p1))
3907 : {
3908 6389 : case BIT_AND_EXPR:
3909 6389 : {
3910 6389 : tree _q30 = TREE_OPERAND (_p1, 0);
3911 6389 : tree _q31 = TREE_OPERAND (_p1, 1);
3912 6389 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
3913 : {
3914 16 : if (integer_onep (_q31))
3915 : {
3916 16 : {
3917 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
3918 16 : tree res = generic_simplify_58 (loc, type, _p0, _p1, captures);
3919 16 : if (res) return res;
3920 : }
3921 : }
3922 : }
3923 : break;
3924 : }
3925 70127458 : default:;
3926 : }
3927 70127458 : switch (TREE_CODE (_p0))
3928 : {
3929 222340 : case BIT_AND_EXPR:
3930 222340 : {
3931 222340 : tree _q20 = TREE_OPERAND (_p0, 0);
3932 222340 : tree _q21 = TREE_OPERAND (_p0, 1);
3933 222340 : switch (TREE_CODE (_p1))
3934 : {
3935 9 : case BIT_XOR_EXPR:
3936 9 : {
3937 9 : tree _q50 = TREE_OPERAND (_p1, 0);
3938 9 : tree _q51 = TREE_OPERAND (_p1, 1);
3939 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3940 : {
3941 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3942 : {
3943 0 : {
3944 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3945 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3946 0 : if (res) return res;
3947 : }
3948 : }
3949 : }
3950 : break;
3951 : }
3952 1 : case BIT_IOR_EXPR:
3953 1 : {
3954 1 : tree _q50 = TREE_OPERAND (_p1, 0);
3955 1 : tree _q51 = TREE_OPERAND (_p1, 1);
3956 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
3957 : {
3958 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
3959 : {
3960 0 : {
3961 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3962 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
3963 0 : if (res) return res;
3964 : }
3965 : }
3966 : }
3967 : break;
3968 : }
3969 222340 : default:;
3970 : }
3971 222340 : switch (TREE_CODE (_q21))
3972 : {
3973 222036 : case INTEGER_CST:
3974 222036 : {
3975 222036 : switch (TREE_CODE (_p1))
3976 : {
3977 19570 : CASE_CONVERT:
3978 19570 : {
3979 19570 : tree _q50 = TREE_OPERAND (_p1, 0);
3980 19570 : switch (TREE_CODE (_q50))
3981 : {
3982 0 : case BIT_AND_EXPR:
3983 0 : {
3984 0 : tree _q60 = TREE_OPERAND (_q50, 0);
3985 0 : tree _q61 = TREE_OPERAND (_q50, 1);
3986 0 : switch (TREE_CODE (_q61))
3987 : {
3988 0 : case INTEGER_CST:
3989 0 : {
3990 0 : {
3991 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50, _q60, _q61 };
3992 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, PLUS_EXPR);
3993 0 : if (res) return res;
3994 : }
3995 0 : break;
3996 : }
3997 : default:;
3998 : }
3999 : break;
4000 : }
4001 : default:;
4002 : }
4003 : break;
4004 : }
4005 300 : case BIT_AND_EXPR:
4006 300 : {
4007 300 : tree _q50 = TREE_OPERAND (_p1, 0);
4008 300 : tree _q51 = TREE_OPERAND (_p1, 1);
4009 300 : switch (TREE_CODE (_q51))
4010 : {
4011 300 : case INTEGER_CST:
4012 300 : {
4013 300 : {
4014 300 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50, _q51 };
4015 300 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4016 300 : if (res) return res;
4017 : }
4018 200 : break;
4019 : }
4020 : default:;
4021 : }
4022 : break;
4023 : }
4024 : default:;
4025 : }
4026 : break;
4027 : }
4028 : default:;
4029 : }
4030 : break;
4031 : }
4032 1508 : case BIT_XOR_EXPR:
4033 1508 : {
4034 1508 : tree _q20 = TREE_OPERAND (_p0, 0);
4035 1508 : tree _q21 = TREE_OPERAND (_p0, 1);
4036 1508 : switch (TREE_CODE (_p1))
4037 : {
4038 0 : case BIT_AND_EXPR:
4039 0 : {
4040 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4041 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4042 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4043 : {
4044 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4045 : {
4046 0 : {
4047 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4048 0 : tree res = generic_simplify_23 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4049 0 : if (res) return res;
4050 : }
4051 : }
4052 : }
4053 : break;
4054 : }
4055 : default:;
4056 : }
4057 : break;
4058 : }
4059 552 : case BIT_IOR_EXPR:
4060 552 : {
4061 552 : tree _q20 = TREE_OPERAND (_p0, 0);
4062 552 : tree _q21 = TREE_OPERAND (_p0, 1);
4063 552 : switch (TREE_CODE (_p1))
4064 : {
4065 0 : case BIT_AND_EXPR:
4066 0 : {
4067 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4068 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4069 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4070 : {
4071 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4072 : {
4073 0 : {
4074 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4075 0 : tree res = generic_simplify_59 (loc, type, _p0, _p1, captures);
4076 0 : if (res) return res;
4077 : }
4078 : }
4079 : }
4080 : break;
4081 : }
4082 : default:;
4083 : }
4084 : break;
4085 : }
4086 2114440 : case MINUS_EXPR:
4087 2114440 : {
4088 2114440 : tree _q20 = TREE_OPERAND (_p0, 0);
4089 2114440 : tree _q21 = TREE_OPERAND (_p0, 1);
4090 2114440 : switch (TREE_CODE (_q20))
4091 : {
4092 2 : case BIT_AND_EXPR:
4093 2 : {
4094 2 : tree _q30 = TREE_OPERAND (_q20, 0);
4095 2 : tree _q31 = TREE_OPERAND (_q20, 1);
4096 2 : switch (TREE_CODE (_q21))
4097 : {
4098 1 : case BIT_IOR_EXPR:
4099 1 : {
4100 1 : tree _q60 = TREE_OPERAND (_q21, 0);
4101 1 : tree _q61 = TREE_OPERAND (_q21, 1);
4102 1 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4103 : {
4104 1 : if ((_q61 == _q31 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q31, 0) && types_match (_q61, _q31)))
4105 : {
4106 1 : if (integer_all_onesp (_p1))
4107 : {
4108 1 : {
4109 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
4110 1 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4111 1 : if (res) return res;
4112 : }
4113 : }
4114 : }
4115 : }
4116 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4117 : {
4118 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
4119 : {
4120 0 : if (integer_all_onesp (_p1))
4121 : {
4122 0 : {
4123 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q31, _q30 };
4124 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4125 0 : if (res) return res;
4126 : }
4127 : }
4128 : }
4129 : }
4130 : break;
4131 : }
4132 : default:;
4133 : }
4134 : break;
4135 : }
4136 2114439 : default:;
4137 : }
4138 2114439 : {
4139 2114439 : tree _q20_pops[1];
4140 2114439 : if (tree_nop_convert (_q20, _q20_pops))
4141 : {
4142 953540 : tree _q30 = _q20_pops[0];
4143 953540 : switch (TREE_CODE (_q30))
4144 : {
4145 0 : case BIT_AND_EXPR:
4146 0 : {
4147 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4148 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4149 0 : {
4150 0 : tree _q21_pops[1];
4151 0 : if (tree_nop_convert (_q21, _q21_pops))
4152 : {
4153 0 : tree _q70 = _q21_pops[0];
4154 0 : switch (TREE_CODE (_q70))
4155 : {
4156 0 : case BIT_IOR_EXPR:
4157 0 : {
4158 0 : tree _q80 = TREE_OPERAND (_q70, 0);
4159 0 : tree _q81 = TREE_OPERAND (_q70, 1);
4160 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
4161 : {
4162 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
4163 : {
4164 0 : if (integer_all_onesp (_p1))
4165 : {
4166 0 : {
4167 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
4168 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4169 0 : if (res) return res;
4170 : }
4171 : }
4172 : }
4173 : }
4174 0 : if ((_q80 == _q41 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q41, 0) && types_match (_q80, _q41)))
4175 : {
4176 0 : if ((_q81 == _q40 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q40, 0) && types_match (_q81, _q40)))
4177 : {
4178 0 : if (integer_all_onesp (_p1))
4179 : {
4180 0 : {
4181 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q41, _q40 };
4182 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
4183 0 : if (res) return res;
4184 : }
4185 : }
4186 : }
4187 : }
4188 : break;
4189 : }
4190 : default:;
4191 : }
4192 : }
4193 : }
4194 0 : break;
4195 : }
4196 : default:;
4197 : }
4198 : }
4199 : }
4200 2114439 : {
4201 2114439 : tree _q21_pops[1];
4202 2114439 : if (tree_nop_convert (_q21, _q21_pops))
4203 : {
4204 1171765 : tree _q40 = _q21_pops[0];
4205 1171765 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4206 : {
4207 34 : {
4208 34 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
4209 34 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
4210 34 : if (res) return res;
4211 : }
4212 : }
4213 : }
4214 : }
4215 2114409 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4216 : {
4217 48274 : {
4218 48274 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4219 48274 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
4220 48274 : if (res) return res;
4221 : }
4222 : }
4223 : break;
4224 : }
4225 18750305 : CASE_CONVERT:
4226 18750305 : {
4227 18750305 : tree _q20 = TREE_OPERAND (_p0, 0);
4228 18750305 : switch (TREE_CODE (_q20))
4229 : {
4230 72 : case BIT_AND_EXPR:
4231 72 : {
4232 72 : tree _q30 = TREE_OPERAND (_q20, 0);
4233 72 : tree _q31 = TREE_OPERAND (_q20, 1);
4234 72 : switch (TREE_CODE (_q31))
4235 : {
4236 8 : case INTEGER_CST:
4237 8 : {
4238 8 : switch (TREE_CODE (_p1))
4239 : {
4240 0 : CASE_CONVERT:
4241 0 : {
4242 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4243 0 : switch (TREE_CODE (_q60))
4244 : {
4245 0 : case BIT_AND_EXPR:
4246 0 : {
4247 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4248 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4249 0 : switch (TREE_CODE (_q71))
4250 : {
4251 0 : case INTEGER_CST:
4252 0 : {
4253 0 : {
4254 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q60, _q70, _q71 };
4255 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4256 0 : if (res) return res;
4257 : }
4258 0 : break;
4259 : }
4260 : default:;
4261 : }
4262 : break;
4263 : }
4264 : default:;
4265 : }
4266 : break;
4267 : }
4268 0 : case BIT_AND_EXPR:
4269 0 : {
4270 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4271 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4272 0 : switch (TREE_CODE (_q61))
4273 : {
4274 0 : case INTEGER_CST:
4275 0 : {
4276 0 : {
4277 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1, _q60, _q61 };
4278 0 : tree res = generic_simplify_25 (loc, type, _p0, _p1, captures, PLUS_EXPR);
4279 0 : if (res) return res;
4280 : }
4281 0 : break;
4282 : }
4283 : default:;
4284 : }
4285 : break;
4286 : }
4287 : default:;
4288 : }
4289 : break;
4290 : }
4291 : default:;
4292 : }
4293 : break;
4294 : }
4295 4797 : case NEGATE_EXPR:
4296 4797 : {
4297 4797 : tree _q30 = TREE_OPERAND (_q20, 0);
4298 4797 : {
4299 4797 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q30 };
4300 4797 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures);
4301 4797 : if (res) return res;
4302 : }
4303 1767 : break;
4304 : }
4305 : default:;
4306 : }
4307 : break;
4308 : }
4309 127008 : case COND_EXPR:
4310 127008 : {
4311 127008 : tree _q20 = TREE_OPERAND (_p0, 0);
4312 127008 : tree _q21 = TREE_OPERAND (_p0, 1);
4313 127008 : tree _q22 = TREE_OPERAND (_p0, 2);
4314 127008 : if (integer_zerop (_q22))
4315 : {
4316 116062 : switch (TREE_CODE (_p1))
4317 : {
4318 44 : case COND_EXPR:
4319 44 : {
4320 44 : tree _q60 = TREE_OPERAND (_p1, 0);
4321 44 : tree _q61 = TREE_OPERAND (_p1, 1);
4322 44 : tree _q62 = TREE_OPERAND (_p1, 2);
4323 44 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4324 : {
4325 6 : if (integer_zerop (_q61))
4326 : {
4327 0 : {
4328 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
4329 0 : const enum tree_code op = PLUS_EXPR;
4330 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1244;
4331 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1244;
4332 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1244;
4333 0 : {
4334 0 : tree res_op0;
4335 0 : res_op0 = captures[1];
4336 0 : tree res_op1;
4337 0 : res_op1 = captures[2];
4338 0 : tree res_op2;
4339 0 : res_op2 = captures[4];
4340 0 : tree _r;
4341 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4342 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
4343 0 : return _r;
4344 : }
4345 0 : next_after_fail1244:;
4346 : }
4347 : }
4348 : }
4349 : break;
4350 : }
4351 : default:;
4352 : }
4353 : }
4354 127008 : if (integer_zerop (_q21))
4355 : {
4356 1023 : switch (TREE_CODE (_p1))
4357 : {
4358 0 : case COND_EXPR:
4359 0 : {
4360 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4361 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4362 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4363 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4364 : {
4365 0 : if (integer_zerop (_q62))
4366 : {
4367 0 : {
4368 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
4369 0 : const enum tree_code op = PLUS_EXPR;
4370 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1245;
4371 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1245;
4372 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1245;
4373 0 : {
4374 0 : tree res_op0;
4375 0 : res_op0 = captures[1];
4376 0 : tree res_op1;
4377 0 : res_op1 = captures[2];
4378 0 : tree res_op2;
4379 0 : res_op2 = captures[4];
4380 0 : tree _r;
4381 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4382 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
4383 0 : return _r;
4384 : }
4385 0 : next_after_fail1245:;
4386 : }
4387 : }
4388 : }
4389 : break;
4390 : }
4391 : default:;
4392 : }
4393 : }
4394 127008 : switch (TREE_CODE (_q20))
4395 : {
4396 29604 : case LT_EXPR:
4397 29604 : {
4398 29604 : tree _q30 = TREE_OPERAND (_q20, 0);
4399 29604 : tree _q31 = TREE_OPERAND (_q20, 1);
4400 29604 : if (zerop (_q22))
4401 : {
4402 29538 : switch (TREE_CODE (_p1))
4403 : {
4404 0 : case COND_EXPR:
4405 0 : {
4406 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4407 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4408 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4409 0 : switch (TREE_CODE (_q80))
4410 : {
4411 0 : case GE_EXPR:
4412 0 : {
4413 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4414 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4415 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4416 : {
4417 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4418 : {
4419 0 : if (zerop (_q82))
4420 : {
4421 0 : {
4422 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4423 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
4424 0 : if (res) return res;
4425 : }
4426 : }
4427 : }
4428 : }
4429 : break;
4430 : }
4431 : default:;
4432 : }
4433 : break;
4434 : }
4435 : default:;
4436 : }
4437 : }
4438 : break;
4439 : }
4440 30687 : case LE_EXPR:
4441 30687 : {
4442 30687 : tree _q30 = TREE_OPERAND (_q20, 0);
4443 30687 : tree _q31 = TREE_OPERAND (_q20, 1);
4444 30687 : if (zerop (_q22))
4445 : {
4446 30429 : switch (TREE_CODE (_p1))
4447 : {
4448 5 : case COND_EXPR:
4449 5 : {
4450 5 : tree _q80 = TREE_OPERAND (_p1, 0);
4451 5 : tree _q81 = TREE_OPERAND (_p1, 1);
4452 5 : tree _q82 = TREE_OPERAND (_p1, 2);
4453 5 : switch (TREE_CODE (_q80))
4454 : {
4455 0 : case GT_EXPR:
4456 0 : {
4457 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4458 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4459 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4460 : {
4461 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4462 : {
4463 0 : if (zerop (_q82))
4464 : {
4465 0 : {
4466 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4467 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
4468 0 : if (res) return res;
4469 : }
4470 : }
4471 : }
4472 : }
4473 : break;
4474 : }
4475 : default:;
4476 : }
4477 : break;
4478 : }
4479 : default:;
4480 : }
4481 : }
4482 : break;
4483 : }
4484 1051 : case EQ_EXPR:
4485 1051 : {
4486 1051 : tree _q30 = TREE_OPERAND (_q20, 0);
4487 1051 : tree _q31 = TREE_OPERAND (_q20, 1);
4488 1051 : if (zerop (_q22))
4489 : {
4490 570 : switch (TREE_CODE (_p1))
4491 : {
4492 32 : case COND_EXPR:
4493 32 : {
4494 32 : tree _q80 = TREE_OPERAND (_p1, 0);
4495 32 : tree _q81 = TREE_OPERAND (_p1, 1);
4496 32 : tree _q82 = TREE_OPERAND (_p1, 2);
4497 32 : switch (TREE_CODE (_q80))
4498 : {
4499 0 : case NE_EXPR:
4500 0 : {
4501 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4502 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4503 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4504 : {
4505 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4506 : {
4507 0 : if (zerop (_q82))
4508 : {
4509 0 : {
4510 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4511 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
4512 0 : if (res) return res;
4513 : }
4514 : }
4515 : }
4516 : }
4517 : break;
4518 : }
4519 : default:;
4520 : }
4521 : break;
4522 : }
4523 : default:;
4524 : }
4525 : }
4526 : break;
4527 : }
4528 8078 : case NE_EXPR:
4529 8078 : {
4530 8078 : tree _q30 = TREE_OPERAND (_q20, 0);
4531 8078 : tree _q31 = TREE_OPERAND (_q20, 1);
4532 8078 : if (zerop (_q22))
4533 : {
4534 5473 : switch (TREE_CODE (_p1))
4535 : {
4536 7 : case COND_EXPR:
4537 7 : {
4538 7 : tree _q80 = TREE_OPERAND (_p1, 0);
4539 7 : tree _q81 = TREE_OPERAND (_p1, 1);
4540 7 : tree _q82 = TREE_OPERAND (_p1, 2);
4541 7 : switch (TREE_CODE (_q80))
4542 : {
4543 0 : case EQ_EXPR:
4544 0 : {
4545 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4546 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4547 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4548 : {
4549 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4550 : {
4551 0 : if (zerop (_q82))
4552 : {
4553 0 : {
4554 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4555 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
4556 0 : if (res) return res;
4557 : }
4558 : }
4559 : }
4560 : }
4561 : break;
4562 : }
4563 : default:;
4564 : }
4565 : break;
4566 : }
4567 : default:;
4568 : }
4569 : }
4570 : break;
4571 : }
4572 19943 : case GE_EXPR:
4573 19943 : {
4574 19943 : tree _q30 = TREE_OPERAND (_q20, 0);
4575 19943 : tree _q31 = TREE_OPERAND (_q20, 1);
4576 19943 : if (zerop (_q22))
4577 : {
4578 18623 : switch (TREE_CODE (_p1))
4579 : {
4580 0 : case COND_EXPR:
4581 0 : {
4582 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4583 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4584 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4585 0 : switch (TREE_CODE (_q80))
4586 : {
4587 0 : case LT_EXPR:
4588 0 : {
4589 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4590 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4591 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4592 : {
4593 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4594 : {
4595 0 : if (zerop (_q82))
4596 : {
4597 0 : {
4598 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4599 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
4600 0 : if (res) return res;
4601 : }
4602 : }
4603 : }
4604 : }
4605 : break;
4606 : }
4607 : default:;
4608 : }
4609 : break;
4610 : }
4611 : default:;
4612 : }
4613 : }
4614 : break;
4615 : }
4616 30804 : case GT_EXPR:
4617 30804 : {
4618 30804 : tree _q30 = TREE_OPERAND (_q20, 0);
4619 30804 : tree _q31 = TREE_OPERAND (_q20, 1);
4620 30804 : if (zerop (_q22))
4621 : {
4622 28647 : switch (TREE_CODE (_p1))
4623 : {
4624 0 : case COND_EXPR:
4625 0 : {
4626 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4627 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4628 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4629 0 : switch (TREE_CODE (_q80))
4630 : {
4631 0 : case LE_EXPR:
4632 0 : {
4633 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4634 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4635 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4636 : {
4637 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4638 : {
4639 0 : if (zerop (_q82))
4640 : {
4641 0 : {
4642 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4643 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
4644 0 : if (res) return res;
4645 : }
4646 : }
4647 : }
4648 : }
4649 : break;
4650 : }
4651 : default:;
4652 : }
4653 : break;
4654 : }
4655 : default:;
4656 : }
4657 : }
4658 : break;
4659 : }
4660 0 : case UNORDERED_EXPR:
4661 0 : {
4662 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4663 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4664 0 : if (zerop (_q22))
4665 : {
4666 0 : switch (TREE_CODE (_p1))
4667 : {
4668 0 : case COND_EXPR:
4669 0 : {
4670 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4671 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4672 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4673 0 : switch (TREE_CODE (_q80))
4674 : {
4675 0 : case ORDERED_EXPR:
4676 0 : {
4677 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4678 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4679 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4680 : {
4681 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4682 : {
4683 0 : if (zerop (_q82))
4684 : {
4685 0 : {
4686 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4687 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
4688 0 : if (res) return res;
4689 : }
4690 : }
4691 : }
4692 : }
4693 : break;
4694 : }
4695 : default:;
4696 : }
4697 : break;
4698 : }
4699 : default:;
4700 : }
4701 : }
4702 : break;
4703 : }
4704 0 : case ORDERED_EXPR:
4705 0 : {
4706 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4707 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4708 0 : if (zerop (_q22))
4709 : {
4710 0 : switch (TREE_CODE (_p1))
4711 : {
4712 0 : case COND_EXPR:
4713 0 : {
4714 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4715 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4716 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4717 0 : switch (TREE_CODE (_q80))
4718 : {
4719 0 : case UNORDERED_EXPR:
4720 0 : {
4721 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4722 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4723 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4724 : {
4725 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4726 : {
4727 0 : if (zerop (_q82))
4728 : {
4729 0 : {
4730 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4731 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
4732 0 : if (res) return res;
4733 : }
4734 : }
4735 : }
4736 : }
4737 : break;
4738 : }
4739 : default:;
4740 : }
4741 : break;
4742 : }
4743 : default:;
4744 : }
4745 : }
4746 : break;
4747 : }
4748 0 : case UNLT_EXPR:
4749 0 : {
4750 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4751 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4752 0 : if (zerop (_q22))
4753 : {
4754 0 : switch (TREE_CODE (_p1))
4755 : {
4756 0 : case COND_EXPR:
4757 0 : {
4758 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4759 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4760 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4761 0 : switch (TREE_CODE (_q80))
4762 : {
4763 0 : case GE_EXPR:
4764 0 : {
4765 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4766 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4767 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4768 : {
4769 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4770 : {
4771 0 : if (zerop (_q82))
4772 : {
4773 0 : {
4774 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4775 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
4776 0 : if (res) return res;
4777 : }
4778 : }
4779 : }
4780 : }
4781 : break;
4782 : }
4783 : default:;
4784 : }
4785 : break;
4786 : }
4787 : default:;
4788 : }
4789 : }
4790 : break;
4791 : }
4792 0 : case UNLE_EXPR:
4793 0 : {
4794 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4795 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4796 0 : if (zerop (_q22))
4797 : {
4798 0 : switch (TREE_CODE (_p1))
4799 : {
4800 0 : case COND_EXPR:
4801 0 : {
4802 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4803 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4804 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4805 0 : switch (TREE_CODE (_q80))
4806 : {
4807 0 : case GT_EXPR:
4808 0 : {
4809 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4810 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4811 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4812 : {
4813 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4814 : {
4815 0 : if (zerop (_q82))
4816 : {
4817 0 : {
4818 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4819 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
4820 0 : if (res) return res;
4821 : }
4822 : }
4823 : }
4824 : }
4825 : break;
4826 : }
4827 : default:;
4828 : }
4829 : break;
4830 : }
4831 : default:;
4832 : }
4833 : }
4834 : break;
4835 : }
4836 0 : case UNGT_EXPR:
4837 0 : {
4838 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4839 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4840 0 : if (zerop (_q22))
4841 : {
4842 0 : switch (TREE_CODE (_p1))
4843 : {
4844 0 : case COND_EXPR:
4845 0 : {
4846 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4847 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4848 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4849 0 : switch (TREE_CODE (_q80))
4850 : {
4851 0 : case LE_EXPR:
4852 0 : {
4853 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4854 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4855 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4856 : {
4857 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4858 : {
4859 0 : if (zerop (_q82))
4860 : {
4861 0 : {
4862 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4863 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
4864 0 : if (res) return res;
4865 : }
4866 : }
4867 : }
4868 : }
4869 : break;
4870 : }
4871 : default:;
4872 : }
4873 : break;
4874 : }
4875 : default:;
4876 : }
4877 : }
4878 : break;
4879 : }
4880 0 : case UNGE_EXPR:
4881 0 : {
4882 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4883 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4884 0 : if (zerop (_q22))
4885 : {
4886 0 : switch (TREE_CODE (_p1))
4887 : {
4888 0 : case COND_EXPR:
4889 0 : {
4890 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4891 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4892 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4893 0 : switch (TREE_CODE (_q80))
4894 : {
4895 0 : case LT_EXPR:
4896 0 : {
4897 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4898 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4899 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4900 : {
4901 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4902 : {
4903 0 : if (zerop (_q82))
4904 : {
4905 0 : {
4906 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4907 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
4908 0 : if (res) return res;
4909 : }
4910 : }
4911 : }
4912 : }
4913 : break;
4914 : }
4915 : default:;
4916 : }
4917 : break;
4918 : }
4919 : default:;
4920 : }
4921 : }
4922 : break;
4923 : }
4924 0 : case UNEQ_EXPR:
4925 0 : {
4926 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4927 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4928 0 : if (zerop (_q22))
4929 : {
4930 0 : switch (TREE_CODE (_p1))
4931 : {
4932 0 : case COND_EXPR:
4933 0 : {
4934 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4935 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4936 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4937 0 : switch (TREE_CODE (_q80))
4938 : {
4939 0 : case LTGT_EXPR:
4940 0 : {
4941 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4942 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4943 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4944 : {
4945 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4946 : {
4947 0 : if (zerop (_q82))
4948 : {
4949 0 : {
4950 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4951 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
4952 0 : if (res) return res;
4953 : }
4954 : }
4955 : }
4956 : }
4957 : break;
4958 : }
4959 : default:;
4960 : }
4961 : break;
4962 : }
4963 : default:;
4964 : }
4965 : }
4966 : break;
4967 : }
4968 0 : case LTGT_EXPR:
4969 0 : {
4970 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4971 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4972 0 : if (zerop (_q22))
4973 : {
4974 0 : switch (TREE_CODE (_p1))
4975 : {
4976 0 : case COND_EXPR:
4977 0 : {
4978 0 : tree _q80 = TREE_OPERAND (_p1, 0);
4979 0 : tree _q81 = TREE_OPERAND (_p1, 1);
4980 0 : tree _q82 = TREE_OPERAND (_p1, 2);
4981 0 : switch (TREE_CODE (_q80))
4982 : {
4983 0 : case UNEQ_EXPR:
4984 0 : {
4985 0 : tree _q90 = TREE_OPERAND (_q80, 0);
4986 0 : tree _q91 = TREE_OPERAND (_q80, 1);
4987 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
4988 : {
4989 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
4990 : {
4991 0 : if (zerop (_q82))
4992 : {
4993 0 : {
4994 0 : tree captures[6] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _q21, _q80, _q81 };
4995 0 : tree res = generic_simplify_37 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
4996 0 : if (res) return res;
4997 : }
4998 : }
4999 : }
5000 : }
5001 : break;
5002 : }
5003 : default:;
5004 : }
5005 : break;
5006 : }
5007 : default:;
5008 : }
5009 : }
5010 : break;
5011 : }
5012 : default:;
5013 : }
5014 : break;
5015 : }
5016 168 : case VEC_COND_EXPR:
5017 168 : {
5018 168 : tree _q20 = TREE_OPERAND (_p0, 0);
5019 168 : tree _q21 = TREE_OPERAND (_p0, 1);
5020 168 : tree _q22 = TREE_OPERAND (_p0, 2);
5021 168 : if (integer_zerop (_q22))
5022 : {
5023 106 : switch (TREE_CODE (_p1))
5024 : {
5025 24 : case VEC_COND_EXPR:
5026 24 : {
5027 24 : tree _q60 = TREE_OPERAND (_p1, 0);
5028 24 : tree _q61 = TREE_OPERAND (_p1, 1);
5029 24 : tree _q62 = TREE_OPERAND (_p1, 2);
5030 24 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5031 : {
5032 0 : if (integer_zerop (_q61))
5033 : {
5034 0 : {
5035 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q62 };
5036 0 : const enum tree_code op = PLUS_EXPR;
5037 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1246;
5038 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1246;
5039 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1246;
5040 0 : {
5041 0 : tree res_op0;
5042 0 : res_op0 = captures[1];
5043 0 : tree res_op1;
5044 0 : res_op1 = captures[2];
5045 0 : tree res_op2;
5046 0 : res_op2 = captures[4];
5047 0 : tree _r;
5048 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5049 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
5050 0 : return _r;
5051 : }
5052 0 : next_after_fail1246:;
5053 : }
5054 : }
5055 : }
5056 : break;
5057 : }
5058 : default:;
5059 : }
5060 : }
5061 168 : if (integer_zerop (_q21))
5062 : {
5063 0 : switch (TREE_CODE (_p1))
5064 : {
5065 0 : case VEC_COND_EXPR:
5066 0 : {
5067 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5068 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5069 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5070 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5071 : {
5072 0 : if (integer_zerop (_q62))
5073 : {
5074 0 : {
5075 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q61, _p0, _q22 };
5076 0 : const enum tree_code op = PLUS_EXPR;
5077 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1247;
5078 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1247;
5079 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1247;
5080 0 : {
5081 0 : tree res_op0;
5082 0 : res_op0 = captures[1];
5083 0 : tree res_op1;
5084 0 : res_op1 = captures[2];
5085 0 : tree res_op2;
5086 0 : res_op2 = captures[4];
5087 0 : tree _r;
5088 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5089 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
5090 0 : return _r;
5091 : }
5092 0 : next_after_fail1247:;
5093 : }
5094 : }
5095 : }
5096 : break;
5097 : }
5098 : default:;
5099 : }
5100 : }
5101 168 : switch (TREE_CODE (_q20))
5102 : {
5103 8 : case LT_EXPR:
5104 8 : {
5105 8 : tree _q30 = TREE_OPERAND (_q20, 0);
5106 8 : tree _q31 = TREE_OPERAND (_q20, 1);
5107 8 : if (integer_zerop (_q22))
5108 : {
5109 8 : switch (TREE_CODE (_p1))
5110 : {
5111 0 : case VEC_COND_EXPR:
5112 0 : {
5113 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5114 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5115 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5116 0 : switch (TREE_CODE (_q80))
5117 : {
5118 0 : case GE_EXPR:
5119 0 : {
5120 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5121 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5122 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5123 : {
5124 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5125 : {
5126 0 : if (integer_zerop (_q82))
5127 : {
5128 0 : {
5129 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5130 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, LT_EXPR, GE_EXPR);
5131 0 : if (res) return res;
5132 : }
5133 : }
5134 : }
5135 : }
5136 : break;
5137 : }
5138 : default:;
5139 : }
5140 : break;
5141 : }
5142 : default:;
5143 : }
5144 : }
5145 : break;
5146 : }
5147 8 : case LE_EXPR:
5148 8 : {
5149 8 : tree _q30 = TREE_OPERAND (_q20, 0);
5150 8 : tree _q31 = TREE_OPERAND (_q20, 1);
5151 8 : if (integer_zerop (_q22))
5152 : {
5153 8 : switch (TREE_CODE (_p1))
5154 : {
5155 0 : case VEC_COND_EXPR:
5156 0 : {
5157 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5158 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5159 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5160 0 : switch (TREE_CODE (_q80))
5161 : {
5162 0 : case GT_EXPR:
5163 0 : {
5164 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5165 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5166 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5167 : {
5168 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5169 : {
5170 0 : if (integer_zerop (_q82))
5171 : {
5172 0 : {
5173 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5174 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR, GT_EXPR);
5175 0 : if (res) return res;
5176 : }
5177 : }
5178 : }
5179 : }
5180 : break;
5181 : }
5182 : default:;
5183 : }
5184 : break;
5185 : }
5186 : default:;
5187 : }
5188 : }
5189 : break;
5190 : }
5191 34 : case EQ_EXPR:
5192 34 : {
5193 34 : tree _q30 = TREE_OPERAND (_q20, 0);
5194 34 : tree _q31 = TREE_OPERAND (_q20, 1);
5195 34 : if (integer_zerop (_q22))
5196 : {
5197 34 : switch (TREE_CODE (_p1))
5198 : {
5199 24 : case VEC_COND_EXPR:
5200 24 : {
5201 24 : tree _q80 = TREE_OPERAND (_p1, 0);
5202 24 : tree _q81 = TREE_OPERAND (_p1, 1);
5203 24 : tree _q82 = TREE_OPERAND (_p1, 2);
5204 24 : switch (TREE_CODE (_q80))
5205 : {
5206 24 : case NE_EXPR:
5207 24 : {
5208 24 : tree _q90 = TREE_OPERAND (_q80, 0);
5209 24 : tree _q91 = TREE_OPERAND (_q80, 1);
5210 24 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5211 : {
5212 24 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5213 : {
5214 24 : if (integer_zerop (_q82))
5215 : {
5216 24 : {
5217 24 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5218 24 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, EQ_EXPR, NE_EXPR);
5219 24 : if (res) return res;
5220 : }
5221 : }
5222 : }
5223 : }
5224 : break;
5225 : }
5226 : default:;
5227 : }
5228 : break;
5229 : }
5230 : default:;
5231 : }
5232 : }
5233 : break;
5234 : }
5235 22 : case NE_EXPR:
5236 22 : {
5237 22 : tree _q30 = TREE_OPERAND (_q20, 0);
5238 22 : tree _q31 = TREE_OPERAND (_q20, 1);
5239 22 : if (integer_zerop (_q22))
5240 : {
5241 8 : switch (TREE_CODE (_p1))
5242 : {
5243 0 : case VEC_COND_EXPR:
5244 0 : {
5245 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5246 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5247 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5248 0 : switch (TREE_CODE (_q80))
5249 : {
5250 0 : case EQ_EXPR:
5251 0 : {
5252 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5253 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5254 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5255 : {
5256 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5257 : {
5258 0 : if (integer_zerop (_q82))
5259 : {
5260 0 : {
5261 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5262 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR, EQ_EXPR);
5263 0 : if (res) return res;
5264 : }
5265 : }
5266 : }
5267 : }
5268 : break;
5269 : }
5270 : default:;
5271 : }
5272 : break;
5273 : }
5274 : default:;
5275 : }
5276 : }
5277 : break;
5278 : }
5279 15 : case GE_EXPR:
5280 15 : {
5281 15 : tree _q30 = TREE_OPERAND (_q20, 0);
5282 15 : tree _q31 = TREE_OPERAND (_q20, 1);
5283 15 : if (integer_zerop (_q22))
5284 : {
5285 15 : switch (TREE_CODE (_p1))
5286 : {
5287 0 : case VEC_COND_EXPR:
5288 0 : {
5289 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5290 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5291 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5292 0 : switch (TREE_CODE (_q80))
5293 : {
5294 0 : case LT_EXPR:
5295 0 : {
5296 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5297 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5298 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5299 : {
5300 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5301 : {
5302 0 : if (integer_zerop (_q82))
5303 : {
5304 0 : {
5305 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5306 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, GE_EXPR, LT_EXPR);
5307 0 : if (res) return res;
5308 : }
5309 : }
5310 : }
5311 : }
5312 : break;
5313 : }
5314 : default:;
5315 : }
5316 : break;
5317 : }
5318 : default:;
5319 : }
5320 : }
5321 : break;
5322 : }
5323 81 : case GT_EXPR:
5324 81 : {
5325 81 : tree _q30 = TREE_OPERAND (_q20, 0);
5326 81 : tree _q31 = TREE_OPERAND (_q20, 1);
5327 81 : if (integer_zerop (_q22))
5328 : {
5329 33 : switch (TREE_CODE (_p1))
5330 : {
5331 0 : case VEC_COND_EXPR:
5332 0 : {
5333 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5334 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5335 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5336 0 : switch (TREE_CODE (_q80))
5337 : {
5338 0 : case LE_EXPR:
5339 0 : {
5340 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5341 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5342 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5343 : {
5344 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5345 : {
5346 0 : if (integer_zerop (_q82))
5347 : {
5348 0 : {
5349 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5350 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, GT_EXPR, LE_EXPR);
5351 0 : if (res) return res;
5352 : }
5353 : }
5354 : }
5355 : }
5356 : break;
5357 : }
5358 : default:;
5359 : }
5360 : break;
5361 : }
5362 : default:;
5363 : }
5364 : }
5365 : break;
5366 : }
5367 0 : case UNORDERED_EXPR:
5368 0 : {
5369 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5370 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5371 0 : if (integer_zerop (_q22))
5372 : {
5373 0 : switch (TREE_CODE (_p1))
5374 : {
5375 0 : case VEC_COND_EXPR:
5376 0 : {
5377 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5378 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5379 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5380 0 : switch (TREE_CODE (_q80))
5381 : {
5382 0 : case ORDERED_EXPR:
5383 0 : {
5384 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5385 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5386 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5387 : {
5388 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5389 : {
5390 0 : if (integer_zerop (_q82))
5391 : {
5392 0 : {
5393 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5394 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNORDERED_EXPR, ORDERED_EXPR);
5395 0 : if (res) return res;
5396 : }
5397 : }
5398 : }
5399 : }
5400 : break;
5401 : }
5402 : default:;
5403 : }
5404 : break;
5405 : }
5406 : default:;
5407 : }
5408 : }
5409 : break;
5410 : }
5411 0 : case ORDERED_EXPR:
5412 0 : {
5413 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5414 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5415 0 : if (integer_zerop (_q22))
5416 : {
5417 0 : switch (TREE_CODE (_p1))
5418 : {
5419 0 : case VEC_COND_EXPR:
5420 0 : {
5421 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5422 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5423 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5424 0 : switch (TREE_CODE (_q80))
5425 : {
5426 0 : case UNORDERED_EXPR:
5427 0 : {
5428 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5429 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5430 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5431 : {
5432 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5433 : {
5434 0 : if (integer_zerop (_q82))
5435 : {
5436 0 : {
5437 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5438 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, ORDERED_EXPR, UNORDERED_EXPR);
5439 0 : if (res) return res;
5440 : }
5441 : }
5442 : }
5443 : }
5444 : break;
5445 : }
5446 : default:;
5447 : }
5448 : break;
5449 : }
5450 : default:;
5451 : }
5452 : }
5453 : break;
5454 : }
5455 0 : case UNLT_EXPR:
5456 0 : {
5457 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5458 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5459 0 : if (integer_zerop (_q22))
5460 : {
5461 0 : switch (TREE_CODE (_p1))
5462 : {
5463 0 : case VEC_COND_EXPR:
5464 0 : {
5465 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5466 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5467 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5468 0 : switch (TREE_CODE (_q80))
5469 : {
5470 0 : case GE_EXPR:
5471 0 : {
5472 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5473 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5474 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5475 : {
5476 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5477 : {
5478 0 : if (integer_zerop (_q82))
5479 : {
5480 0 : {
5481 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5482 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLT_EXPR, GE_EXPR);
5483 0 : if (res) return res;
5484 : }
5485 : }
5486 : }
5487 : }
5488 : break;
5489 : }
5490 : default:;
5491 : }
5492 : break;
5493 : }
5494 : default:;
5495 : }
5496 : }
5497 : break;
5498 : }
5499 0 : case UNLE_EXPR:
5500 0 : {
5501 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5502 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5503 0 : if (integer_zerop (_q22))
5504 : {
5505 0 : switch (TREE_CODE (_p1))
5506 : {
5507 0 : case VEC_COND_EXPR:
5508 0 : {
5509 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5510 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5511 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5512 0 : switch (TREE_CODE (_q80))
5513 : {
5514 0 : case GT_EXPR:
5515 0 : {
5516 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5517 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5518 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5519 : {
5520 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5521 : {
5522 0 : if (integer_zerop (_q82))
5523 : {
5524 0 : {
5525 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5526 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNLE_EXPR, GT_EXPR);
5527 0 : if (res) return res;
5528 : }
5529 : }
5530 : }
5531 : }
5532 : break;
5533 : }
5534 : default:;
5535 : }
5536 : break;
5537 : }
5538 : default:;
5539 : }
5540 : }
5541 : break;
5542 : }
5543 0 : case UNGT_EXPR:
5544 0 : {
5545 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5546 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5547 0 : if (integer_zerop (_q22))
5548 : {
5549 0 : switch (TREE_CODE (_p1))
5550 : {
5551 0 : case VEC_COND_EXPR:
5552 0 : {
5553 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5554 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5555 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5556 0 : switch (TREE_CODE (_q80))
5557 : {
5558 0 : case LE_EXPR:
5559 0 : {
5560 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5561 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5562 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5563 : {
5564 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5565 : {
5566 0 : if (integer_zerop (_q82))
5567 : {
5568 0 : {
5569 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5570 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGT_EXPR, LE_EXPR);
5571 0 : if (res) return res;
5572 : }
5573 : }
5574 : }
5575 : }
5576 : break;
5577 : }
5578 : default:;
5579 : }
5580 : break;
5581 : }
5582 : default:;
5583 : }
5584 : }
5585 : break;
5586 : }
5587 0 : case UNGE_EXPR:
5588 0 : {
5589 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5590 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5591 0 : if (integer_zerop (_q22))
5592 : {
5593 0 : switch (TREE_CODE (_p1))
5594 : {
5595 0 : case VEC_COND_EXPR:
5596 0 : {
5597 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5598 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5599 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5600 0 : switch (TREE_CODE (_q80))
5601 : {
5602 0 : case LT_EXPR:
5603 0 : {
5604 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5605 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5606 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5607 : {
5608 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5609 : {
5610 0 : if (integer_zerop (_q82))
5611 : {
5612 0 : {
5613 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5614 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNGE_EXPR, LT_EXPR);
5615 0 : if (res) return res;
5616 : }
5617 : }
5618 : }
5619 : }
5620 : break;
5621 : }
5622 : default:;
5623 : }
5624 : break;
5625 : }
5626 : default:;
5627 : }
5628 : }
5629 : break;
5630 : }
5631 0 : case UNEQ_EXPR:
5632 0 : {
5633 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5634 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5635 0 : if (integer_zerop (_q22))
5636 : {
5637 0 : switch (TREE_CODE (_p1))
5638 : {
5639 0 : case VEC_COND_EXPR:
5640 0 : {
5641 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5642 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5643 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5644 0 : switch (TREE_CODE (_q80))
5645 : {
5646 0 : case LTGT_EXPR:
5647 0 : {
5648 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5649 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5650 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5651 : {
5652 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5653 : {
5654 0 : if (integer_zerop (_q82))
5655 : {
5656 0 : {
5657 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5658 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, UNEQ_EXPR, LTGT_EXPR);
5659 0 : if (res) return res;
5660 : }
5661 : }
5662 : }
5663 : }
5664 : break;
5665 : }
5666 : default:;
5667 : }
5668 : break;
5669 : }
5670 : default:;
5671 : }
5672 : }
5673 : break;
5674 : }
5675 0 : case LTGT_EXPR:
5676 0 : {
5677 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5678 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5679 0 : if (integer_zerop (_q22))
5680 : {
5681 0 : switch (TREE_CODE (_p1))
5682 : {
5683 0 : case VEC_COND_EXPR:
5684 0 : {
5685 0 : tree _q80 = TREE_OPERAND (_p1, 0);
5686 0 : tree _q81 = TREE_OPERAND (_p1, 1);
5687 0 : tree _q82 = TREE_OPERAND (_p1, 2);
5688 0 : switch (TREE_CODE (_q80))
5689 : {
5690 0 : case UNEQ_EXPR:
5691 0 : {
5692 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5693 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5694 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
5695 : {
5696 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
5697 : {
5698 0 : if (integer_zerop (_q82))
5699 : {
5700 0 : {
5701 0 : tree captures[8] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q80, _q81 };
5702 0 : tree res = generic_simplify_38 (loc, type, _p0, _p1, captures, PLUS_EXPR, LTGT_EXPR, UNEQ_EXPR);
5703 0 : if (res) return res;
5704 : }
5705 : }
5706 : }
5707 : }
5708 : break;
5709 : }
5710 : default:;
5711 : }
5712 : break;
5713 : }
5714 : default:;
5715 : }
5716 : }
5717 : break;
5718 : }
5719 : default:;
5720 : }
5721 : break;
5722 : }
5723 70076064 : default:;
5724 : }
5725 70076064 : {
5726 70076064 : tree _p0_pops[1];
5727 70076064 : if (tree_nop_convert (_p0, _p0_pops))
5728 : {
5729 13700795 : tree _q20 = _p0_pops[0];
5730 13700795 : switch (TREE_CODE (_q20))
5731 : {
5732 97840 : case MINUS_EXPR:
5733 97840 : {
5734 97840 : tree _q30 = TREE_OPERAND (_q20, 0);
5735 97840 : tree _q31 = TREE_OPERAND (_q20, 1);
5736 97840 : switch (TREE_CODE (_q30))
5737 : {
5738 2 : case BIT_AND_EXPR:
5739 2 : {
5740 2 : tree _q40 = TREE_OPERAND (_q30, 0);
5741 2 : tree _q41 = TREE_OPERAND (_q30, 1);
5742 2 : switch (TREE_CODE (_q31))
5743 : {
5744 1 : case BIT_IOR_EXPR:
5745 1 : {
5746 1 : tree _q70 = TREE_OPERAND (_q31, 0);
5747 1 : tree _q71 = TREE_OPERAND (_q31, 1);
5748 1 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5749 : {
5750 1 : if ((_q71 == _q41 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q41, 0) && types_match (_q71, _q41)))
5751 : {
5752 1 : if (integer_all_onesp (_p1))
5753 : {
5754 1 : {
5755 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q40, _q41 };
5756 1 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5757 1 : if (res) return res;
5758 : }
5759 : }
5760 : }
5761 : }
5762 0 : if ((_q70 == _q41 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q41, 0) && types_match (_q70, _q41)))
5763 : {
5764 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
5765 : {
5766 0 : if (integer_all_onesp (_p1))
5767 : {
5768 0 : {
5769 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q41, _q40 };
5770 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5771 0 : if (res) return res;
5772 : }
5773 : }
5774 : }
5775 : }
5776 : break;
5777 : }
5778 : default:;
5779 : }
5780 : break;
5781 : }
5782 97839 : default:;
5783 : }
5784 97839 : {
5785 97839 : tree _q30_pops[1];
5786 97839 : if (tree_nop_convert (_q30, _q30_pops))
5787 : {
5788 50784 : tree _q40 = _q30_pops[0];
5789 50784 : switch (TREE_CODE (_q40))
5790 : {
5791 0 : case BIT_AND_EXPR:
5792 0 : {
5793 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5794 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5795 0 : {
5796 0 : tree _q31_pops[1];
5797 0 : if (tree_nop_convert (_q31, _q31_pops))
5798 : {
5799 0 : tree _q80 = _q31_pops[0];
5800 0 : switch (TREE_CODE (_q80))
5801 : {
5802 0 : case BIT_IOR_EXPR:
5803 0 : {
5804 0 : tree _q90 = TREE_OPERAND (_q80, 0);
5805 0 : tree _q91 = TREE_OPERAND (_q80, 1);
5806 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
5807 : {
5808 0 : if ((_q91 == _q51 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q51, 0) && types_match (_q91, _q51)))
5809 : {
5810 0 : if (integer_all_onesp (_p1))
5811 : {
5812 0 : {
5813 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
5814 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5815 0 : if (res) return res;
5816 : }
5817 : }
5818 : }
5819 : }
5820 0 : if ((_q90 == _q51 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q51, 0) && types_match (_q90, _q51)))
5821 : {
5822 0 : if ((_q91 == _q50 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q50, 0) && types_match (_q91, _q50)))
5823 : {
5824 0 : if (integer_all_onesp (_p1))
5825 : {
5826 0 : {
5827 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
5828 0 : tree res = generic_simplify_60 (loc, type, _p0, _p1, captures);
5829 0 : if (res) return res;
5830 : }
5831 : }
5832 : }
5833 : }
5834 : break;
5835 : }
5836 : default:;
5837 : }
5838 : }
5839 : }
5840 0 : break;
5841 : }
5842 : default:;
5843 : }
5844 : }
5845 : }
5846 97839 : break;
5847 : }
5848 : default:;
5849 : }
5850 : }
5851 : }
5852 70076063 : switch (TREE_CODE (_p1))
5853 : {
5854 8055736 : CASE_CONVERT:
5855 8055736 : {
5856 8055736 : tree _q30 = TREE_OPERAND (_p1, 0);
5857 8055736 : switch (TREE_CODE (_q30))
5858 : {
5859 2014 : case NEGATE_EXPR:
5860 2014 : {
5861 2014 : tree _q40 = TREE_OPERAND (_q30, 0);
5862 2014 : {
5863 2014 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
5864 2014 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures);
5865 2014 : if (res) return res;
5866 : }
5867 390 : break;
5868 : }
5869 : default:;
5870 : }
5871 : break;
5872 : }
5873 7937 : case NEGATE_EXPR:
5874 7937 : {
5875 7937 : tree _q30 = TREE_OPERAND (_p1, 0);
5876 7937 : {
5877 7937 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
5878 7937 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures);
5879 7937 : if (res) return res;
5880 : }
5881 0 : break;
5882 : }
5883 70066502 : default:;
5884 : }
5885 70066502 : switch (TREE_CODE (_p0))
5886 : {
5887 306572 : case NEGATE_EXPR:
5888 306572 : {
5889 306572 : tree _q20 = TREE_OPERAND (_p0, 0);
5890 306572 : {
5891 306572 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
5892 306572 : tree res = generic_simplify_62 (loc, type, _p0, _p1, captures);
5893 306572 : if (res) return res;
5894 : }
5895 134 : break;
5896 : }
5897 69760064 : default:;
5898 : }
5899 69760064 : {
5900 69760064 : tree _p0_pops[1];
5901 69760064 : if (tree_nop_convert (_p0, _p0_pops))
5902 : {
5903 13696125 : tree _q20 = _p0_pops[0];
5904 13696125 : switch (TREE_CODE (_q20))
5905 : {
5906 97741 : case MINUS_EXPR:
5907 97741 : {
5908 97741 : tree _q30 = TREE_OPERAND (_q20, 0);
5909 97741 : tree _q31 = TREE_OPERAND (_q20, 1);
5910 97741 : {
5911 97741 : tree _q31_pops[1];
5912 97741 : if (tree_nop_convert (_q31, _q31_pops))
5913 : {
5914 61564 : tree _q50 = _q31_pops[0];
5915 61564 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5916 : {
5917 31 : {
5918 31 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
5919 31 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
5920 31 : if (res) return res;
5921 : }
5922 : }
5923 : }
5924 : }
5925 97710 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5926 : {
5927 6 : {
5928 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
5929 6 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
5930 6 : if (res) return res;
5931 : }
5932 : }
5933 97704 : if (CONSTANT_CLASS_P (_q31))
5934 : {
5935 16702 : if (CONSTANT_CLASS_P (_p1))
5936 : {
5937 16588 : {
5938 16588 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5939 16588 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
5940 16588 : if (res) return res;
5941 : }
5942 : }
5943 : }
5944 81116 : if (CONSTANT_CLASS_P (_q30))
5945 : {
5946 14727 : if (CONSTANT_CLASS_P (_p1))
5947 : {
5948 5645 : {
5949 5645 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5950 5645 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures, PLUS_EXPR);
5951 5645 : if (res) return res;
5952 : }
5953 : }
5954 : }
5955 : break;
5956 : }
5957 1320668 : case PLUS_EXPR:
5958 1320668 : {
5959 1320668 : tree _q30 = TREE_OPERAND (_q20, 0);
5960 1320668 : tree _q31 = TREE_OPERAND (_q20, 1);
5961 1320668 : if (CONSTANT_CLASS_P (_q31))
5962 : {
5963 1120815 : if (CONSTANT_CLASS_P (_p1))
5964 : {
5965 1031475 : {
5966 1031475 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5967 1031475 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
5968 1031475 : if (res) return res;
5969 : }
5970 : }
5971 : }
5972 : break;
5973 : }
5974 : default:;
5975 : }
5976 : }
5977 : }
5978 68707255 : switch (TREE_CODE (_p1))
5979 : {
5980 172144 : case MINUS_EXPR:
5981 172144 : {
5982 172144 : tree _q30 = TREE_OPERAND (_p1, 0);
5983 172144 : tree _q31 = TREE_OPERAND (_p1, 1);
5984 172144 : {
5985 172144 : tree _q31_pops[1];
5986 172144 : if (tree_nop_convert (_q31, _q31_pops))
5987 : {
5988 60790 : tree _q50 = _q31_pops[0];
5989 60790 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5990 : {
5991 0 : {
5992 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5993 0 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
5994 0 : if (res) return res;
5995 : }
5996 : }
5997 : }
5998 : }
5999 172144 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6000 : {
6001 530 : {
6002 530 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
6003 530 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6004 530 : if (res) return res;
6005 : }
6006 : }
6007 : break;
6008 : }
6009 68706725 : default:;
6010 : }
6011 68706725 : {
6012 68706725 : tree _p1_pops[1];
6013 68706725 : if (tree_nop_convert (_p1, _p1_pops))
6014 : {
6015 7683372 : tree _q30 = _p1_pops[0];
6016 7683372 : switch (TREE_CODE (_q30))
6017 : {
6018 3490 : case MINUS_EXPR:
6019 3490 : {
6020 3490 : tree _q40 = TREE_OPERAND (_q30, 0);
6021 3490 : tree _q41 = TREE_OPERAND (_q30, 1);
6022 3490 : {
6023 3490 : tree _q41_pops[1];
6024 3490 : if (tree_nop_convert (_q41, _q41_pops))
6025 : {
6026 562 : tree _q60 = _q41_pops[0];
6027 562 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6028 : {
6029 0 : {
6030 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
6031 0 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6032 0 : if (res) return res;
6033 : }
6034 : }
6035 : }
6036 : }
6037 3490 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6038 : {
6039 0 : {
6040 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
6041 0 : tree res = generic_simplify_61 (loc, type, _p0, _p1, captures);
6042 0 : if (res) return res;
6043 : }
6044 : }
6045 : break;
6046 : }
6047 : default:;
6048 : }
6049 : }
6050 : }
6051 68706725 : switch (TREE_CODE (_p0))
6052 : {
6053 6568141 : case PLUS_EXPR:
6054 6568141 : {
6055 6568141 : tree _q20 = TREE_OPERAND (_p0, 0);
6056 6568141 : tree _q21 = TREE_OPERAND (_p0, 1);
6057 6568141 : switch (TREE_CODE (_p1))
6058 : {
6059 45937 : case MINUS_EXPR:
6060 45937 : {
6061 45937 : tree _q50 = TREE_OPERAND (_p1, 0);
6062 45937 : tree _q51 = TREE_OPERAND (_p1, 1);
6063 45937 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6064 : {
6065 138 : {
6066 138 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6067 138 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6068 138 : if (res) return res;
6069 : }
6070 : }
6071 45799 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6072 : {
6073 361 : {
6074 361 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
6075 361 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6076 361 : if (res) return res;
6077 : }
6078 : }
6079 : break;
6080 : }
6081 6567642 : default:;
6082 : }
6083 6567642 : if (CONSTANT_CLASS_P (_q21))
6084 : {
6085 2589280 : if (CONSTANT_CLASS_P (_p1))
6086 : {
6087 1922067 : {
6088 1922067 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6089 1922067 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR);
6090 1922067 : if (res) return res;
6091 : }
6092 : }
6093 : }
6094 : break;
6095 : }
6096 2064723 : case MINUS_EXPR:
6097 2064723 : {
6098 2064723 : tree _q20 = TREE_OPERAND (_p0, 0);
6099 2064723 : tree _q21 = TREE_OPERAND (_p0, 1);
6100 2064723 : switch (TREE_CODE (_p1))
6101 : {
6102 2130 : case PLUS_EXPR:
6103 2130 : {
6104 2130 : tree _q50 = TREE_OPERAND (_p1, 0);
6105 2130 : tree _q51 = TREE_OPERAND (_p1, 1);
6106 2130 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6107 : {
6108 368 : {
6109 368 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6110 368 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6111 368 : if (res) return res;
6112 : }
6113 : }
6114 1762 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6115 : {
6116 28 : {
6117 28 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q50, _q20 };
6118 28 : tree res = generic_simplify_65 (loc, type, _p0, _p1, captures);
6119 28 : if (res) return res;
6120 : }
6121 : }
6122 : break;
6123 : }
6124 556 : case MINUS_EXPR:
6125 556 : {
6126 556 : tree _q50 = TREE_OPERAND (_p1, 0);
6127 556 : tree _q51 = TREE_OPERAND (_p1, 1);
6128 556 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6129 : {
6130 1 : {
6131 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6132 1 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures);
6133 1 : if (res) return res;
6134 : }
6135 : }
6136 555 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6137 : {
6138 9 : {
6139 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6140 9 : tree res = generic_simplify_66 (loc, type, _p0, _p1, captures);
6141 9 : if (res) return res;
6142 : }
6143 : }
6144 : break;
6145 : }
6146 2064317 : default:;
6147 : }
6148 2064317 : if (CONSTANT_CLASS_P (_q21))
6149 : {
6150 134882 : if (CONSTANT_CLASS_P (_p1))
6151 : {
6152 90159 : {
6153 90159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6154 90159 : tree res = generic_simplify_63 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR);
6155 90159 : if (res) return res;
6156 : }
6157 : }
6158 : }
6159 1974350 : if (CONSTANT_CLASS_P (_q20))
6160 : {
6161 403295 : if (CONSTANT_CLASS_P (_p1))
6162 : {
6163 234203 : {
6164 234203 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6165 234203 : tree res = generic_simplify_64 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6166 234203 : if (res) return res;
6167 : }
6168 : }
6169 : }
6170 : break;
6171 : }
6172 477 : case POINTER_DIFF_EXPR:
6173 477 : {
6174 477 : tree _q20 = TREE_OPERAND (_p0, 0);
6175 477 : tree _q21 = TREE_OPERAND (_p0, 1);
6176 477 : switch (TREE_CODE (_p1))
6177 : {
6178 7 : case POINTER_DIFF_EXPR:
6179 7 : {
6180 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6181 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6182 7 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6183 : {
6184 7 : {
6185 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
6186 7 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6187 7 : if (res) return res;
6188 : }
6189 : }
6190 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6191 : {
6192 0 : {
6193 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q51, _q20 };
6194 0 : tree res = generic_simplify_67 (loc, type, _p0, _p1, captures);
6195 0 : if (res) return res;
6196 : }
6197 : }
6198 : break;
6199 : }
6200 : default:;
6201 : }
6202 : break;
6203 : }
6204 17689317 : CASE_CONVERT:
6205 17689317 : {
6206 17689317 : tree _q20 = TREE_OPERAND (_p0, 0);
6207 17689317 : switch (TREE_CODE (_p1))
6208 : {
6209 2794043 : CASE_CONVERT:
6210 2794043 : {
6211 2794043 : tree _q40 = TREE_OPERAND (_p1, 0);
6212 2794043 : {
6213 2794043 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6214 2794043 : tree res = generic_simplify_68 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6215 2794043 : if (res) return res;
6216 : }
6217 2793903 : break;
6218 : }
6219 17689177 : default:;
6220 : }
6221 17689177 : switch (TREE_CODE (_q20))
6222 : {
6223 117399 : case BIT_NOT_EXPR:
6224 117399 : {
6225 117399 : tree _q30 = TREE_OPERAND (_q20, 0);
6226 117399 : switch (TREE_CODE (_p1))
6227 : {
6228 197 : CASE_CONVERT:
6229 197 : {
6230 197 : tree _q50 = TREE_OPERAND (_p1, 0);
6231 197 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
6232 : {
6233 0 : {
6234 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6235 0 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6236 0 : if (res) return res;
6237 : }
6238 : }
6239 : break;
6240 : }
6241 : default:;
6242 : }
6243 : break;
6244 : }
6245 17689177 : default:;
6246 : }
6247 17689177 : switch (TREE_CODE (_p1))
6248 : {
6249 2793903 : CASE_CONVERT:
6250 2793903 : {
6251 2793903 : tree _q40 = TREE_OPERAND (_p1, 0);
6252 2793903 : switch (TREE_CODE (_q40))
6253 : {
6254 596 : case BIT_NOT_EXPR:
6255 596 : {
6256 596 : tree _q50 = TREE_OPERAND (_q40, 0);
6257 596 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6258 : {
6259 0 : {
6260 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6261 0 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6262 0 : if (res) return res;
6263 : }
6264 : }
6265 : break;
6266 : }
6267 : default:;
6268 : }
6269 : break;
6270 : }
6271 : default:;
6272 : }
6273 : break;
6274 : }
6275 321512 : case BIT_NOT_EXPR:
6276 321512 : {
6277 321512 : tree _q20 = TREE_OPERAND (_p0, 0);
6278 321512 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6279 : {
6280 538 : {
6281 538 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6282 538 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6283 538 : if (res) return res;
6284 : }
6285 : }
6286 320974 : if (integer_each_onep (_p1))
6287 : {
6288 2660 : {
6289 2660 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6290 2660 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures);
6291 2660 : if (res) return res;
6292 : }
6293 : }
6294 : break;
6295 : }
6296 66456599 : default:;
6297 : }
6298 66456599 : switch (TREE_CODE (_p1))
6299 : {
6300 40181 : case BIT_NOT_EXPR:
6301 40181 : {
6302 40181 : tree _q30 = TREE_OPERAND (_p1, 0);
6303 40181 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6304 : {
6305 0 : {
6306 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6307 0 : tree res = generic_simplify_69 (loc, type, _p0, _p1, captures);
6308 0 : if (res) return res;
6309 : }
6310 : }
6311 : break;
6312 : }
6313 66456599 : default:;
6314 : }
6315 66456599 : switch (TREE_CODE (_p0))
6316 : {
6317 17689177 : CASE_CONVERT:
6318 17689177 : {
6319 17689177 : tree _q20 = TREE_OPERAND (_p0, 0);
6320 17689177 : switch (TREE_CODE (_q20))
6321 : {
6322 117399 : case BIT_NOT_EXPR:
6323 117399 : {
6324 117399 : tree _q30 = TREE_OPERAND (_q20, 0);
6325 117399 : if (integer_each_onep (_p1))
6326 : {
6327 113826 : {
6328 113826 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6329 113826 : tree res = generic_simplify_70 (loc, type, _p0, _p1, captures);
6330 113826 : if (res) return res;
6331 : }
6332 : }
6333 : break;
6334 : }
6335 : default:;
6336 : }
6337 : break;
6338 : }
6339 13273865 : case MULT_EXPR:
6340 13273865 : {
6341 13273865 : tree _q20 = TREE_OPERAND (_p0, 0);
6342 13273865 : tree _q21 = TREE_OPERAND (_p0, 1);
6343 13273865 : switch (TREE_CODE (_p1))
6344 : {
6345 3380867 : case MULT_EXPR:
6346 3380867 : {
6347 3380867 : tree _q50 = TREE_OPERAND (_p1, 0);
6348 3380867 : tree _q51 = TREE_OPERAND (_p1, 1);
6349 3380867 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6350 : {
6351 792468 : {
6352 792468 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
6353 792468 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6354 792468 : if (res) return res;
6355 : }
6356 : }
6357 3376308 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6358 : {
6359 22 : {
6360 22 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
6361 22 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6362 22 : if (res) return res;
6363 : }
6364 : }
6365 3376303 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6366 : {
6367 247 : {
6368 247 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
6369 247 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6370 247 : if (res) return res;
6371 : }
6372 : }
6373 3376130 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6374 : {
6375 1255517 : {
6376 1255517 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
6377 1255517 : tree res = generic_simplify_71 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6378 1255517 : if (res) return res;
6379 : }
6380 : }
6381 : break;
6382 : }
6383 : default:;
6384 : }
6385 : break;
6386 : }
6387 65083625 : default:;
6388 : }
6389 65083625 : switch (TREE_CODE (_p1))
6390 : {
6391 3636894 : case MULT_EXPR:
6392 3636894 : {
6393 3636894 : tree _q30 = TREE_OPERAND (_p1, 0);
6394 3636894 : tree _q31 = TREE_OPERAND (_p1, 1);
6395 3636894 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6396 : {
6397 3849 : {
6398 3849 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
6399 3849 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6400 3849 : if (res) return res;
6401 : }
6402 : }
6403 3633092 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6404 : {
6405 0 : {
6406 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
6407 0 : tree res = generic_simplify_72 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6408 0 : if (res) return res;
6409 : }
6410 : }
6411 : break;
6412 : }
6413 65079823 : default:;
6414 : }
6415 65079823 : switch (TREE_CODE (_p0))
6416 : {
6417 12013860 : case MULT_EXPR:
6418 12013860 : {
6419 12013860 : tree _q20 = TREE_OPERAND (_p0, 0);
6420 12013860 : tree _q21 = TREE_OPERAND (_p0, 1);
6421 12013860 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6422 : {
6423 33425 : {
6424 33425 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6425 33425 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6426 33425 : if (res) return res;
6427 : }
6428 : }
6429 11981081 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6430 : {
6431 376279 : {
6432 376279 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
6433 376279 : tree res = generic_simplify_73 (loc, type, _p0, _p1, captures, PLUS_EXPR);
6434 376279 : if (res) return res;
6435 : }
6436 : }
6437 11605430 : if (integer_nonzerop (_q20))
6438 : {
6439 102 : switch (TREE_CODE (_p1))
6440 : {
6441 50 : case INTEGER_CST:
6442 50 : {
6443 50 : {
6444 50 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6445 50 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6446 50 : if (res) return res;
6447 : }
6448 50 : break;
6449 : }
6450 : default:;
6451 : }
6452 : }
6453 11605430 : if (integer_nonzerop (_q21))
6454 : {
6455 7645653 : switch (TREE_CODE (_p1))
6456 : {
6457 3904079 : case INTEGER_CST:
6458 3904079 : {
6459 3904079 : {
6460 3904079 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1 };
6461 3904079 : tree res = generic_simplify_74 (loc, type, _p0, _p1, captures);
6462 3904079 : if (res) return res;
6463 : }
6464 3390024 : break;
6465 : }
6466 : default:;
6467 : }
6468 : }
6469 11091375 : switch (TREE_CODE (_q20))
6470 : {
6471 197105 : case MINUS_EXPR:
6472 197105 : {
6473 197105 : tree _q30 = TREE_OPERAND (_q20, 0);
6474 197105 : tree _q31 = TREE_OPERAND (_q20, 1);
6475 197105 : if (tree_zero_one_valued_p (_q21))
6476 : {
6477 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
6478 : {
6479 0 : {
6480 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q31, _q30, _q21 };
6481 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6482 0 : if (res) return res;
6483 : }
6484 : }
6485 : }
6486 : break;
6487 : }
6488 11091375 : default:;
6489 : }
6490 11091375 : if (tree_zero_one_valued_p (_q20))
6491 : {
6492 36220 : switch (TREE_CODE (_q21))
6493 : {
6494 9 : case MINUS_EXPR:
6495 9 : {
6496 9 : tree _q40 = TREE_OPERAND (_q21, 0);
6497 9 : tree _q41 = TREE_OPERAND (_q21, 1);
6498 9 : if ((_p1 == _q41 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q41, 0) && types_match (_p1, _q41)))
6499 : {
6500 9 : {
6501 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q41, _q40, _q20 };
6502 9 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6503 9 : if (res) return res;
6504 : }
6505 : }
6506 : break;
6507 : }
6508 : default:;
6509 : }
6510 : }
6511 : break;
6512 : }
6513 3112 : case MIN_EXPR:
6514 3112 : {
6515 3112 : tree _q20 = TREE_OPERAND (_p0, 0);
6516 3112 : tree _q21 = TREE_OPERAND (_p0, 1);
6517 3112 : switch (TREE_CODE (_p1))
6518 : {
6519 0 : case MAX_EXPR:
6520 0 : {
6521 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6522 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6523 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6524 : {
6525 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6526 : {
6527 0 : {
6528 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6529 0 : if (!HONOR_NANS (captures[0])
6530 : )
6531 : {
6532 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1248;
6533 0 : {
6534 0 : tree res_op0;
6535 0 : res_op0 = captures[0];
6536 0 : tree res_op1;
6537 0 : res_op1 = captures[1];
6538 0 : tree _r;
6539 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6540 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6541 0 : return _r;
6542 : }
6543 0 : next_after_fail1248:;
6544 : }
6545 : }
6546 : }
6547 : }
6548 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6549 : {
6550 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6551 : {
6552 0 : {
6553 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6554 0 : if (!HONOR_NANS (captures[0])
6555 : )
6556 : {
6557 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1249;
6558 0 : {
6559 0 : tree res_op0;
6560 0 : res_op0 = captures[0];
6561 0 : tree res_op1;
6562 0 : res_op1 = captures[1];
6563 0 : tree _r;
6564 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6565 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6566 0 : return _r;
6567 : }
6568 0 : next_after_fail1249:;
6569 : }
6570 : }
6571 : }
6572 : }
6573 : break;
6574 : }
6575 : default:;
6576 : }
6577 : break;
6578 : }
6579 12173 : case MAX_EXPR:
6580 12173 : {
6581 12173 : tree _q20 = TREE_OPERAND (_p0, 0);
6582 12173 : tree _q21 = TREE_OPERAND (_p0, 1);
6583 12173 : switch (TREE_CODE (_p1))
6584 : {
6585 0 : case MIN_EXPR:
6586 0 : {
6587 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6588 0 : tree _q51 = TREE_OPERAND (_p1, 1);
6589 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6590 : {
6591 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6592 : {
6593 0 : {
6594 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6595 0 : if (!HONOR_NANS (captures[0])
6596 : )
6597 : {
6598 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1250;
6599 0 : {
6600 0 : tree res_op0;
6601 0 : res_op0 = captures[0];
6602 0 : tree res_op1;
6603 0 : res_op1 = captures[1];
6604 0 : tree _r;
6605 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6606 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6607 0 : return _r;
6608 : }
6609 0 : next_after_fail1250:;
6610 : }
6611 : }
6612 : }
6613 : }
6614 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6615 : {
6616 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6617 : {
6618 0 : {
6619 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6620 0 : if (!HONOR_NANS (captures[0])
6621 : )
6622 : {
6623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1251;
6624 0 : {
6625 0 : tree res_op0;
6626 0 : res_op0 = captures[0];
6627 0 : tree res_op1;
6628 0 : res_op1 = captures[1];
6629 0 : tree _r;
6630 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
6631 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
6632 0 : return _r;
6633 : }
6634 0 : next_after_fail1251:;
6635 : }
6636 : }
6637 : }
6638 : }
6639 : break;
6640 : }
6641 : default:;
6642 : }
6643 : break;
6644 : }
6645 64157336 : default:;
6646 : }
6647 64157336 : switch (TREE_CODE (_p1))
6648 : {
6649 3633028 : case MULT_EXPR:
6650 3633028 : {
6651 3633028 : tree _q30 = TREE_OPERAND (_p1, 0);
6652 3633028 : tree _q31 = TREE_OPERAND (_p1, 1);
6653 3633028 : switch (TREE_CODE (_q30))
6654 : {
6655 147392 : case MINUS_EXPR:
6656 147392 : {
6657 147392 : tree _q40 = TREE_OPERAND (_q30, 0);
6658 147392 : tree _q41 = TREE_OPERAND (_q30, 1);
6659 147392 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6660 : {
6661 16 : if (tree_zero_one_valued_p (_q31))
6662 : {
6663 0 : {
6664 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q31 };
6665 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6666 0 : if (res) return res;
6667 : }
6668 : }
6669 : }
6670 : break;
6671 : }
6672 3633028 : default:;
6673 : }
6674 3633028 : if (tree_zero_one_valued_p (_q30))
6675 : {
6676 14216 : switch (TREE_CODE (_q31))
6677 : {
6678 0 : case MINUS_EXPR:
6679 0 : {
6680 0 : tree _q50 = TREE_OPERAND (_q31, 0);
6681 0 : tree _q51 = TREE_OPERAND (_q31, 1);
6682 0 : if ((_q51 == _p0 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _p0, 0) && types_match (_q51, _p0)))
6683 : {
6684 0 : {
6685 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q50, _q30 };
6686 0 : tree res = generic_simplify_75 (loc, type, _p0, _p1, captures);
6687 0 : if (res) return res;
6688 : }
6689 : }
6690 : break;
6691 : }
6692 : default:;
6693 : }
6694 : }
6695 : break;
6696 : }
6697 64157336 : default:;
6698 : }
6699 64157336 : switch (TREE_CODE (_p0))
6700 : {
6701 11091373 : case MULT_EXPR:
6702 11091373 : {
6703 11091373 : tree _q20 = TREE_OPERAND (_p0, 0);
6704 11091373 : tree _q21 = TREE_OPERAND (_p0, 1);
6705 11091373 : switch (TREE_CODE (_q20))
6706 : {
6707 20158 : case TRUNC_DIV_EXPR:
6708 20158 : {
6709 20158 : tree _q30 = TREE_OPERAND (_q20, 0);
6710 20158 : tree _q31 = TREE_OPERAND (_q20, 1);
6711 20158 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6712 : {
6713 2698 : switch (TREE_CODE (_p1))
6714 : {
6715 2 : case TRUNC_MOD_EXPR:
6716 2 : {
6717 2 : tree _q70 = TREE_OPERAND (_p1, 0);
6718 2 : tree _q71 = TREE_OPERAND (_p1, 1);
6719 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6720 : {
6721 2 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6722 : {
6723 2 : {
6724 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6725 2 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6726 2 : if (res) return res;
6727 : }
6728 : }
6729 : }
6730 : break;
6731 : }
6732 : default:;
6733 : }
6734 : }
6735 : break;
6736 : }
6737 0 : case CEIL_DIV_EXPR:
6738 0 : {
6739 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6740 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6741 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6742 : {
6743 0 : switch (TREE_CODE (_p1))
6744 : {
6745 0 : case CEIL_MOD_EXPR:
6746 0 : {
6747 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6748 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6749 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6750 : {
6751 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6752 : {
6753 0 : {
6754 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6755 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6756 0 : if (res) return res;
6757 : }
6758 : }
6759 : }
6760 : break;
6761 : }
6762 : default:;
6763 : }
6764 : }
6765 : break;
6766 : }
6767 0 : case FLOOR_DIV_EXPR:
6768 0 : {
6769 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6770 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6771 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6772 : {
6773 0 : switch (TREE_CODE (_p1))
6774 : {
6775 0 : case FLOOR_MOD_EXPR:
6776 0 : {
6777 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6778 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6779 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6780 : {
6781 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6782 : {
6783 0 : {
6784 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6785 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6786 0 : if (res) return res;
6787 : }
6788 : }
6789 : }
6790 : break;
6791 : }
6792 : default:;
6793 : }
6794 : }
6795 : break;
6796 : }
6797 0 : case ROUND_DIV_EXPR:
6798 0 : {
6799 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6800 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6801 0 : if ((_q21 == _q31 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q31, 0) && types_match (_q21, _q31)))
6802 : {
6803 0 : switch (TREE_CODE (_p1))
6804 : {
6805 0 : case ROUND_MOD_EXPR:
6806 0 : {
6807 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6808 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6809 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
6810 : {
6811 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
6812 : {
6813 0 : {
6814 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
6815 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
6816 0 : if (res) return res;
6817 : }
6818 : }
6819 : }
6820 : break;
6821 : }
6822 : default:;
6823 : }
6824 : }
6825 : break;
6826 : }
6827 11091371 : default:;
6828 : }
6829 11091371 : switch (TREE_CODE (_q21))
6830 : {
6831 6 : case TRUNC_DIV_EXPR:
6832 6 : {
6833 6 : tree _q40 = TREE_OPERAND (_q21, 0);
6834 6 : tree _q41 = TREE_OPERAND (_q21, 1);
6835 6 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6836 : {
6837 0 : switch (TREE_CODE (_p1))
6838 : {
6839 0 : case TRUNC_MOD_EXPR:
6840 0 : {
6841 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6842 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6843 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6844 : {
6845 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6846 : {
6847 0 : {
6848 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6849 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6850 0 : if (res) return res;
6851 : }
6852 : }
6853 : }
6854 : break;
6855 : }
6856 : default:;
6857 : }
6858 : }
6859 : break;
6860 : }
6861 4 : case CEIL_DIV_EXPR:
6862 4 : {
6863 4 : tree _q40 = TREE_OPERAND (_q21, 0);
6864 4 : tree _q41 = TREE_OPERAND (_q21, 1);
6865 4 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6866 : {
6867 0 : switch (TREE_CODE (_p1))
6868 : {
6869 0 : case CEIL_MOD_EXPR:
6870 0 : {
6871 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6872 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6873 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6874 : {
6875 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6876 : {
6877 0 : {
6878 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6879 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
6880 0 : if (res) return res;
6881 : }
6882 : }
6883 : }
6884 : break;
6885 : }
6886 : default:;
6887 : }
6888 : }
6889 : break;
6890 : }
6891 0 : case FLOOR_DIV_EXPR:
6892 0 : {
6893 0 : tree _q40 = TREE_OPERAND (_q21, 0);
6894 0 : tree _q41 = TREE_OPERAND (_q21, 1);
6895 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6896 : {
6897 0 : switch (TREE_CODE (_p1))
6898 : {
6899 0 : case FLOOR_MOD_EXPR:
6900 0 : {
6901 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6902 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6903 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6904 : {
6905 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6906 : {
6907 0 : {
6908 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6909 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
6910 0 : if (res) return res;
6911 : }
6912 : }
6913 : }
6914 : break;
6915 : }
6916 : default:;
6917 : }
6918 : }
6919 : break;
6920 : }
6921 0 : case ROUND_DIV_EXPR:
6922 0 : {
6923 0 : tree _q40 = TREE_OPERAND (_q21, 0);
6924 0 : tree _q41 = TREE_OPERAND (_q21, 1);
6925 0 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6926 : {
6927 0 : switch (TREE_CODE (_p1))
6928 : {
6929 0 : case ROUND_MOD_EXPR:
6930 0 : {
6931 0 : tree _q70 = TREE_OPERAND (_p1, 0);
6932 0 : tree _q71 = TREE_OPERAND (_p1, 1);
6933 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
6934 : {
6935 0 : if ((_q71 == _q20 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q20, 0) && types_match (_q71, _q20)))
6936 : {
6937 0 : {
6938 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6939 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
6940 0 : if (res) return res;
6941 : }
6942 : }
6943 : }
6944 : break;
6945 : }
6946 : default:;
6947 : }
6948 : }
6949 : break;
6950 : }
6951 : default:;
6952 : }
6953 : break;
6954 : }
6955 30052 : case TRUNC_MOD_EXPR:
6956 30052 : {
6957 30052 : tree _q20 = TREE_OPERAND (_p0, 0);
6958 30052 : tree _q21 = TREE_OPERAND (_p0, 1);
6959 30052 : switch (TREE_CODE (_p1))
6960 : {
6961 119 : case MULT_EXPR:
6962 119 : {
6963 119 : tree _q50 = TREE_OPERAND (_p1, 0);
6964 119 : tree _q51 = TREE_OPERAND (_p1, 1);
6965 119 : switch (TREE_CODE (_q50))
6966 : {
6967 106 : case TRUNC_DIV_EXPR:
6968 106 : {
6969 106 : tree _q60 = TREE_OPERAND (_q50, 0);
6970 106 : tree _q61 = TREE_OPERAND (_q50, 1);
6971 106 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6972 : {
6973 106 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
6974 : {
6975 94 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6976 : {
6977 0 : {
6978 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6979 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
6980 0 : if (res) return res;
6981 : }
6982 : }
6983 : }
6984 : }
6985 : break;
6986 : }
6987 119 : default:;
6988 : }
6989 119 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6990 : {
6991 0 : switch (TREE_CODE (_q51))
6992 : {
6993 0 : case TRUNC_DIV_EXPR:
6994 0 : {
6995 0 : tree _q70 = TREE_OPERAND (_q51, 0);
6996 0 : tree _q71 = TREE_OPERAND (_q51, 1);
6997 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6998 : {
6999 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7000 : {
7001 0 : {
7002 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7003 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, TRUNC_DIV_EXPR, TRUNC_MOD_EXPR);
7004 0 : if (res) return res;
7005 : }
7006 : }
7007 : }
7008 : break;
7009 : }
7010 : default:;
7011 : }
7012 : }
7013 : break;
7014 : }
7015 : default:;
7016 : }
7017 : break;
7018 : }
7019 0 : case CEIL_MOD_EXPR:
7020 0 : {
7021 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7022 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7023 0 : switch (TREE_CODE (_p1))
7024 : {
7025 0 : case MULT_EXPR:
7026 0 : {
7027 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7028 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7029 0 : switch (TREE_CODE (_q50))
7030 : {
7031 0 : case CEIL_DIV_EXPR:
7032 0 : {
7033 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7034 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7035 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7036 : {
7037 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7038 : {
7039 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7040 : {
7041 0 : {
7042 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7043 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7044 0 : if (res) return res;
7045 : }
7046 : }
7047 : }
7048 : }
7049 : break;
7050 : }
7051 0 : default:;
7052 : }
7053 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7054 : {
7055 0 : switch (TREE_CODE (_q51))
7056 : {
7057 0 : case CEIL_DIV_EXPR:
7058 0 : {
7059 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7060 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7061 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7062 : {
7063 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7064 : {
7065 0 : {
7066 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7067 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR, CEIL_MOD_EXPR);
7068 0 : if (res) return res;
7069 : }
7070 : }
7071 : }
7072 : break;
7073 : }
7074 : default:;
7075 : }
7076 : }
7077 : break;
7078 : }
7079 : default:;
7080 : }
7081 : break;
7082 : }
7083 126 : case FLOOR_MOD_EXPR:
7084 126 : {
7085 126 : tree _q20 = TREE_OPERAND (_p0, 0);
7086 126 : tree _q21 = TREE_OPERAND (_p0, 1);
7087 126 : switch (TREE_CODE (_p1))
7088 : {
7089 0 : case MULT_EXPR:
7090 0 : {
7091 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7092 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7093 0 : switch (TREE_CODE (_q50))
7094 : {
7095 0 : case FLOOR_DIV_EXPR:
7096 0 : {
7097 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7098 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7099 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7100 : {
7101 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7102 : {
7103 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7104 : {
7105 0 : {
7106 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7107 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7108 0 : if (res) return res;
7109 : }
7110 : }
7111 : }
7112 : }
7113 : break;
7114 : }
7115 0 : default:;
7116 : }
7117 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7118 : {
7119 0 : switch (TREE_CODE (_q51))
7120 : {
7121 0 : case FLOOR_DIV_EXPR:
7122 0 : {
7123 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7124 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7125 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7126 : {
7127 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7128 : {
7129 0 : {
7130 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7131 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, FLOOR_DIV_EXPR, FLOOR_MOD_EXPR);
7132 0 : if (res) return res;
7133 : }
7134 : }
7135 : }
7136 : break;
7137 : }
7138 : default:;
7139 : }
7140 : }
7141 : break;
7142 : }
7143 : default:;
7144 : }
7145 : break;
7146 : }
7147 0 : case ROUND_MOD_EXPR:
7148 0 : {
7149 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7150 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7151 0 : switch (TREE_CODE (_p1))
7152 : {
7153 0 : case MULT_EXPR:
7154 0 : {
7155 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7156 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7157 0 : switch (TREE_CODE (_q50))
7158 : {
7159 0 : case ROUND_DIV_EXPR:
7160 0 : {
7161 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7162 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7163 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7164 : {
7165 0 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
7166 : {
7167 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7168 : {
7169 0 : {
7170 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7171 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7172 0 : if (res) return res;
7173 : }
7174 : }
7175 : }
7176 : }
7177 : break;
7178 : }
7179 0 : default:;
7180 : }
7181 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7182 : {
7183 0 : switch (TREE_CODE (_q51))
7184 : {
7185 0 : case ROUND_DIV_EXPR:
7186 0 : {
7187 0 : tree _q70 = TREE_OPERAND (_q51, 0);
7188 0 : tree _q71 = TREE_OPERAND (_q51, 1);
7189 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
7190 : {
7191 0 : if ((_q71 == _q21 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q21, 0) && types_match (_q71, _q21)))
7192 : {
7193 0 : {
7194 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7195 0 : tree res = generic_simplify_76 (loc, type, _p0, _p1, captures, ROUND_DIV_EXPR, ROUND_MOD_EXPR);
7196 0 : if (res) return res;
7197 : }
7198 : }
7199 : }
7200 : break;
7201 : }
7202 : default:;
7203 : }
7204 : }
7205 : break;
7206 : }
7207 : default:;
7208 : }
7209 : break;
7210 : }
7211 64157334 : default:;
7212 : }
7213 64157334 : switch (TREE_CODE (_p1))
7214 : {
7215 3070267 : case REAL_CST:
7216 3070267 : {
7217 3070267 : {
7218 3070267 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7219 3070267 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))
7220 : )
7221 : {
7222 113696 : {
7223 113696 : tree tem = const_unop (NEGATE_EXPR, type, captures[1]);
7224 113696 : if (!TREE_OVERFLOW (tem) || !flag_trapping_math
7225 : )
7226 : {
7227 113696 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1252;
7228 113696 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1252;
7229 113696 : {
7230 113696 : tree res_op0;
7231 113696 : res_op0 = captures[0];
7232 113696 : tree res_op1;
7233 113696 : res_op1 = tem;
7234 113696 : tree _r;
7235 113696 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
7236 113696 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
7237 113696 : return _r;
7238 : }
7239 2956571 : next_after_fail1252:;
7240 : }
7241 : }
7242 : }
7243 : }
7244 2956571 : break;
7245 : }
7246 64043638 : default:;
7247 : }
7248 64043638 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
7249 : {
7250 1589650 : {
7251 1589650 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7252 1589650 : if (SCALAR_FLOAT_TYPE_P (type)
7253 : )
7254 : {
7255 699 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1253;
7256 699 : {
7257 699 : tree res_op0;
7258 699 : res_op0 = captures[0];
7259 699 : tree res_op1;
7260 699 : res_op1 = build_real (type, dconst2);
7261 699 : tree _r;
7262 699 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7263 699 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 903, __FILE__, __LINE__, true);
7264 699 : return _r;
7265 : }
7266 0 : next_after_fail1253:;
7267 : }
7268 : else
7269 : {
7270 1588951 : if (INTEGRAL_TYPE_P (type)
7271 : )
7272 : {
7273 1588875 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1254;
7274 1588875 : {
7275 1588875 : tree res_op0;
7276 1588875 : res_op0 = captures[0];
7277 1588875 : tree res_op1;
7278 1588875 : res_op1 = build_int_cst (type, 2);
7279 1588875 : tree _r;
7280 1588875 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7281 1588875 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 904, __FILE__, __LINE__, true);
7282 1588875 : return _r;
7283 : }
7284 0 : next_after_fail1254:;
7285 : }
7286 : }
7287 : }
7288 : }
7289 62454064 : switch (TREE_CODE (_p0))
7290 : {
7291 144 : case VEC_COND_EXPR:
7292 144 : {
7293 144 : tree _q20 = TREE_OPERAND (_p0, 0);
7294 144 : tree _q21 = TREE_OPERAND (_p0, 1);
7295 144 : tree _q22 = TREE_OPERAND (_p0, 2);
7296 144 : switch (TREE_CODE (_p1))
7297 : {
7298 48 : case VEC_COND_EXPR:
7299 48 : {
7300 48 : tree _q60 = TREE_OPERAND (_p1, 0);
7301 48 : tree _q61 = TREE_OPERAND (_p1, 1);
7302 48 : tree _q62 = TREE_OPERAND (_p1, 2);
7303 48 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7304 : {
7305 24 : {
7306 24 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7307 24 : if (VECTOR_TYPE_P (type)
7308 24 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7309 : || types_match (type, TREE_TYPE (captures[2]))
7310 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7311 : || (optimize_vectors_before_lowering_p ()
7312 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7313 : )
7314 : {
7315 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1255;
7316 24 : {
7317 24 : tree res_op0;
7318 24 : res_op0 = captures[1];
7319 24 : tree res_op1;
7320 24 : {
7321 24 : tree _o1[2], _r1;
7322 24 : _o1[0] = captures[2];
7323 24 : _o1[1] = captures[5];
7324 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7325 24 : if (EXPR_P (_r1))
7326 0 : goto next_after_fail1255;
7327 24 : res_op1 = _r1;
7328 : }
7329 24 : tree res_op2;
7330 24 : {
7331 24 : tree _o1[2], _r1;
7332 24 : _o1[0] = captures[3];
7333 24 : _o1[1] = captures[6];
7334 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7335 24 : if (EXPR_P (_r1))
7336 0 : goto next_after_fail1255;
7337 24 : res_op2 = _r1;
7338 : }
7339 24 : tree _r;
7340 24 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7341 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
7342 24 : return _r;
7343 : }
7344 0 : next_after_fail1255:;
7345 : }
7346 : }
7347 : }
7348 : break;
7349 : }
7350 120 : default:;
7351 : }
7352 120 : {
7353 120 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7354 120 : if (VECTOR_TYPE_P (type)
7355 120 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7356 : || types_match (type, TREE_TYPE (captures[2]))
7357 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7358 : || (optimize_vectors_before_lowering_p ()
7359 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7360 : )
7361 : {
7362 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1256;
7363 120 : {
7364 120 : if (! tree_invariant_p (captures[4])) goto next_after_fail1256;
7365 26 : tree res_op0;
7366 26 : res_op0 = captures[1];
7367 26 : tree res_op1;
7368 26 : {
7369 26 : tree _o1[2], _r1;
7370 26 : _o1[0] = captures[2];
7371 26 : _o1[1] = unshare_expr (captures[4]);
7372 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7373 26 : if (EXPR_P (_r1))
7374 0 : goto next_after_fail1256;
7375 26 : res_op1 = _r1;
7376 : }
7377 26 : tree res_op2;
7378 26 : {
7379 26 : tree _o1[2], _r1;
7380 26 : _o1[0] = captures[3];
7381 26 : _o1[1] = captures[4];
7382 26 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7383 26 : if (EXPR_P (_r1))
7384 0 : goto next_after_fail1256;
7385 26 : res_op2 = _r1;
7386 : }
7387 26 : tree _r;
7388 26 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7389 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
7390 26 : return _r;
7391 : }
7392 94 : next_after_fail1256:;
7393 : }
7394 : }
7395 94 : if (integer_each_onep (_q21))
7396 : {
7397 0 : if (integer_zerop (_q22))
7398 : {
7399 0 : {
7400 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p0, _q20, _q21, _q22 };
7401 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7402 0 : if (res) return res;
7403 : }
7404 : }
7405 : }
7406 : break;
7407 : }
7408 62454014 : default:;
7409 : }
7410 62454014 : switch (TREE_CODE (_p1))
7411 : {
7412 40 : case VEC_COND_EXPR:
7413 40 : {
7414 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7415 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7416 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7417 40 : {
7418 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7419 40 : if (VECTOR_TYPE_P (type)
7420 40 : && (TREE_CODE_CLASS (PLUS_EXPR) != tcc_comparison
7421 : || types_match (type, TREE_TYPE (captures[3]))
7422 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
7423 : || (optimize_vectors_before_lowering_p ()
7424 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
7425 : )
7426 : {
7427 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1257;
7428 40 : {
7429 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1257;
7430 0 : tree res_op0;
7431 0 : res_op0 = captures[2];
7432 0 : tree res_op1;
7433 0 : {
7434 0 : tree _o1[2], _r1;
7435 0 : _o1[0] = unshare_expr (captures[0]);
7436 0 : _o1[1] = captures[3];
7437 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7438 0 : if (EXPR_P (_r1))
7439 0 : goto next_after_fail1257;
7440 0 : res_op1 = _r1;
7441 : }
7442 0 : tree res_op2;
7443 0 : {
7444 0 : tree _o1[2], _r1;
7445 0 : _o1[0] = captures[0];
7446 0 : _o1[1] = captures[4];
7447 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, type, _o1[0], _o1[1]);
7448 0 : if (EXPR_P (_r1))
7449 0 : goto next_after_fail1257;
7450 0 : res_op2 = _r1;
7451 : }
7452 0 : tree _r;
7453 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7454 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
7455 0 : return _r;
7456 : }
7457 40 : next_after_fail1257:;
7458 : }
7459 : }
7460 40 : break;
7461 : }
7462 327094 : case VIEW_CONVERT_EXPR:
7463 327094 : {
7464 327094 : tree _q30 = TREE_OPERAND (_p1, 0);
7465 327094 : switch (TREE_CODE (_q30))
7466 : {
7467 0 : case VEC_COND_EXPR:
7468 0 : {
7469 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7470 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7471 0 : tree _q42 = TREE_OPERAND (_q30, 2);
7472 0 : if (integer_each_onep (_q41))
7473 : {
7474 0 : if (integer_zerop (_q42))
7475 : {
7476 0 : {
7477 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q41, _q42 };
7478 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7479 0 : if (res) return res;
7480 : }
7481 : }
7482 : }
7483 : break;
7484 : }
7485 : default:;
7486 : }
7487 : break;
7488 : }
7489 62454014 : default:;
7490 : }
7491 62454014 : switch (TREE_CODE (_p0))
7492 : {
7493 316302 : case VIEW_CONVERT_EXPR:
7494 316302 : {
7495 316302 : tree _q20 = TREE_OPERAND (_p0, 0);
7496 316302 : switch (TREE_CODE (_q20))
7497 : {
7498 0 : case VEC_COND_EXPR:
7499 0 : {
7500 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7501 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7502 0 : tree _q32 = TREE_OPERAND (_q20, 2);
7503 0 : if (integer_each_onep (_q31))
7504 : {
7505 0 : if (integer_zerop (_q32))
7506 : {
7507 0 : {
7508 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q20, _q30, _q31, _q32 };
7509 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7510 0 : if (res) return res;
7511 : }
7512 : }
7513 : }
7514 : break;
7515 : }
7516 : default:;
7517 : }
7518 : break;
7519 : }
7520 62454014 : default:;
7521 : }
7522 62454014 : switch (TREE_CODE (_p1))
7523 : {
7524 40 : case VEC_COND_EXPR:
7525 40 : {
7526 40 : tree _q30 = TREE_OPERAND (_p1, 0);
7527 40 : tree _q31 = TREE_OPERAND (_p1, 1);
7528 40 : tree _q32 = TREE_OPERAND (_p1, 2);
7529 40 : if (integer_each_onep (_q31))
7530 : {
7531 0 : if (integer_zerop (_q32))
7532 : {
7533 0 : {
7534 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
7535 0 : tree res = generic_simplify_77 (loc, type, _p0, _p1, captures);
7536 0 : if (res) return res;
7537 : }
7538 : }
7539 : }
7540 : break;
7541 : }
7542 62454014 : default:;
7543 : }
7544 62454014 : switch (TREE_CODE (_p0))
7545 : {
7546 17567511 : CASE_CONVERT:
7547 17567511 : {
7548 17567511 : tree _q20 = TREE_OPERAND (_p0, 0);
7549 17567511 : switch (TREE_CODE (_q20))
7550 : {
7551 0 : case LT_EXPR:
7552 0 : {
7553 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7554 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7555 0 : if (integer_minus_onep (_p1))
7556 : {
7557 0 : {
7558 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7559 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
7560 0 : if (res) return res;
7561 : }
7562 : }
7563 : break;
7564 : }
7565 0 : case LE_EXPR:
7566 0 : {
7567 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7568 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7569 0 : if (integer_minus_onep (_p1))
7570 : {
7571 0 : {
7572 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7573 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
7574 0 : if (res) return res;
7575 : }
7576 : }
7577 : break;
7578 : }
7579 78 : case EQ_EXPR:
7580 78 : {
7581 78 : tree _q30 = TREE_OPERAND (_q20, 0);
7582 78 : tree _q31 = TREE_OPERAND (_q20, 1);
7583 78 : if (integer_minus_onep (_p1))
7584 : {
7585 0 : {
7586 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7587 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
7588 0 : if (res) return res;
7589 : }
7590 : }
7591 : break;
7592 : }
7593 224 : case NE_EXPR:
7594 224 : {
7595 224 : tree _q30 = TREE_OPERAND (_q20, 0);
7596 224 : tree _q31 = TREE_OPERAND (_q20, 1);
7597 224 : if (integer_minus_onep (_p1))
7598 : {
7599 0 : {
7600 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7601 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
7602 0 : if (res) return res;
7603 : }
7604 : }
7605 : break;
7606 : }
7607 12 : case GE_EXPR:
7608 12 : {
7609 12 : tree _q30 = TREE_OPERAND (_q20, 0);
7610 12 : tree _q31 = TREE_OPERAND (_q20, 1);
7611 12 : if (integer_minus_onep (_p1))
7612 : {
7613 0 : {
7614 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7615 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
7616 0 : if (res) return res;
7617 : }
7618 : }
7619 : break;
7620 : }
7621 1 : case GT_EXPR:
7622 1 : {
7623 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7624 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7625 1 : if (integer_minus_onep (_p1))
7626 : {
7627 0 : {
7628 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7629 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
7630 0 : if (res) return res;
7631 : }
7632 : }
7633 : break;
7634 : }
7635 0 : case UNORDERED_EXPR:
7636 0 : {
7637 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7638 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7639 0 : if (integer_minus_onep (_p1))
7640 : {
7641 0 : {
7642 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7643 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
7644 0 : if (res) return res;
7645 : }
7646 : }
7647 : break;
7648 : }
7649 0 : case ORDERED_EXPR:
7650 0 : {
7651 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7652 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7653 0 : if (integer_minus_onep (_p1))
7654 : {
7655 0 : {
7656 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7657 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
7658 0 : if (res) return res;
7659 : }
7660 : }
7661 : break;
7662 : }
7663 0 : case UNLT_EXPR:
7664 0 : {
7665 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7666 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7667 0 : if (integer_minus_onep (_p1))
7668 : {
7669 0 : {
7670 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7671 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
7672 0 : if (res) return res;
7673 : }
7674 : }
7675 : break;
7676 : }
7677 0 : case UNLE_EXPR:
7678 0 : {
7679 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7680 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7681 0 : if (integer_minus_onep (_p1))
7682 : {
7683 0 : {
7684 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7685 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
7686 0 : if (res) return res;
7687 : }
7688 : }
7689 : break;
7690 : }
7691 0 : case UNGT_EXPR:
7692 0 : {
7693 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7694 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7695 0 : if (integer_minus_onep (_p1))
7696 : {
7697 0 : {
7698 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7699 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
7700 0 : if (res) return res;
7701 : }
7702 : }
7703 : break;
7704 : }
7705 0 : case UNGE_EXPR:
7706 0 : {
7707 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7708 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7709 0 : if (integer_minus_onep (_p1))
7710 : {
7711 0 : {
7712 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7713 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
7714 0 : if (res) return res;
7715 : }
7716 : }
7717 : break;
7718 : }
7719 0 : case UNEQ_EXPR:
7720 0 : {
7721 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7722 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7723 0 : if (integer_minus_onep (_p1))
7724 : {
7725 0 : {
7726 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7727 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
7728 0 : if (res) return res;
7729 : }
7730 : }
7731 : break;
7732 : }
7733 0 : case LTGT_EXPR:
7734 0 : {
7735 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7736 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7737 0 : if (integer_minus_onep (_p1))
7738 : {
7739 0 : {
7740 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7741 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
7742 0 : if (res) return res;
7743 : }
7744 : }
7745 : break;
7746 : }
7747 : default:;
7748 : }
7749 : break;
7750 : }
7751 155 : case LT_EXPR:
7752 155 : {
7753 155 : tree _q20 = TREE_OPERAND (_p0, 0);
7754 155 : tree _q21 = TREE_OPERAND (_p0, 1);
7755 155 : if (integer_minus_onep (_p1))
7756 : {
7757 0 : {
7758 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7759 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
7760 0 : if (res) return res;
7761 : }
7762 : }
7763 : break;
7764 : }
7765 49 : case LE_EXPR:
7766 49 : {
7767 49 : tree _q20 = TREE_OPERAND (_p0, 0);
7768 49 : tree _q21 = TREE_OPERAND (_p0, 1);
7769 49 : if (integer_minus_onep (_p1))
7770 : {
7771 0 : {
7772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7773 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
7774 0 : if (res) return res;
7775 : }
7776 : }
7777 : break;
7778 : }
7779 15413 : case EQ_EXPR:
7780 15413 : {
7781 15413 : tree _q20 = TREE_OPERAND (_p0, 0);
7782 15413 : tree _q21 = TREE_OPERAND (_p0, 1);
7783 15413 : if (integer_minus_onep (_p1))
7784 : {
7785 23 : {
7786 23 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7787 23 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
7788 23 : if (res) return res;
7789 : }
7790 : }
7791 : break;
7792 : }
7793 1677 : case NE_EXPR:
7794 1677 : {
7795 1677 : tree _q20 = TREE_OPERAND (_p0, 0);
7796 1677 : tree _q21 = TREE_OPERAND (_p0, 1);
7797 1677 : if (integer_minus_onep (_p1))
7798 : {
7799 33 : {
7800 33 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7801 33 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
7802 33 : if (res) return res;
7803 : }
7804 : }
7805 : break;
7806 : }
7807 35 : case GE_EXPR:
7808 35 : {
7809 35 : tree _q20 = TREE_OPERAND (_p0, 0);
7810 35 : tree _q21 = TREE_OPERAND (_p0, 1);
7811 35 : if (integer_minus_onep (_p1))
7812 : {
7813 0 : {
7814 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7815 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
7816 0 : if (res) return res;
7817 : }
7818 : }
7819 : break;
7820 : }
7821 103 : case GT_EXPR:
7822 103 : {
7823 103 : tree _q20 = TREE_OPERAND (_p0, 0);
7824 103 : tree _q21 = TREE_OPERAND (_p0, 1);
7825 103 : if (integer_minus_onep (_p1))
7826 : {
7827 0 : {
7828 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7829 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
7830 0 : if (res) return res;
7831 : }
7832 : }
7833 : break;
7834 : }
7835 0 : case UNORDERED_EXPR:
7836 0 : {
7837 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7838 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7839 0 : if (integer_minus_onep (_p1))
7840 : {
7841 0 : {
7842 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7843 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
7844 0 : if (res) return res;
7845 : }
7846 : }
7847 : break;
7848 : }
7849 0 : case ORDERED_EXPR:
7850 0 : {
7851 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7852 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7853 0 : if (integer_minus_onep (_p1))
7854 : {
7855 0 : {
7856 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7857 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
7858 0 : if (res) return res;
7859 : }
7860 : }
7861 : break;
7862 : }
7863 0 : case UNLT_EXPR:
7864 0 : {
7865 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7866 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7867 0 : if (integer_minus_onep (_p1))
7868 : {
7869 0 : {
7870 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7871 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
7872 0 : if (res) return res;
7873 : }
7874 : }
7875 : break;
7876 : }
7877 0 : case UNLE_EXPR:
7878 0 : {
7879 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7880 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7881 0 : if (integer_minus_onep (_p1))
7882 : {
7883 0 : {
7884 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7885 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
7886 0 : if (res) return res;
7887 : }
7888 : }
7889 : break;
7890 : }
7891 0 : case UNGT_EXPR:
7892 0 : {
7893 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7894 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7895 0 : if (integer_minus_onep (_p1))
7896 : {
7897 0 : {
7898 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7899 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
7900 0 : if (res) return res;
7901 : }
7902 : }
7903 : break;
7904 : }
7905 0 : case UNGE_EXPR:
7906 0 : {
7907 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7908 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7909 0 : if (integer_minus_onep (_p1))
7910 : {
7911 0 : {
7912 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7913 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
7914 0 : if (res) return res;
7915 : }
7916 : }
7917 : break;
7918 : }
7919 0 : case UNEQ_EXPR:
7920 0 : {
7921 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7922 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7923 0 : if (integer_minus_onep (_p1))
7924 : {
7925 0 : {
7926 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7927 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
7928 0 : if (res) return res;
7929 : }
7930 : }
7931 : break;
7932 : }
7933 0 : case LTGT_EXPR:
7934 0 : {
7935 0 : tree _q20 = TREE_OPERAND (_p0, 0);
7936 0 : tree _q21 = TREE_OPERAND (_p0, 1);
7937 0 : if (integer_minus_onep (_p1))
7938 : {
7939 0 : {
7940 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7941 0 : tree res = generic_simplify_78 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
7942 0 : if (res) return res;
7943 : }
7944 : }
7945 : break;
7946 : }
7947 521302 : case RDIV_EXPR:
7948 521302 : {
7949 521302 : tree _q20 = TREE_OPERAND (_p0, 0);
7950 521302 : tree _q21 = TREE_OPERAND (_p0, 1);
7951 521302 : switch (TREE_CODE (_p1))
7952 : {
7953 110971 : case RDIV_EXPR:
7954 110971 : {
7955 110971 : tree _q50 = TREE_OPERAND (_p1, 0);
7956 110971 : tree _q51 = TREE_OPERAND (_p1, 1);
7957 110971 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7958 : {
7959 2 : {
7960 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7961 2 : tree res = generic_simplify_79 (loc, type, _p0, _p1, captures, PLUS_EXPR);
7962 2 : if (res) return res;
7963 : }
7964 : }
7965 : break;
7966 : }
7967 : default:;
7968 : }
7969 : break;
7970 : }
7971 1740152 : case MINUS_EXPR:
7972 1740152 : {
7973 1740152 : tree _q20 = TREE_OPERAND (_p0, 0);
7974 1740152 : tree _q21 = TREE_OPERAND (_p0, 1);
7975 1740152 : switch (TREE_CODE (_q20))
7976 : {
7977 41 : case CALL_EXPR:
7978 41 : switch (get_call_combined_fn (_q20))
7979 : {
7980 4 : case CFN_BUILT_IN_POPCOUNT:
7981 4 : if (call_expr_nargs (_q20) == 1)
7982 : {
7983 4 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7984 4 : switch (TREE_CODE (_q21))
7985 : {
7986 4 : case CALL_EXPR:
7987 4 : switch (get_call_combined_fn (_q21))
7988 : {
7989 4 : case CFN_BUILT_IN_POPCOUNT:
7990 4 : if (call_expr_nargs (_q21) == 1)
7991 : {
7992 4 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
7993 4 : switch (TREE_CODE (_q50))
7994 : {
7995 2 : case BIT_AND_EXPR:
7996 2 : {
7997 2 : tree _q60 = TREE_OPERAND (_q50, 0);
7998 2 : tree _q61 = TREE_OPERAND (_q50, 1);
7999 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8000 : {
8001 1 : switch (TREE_CODE (_p1))
8002 : {
8003 1 : case CALL_EXPR:
8004 1 : switch (get_call_combined_fn (_p1))
8005 : {
8006 1 : case CFN_BUILT_IN_POPCOUNT:
8007 1 : if (call_expr_nargs (_p1) == 1)
8008 : {
8009 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8010 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8011 : {
8012 1 : {
8013 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8014 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8015 1 : if (res) return res;
8016 : }
8017 : }
8018 : }
8019 : break;
8020 : default:;
8021 : }
8022 : break;
8023 : default:;
8024 : }
8025 : }
8026 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8027 : {
8028 1 : switch (TREE_CODE (_p1))
8029 : {
8030 1 : case CALL_EXPR:
8031 1 : switch (get_call_combined_fn (_p1))
8032 : {
8033 1 : case CFN_BUILT_IN_POPCOUNT:
8034 1 : if (call_expr_nargs (_p1) == 1)
8035 : {
8036 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8037 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8038 : {
8039 1 : {
8040 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8041 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
8042 1 : if (res) return res;
8043 : }
8044 : }
8045 : }
8046 : break;
8047 : default:;
8048 : }
8049 : break;
8050 : default:;
8051 : }
8052 : }
8053 : break;
8054 : }
8055 2 : case BIT_IOR_EXPR:
8056 2 : {
8057 2 : tree _q60 = TREE_OPERAND (_q50, 0);
8058 2 : tree _q61 = TREE_OPERAND (_q50, 1);
8059 2 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8060 : {
8061 1 : switch (TREE_CODE (_p1))
8062 : {
8063 1 : case CALL_EXPR:
8064 1 : switch (get_call_combined_fn (_p1))
8065 : {
8066 1 : case CFN_BUILT_IN_POPCOUNT:
8067 1 : if (call_expr_nargs (_p1) == 1)
8068 : {
8069 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8070 1 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8071 : {
8072 1 : {
8073 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8074 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8075 1 : if (res) return res;
8076 : }
8077 : }
8078 : }
8079 : break;
8080 : default:;
8081 : }
8082 : break;
8083 : default:;
8084 : }
8085 : }
8086 1 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8087 : {
8088 1 : switch (TREE_CODE (_p1))
8089 : {
8090 1 : case CALL_EXPR:
8091 1 : switch (get_call_combined_fn (_p1))
8092 : {
8093 1 : case CFN_BUILT_IN_POPCOUNT:
8094 1 : if (call_expr_nargs (_p1) == 1)
8095 : {
8096 1 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8097 1 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8098 : {
8099 1 : {
8100 1 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8101 1 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
8102 1 : if (res) return res;
8103 : }
8104 : }
8105 : }
8106 : break;
8107 : default:;
8108 : }
8109 : break;
8110 : default:;
8111 : }
8112 : }
8113 : break;
8114 : }
8115 : default:;
8116 : }
8117 : }
8118 : break;
8119 : default:;
8120 : }
8121 : break;
8122 : default:;
8123 : }
8124 : }
8125 : break;
8126 0 : case CFN_BUILT_IN_POPCOUNTLL:
8127 0 : if (call_expr_nargs (_q20) == 1)
8128 : {
8129 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8130 0 : switch (TREE_CODE (_q21))
8131 : {
8132 0 : case CALL_EXPR:
8133 0 : switch (get_call_combined_fn (_q21))
8134 : {
8135 0 : case CFN_BUILT_IN_POPCOUNTLL:
8136 0 : if (call_expr_nargs (_q21) == 1)
8137 : {
8138 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8139 0 : switch (TREE_CODE (_q50))
8140 : {
8141 0 : case BIT_AND_EXPR:
8142 0 : {
8143 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8144 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8145 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8146 : {
8147 0 : switch (TREE_CODE (_p1))
8148 : {
8149 0 : case CALL_EXPR:
8150 0 : switch (get_call_combined_fn (_p1))
8151 : {
8152 0 : case CFN_BUILT_IN_POPCOUNTLL:
8153 0 : if (call_expr_nargs (_p1) == 1)
8154 : {
8155 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8156 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8157 : {
8158 0 : {
8159 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8160 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8161 0 : if (res) return res;
8162 : }
8163 : }
8164 : }
8165 : break;
8166 : default:;
8167 : }
8168 : break;
8169 : default:;
8170 : }
8171 : }
8172 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8173 : {
8174 0 : switch (TREE_CODE (_p1))
8175 : {
8176 0 : case CALL_EXPR:
8177 0 : switch (get_call_combined_fn (_p1))
8178 : {
8179 0 : case CFN_BUILT_IN_POPCOUNTLL:
8180 0 : if (call_expr_nargs (_p1) == 1)
8181 : {
8182 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8183 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8184 : {
8185 0 : {
8186 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8187 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8188 0 : if (res) return res;
8189 : }
8190 : }
8191 : }
8192 : break;
8193 : default:;
8194 : }
8195 : break;
8196 : default:;
8197 : }
8198 : }
8199 : break;
8200 : }
8201 0 : case BIT_IOR_EXPR:
8202 0 : {
8203 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8204 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8205 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8206 : {
8207 0 : switch (TREE_CODE (_p1))
8208 : {
8209 0 : case CALL_EXPR:
8210 0 : switch (get_call_combined_fn (_p1))
8211 : {
8212 0 : case CFN_BUILT_IN_POPCOUNTLL:
8213 0 : if (call_expr_nargs (_p1) == 1)
8214 : {
8215 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8216 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8217 : {
8218 0 : {
8219 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8220 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8221 0 : if (res) return res;
8222 : }
8223 : }
8224 : }
8225 : break;
8226 : default:;
8227 : }
8228 : break;
8229 : default:;
8230 : }
8231 : }
8232 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8233 : {
8234 0 : switch (TREE_CODE (_p1))
8235 : {
8236 0 : case CALL_EXPR:
8237 0 : switch (get_call_combined_fn (_p1))
8238 : {
8239 0 : case CFN_BUILT_IN_POPCOUNTLL:
8240 0 : if (call_expr_nargs (_p1) == 1)
8241 : {
8242 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8243 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8244 : {
8245 0 : {
8246 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8247 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8248 0 : if (res) return res;
8249 : }
8250 : }
8251 : }
8252 : break;
8253 : default:;
8254 : }
8255 : break;
8256 : default:;
8257 : }
8258 : }
8259 : break;
8260 : }
8261 : default:;
8262 : }
8263 : }
8264 : break;
8265 : default:;
8266 : }
8267 : break;
8268 : default:;
8269 : }
8270 : }
8271 : break;
8272 0 : case CFN_POPCOUNT:
8273 0 : if (call_expr_nargs (_q20) == 1)
8274 : {
8275 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8276 0 : switch (TREE_CODE (_q21))
8277 : {
8278 0 : case CALL_EXPR:
8279 0 : switch (get_call_combined_fn (_q21))
8280 : {
8281 0 : case CFN_POPCOUNT:
8282 0 : if (call_expr_nargs (_q21) == 1)
8283 : {
8284 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8285 0 : switch (TREE_CODE (_q50))
8286 : {
8287 0 : case BIT_AND_EXPR:
8288 0 : {
8289 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8290 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8291 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8292 : {
8293 0 : switch (TREE_CODE (_p1))
8294 : {
8295 0 : case CALL_EXPR:
8296 0 : switch (get_call_combined_fn (_p1))
8297 : {
8298 0 : case CFN_POPCOUNT:
8299 0 : if (call_expr_nargs (_p1) == 1)
8300 : {
8301 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8302 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8303 : {
8304 0 : {
8305 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8306 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8307 0 : if (res) return res;
8308 : }
8309 : }
8310 : }
8311 : break;
8312 : default:;
8313 : }
8314 : break;
8315 : default:;
8316 : }
8317 : }
8318 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8319 : {
8320 0 : switch (TREE_CODE (_p1))
8321 : {
8322 0 : case CALL_EXPR:
8323 0 : switch (get_call_combined_fn (_p1))
8324 : {
8325 0 : case CFN_POPCOUNT:
8326 0 : if (call_expr_nargs (_p1) == 1)
8327 : {
8328 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8329 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8330 : {
8331 0 : {
8332 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8333 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
8334 0 : if (res) return res;
8335 : }
8336 : }
8337 : }
8338 : break;
8339 : default:;
8340 : }
8341 : break;
8342 : default:;
8343 : }
8344 : }
8345 : break;
8346 : }
8347 0 : case BIT_IOR_EXPR:
8348 0 : {
8349 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8350 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8351 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8352 : {
8353 0 : switch (TREE_CODE (_p1))
8354 : {
8355 0 : case CALL_EXPR:
8356 0 : switch (get_call_combined_fn (_p1))
8357 : {
8358 0 : case CFN_POPCOUNT:
8359 0 : if (call_expr_nargs (_p1) == 1)
8360 : {
8361 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8362 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8363 : {
8364 0 : {
8365 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8366 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8367 0 : if (res) return res;
8368 : }
8369 : }
8370 : }
8371 : break;
8372 : default:;
8373 : }
8374 : break;
8375 : default:;
8376 : }
8377 : }
8378 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8379 : {
8380 0 : switch (TREE_CODE (_p1))
8381 : {
8382 0 : case CALL_EXPR:
8383 0 : switch (get_call_combined_fn (_p1))
8384 : {
8385 0 : case CFN_POPCOUNT:
8386 0 : if (call_expr_nargs (_p1) == 1)
8387 : {
8388 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8389 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8390 : {
8391 0 : {
8392 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8393 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
8394 0 : if (res) return res;
8395 : }
8396 : }
8397 : }
8398 : break;
8399 : default:;
8400 : }
8401 : break;
8402 : default:;
8403 : }
8404 : }
8405 : break;
8406 : }
8407 : default:;
8408 : }
8409 : }
8410 : break;
8411 : default:;
8412 : }
8413 : break;
8414 : default:;
8415 : }
8416 : }
8417 : break;
8418 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8419 0 : if (call_expr_nargs (_q20) == 1)
8420 : {
8421 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8422 0 : switch (TREE_CODE (_q21))
8423 : {
8424 0 : case CALL_EXPR:
8425 0 : switch (get_call_combined_fn (_q21))
8426 : {
8427 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8428 0 : if (call_expr_nargs (_q21) == 1)
8429 : {
8430 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8431 0 : switch (TREE_CODE (_q50))
8432 : {
8433 0 : case BIT_AND_EXPR:
8434 0 : {
8435 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8436 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8437 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8438 : {
8439 0 : switch (TREE_CODE (_p1))
8440 : {
8441 0 : case CALL_EXPR:
8442 0 : switch (get_call_combined_fn (_p1))
8443 : {
8444 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8445 0 : if (call_expr_nargs (_p1) == 1)
8446 : {
8447 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8448 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8449 : {
8450 0 : {
8451 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8452 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8453 0 : if (res) return res;
8454 : }
8455 : }
8456 : }
8457 : break;
8458 : default:;
8459 : }
8460 : break;
8461 : default:;
8462 : }
8463 : }
8464 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8465 : {
8466 0 : switch (TREE_CODE (_p1))
8467 : {
8468 0 : case CALL_EXPR:
8469 0 : switch (get_call_combined_fn (_p1))
8470 : {
8471 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8472 0 : if (call_expr_nargs (_p1) == 1)
8473 : {
8474 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8475 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8476 : {
8477 0 : {
8478 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8479 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8480 0 : if (res) return res;
8481 : }
8482 : }
8483 : }
8484 : break;
8485 : default:;
8486 : }
8487 : break;
8488 : default:;
8489 : }
8490 : }
8491 : break;
8492 : }
8493 0 : case BIT_IOR_EXPR:
8494 0 : {
8495 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8496 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8497 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8498 : {
8499 0 : switch (TREE_CODE (_p1))
8500 : {
8501 0 : case CALL_EXPR:
8502 0 : switch (get_call_combined_fn (_p1))
8503 : {
8504 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8505 0 : if (call_expr_nargs (_p1) == 1)
8506 : {
8507 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8508 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8509 : {
8510 0 : {
8511 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8512 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8513 0 : if (res) return res;
8514 : }
8515 : }
8516 : }
8517 : break;
8518 : default:;
8519 : }
8520 : break;
8521 : default:;
8522 : }
8523 : }
8524 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8525 : {
8526 0 : switch (TREE_CODE (_p1))
8527 : {
8528 0 : case CALL_EXPR:
8529 0 : switch (get_call_combined_fn (_p1))
8530 : {
8531 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8532 0 : if (call_expr_nargs (_p1) == 1)
8533 : {
8534 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8535 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8536 : {
8537 0 : {
8538 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8539 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8540 0 : if (res) return res;
8541 : }
8542 : }
8543 : }
8544 : break;
8545 : default:;
8546 : }
8547 : break;
8548 : default:;
8549 : }
8550 : }
8551 : break;
8552 : }
8553 : default:;
8554 : }
8555 : }
8556 : break;
8557 : default:;
8558 : }
8559 : break;
8560 : default:;
8561 : }
8562 : }
8563 : break;
8564 0 : case CFN_BUILT_IN_POPCOUNTL:
8565 0 : if (call_expr_nargs (_q20) == 1)
8566 : {
8567 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
8568 0 : switch (TREE_CODE (_q21))
8569 : {
8570 0 : case CALL_EXPR:
8571 0 : switch (get_call_combined_fn (_q21))
8572 : {
8573 0 : case CFN_BUILT_IN_POPCOUNTL:
8574 0 : if (call_expr_nargs (_q21) == 1)
8575 : {
8576 0 : tree _q50 = CALL_EXPR_ARG (_q21, 0);
8577 0 : switch (TREE_CODE (_q50))
8578 : {
8579 0 : case BIT_AND_EXPR:
8580 0 : {
8581 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8582 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8583 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8584 : {
8585 0 : switch (TREE_CODE (_p1))
8586 : {
8587 0 : case CALL_EXPR:
8588 0 : switch (get_call_combined_fn (_p1))
8589 : {
8590 0 : case CFN_BUILT_IN_POPCOUNTL:
8591 0 : if (call_expr_nargs (_p1) == 1)
8592 : {
8593 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8594 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8595 : {
8596 0 : {
8597 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8598 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8599 0 : if (res) return res;
8600 : }
8601 : }
8602 : }
8603 : break;
8604 : default:;
8605 : }
8606 : break;
8607 : default:;
8608 : }
8609 : }
8610 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8611 : {
8612 0 : switch (TREE_CODE (_p1))
8613 : {
8614 0 : case CALL_EXPR:
8615 0 : switch (get_call_combined_fn (_p1))
8616 : {
8617 0 : case CFN_BUILT_IN_POPCOUNTL:
8618 0 : if (call_expr_nargs (_p1) == 1)
8619 : {
8620 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8621 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8622 : {
8623 0 : {
8624 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8625 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
8626 0 : if (res) return res;
8627 : }
8628 : }
8629 : }
8630 : break;
8631 : default:;
8632 : }
8633 : break;
8634 : default:;
8635 : }
8636 : }
8637 : break;
8638 : }
8639 0 : case BIT_IOR_EXPR:
8640 0 : {
8641 0 : tree _q60 = TREE_OPERAND (_q50, 0);
8642 0 : tree _q61 = TREE_OPERAND (_q50, 1);
8643 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
8644 : {
8645 0 : switch (TREE_CODE (_p1))
8646 : {
8647 0 : case CALL_EXPR:
8648 0 : switch (get_call_combined_fn (_p1))
8649 : {
8650 0 : case CFN_BUILT_IN_POPCOUNTL:
8651 0 : if (call_expr_nargs (_p1) == 1)
8652 : {
8653 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8654 0 : if ((_q90 == _q61 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q61, 0) && types_match (_q90, _q61)))
8655 : {
8656 0 : {
8657 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q61, _p1 };
8658 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8659 0 : if (res) return res;
8660 : }
8661 : }
8662 : }
8663 : break;
8664 : default:;
8665 : }
8666 : break;
8667 : default:;
8668 : }
8669 : }
8670 0 : if ((_q61 == _q30 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q30, 0) && types_match (_q61, _q30)))
8671 : {
8672 0 : switch (TREE_CODE (_p1))
8673 : {
8674 0 : case CALL_EXPR:
8675 0 : switch (get_call_combined_fn (_p1))
8676 : {
8677 0 : case CFN_BUILT_IN_POPCOUNTL:
8678 0 : if (call_expr_nargs (_p1) == 1)
8679 : {
8680 0 : tree _q90 = CALL_EXPR_ARG (_p1, 0);
8681 0 : if ((_q90 == _q60 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q60, 0) && types_match (_q90, _q60)))
8682 : {
8683 0 : {
8684 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50, _q60, _p1 };
8685 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
8686 0 : if (res) return res;
8687 : }
8688 : }
8689 : }
8690 : break;
8691 : default:;
8692 : }
8693 : break;
8694 : default:;
8695 : }
8696 : }
8697 : break;
8698 : }
8699 : default:;
8700 : }
8701 : }
8702 : break;
8703 : default:;
8704 : }
8705 : break;
8706 : default:;
8707 : }
8708 : }
8709 : break;
8710 : default:;
8711 : }
8712 : break;
8713 : default:;
8714 : }
8715 : break;
8716 : }
8717 1 : case VEC_PERM_EXPR:
8718 1 : {
8719 1 : tree _q20 = TREE_OPERAND (_p0, 0);
8720 1 : tree _q21 = TREE_OPERAND (_p0, 1);
8721 1 : tree _q22 = TREE_OPERAND (_p0, 2);
8722 1 : switch (TREE_CODE (_q20))
8723 : {
8724 0 : case MULT_EXPR:
8725 0 : {
8726 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8727 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8728 0 : if (tree_vec_same_elem_p (_q31))
8729 : {
8730 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8731 : {
8732 0 : {
8733 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q22, _p1 };
8734 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
8735 0 : if (res) return res;
8736 : }
8737 : }
8738 : }
8739 0 : if (tree_vec_same_elem_p (_q30))
8740 : {
8741 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8742 : {
8743 0 : {
8744 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30, _q22, _p1 };
8745 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
8746 0 : if (res) return res;
8747 : }
8748 : }
8749 : }
8750 : break;
8751 : }
8752 1 : default:;
8753 : }
8754 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
8755 : {
8756 0 : switch (TREE_CODE (_p1))
8757 : {
8758 0 : case VEC_PERM_EXPR:
8759 0 : {
8760 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8761 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8762 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8763 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8764 : {
8765 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8766 : {
8767 0 : {
8768 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8769 0 : if (VECTOR_INTEGER_TYPE_P (type)
8770 : )
8771 : {
8772 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1258;
8773 0 : {
8774 0 : tree res_op0;
8775 0 : {
8776 0 : tree _o1[2], _r1;
8777 0 : _o1[0] = captures[0];
8778 0 : _o1[1] = captures[2];
8779 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8780 0 : captures[3] = _r1;
8781 : }
8782 0 : res_op0 = unshare_expr (captures[3]);
8783 0 : tree res_op1;
8784 0 : res_op1 = captures[3];
8785 0 : tree res_op2;
8786 0 : res_op2 = captures[1];
8787 0 : tree _r;
8788 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
8789 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
8790 0 : return _r;
8791 : }
8792 0 : next_after_fail1258:;
8793 : }
8794 : }
8795 : }
8796 : }
8797 : break;
8798 : }
8799 0 : default:;
8800 : }
8801 0 : switch (TREE_CODE (_q22))
8802 : {
8803 0 : case VECTOR_CST:
8804 0 : {
8805 0 : switch (TREE_CODE (_p1))
8806 : {
8807 0 : case VEC_PERM_EXPR:
8808 0 : {
8809 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8810 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8811 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8812 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
8813 : {
8814 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8815 : {
8816 0 : switch (TREE_CODE (_q62))
8817 : {
8818 0 : case VECTOR_CST:
8819 0 : {
8820 0 : {
8821 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
8822 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8823 0 : if (res) return res;
8824 : }
8825 0 : break;
8826 : }
8827 : default:;
8828 : }
8829 : }
8830 : }
8831 : break;
8832 : }
8833 : default:;
8834 : }
8835 : break;
8836 : }
8837 : default:;
8838 : }
8839 : }
8840 : break;
8841 : }
8842 1368626 : case CALL_EXPR:
8843 1368626 : switch (get_call_combined_fn (_p0))
8844 : {
8845 9 : case CFN_BUILT_IN_LOG:
8846 9 : if (call_expr_nargs (_p0) == 1)
8847 : {
8848 9 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8849 9 : switch (TREE_CODE (_p1))
8850 : {
8851 0 : case CALL_EXPR:
8852 0 : switch (get_call_combined_fn (_p1))
8853 : {
8854 0 : case CFN_BUILT_IN_LOG:
8855 0 : if (call_expr_nargs (_p1) == 1)
8856 : {
8857 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8858 0 : {
8859 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8860 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG);
8861 0 : if (res) return res;
8862 : }
8863 : }
8864 : break;
8865 : default:;
8866 : }
8867 : break;
8868 : default:;
8869 : }
8870 : }
8871 : break;
8872 1326 : case CFN_BUILT_IN_POPCOUNT:
8873 1326 : if (call_expr_nargs (_p0) == 1)
8874 : {
8875 1326 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8876 1326 : switch (TREE_CODE (_p1))
8877 : {
8878 22 : case CALL_EXPR:
8879 22 : switch (get_call_combined_fn (_p1))
8880 : {
8881 22 : case CFN_BUILT_IN_POPCOUNT:
8882 22 : if (call_expr_nargs (_p1) == 1)
8883 : {
8884 22 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8885 22 : {
8886 22 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8887 22 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8888 22 : if (res) return res;
8889 : }
8890 : }
8891 : break;
8892 : default:;
8893 : }
8894 : break;
8895 1325 : default:;
8896 : }
8897 1325 : switch (TREE_CODE (_q20))
8898 : {
8899 9 : case BIT_AND_EXPR:
8900 9 : {
8901 9 : tree _q30 = TREE_OPERAND (_q20, 0);
8902 9 : tree _q31 = TREE_OPERAND (_q20, 1);
8903 9 : switch (TREE_CODE (_p1))
8904 : {
8905 9 : case CALL_EXPR:
8906 9 : switch (get_call_combined_fn (_p1))
8907 : {
8908 9 : case CFN_BUILT_IN_POPCOUNT:
8909 9 : if (call_expr_nargs (_p1) == 1)
8910 : {
8911 9 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
8912 9 : switch (TREE_CODE (_q60))
8913 : {
8914 9 : case BIT_IOR_EXPR:
8915 9 : {
8916 9 : tree _q70 = TREE_OPERAND (_q60, 0);
8917 9 : tree _q71 = TREE_OPERAND (_q60, 1);
8918 9 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
8919 : {
8920 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
8921 : {
8922 1 : {
8923 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
8924 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8925 1 : if (res) return res;
8926 : }
8927 : }
8928 : }
8929 8 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
8930 : {
8931 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
8932 : {
8933 1 : {
8934 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
8935 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8936 1 : if (res) return res;
8937 : }
8938 : }
8939 : }
8940 : break;
8941 : }
8942 : default:;
8943 : }
8944 : }
8945 : break;
8946 : default:;
8947 : }
8948 : break;
8949 : default:;
8950 : }
8951 : break;
8952 : }
8953 2 : case BIT_IOR_EXPR:
8954 2 : {
8955 2 : tree _q30 = TREE_OPERAND (_q20, 0);
8956 2 : tree _q31 = TREE_OPERAND (_q20, 1);
8957 2 : switch (TREE_CODE (_p1))
8958 : {
8959 2 : case CALL_EXPR:
8960 2 : switch (get_call_combined_fn (_p1))
8961 : {
8962 2 : case CFN_BUILT_IN_POPCOUNT:
8963 2 : if (call_expr_nargs (_p1) == 1)
8964 : {
8965 2 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
8966 2 : switch (TREE_CODE (_q60))
8967 : {
8968 2 : case BIT_AND_EXPR:
8969 2 : {
8970 2 : tree _q70 = TREE_OPERAND (_q60, 0);
8971 2 : tree _q71 = TREE_OPERAND (_q60, 1);
8972 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
8973 : {
8974 1 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
8975 : {
8976 1 : {
8977 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
8978 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8979 1 : if (res) return res;
8980 : }
8981 : }
8982 : }
8983 1 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
8984 : {
8985 1 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
8986 : {
8987 1 : {
8988 1 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
8989 1 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNT);
8990 1 : if (res) return res;
8991 : }
8992 : }
8993 : }
8994 : break;
8995 : }
8996 : default:;
8997 : }
8998 : }
8999 : break;
9000 : default:;
9001 : }
9002 : break;
9003 : default:;
9004 : }
9005 : break;
9006 : }
9007 1321 : default:;
9008 : }
9009 1321 : switch (TREE_CODE (_p1))
9010 : {
9011 0 : case MINUS_EXPR:
9012 0 : {
9013 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9014 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9015 0 : switch (TREE_CODE (_q40))
9016 : {
9017 0 : case CALL_EXPR:
9018 0 : switch (get_call_combined_fn (_q40))
9019 : {
9020 0 : case CFN_BUILT_IN_POPCOUNT:
9021 0 : if (call_expr_nargs (_q40) == 1)
9022 : {
9023 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9024 0 : switch (TREE_CODE (_q41))
9025 : {
9026 0 : case CALL_EXPR:
9027 0 : switch (get_call_combined_fn (_q41))
9028 : {
9029 0 : case CFN_BUILT_IN_POPCOUNT:
9030 0 : if (call_expr_nargs (_q41) == 1)
9031 : {
9032 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9033 0 : switch (TREE_CODE (_q70))
9034 : {
9035 0 : case BIT_AND_EXPR:
9036 0 : {
9037 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9038 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9039 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9040 : {
9041 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9042 : {
9043 0 : {
9044 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9045 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
9046 0 : if (res) return res;
9047 : }
9048 : }
9049 : }
9050 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9051 : {
9052 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9053 : {
9054 0 : {
9055 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9056 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNT);
9057 0 : if (res) return res;
9058 : }
9059 : }
9060 : }
9061 : break;
9062 : }
9063 0 : case BIT_IOR_EXPR:
9064 0 : {
9065 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9066 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9067 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9068 : {
9069 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9070 : {
9071 0 : {
9072 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9073 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
9074 0 : if (res) return res;
9075 : }
9076 : }
9077 : }
9078 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9079 : {
9080 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9081 : {
9082 0 : {
9083 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9084 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNT);
9085 0 : if (res) return res;
9086 : }
9087 : }
9088 : }
9089 : break;
9090 : }
9091 : default:;
9092 : }
9093 : }
9094 : break;
9095 : default:;
9096 : }
9097 : break;
9098 : default:;
9099 : }
9100 : }
9101 : break;
9102 : default:;
9103 : }
9104 : break;
9105 : default:;
9106 : }
9107 : break;
9108 : }
9109 : default:;
9110 : }
9111 : }
9112 : break;
9113 1 : case CFN_BUILT_IN_LOG2:
9114 1 : if (call_expr_nargs (_p0) == 1)
9115 : {
9116 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9117 1 : switch (TREE_CODE (_p1))
9118 : {
9119 1 : case CALL_EXPR:
9120 1 : switch (get_call_combined_fn (_p1))
9121 : {
9122 1 : case CFN_BUILT_IN_LOG2:
9123 1 : if (call_expr_nargs (_p1) == 1)
9124 : {
9125 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9126 1 : {
9127 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9128 1 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2);
9129 1 : if (res) return res;
9130 : }
9131 : }
9132 : break;
9133 : default:;
9134 : }
9135 : break;
9136 : default:;
9137 : }
9138 : }
9139 : break;
9140 0 : case CFN_BUILT_IN_LOGF:
9141 0 : if (call_expr_nargs (_p0) == 1)
9142 : {
9143 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9144 0 : switch (TREE_CODE (_p1))
9145 : {
9146 0 : case CALL_EXPR:
9147 0 : switch (get_call_combined_fn (_p1))
9148 : {
9149 0 : case CFN_BUILT_IN_LOGF:
9150 0 : if (call_expr_nargs (_p1) == 1)
9151 : {
9152 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9153 0 : {
9154 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9155 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF);
9156 0 : if (res) return res;
9157 : }
9158 : }
9159 : break;
9160 : default:;
9161 : }
9162 : break;
9163 : default:;
9164 : }
9165 : }
9166 : break;
9167 0 : case CFN_BUILT_IN_LOGL:
9168 0 : if (call_expr_nargs (_p0) == 1)
9169 : {
9170 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9171 0 : switch (TREE_CODE (_p1))
9172 : {
9173 0 : case CALL_EXPR:
9174 0 : switch (get_call_combined_fn (_p1))
9175 : {
9176 0 : case CFN_BUILT_IN_LOGL:
9177 0 : if (call_expr_nargs (_p1) == 1)
9178 : {
9179 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9180 0 : {
9181 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9182 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL);
9183 0 : if (res) return res;
9184 : }
9185 : }
9186 : break;
9187 : default:;
9188 : }
9189 : break;
9190 : default:;
9191 : }
9192 : }
9193 : break;
9194 27 : case CFN_BUILT_IN_POPCOUNTLL:
9195 27 : if (call_expr_nargs (_p0) == 1)
9196 : {
9197 27 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9198 27 : switch (TREE_CODE (_p1))
9199 : {
9200 25 : case CALL_EXPR:
9201 25 : switch (get_call_combined_fn (_p1))
9202 : {
9203 25 : case CFN_BUILT_IN_POPCOUNTLL:
9204 25 : if (call_expr_nargs (_p1) == 1)
9205 : {
9206 25 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9207 25 : {
9208 25 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9209 25 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9210 25 : if (res) return res;
9211 : }
9212 : }
9213 : break;
9214 : default:;
9215 : }
9216 : break;
9217 27 : default:;
9218 : }
9219 27 : switch (TREE_CODE (_q20))
9220 : {
9221 0 : case BIT_AND_EXPR:
9222 0 : {
9223 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9224 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9225 0 : switch (TREE_CODE (_p1))
9226 : {
9227 0 : case CALL_EXPR:
9228 0 : switch (get_call_combined_fn (_p1))
9229 : {
9230 0 : case CFN_BUILT_IN_POPCOUNTLL:
9231 0 : if (call_expr_nargs (_p1) == 1)
9232 : {
9233 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9234 0 : switch (TREE_CODE (_q60))
9235 : {
9236 0 : case BIT_IOR_EXPR:
9237 0 : {
9238 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9239 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9240 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9241 : {
9242 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9243 : {
9244 0 : {
9245 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9246 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9247 0 : if (res) return res;
9248 : }
9249 : }
9250 : }
9251 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9252 : {
9253 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9254 : {
9255 0 : {
9256 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9257 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9258 0 : if (res) return res;
9259 : }
9260 : }
9261 : }
9262 : break;
9263 : }
9264 : default:;
9265 : }
9266 : }
9267 : break;
9268 : default:;
9269 : }
9270 : break;
9271 : default:;
9272 : }
9273 : break;
9274 : }
9275 0 : case BIT_IOR_EXPR:
9276 0 : {
9277 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9278 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9279 0 : switch (TREE_CODE (_p1))
9280 : {
9281 0 : case CALL_EXPR:
9282 0 : switch (get_call_combined_fn (_p1))
9283 : {
9284 0 : case CFN_BUILT_IN_POPCOUNTLL:
9285 0 : if (call_expr_nargs (_p1) == 1)
9286 : {
9287 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9288 0 : switch (TREE_CODE (_q60))
9289 : {
9290 0 : case BIT_AND_EXPR:
9291 0 : {
9292 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9293 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9294 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9295 : {
9296 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9297 : {
9298 0 : {
9299 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9300 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9301 0 : if (res) return res;
9302 : }
9303 : }
9304 : }
9305 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9306 : {
9307 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9308 : {
9309 0 : {
9310 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9311 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTLL);
9312 0 : if (res) return res;
9313 : }
9314 : }
9315 : }
9316 : break;
9317 : }
9318 : default:;
9319 : }
9320 : }
9321 : break;
9322 : default:;
9323 : }
9324 : break;
9325 : default:;
9326 : }
9327 : break;
9328 : }
9329 27 : default:;
9330 : }
9331 27 : switch (TREE_CODE (_p1))
9332 : {
9333 0 : case MINUS_EXPR:
9334 0 : {
9335 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9336 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9337 0 : switch (TREE_CODE (_q40))
9338 : {
9339 0 : case CALL_EXPR:
9340 0 : switch (get_call_combined_fn (_q40))
9341 : {
9342 0 : case CFN_BUILT_IN_POPCOUNTLL:
9343 0 : if (call_expr_nargs (_q40) == 1)
9344 : {
9345 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9346 0 : switch (TREE_CODE (_q41))
9347 : {
9348 0 : case CALL_EXPR:
9349 0 : switch (get_call_combined_fn (_q41))
9350 : {
9351 0 : case CFN_BUILT_IN_POPCOUNTLL:
9352 0 : if (call_expr_nargs (_q41) == 1)
9353 : {
9354 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9355 0 : switch (TREE_CODE (_q70))
9356 : {
9357 0 : case BIT_AND_EXPR:
9358 0 : {
9359 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9360 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9361 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9362 : {
9363 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9364 : {
9365 0 : {
9366 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9367 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9368 0 : if (res) return res;
9369 : }
9370 : }
9371 : }
9372 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9373 : {
9374 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9375 : {
9376 0 : {
9377 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9378 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9379 0 : if (res) return res;
9380 : }
9381 : }
9382 : }
9383 : break;
9384 : }
9385 0 : case BIT_IOR_EXPR:
9386 0 : {
9387 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9388 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9389 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9390 : {
9391 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9392 : {
9393 0 : {
9394 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9395 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9396 0 : if (res) return res;
9397 : }
9398 : }
9399 : }
9400 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9401 : {
9402 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9403 : {
9404 0 : {
9405 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9406 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTLL);
9407 0 : if (res) return res;
9408 : }
9409 : }
9410 : }
9411 : break;
9412 : }
9413 : default:;
9414 : }
9415 : }
9416 : break;
9417 : default:;
9418 : }
9419 : break;
9420 : default:;
9421 : }
9422 : }
9423 : break;
9424 : default:;
9425 : }
9426 : break;
9427 : default:;
9428 : }
9429 : break;
9430 : }
9431 : default:;
9432 : }
9433 : }
9434 : break;
9435 0 : case CFN_BUILT_IN_LOG10F:
9436 0 : if (call_expr_nargs (_p0) == 1)
9437 : {
9438 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9439 0 : switch (TREE_CODE (_p1))
9440 : {
9441 0 : case CALL_EXPR:
9442 0 : switch (get_call_combined_fn (_p1))
9443 : {
9444 0 : case CFN_BUILT_IN_LOG10F:
9445 0 : if (call_expr_nargs (_p1) == 1)
9446 : {
9447 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9448 0 : {
9449 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9450 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F);
9451 0 : if (res) return res;
9452 : }
9453 : }
9454 : break;
9455 : default:;
9456 : }
9457 : break;
9458 : default:;
9459 : }
9460 : }
9461 : break;
9462 0 : case CFN_BUILT_IN_LOG10L:
9463 0 : if (call_expr_nargs (_p0) == 1)
9464 : {
9465 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9466 0 : switch (TREE_CODE (_p1))
9467 : {
9468 0 : case CALL_EXPR:
9469 0 : switch (get_call_combined_fn (_p1))
9470 : {
9471 0 : case CFN_BUILT_IN_LOG10L:
9472 0 : if (call_expr_nargs (_p1) == 1)
9473 : {
9474 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9475 0 : {
9476 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9477 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L);
9478 0 : if (res) return res;
9479 : }
9480 : }
9481 : break;
9482 : default:;
9483 : }
9484 : break;
9485 : default:;
9486 : }
9487 : }
9488 : break;
9489 7 : case CFN_POPCOUNT:
9490 7 : if (call_expr_nargs (_p0) == 1)
9491 : {
9492 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9493 7 : switch (TREE_CODE (_p1))
9494 : {
9495 1 : case CALL_EXPR:
9496 1 : switch (get_call_combined_fn (_p1))
9497 : {
9498 1 : case CFN_POPCOUNT:
9499 1 : if (call_expr_nargs (_p1) == 1)
9500 : {
9501 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9502 1 : {
9503 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9504 1 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9505 1 : if (res) return res;
9506 : }
9507 : }
9508 : break;
9509 : default:;
9510 : }
9511 : break;
9512 7 : default:;
9513 : }
9514 7 : switch (TREE_CODE (_q20))
9515 : {
9516 0 : case BIT_AND_EXPR:
9517 0 : {
9518 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9519 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9520 0 : switch (TREE_CODE (_p1))
9521 : {
9522 0 : case CALL_EXPR:
9523 0 : switch (get_call_combined_fn (_p1))
9524 : {
9525 0 : case CFN_POPCOUNT:
9526 0 : if (call_expr_nargs (_p1) == 1)
9527 : {
9528 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9529 0 : switch (TREE_CODE (_q60))
9530 : {
9531 0 : case BIT_IOR_EXPR:
9532 0 : {
9533 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9534 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9535 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9536 : {
9537 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9538 : {
9539 0 : {
9540 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9541 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9542 0 : if (res) return res;
9543 : }
9544 : }
9545 : }
9546 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9547 : {
9548 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9549 : {
9550 0 : {
9551 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9552 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9553 0 : if (res) return res;
9554 : }
9555 : }
9556 : }
9557 : break;
9558 : }
9559 : default:;
9560 : }
9561 : }
9562 : break;
9563 : default:;
9564 : }
9565 : break;
9566 : default:;
9567 : }
9568 : break;
9569 : }
9570 0 : case BIT_IOR_EXPR:
9571 0 : {
9572 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9573 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9574 0 : switch (TREE_CODE (_p1))
9575 : {
9576 0 : case CALL_EXPR:
9577 0 : switch (get_call_combined_fn (_p1))
9578 : {
9579 0 : case CFN_POPCOUNT:
9580 0 : if (call_expr_nargs (_p1) == 1)
9581 : {
9582 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9583 0 : switch (TREE_CODE (_q60))
9584 : {
9585 0 : case BIT_AND_EXPR:
9586 0 : {
9587 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9588 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9589 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9590 : {
9591 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9592 : {
9593 0 : {
9594 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9595 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9596 0 : if (res) return res;
9597 : }
9598 : }
9599 : }
9600 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9601 : {
9602 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9603 : {
9604 0 : {
9605 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9606 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_POPCOUNT);
9607 0 : if (res) return res;
9608 : }
9609 : }
9610 : }
9611 : break;
9612 : }
9613 : default:;
9614 : }
9615 : }
9616 : break;
9617 : default:;
9618 : }
9619 : break;
9620 : default:;
9621 : }
9622 : break;
9623 : }
9624 7 : default:;
9625 : }
9626 7 : switch (TREE_CODE (_p1))
9627 : {
9628 0 : case MINUS_EXPR:
9629 0 : {
9630 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9631 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9632 0 : switch (TREE_CODE (_q40))
9633 : {
9634 0 : case CALL_EXPR:
9635 0 : switch (get_call_combined_fn (_q40))
9636 : {
9637 0 : case CFN_POPCOUNT:
9638 0 : if (call_expr_nargs (_q40) == 1)
9639 : {
9640 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9641 0 : switch (TREE_CODE (_q41))
9642 : {
9643 0 : case CALL_EXPR:
9644 0 : switch (get_call_combined_fn (_q41))
9645 : {
9646 0 : case CFN_POPCOUNT:
9647 0 : if (call_expr_nargs (_q41) == 1)
9648 : {
9649 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9650 0 : switch (TREE_CODE (_q70))
9651 : {
9652 0 : case BIT_AND_EXPR:
9653 0 : {
9654 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9655 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9656 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9657 : {
9658 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9659 : {
9660 0 : {
9661 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9662 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9663 0 : if (res) return res;
9664 : }
9665 : }
9666 : }
9667 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9668 : {
9669 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9670 : {
9671 0 : {
9672 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9673 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_POPCOUNT);
9674 0 : if (res) return res;
9675 : }
9676 : }
9677 : }
9678 : break;
9679 : }
9680 0 : case BIT_IOR_EXPR:
9681 0 : {
9682 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9683 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9684 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9685 : {
9686 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9687 : {
9688 0 : {
9689 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9690 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9691 0 : if (res) return res;
9692 : }
9693 : }
9694 : }
9695 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9696 : {
9697 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9698 : {
9699 0 : {
9700 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9701 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_POPCOUNT);
9702 0 : if (res) return res;
9703 : }
9704 : }
9705 : }
9706 : break;
9707 : }
9708 : default:;
9709 : }
9710 : }
9711 : break;
9712 : default:;
9713 : }
9714 : break;
9715 : default:;
9716 : }
9717 : }
9718 : break;
9719 : default:;
9720 : }
9721 : break;
9722 : default:;
9723 : }
9724 : break;
9725 : }
9726 : default:;
9727 : }
9728 : }
9729 : break;
9730 0 : case CFN_LOG:
9731 0 : if (call_expr_nargs (_p0) == 1)
9732 : {
9733 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9734 0 : switch (TREE_CODE (_p1))
9735 : {
9736 0 : case CALL_EXPR:
9737 0 : switch (get_call_combined_fn (_p1))
9738 : {
9739 0 : case CFN_LOG:
9740 0 : if (call_expr_nargs (_p1) == 1)
9741 : {
9742 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9743 0 : {
9744 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9745 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG);
9746 0 : if (res) return res;
9747 : }
9748 : }
9749 : break;
9750 : default:;
9751 : }
9752 : break;
9753 : default:;
9754 : }
9755 : }
9756 : break;
9757 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9758 0 : if (call_expr_nargs (_p0) == 1)
9759 : {
9760 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9761 0 : switch (TREE_CODE (_p1))
9762 : {
9763 0 : case CALL_EXPR:
9764 0 : switch (get_call_combined_fn (_p1))
9765 : {
9766 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9767 0 : if (call_expr_nargs (_p1) == 1)
9768 : {
9769 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9770 0 : {
9771 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9772 0 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9773 0 : if (res) return res;
9774 : }
9775 : }
9776 : break;
9777 : default:;
9778 : }
9779 : break;
9780 0 : default:;
9781 : }
9782 0 : switch (TREE_CODE (_q20))
9783 : {
9784 0 : case BIT_AND_EXPR:
9785 0 : {
9786 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9787 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9788 0 : switch (TREE_CODE (_p1))
9789 : {
9790 0 : case CALL_EXPR:
9791 0 : switch (get_call_combined_fn (_p1))
9792 : {
9793 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9794 0 : if (call_expr_nargs (_p1) == 1)
9795 : {
9796 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9797 0 : switch (TREE_CODE (_q60))
9798 : {
9799 0 : case BIT_IOR_EXPR:
9800 0 : {
9801 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9802 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9803 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9804 : {
9805 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9806 : {
9807 0 : {
9808 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9809 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9810 0 : if (res) return res;
9811 : }
9812 : }
9813 : }
9814 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9815 : {
9816 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9817 : {
9818 0 : {
9819 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
9820 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9821 0 : if (res) return res;
9822 : }
9823 : }
9824 : }
9825 : break;
9826 : }
9827 : default:;
9828 : }
9829 : }
9830 : break;
9831 : default:;
9832 : }
9833 : break;
9834 : default:;
9835 : }
9836 : break;
9837 : }
9838 0 : case BIT_IOR_EXPR:
9839 0 : {
9840 0 : tree _q30 = TREE_OPERAND (_q20, 0);
9841 0 : tree _q31 = TREE_OPERAND (_q20, 1);
9842 0 : switch (TREE_CODE (_p1))
9843 : {
9844 0 : case CALL_EXPR:
9845 0 : switch (get_call_combined_fn (_p1))
9846 : {
9847 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9848 0 : if (call_expr_nargs (_p1) == 1)
9849 : {
9850 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
9851 0 : switch (TREE_CODE (_q60))
9852 : {
9853 0 : case BIT_AND_EXPR:
9854 0 : {
9855 0 : tree _q70 = TREE_OPERAND (_q60, 0);
9856 0 : tree _q71 = TREE_OPERAND (_q60, 1);
9857 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
9858 : {
9859 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
9860 : {
9861 0 : {
9862 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
9863 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9864 0 : if (res) return res;
9865 : }
9866 : }
9867 : }
9868 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
9869 : {
9870 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
9871 : {
9872 0 : {
9873 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
9874 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTIMAX);
9875 0 : if (res) return res;
9876 : }
9877 : }
9878 : }
9879 : break;
9880 : }
9881 : default:;
9882 : }
9883 : }
9884 : break;
9885 : default:;
9886 : }
9887 : break;
9888 : default:;
9889 : }
9890 : break;
9891 : }
9892 0 : default:;
9893 : }
9894 0 : switch (TREE_CODE (_p1))
9895 : {
9896 0 : case MINUS_EXPR:
9897 0 : {
9898 0 : tree _q40 = TREE_OPERAND (_p1, 0);
9899 0 : tree _q41 = TREE_OPERAND (_p1, 1);
9900 0 : switch (TREE_CODE (_q40))
9901 : {
9902 0 : case CALL_EXPR:
9903 0 : switch (get_call_combined_fn (_q40))
9904 : {
9905 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9906 0 : if (call_expr_nargs (_q40) == 1)
9907 : {
9908 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
9909 0 : switch (TREE_CODE (_q41))
9910 : {
9911 0 : case CALL_EXPR:
9912 0 : switch (get_call_combined_fn (_q41))
9913 : {
9914 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
9915 0 : if (call_expr_nargs (_q41) == 1)
9916 : {
9917 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
9918 0 : switch (TREE_CODE (_q70))
9919 : {
9920 0 : case BIT_AND_EXPR:
9921 0 : {
9922 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9923 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9924 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9925 : {
9926 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9927 : {
9928 0 : {
9929 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9930 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9931 0 : if (res) return res;
9932 : }
9933 : }
9934 : }
9935 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9936 : {
9937 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9938 : {
9939 0 : {
9940 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9941 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9942 0 : if (res) return res;
9943 : }
9944 : }
9945 : }
9946 : break;
9947 : }
9948 0 : case BIT_IOR_EXPR:
9949 0 : {
9950 0 : tree _q80 = TREE_OPERAND (_q70, 0);
9951 0 : tree _q81 = TREE_OPERAND (_q70, 1);
9952 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
9953 : {
9954 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
9955 : {
9956 0 : {
9957 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9958 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9959 0 : if (res) return res;
9960 : }
9961 : }
9962 : }
9963 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
9964 : {
9965 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
9966 : {
9967 0 : {
9968 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
9969 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
9970 0 : if (res) return res;
9971 : }
9972 : }
9973 : }
9974 : break;
9975 : }
9976 : default:;
9977 : }
9978 : }
9979 : break;
9980 : default:;
9981 : }
9982 : break;
9983 : default:;
9984 : }
9985 : }
9986 : break;
9987 : default:;
9988 : }
9989 : break;
9990 : default:;
9991 : }
9992 : break;
9993 : }
9994 : default:;
9995 : }
9996 : }
9997 : break;
9998 0 : case CFN_LOG2:
9999 0 : if (call_expr_nargs (_p0) == 1)
10000 : {
10001 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10002 0 : switch (TREE_CODE (_p1))
10003 : {
10004 0 : case CALL_EXPR:
10005 0 : switch (get_call_combined_fn (_p1))
10006 : {
10007 0 : case CFN_LOG2:
10008 0 : if (call_expr_nargs (_p1) == 1)
10009 : {
10010 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10011 0 : {
10012 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10013 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG2);
10014 0 : if (res) return res;
10015 : }
10016 : }
10017 : break;
10018 : default:;
10019 : }
10020 : break;
10021 : default:;
10022 : }
10023 : }
10024 : break;
10025 136 : case CFN_BUILT_IN_POPCOUNTL:
10026 136 : if (call_expr_nargs (_p0) == 1)
10027 : {
10028 136 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10029 136 : switch (TREE_CODE (_p1))
10030 : {
10031 69 : case CALL_EXPR:
10032 69 : switch (get_call_combined_fn (_p1))
10033 : {
10034 69 : case CFN_BUILT_IN_POPCOUNTL:
10035 69 : if (call_expr_nargs (_p1) == 1)
10036 : {
10037 69 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10038 69 : {
10039 69 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10040 69 : tree res = generic_simplify_81 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10041 69 : if (res) return res;
10042 : }
10043 : }
10044 : break;
10045 : default:;
10046 : }
10047 : break;
10048 136 : default:;
10049 : }
10050 136 : switch (TREE_CODE (_q20))
10051 : {
10052 0 : case BIT_AND_EXPR:
10053 0 : {
10054 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10055 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10056 0 : switch (TREE_CODE (_p1))
10057 : {
10058 0 : case CALL_EXPR:
10059 0 : switch (get_call_combined_fn (_p1))
10060 : {
10061 0 : case CFN_BUILT_IN_POPCOUNTL:
10062 0 : if (call_expr_nargs (_p1) == 1)
10063 : {
10064 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10065 0 : switch (TREE_CODE (_q60))
10066 : {
10067 0 : case BIT_IOR_EXPR:
10068 0 : {
10069 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10070 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10071 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10072 : {
10073 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10074 : {
10075 0 : {
10076 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10077 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10078 0 : if (res) return res;
10079 : }
10080 : }
10081 : }
10082 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10083 : {
10084 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10085 : {
10086 0 : {
10087 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1, _q60 };
10088 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10089 0 : if (res) return res;
10090 : }
10091 : }
10092 : }
10093 : break;
10094 : }
10095 : default:;
10096 : }
10097 : }
10098 : break;
10099 : default:;
10100 : }
10101 : break;
10102 : default:;
10103 : }
10104 : break;
10105 : }
10106 0 : case BIT_IOR_EXPR:
10107 0 : {
10108 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10109 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10110 0 : switch (TREE_CODE (_p1))
10111 : {
10112 0 : case CALL_EXPR:
10113 0 : switch (get_call_combined_fn (_p1))
10114 : {
10115 0 : case CFN_BUILT_IN_POPCOUNTL:
10116 0 : if (call_expr_nargs (_p1) == 1)
10117 : {
10118 0 : tree _q60 = CALL_EXPR_ARG (_p1, 0);
10119 0 : switch (TREE_CODE (_q60))
10120 : {
10121 0 : case BIT_AND_EXPR:
10122 0 : {
10123 0 : tree _q70 = TREE_OPERAND (_q60, 0);
10124 0 : tree _q71 = TREE_OPERAND (_q60, 1);
10125 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10126 : {
10127 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
10128 : {
10129 0 : {
10130 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q30, _q31, _p0, _q20 };
10131 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10132 0 : if (res) return res;
10133 : }
10134 : }
10135 : }
10136 0 : if ((_q70 == _q31 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q31, 0) && types_match (_q70, _q31)))
10137 : {
10138 0 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10139 : {
10140 0 : {
10141 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q60, _q31, _q30, _p0, _q20 };
10142 0 : tree res = generic_simplify_82 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POPCOUNTL);
10143 0 : if (res) return res;
10144 : }
10145 : }
10146 : }
10147 : break;
10148 : }
10149 : default:;
10150 : }
10151 : }
10152 : break;
10153 : default:;
10154 : }
10155 : break;
10156 : default:;
10157 : }
10158 : break;
10159 : }
10160 136 : default:;
10161 : }
10162 136 : switch (TREE_CODE (_p1))
10163 : {
10164 0 : case MINUS_EXPR:
10165 0 : {
10166 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10167 0 : tree _q41 = TREE_OPERAND (_p1, 1);
10168 0 : switch (TREE_CODE (_q40))
10169 : {
10170 0 : case CALL_EXPR:
10171 0 : switch (get_call_combined_fn (_q40))
10172 : {
10173 0 : case CFN_BUILT_IN_POPCOUNTL:
10174 0 : if (call_expr_nargs (_q40) == 1)
10175 : {
10176 0 : tree _q50 = CALL_EXPR_ARG (_q40, 0);
10177 0 : switch (TREE_CODE (_q41))
10178 : {
10179 0 : case CALL_EXPR:
10180 0 : switch (get_call_combined_fn (_q41))
10181 : {
10182 0 : case CFN_BUILT_IN_POPCOUNTL:
10183 0 : if (call_expr_nargs (_q41) == 1)
10184 : {
10185 0 : tree _q70 = CALL_EXPR_ARG (_q41, 0);
10186 0 : switch (TREE_CODE (_q70))
10187 : {
10188 0 : case BIT_AND_EXPR:
10189 0 : {
10190 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10191 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10192 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10193 : {
10194 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10195 : {
10196 0 : {
10197 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10198 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10199 0 : if (res) return res;
10200 : }
10201 : }
10202 : }
10203 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10204 : {
10205 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10206 : {
10207 0 : {
10208 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10209 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_POPCOUNTL);
10210 0 : if (res) return res;
10211 : }
10212 : }
10213 : }
10214 : break;
10215 : }
10216 0 : case BIT_IOR_EXPR:
10217 0 : {
10218 0 : tree _q80 = TREE_OPERAND (_q70, 0);
10219 0 : tree _q81 = TREE_OPERAND (_q70, 1);
10220 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
10221 : {
10222 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
10223 : {
10224 0 : {
10225 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10226 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10227 0 : if (res) return res;
10228 : }
10229 : }
10230 : }
10231 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
10232 : {
10233 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
10234 : {
10235 0 : {
10236 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q41, _q70, _q20, _p0 };
10237 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, BIT_AND_EXPR, CFN_BUILT_IN_POPCOUNTL);
10238 0 : if (res) return res;
10239 : }
10240 : }
10241 : }
10242 : break;
10243 : }
10244 : default:;
10245 : }
10246 : }
10247 : break;
10248 : default:;
10249 : }
10250 : break;
10251 : default:;
10252 : }
10253 : }
10254 : break;
10255 : default:;
10256 : }
10257 : break;
10258 : default:;
10259 : }
10260 : break;
10261 : }
10262 : default:;
10263 : }
10264 : }
10265 : break;
10266 0 : case CFN_LOG10:
10267 0 : if (call_expr_nargs (_p0) == 1)
10268 : {
10269 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10270 0 : switch (TREE_CODE (_p1))
10271 : {
10272 0 : case CALL_EXPR:
10273 0 : switch (get_call_combined_fn (_p1))
10274 : {
10275 0 : case CFN_LOG10:
10276 0 : if (call_expr_nargs (_p1) == 1)
10277 : {
10278 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10279 0 : {
10280 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10281 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_LOG10);
10282 0 : if (res) return res;
10283 : }
10284 : }
10285 : break;
10286 : default:;
10287 : }
10288 : break;
10289 : default:;
10290 : }
10291 : }
10292 : break;
10293 0 : case CFN_BUILT_IN_LOG10:
10294 0 : if (call_expr_nargs (_p0) == 1)
10295 : {
10296 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10297 0 : switch (TREE_CODE (_p1))
10298 : {
10299 0 : case CALL_EXPR:
10300 0 : switch (get_call_combined_fn (_p1))
10301 : {
10302 0 : case CFN_BUILT_IN_LOG10:
10303 0 : if (call_expr_nargs (_p1) == 1)
10304 : {
10305 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10306 0 : {
10307 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10308 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10);
10309 0 : if (res) return res;
10310 : }
10311 : }
10312 : break;
10313 : default:;
10314 : }
10315 : break;
10316 : default:;
10317 : }
10318 : }
10319 : break;
10320 0 : case CFN_BUILT_IN_LOG2F:
10321 0 : if (call_expr_nargs (_p0) == 1)
10322 : {
10323 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10324 0 : switch (TREE_CODE (_p1))
10325 : {
10326 0 : case CALL_EXPR:
10327 0 : switch (get_call_combined_fn (_p1))
10328 : {
10329 0 : case CFN_BUILT_IN_LOG2F:
10330 0 : if (call_expr_nargs (_p1) == 1)
10331 : {
10332 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10333 0 : {
10334 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10335 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F);
10336 0 : if (res) return res;
10337 : }
10338 : }
10339 : break;
10340 : default:;
10341 : }
10342 : break;
10343 : default:;
10344 : }
10345 : }
10346 : break;
10347 0 : case CFN_BUILT_IN_LOG2L:
10348 0 : if (call_expr_nargs (_p0) == 1)
10349 : {
10350 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10351 0 : switch (TREE_CODE (_p1))
10352 : {
10353 0 : case CALL_EXPR:
10354 0 : switch (get_call_combined_fn (_p1))
10355 : {
10356 0 : case CFN_BUILT_IN_LOG2L:
10357 0 : if (call_expr_nargs (_p1) == 1)
10358 : {
10359 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10360 0 : {
10361 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10362 0 : tree res = generic_simplify_80 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L);
10363 0 : if (res) return res;
10364 : }
10365 : }
10366 : break;
10367 : default:;
10368 : }
10369 : break;
10370 : default:;
10371 : }
10372 : }
10373 : break;
10374 : default:;
10375 : }
10376 : break;
10377 62454003 : default:;
10378 : }
10379 62454003 : switch (TREE_CODE (_p1))
10380 : {
10381 0 : case VEC_PERM_EXPR:
10382 0 : {
10383 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10384 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10385 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10386 0 : switch (TREE_CODE (_q30))
10387 : {
10388 0 : case MULT_EXPR:
10389 0 : {
10390 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10391 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10392 0 : if (tree_vec_same_elem_p (_q41))
10393 : {
10394 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10395 : {
10396 0 : {
10397 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _q41, _q32, _p0 };
10398 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
10399 0 : if (res) return res;
10400 : }
10401 : }
10402 : }
10403 0 : if (tree_vec_same_elem_p (_q40))
10404 : {
10405 0 : if ((_q31 == _q30 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q30, 0) && types_match (_q31, _q30)))
10406 : {
10407 0 : {
10408 0 : tree captures[6] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _q40, _q32, _p0 };
10409 0 : tree res = generic_simplify_84 (loc, type, _p0, _p1, captures);
10410 0 : if (res) return res;
10411 : }
10412 : }
10413 : }
10414 : break;
10415 : }
10416 : default:;
10417 : }
10418 : break;
10419 : }
10420 : default:;
10421 : }
10422 : return NULL_TREE;
10423 : }
10424 :
10425 : tree
10426 848923 : generic_simplify_UNLE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10427 : {
10428 848923 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10429 848923 : switch (TREE_CODE (_p0))
10430 : {
10431 0 : case VEC_COND_EXPR:
10432 0 : {
10433 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10434 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10435 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10436 0 : switch (TREE_CODE (_p1))
10437 : {
10438 0 : case VEC_COND_EXPR:
10439 0 : {
10440 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10441 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10442 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10443 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
10444 : {
10445 0 : {
10446 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
10447 0 : if (VECTOR_TYPE_P (type)
10448 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
10449 0 : || types_match (type, TREE_TYPE (captures[2]))
10450 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10451 : || (optimize_vectors_before_lowering_p ()
10452 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10453 : )
10454 : {
10455 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1773;
10456 0 : {
10457 0 : tree res_op0;
10458 0 : res_op0 = captures[1];
10459 0 : tree res_op1;
10460 0 : {
10461 0 : tree _o1[2], _r1;
10462 0 : _o1[0] = captures[2];
10463 0 : _o1[1] = captures[5];
10464 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10465 0 : if (EXPR_P (_r1))
10466 0 : goto next_after_fail1773;
10467 0 : res_op1 = _r1;
10468 : }
10469 0 : tree res_op2;
10470 0 : {
10471 0 : tree _o1[2], _r1;
10472 0 : _o1[0] = captures[3];
10473 0 : _o1[1] = captures[6];
10474 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10475 0 : if (EXPR_P (_r1))
10476 0 : goto next_after_fail1773;
10477 0 : res_op2 = _r1;
10478 : }
10479 0 : tree _r;
10480 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10481 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
10482 0 : return _r;
10483 : }
10484 0 : next_after_fail1773:;
10485 : }
10486 : }
10487 : }
10488 : break;
10489 : }
10490 0 : default:;
10491 : }
10492 0 : {
10493 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10494 0 : if (VECTOR_TYPE_P (type)
10495 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
10496 0 : || types_match (type, TREE_TYPE (captures[2]))
10497 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10498 : || (optimize_vectors_before_lowering_p ()
10499 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10500 : )
10501 : {
10502 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1774;
10503 0 : {
10504 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1774;
10505 0 : tree res_op0;
10506 0 : res_op0 = captures[1];
10507 0 : tree res_op1;
10508 0 : {
10509 0 : tree _o1[2], _r1;
10510 0 : _o1[0] = captures[2];
10511 0 : _o1[1] = unshare_expr (captures[4]);
10512 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10513 0 : if (EXPR_P (_r1))
10514 0 : goto next_after_fail1774;
10515 0 : res_op1 = _r1;
10516 : }
10517 0 : tree res_op2;
10518 0 : {
10519 0 : tree _o1[2], _r1;
10520 0 : _o1[0] = captures[3];
10521 0 : _o1[1] = captures[4];
10522 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10523 0 : if (EXPR_P (_r1))
10524 0 : goto next_after_fail1774;
10525 0 : res_op2 = _r1;
10526 : }
10527 0 : tree _r;
10528 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10529 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
10530 0 : return _r;
10531 : }
10532 0 : next_after_fail1774:;
10533 : }
10534 : }
10535 0 : break;
10536 : }
10537 848923 : default:;
10538 : }
10539 848923 : switch (TREE_CODE (_p1))
10540 : {
10541 0 : case VEC_COND_EXPR:
10542 0 : {
10543 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10544 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10545 0 : tree _q32 = TREE_OPERAND (_p1, 2);
10546 0 : {
10547 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10548 0 : if (VECTOR_TYPE_P (type)
10549 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
10550 0 : || types_match (type, TREE_TYPE (captures[3]))
10551 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10552 : || (optimize_vectors_before_lowering_p ()
10553 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10554 : )
10555 : {
10556 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1775;
10557 0 : {
10558 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1775;
10559 0 : tree res_op0;
10560 0 : res_op0 = captures[2];
10561 0 : tree res_op1;
10562 0 : {
10563 0 : tree _o1[2], _r1;
10564 0 : _o1[0] = unshare_expr (captures[0]);
10565 0 : _o1[1] = captures[3];
10566 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10567 0 : if (EXPR_P (_r1))
10568 0 : goto next_after_fail1775;
10569 0 : res_op1 = _r1;
10570 : }
10571 0 : tree res_op2;
10572 0 : {
10573 0 : tree _o1[2], _r1;
10574 0 : _o1[0] = captures[0];
10575 0 : _o1[1] = captures[4];
10576 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
10577 0 : if (EXPR_P (_r1))
10578 0 : goto next_after_fail1775;
10579 0 : res_op2 = _r1;
10580 : }
10581 0 : tree _r;
10582 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10583 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
10584 0 : return _r;
10585 : }
10586 0 : next_after_fail1775:;
10587 : }
10588 : }
10589 0 : break;
10590 : }
10591 848923 : default:;
10592 : }
10593 848923 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10594 : {
10595 30 : {
10596 30 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10597 30 : tree res = generic_simplify_566 (loc, type, _p0, _p1, captures, UNLE_EXPR);
10598 30 : if (res) return res;
10599 : }
10600 : }
10601 848893 : switch (TREE_CODE (_p0))
10602 : {
10603 96 : case FLOAT_EXPR:
10604 96 : {
10605 96 : tree _q20 = TREE_OPERAND (_p0, 0);
10606 96 : switch (TREE_CODE (_p1))
10607 : {
10608 0 : case FLOAT_EXPR:
10609 0 : {
10610 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10611 0 : {
10612 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10613 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, UNLE_EXPR, LE_EXPR);
10614 0 : if (res) return res;
10615 : }
10616 0 : break;
10617 : }
10618 : default:;
10619 : }
10620 : break;
10621 : }
10622 112 : case NEGATE_EXPR:
10623 112 : {
10624 112 : tree _q20 = TREE_OPERAND (_p0, 0);
10625 112 : switch (TREE_CODE (_p1))
10626 : {
10627 0 : case NEGATE_EXPR:
10628 0 : {
10629 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10630 0 : {
10631 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
10632 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNLE_EXPR, UNGE_EXPR);
10633 0 : if (res) return res;
10634 : }
10635 0 : break;
10636 : }
10637 112 : default:;
10638 : }
10639 112 : if (CONSTANT_CLASS_P (_p1))
10640 : {
10641 112 : {
10642 112 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10643 112 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, UNLE_EXPR, UNGE_EXPR);
10644 112 : if (res) return res;
10645 : }
10646 : }
10647 : break;
10648 : }
10649 848781 : default:;
10650 : }
10651 848781 : switch (TREE_CODE (_p1))
10652 : {
10653 494788 : case REAL_CST:
10654 494788 : {
10655 494788 : {
10656 494788 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10657 494788 : tree res = generic_simplify_564 (loc, type, _p0, _p1, captures, UNLE_EXPR);
10658 494788 : if (res) return res;
10659 : }
10660 494786 : break;
10661 : }
10662 : default:;
10663 : }
10664 : return NULL_TREE;
10665 : }
10666 :
10667 : tree
10668 3288112 : generic_simplify_TRUTH_ORIF_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10669 : {
10670 3288112 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10671 3288112 : switch (TREE_CODE (_p0))
10672 : {
10673 349800 : case LE_EXPR:
10674 349800 : {
10675 349800 : tree _q20 = TREE_OPERAND (_p0, 0);
10676 349800 : tree _q21 = TREE_OPERAND (_p0, 1);
10677 349800 : switch (TREE_CODE (_q20))
10678 : {
10679 90 : case POINTER_PLUS_EXPR:
10680 90 : {
10681 90 : tree _q30 = TREE_OPERAND (_q20, 0);
10682 90 : tree _q31 = TREE_OPERAND (_q20, 1);
10683 90 : switch (TREE_CODE (_q31))
10684 : {
10685 2 : case INTEGER_CST:
10686 2 : {
10687 2 : switch (TREE_CODE (_p1))
10688 : {
10689 2 : case LE_EXPR:
10690 2 : {
10691 2 : tree _q70 = TREE_OPERAND (_p1, 0);
10692 2 : tree _q71 = TREE_OPERAND (_p1, 1);
10693 2 : switch (TREE_CODE (_q70))
10694 : {
10695 2 : case POINTER_PLUS_EXPR:
10696 2 : {
10697 2 : tree _q80 = TREE_OPERAND (_q70, 0);
10698 2 : tree _q81 = TREE_OPERAND (_q70, 1);
10699 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
10700 : {
10701 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
10702 : {
10703 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10704 : {
10705 2 : {
10706 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
10707 2 : const enum tree_code cmp = LE_EXPR;
10708 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10709 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
10710 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10711 : )
10712 : {
10713 1 : {
10714 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10715 1 : offset_int rhs = off * 2;
10716 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10717 : )
10718 : {
10719 1 : {
10720 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10721 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10722 1 : if (cmp == LT_EXPR
10723 : )
10724 : {
10725 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1789;
10726 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1789;
10727 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1789;
10728 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1789;
10729 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1789;
10730 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1789;
10731 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1789;
10732 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1789;
10733 : {
10734 : tree res_op0;
10735 : {
10736 : tree _o1[1], _r1;
10737 : {
10738 : tree _o2[2], _r2;
10739 : _o2[0] = swap_p ? captures[6] : captures[1];
10740 : _o2[1] = swap_p ? captures[2] : captures[4];
10741 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10742 : _o1[0] = _r2;
10743 : }
10744 : if (TREE_TYPE (_o1[0]) != sizetype)
10745 : {
10746 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10747 : }
10748 : else
10749 : _r1 = _o1[0];
10750 : res_op0 = _r1;
10751 : }
10752 : tree res_op1;
10753 : res_op1 = rhs_tree;
10754 : tree _r;
10755 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10756 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
10757 1 : return _r;
10758 : }
10759 : next_after_fail1789:;
10760 : }
10761 : else
10762 : {
10763 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1790;
10764 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1790;
10765 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1790;
10766 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1790;
10767 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1790;
10768 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1790;
10769 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1790;
10770 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1790;
10771 1 : {
10772 1 : tree res_op0;
10773 1 : {
10774 1 : tree _o1[1], _r1;
10775 1 : {
10776 1 : tree _o2[2], _r2;
10777 1 : {
10778 1 : tree _o3[2], _r3;
10779 1 : _o3[0] = swap_p ? captures[4] : captures[2];
10780 1 : _o3[1] = wide_int_to_tree (sizetype, off);
10781 1 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
10782 1 : _o2[0] = _r3;
10783 : }
10784 1 : _o2[1] = swap_p ? captures[2] : captures[4];
10785 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10786 1 : _o1[0] = _r2;
10787 : }
10788 1 : if (TREE_TYPE (_o1[0]) != sizetype)
10789 : {
10790 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10791 : }
10792 : else
10793 : _r1 = _o1[0];
10794 1 : res_op0 = _r1;
10795 : }
10796 1 : tree res_op1;
10797 1 : res_op1 = rhs_tree;
10798 1 : tree _r;
10799 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10800 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
10801 1 : return _r;
10802 : }
10803 0 : next_after_fail1790:;
10804 : }
10805 : }
10806 : }
10807 : }
10808 : }
10809 : }
10810 : }
10811 : }
10812 : }
10813 : break;
10814 : }
10815 : default:;
10816 : }
10817 : break;
10818 : }
10819 0 : case GE_EXPR:
10820 0 : {
10821 0 : tree _q70 = TREE_OPERAND (_p1, 0);
10822 0 : tree _q71 = TREE_OPERAND (_p1, 1);
10823 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
10824 : {
10825 0 : switch (TREE_CODE (_q71))
10826 : {
10827 0 : case POINTER_PLUS_EXPR:
10828 0 : {
10829 0 : tree _q90 = TREE_OPERAND (_q71, 0);
10830 0 : tree _q91 = TREE_OPERAND (_q71, 1);
10831 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
10832 : {
10833 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
10834 : {
10835 0 : {
10836 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
10837 0 : const enum tree_code cmp = LE_EXPR;
10838 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10839 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
10840 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10841 : )
10842 : {
10843 0 : {
10844 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
10845 0 : offset_int rhs = off * 2;
10846 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
10847 : )
10848 : {
10849 0 : {
10850 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
10851 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
10852 0 : if (cmp == LT_EXPR
10853 : )
10854 : {
10855 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1791;
10856 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1791;
10857 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1791;
10858 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1791;
10859 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1791;
10860 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1791;
10861 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1791;
10862 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1791;
10863 : {
10864 : tree res_op0;
10865 : {
10866 : tree _o1[1], _r1;
10867 : {
10868 : tree _o2[2], _r2;
10869 : _o2[0] = swap_p ? captures[6] : captures[1];
10870 : _o2[1] = swap_p ? captures[2] : captures[4];
10871 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10872 : _o1[0] = _r2;
10873 : }
10874 : if (TREE_TYPE (_o1[0]) != sizetype)
10875 : {
10876 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10877 : }
10878 : else
10879 : _r1 = _o1[0];
10880 : res_op0 = _r1;
10881 : }
10882 : tree res_op1;
10883 : res_op1 = rhs_tree;
10884 : tree _r;
10885 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10886 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
10887 0 : return _r;
10888 : }
10889 : next_after_fail1791:;
10890 : }
10891 : else
10892 : {
10893 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1792;
10894 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1792;
10895 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1792;
10896 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1792;
10897 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1792;
10898 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1792;
10899 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1792;
10900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1792;
10901 0 : {
10902 0 : tree res_op0;
10903 0 : {
10904 0 : tree _o1[1], _r1;
10905 0 : {
10906 0 : tree _o2[2], _r2;
10907 0 : {
10908 0 : tree _o3[2], _r3;
10909 0 : _o3[0] = swap_p ? captures[4] : captures[2];
10910 0 : _o3[1] = wide_int_to_tree (sizetype, off);
10911 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
10912 0 : _o2[0] = _r3;
10913 : }
10914 0 : _o2[1] = swap_p ? captures[2] : captures[4];
10915 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
10916 0 : _o1[0] = _r2;
10917 : }
10918 0 : if (TREE_TYPE (_o1[0]) != sizetype)
10919 : {
10920 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
10921 : }
10922 : else
10923 : _r1 = _o1[0];
10924 0 : res_op0 = _r1;
10925 : }
10926 0 : tree res_op1;
10927 0 : res_op1 = rhs_tree;
10928 0 : tree _r;
10929 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
10930 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
10931 0 : return _r;
10932 : }
10933 0 : next_after_fail1792:;
10934 : }
10935 : }
10936 : }
10937 : }
10938 : }
10939 : }
10940 : }
10941 : }
10942 : break;
10943 : }
10944 : default:;
10945 : }
10946 : }
10947 : break;
10948 : }
10949 : default:;
10950 : }
10951 : break;
10952 : }
10953 : default:;
10954 : }
10955 : break;
10956 : }
10957 : default:;
10958 : }
10959 : break;
10960 : }
10961 754639 : case LT_EXPR:
10962 754639 : {
10963 754639 : tree _q20 = TREE_OPERAND (_p0, 0);
10964 754639 : tree _q21 = TREE_OPERAND (_p0, 1);
10965 754639 : switch (TREE_CODE (_q20))
10966 : {
10967 13 : case POINTER_PLUS_EXPR:
10968 13 : {
10969 13 : tree _q30 = TREE_OPERAND (_q20, 0);
10970 13 : tree _q31 = TREE_OPERAND (_q20, 1);
10971 13 : switch (TREE_CODE (_q31))
10972 : {
10973 7 : case INTEGER_CST:
10974 7 : {
10975 7 : switch (TREE_CODE (_p1))
10976 : {
10977 2 : case LT_EXPR:
10978 2 : {
10979 2 : tree _q70 = TREE_OPERAND (_p1, 0);
10980 2 : tree _q71 = TREE_OPERAND (_p1, 1);
10981 2 : switch (TREE_CODE (_q70))
10982 : {
10983 2 : case POINTER_PLUS_EXPR:
10984 2 : {
10985 2 : tree _q80 = TREE_OPERAND (_q70, 0);
10986 2 : tree _q81 = TREE_OPERAND (_q70, 1);
10987 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
10988 : {
10989 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
10990 : {
10991 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
10992 : {
10993 2 : {
10994 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
10995 2 : const enum tree_code cmp = LT_EXPR;
10996 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
10997 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
10998 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
10999 : )
11000 : {
11001 1 : {
11002 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11003 1 : offset_int rhs = off * 2;
11004 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11005 : )
11006 : {
11007 1 : {
11008 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11009 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11010 1 : if (cmp == LT_EXPR
11011 : )
11012 : {
11013 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1793;
11014 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1793;
11015 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1793;
11016 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1793;
11017 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1793;
11018 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1793;
11019 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1793;
11020 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1793;
11021 1 : {
11022 1 : tree res_op0;
11023 1 : {
11024 1 : tree _o1[1], _r1;
11025 1 : {
11026 1 : tree _o2[2], _r2;
11027 1 : _o2[0] = swap_p ? captures[6] : captures[1];
11028 1 : _o2[1] = swap_p ? captures[2] : captures[4];
11029 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11030 1 : _o1[0] = _r2;
11031 : }
11032 1 : if (TREE_TYPE (_o1[0]) != sizetype)
11033 : {
11034 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11035 : }
11036 : else
11037 : _r1 = _o1[0];
11038 1 : res_op0 = _r1;
11039 : }
11040 1 : tree res_op1;
11041 1 : res_op1 = rhs_tree;
11042 1 : tree _r;
11043 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11044 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11045 1 : return _r;
11046 : }
11047 0 : next_after_fail1793:;
11048 : }
11049 : else
11050 : {
11051 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1794;
11052 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1794;
11053 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1794;
11054 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1794;
11055 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1794;
11056 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1794;
11057 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1794;
11058 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1794;
11059 : {
11060 : tree res_op0;
11061 : {
11062 : tree _o1[1], _r1;
11063 : {
11064 : tree _o2[2], _r2;
11065 : {
11066 : tree _o3[2], _r3;
11067 : _o3[0] = swap_p ? captures[4] : captures[2];
11068 : _o3[1] = wide_int_to_tree (sizetype, off);
11069 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11070 : _o2[0] = _r3;
11071 : }
11072 : _o2[1] = swap_p ? captures[2] : captures[4];
11073 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11074 : _o1[0] = _r2;
11075 : }
11076 : if (TREE_TYPE (_o1[0]) != sizetype)
11077 : {
11078 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11079 : }
11080 : else
11081 : _r1 = _o1[0];
11082 : res_op0 = _r1;
11083 : }
11084 : tree res_op1;
11085 : res_op1 = rhs_tree;
11086 : tree _r;
11087 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11088 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11089 : return _r;
11090 : }
11091 : next_after_fail1794:;
11092 : }
11093 : }
11094 : }
11095 : }
11096 : }
11097 : }
11098 : }
11099 : }
11100 : }
11101 : break;
11102 : }
11103 : default:;
11104 : }
11105 : break;
11106 : }
11107 0 : case GT_EXPR:
11108 0 : {
11109 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11110 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11111 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11112 : {
11113 0 : switch (TREE_CODE (_q71))
11114 : {
11115 0 : case POINTER_PLUS_EXPR:
11116 0 : {
11117 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11118 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11119 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11120 : {
11121 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11122 : {
11123 0 : {
11124 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11125 0 : const enum tree_code cmp = LT_EXPR;
11126 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11127 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11128 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11129 : )
11130 : {
11131 0 : {
11132 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11133 0 : offset_int rhs = off * 2;
11134 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11135 : )
11136 : {
11137 0 : {
11138 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11139 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11140 0 : if (cmp == LT_EXPR
11141 : )
11142 : {
11143 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1795;
11144 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1795;
11145 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1795;
11146 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1795;
11147 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1795;
11148 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1795;
11149 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1795;
11150 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1795;
11151 0 : {
11152 0 : tree res_op0;
11153 0 : {
11154 0 : tree _o1[1], _r1;
11155 0 : {
11156 0 : tree _o2[2], _r2;
11157 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11158 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11159 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11160 0 : _o1[0] = _r2;
11161 : }
11162 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11163 : {
11164 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11165 : }
11166 : else
11167 : _r1 = _o1[0];
11168 0 : res_op0 = _r1;
11169 : }
11170 0 : tree res_op1;
11171 0 : res_op1 = rhs_tree;
11172 0 : tree _r;
11173 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11174 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11175 0 : return _r;
11176 : }
11177 0 : next_after_fail1795:;
11178 : }
11179 : else
11180 : {
11181 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1796;
11182 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1796;
11183 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1796;
11184 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1796;
11185 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1796;
11186 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1796;
11187 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1796;
11188 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1796;
11189 : {
11190 : tree res_op0;
11191 : {
11192 : tree _o1[1], _r1;
11193 : {
11194 : tree _o2[2], _r2;
11195 : {
11196 : tree _o3[2], _r3;
11197 : _o3[0] = swap_p ? captures[4] : captures[2];
11198 : _o3[1] = wide_int_to_tree (sizetype, off);
11199 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11200 : _o2[0] = _r3;
11201 : }
11202 : _o2[1] = swap_p ? captures[2] : captures[4];
11203 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11204 : _o1[0] = _r2;
11205 : }
11206 : if (TREE_TYPE (_o1[0]) != sizetype)
11207 : {
11208 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11209 : }
11210 : else
11211 : _r1 = _o1[0];
11212 : res_op0 = _r1;
11213 : }
11214 : tree res_op1;
11215 : res_op1 = rhs_tree;
11216 : tree _r;
11217 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11218 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11219 : return _r;
11220 : }
11221 : next_after_fail1796:;
11222 : }
11223 : }
11224 : }
11225 : }
11226 : }
11227 : }
11228 : }
11229 : }
11230 : break;
11231 : }
11232 : default:;
11233 : }
11234 : }
11235 : break;
11236 : }
11237 : default:;
11238 : }
11239 : break;
11240 : }
11241 : default:;
11242 : }
11243 : break;
11244 : }
11245 : default:;
11246 : }
11247 : break;
11248 : }
11249 18458 : case GE_EXPR:
11250 18458 : {
11251 18458 : tree _q20 = TREE_OPERAND (_p0, 0);
11252 18458 : tree _q21 = TREE_OPERAND (_p0, 1);
11253 18458 : switch (TREE_CODE (_q21))
11254 : {
11255 0 : case POINTER_PLUS_EXPR:
11256 0 : {
11257 0 : tree _q40 = TREE_OPERAND (_q21, 0);
11258 0 : tree _q41 = TREE_OPERAND (_q21, 1);
11259 0 : switch (TREE_CODE (_q41))
11260 : {
11261 0 : case INTEGER_CST:
11262 0 : {
11263 0 : switch (TREE_CODE (_p1))
11264 : {
11265 0 : case LE_EXPR:
11266 0 : {
11267 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11268 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11269 0 : switch (TREE_CODE (_q70))
11270 : {
11271 0 : case POINTER_PLUS_EXPR:
11272 0 : {
11273 0 : tree _q80 = TREE_OPERAND (_q70, 0);
11274 0 : tree _q81 = TREE_OPERAND (_q70, 1);
11275 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11276 : {
11277 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11278 : {
11279 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11280 : {
11281 0 : {
11282 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11283 0 : const enum tree_code cmp = LE_EXPR;
11284 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11285 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11286 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11287 : )
11288 : {
11289 0 : {
11290 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11291 0 : offset_int rhs = off * 2;
11292 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11293 : )
11294 : {
11295 0 : {
11296 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11297 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11298 0 : if (cmp == LT_EXPR
11299 : )
11300 : {
11301 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1797;
11302 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1797;
11303 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1797;
11304 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1797;
11305 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1797;
11306 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1797;
11307 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1797;
11308 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
11309 : {
11310 : tree res_op0;
11311 : {
11312 : tree _o1[1], _r1;
11313 : {
11314 : tree _o2[2], _r2;
11315 : _o2[0] = swap_p ? captures[6] : captures[1];
11316 : _o2[1] = swap_p ? captures[2] : captures[4];
11317 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11318 : _o1[0] = _r2;
11319 : }
11320 : if (TREE_TYPE (_o1[0]) != sizetype)
11321 : {
11322 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11323 : }
11324 : else
11325 : _r1 = _o1[0];
11326 : res_op0 = _r1;
11327 : }
11328 : tree res_op1;
11329 : res_op1 = rhs_tree;
11330 : tree _r;
11331 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11332 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11333 0 : return _r;
11334 : }
11335 : next_after_fail1797:;
11336 : }
11337 : else
11338 : {
11339 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1798;
11340 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1798;
11341 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1798;
11342 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1798;
11343 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1798;
11344 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1798;
11345 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1798;
11346 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1798;
11347 0 : {
11348 0 : tree res_op0;
11349 0 : {
11350 0 : tree _o1[1], _r1;
11351 0 : {
11352 0 : tree _o2[2], _r2;
11353 0 : {
11354 0 : tree _o3[2], _r3;
11355 0 : _o3[0] = swap_p ? captures[4] : captures[2];
11356 0 : _o3[1] = wide_int_to_tree (sizetype, off);
11357 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11358 0 : _o2[0] = _r3;
11359 : }
11360 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11361 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11362 0 : _o1[0] = _r2;
11363 : }
11364 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11365 : {
11366 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11367 : }
11368 : else
11369 : _r1 = _o1[0];
11370 0 : res_op0 = _r1;
11371 : }
11372 0 : tree res_op1;
11373 0 : res_op1 = rhs_tree;
11374 0 : tree _r;
11375 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11376 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11377 0 : return _r;
11378 : }
11379 0 : next_after_fail1798:;
11380 : }
11381 : }
11382 : }
11383 : }
11384 : }
11385 : }
11386 : }
11387 : }
11388 : }
11389 : break;
11390 : }
11391 : default:;
11392 : }
11393 : break;
11394 : }
11395 0 : case GE_EXPR:
11396 0 : {
11397 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11398 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11399 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11400 : {
11401 0 : switch (TREE_CODE (_q71))
11402 : {
11403 0 : case POINTER_PLUS_EXPR:
11404 0 : {
11405 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11406 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11407 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11408 : {
11409 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11410 : {
11411 0 : {
11412 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11413 0 : const enum tree_code cmp = LE_EXPR;
11414 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11415 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11416 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11417 : )
11418 : {
11419 0 : {
11420 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11421 0 : offset_int rhs = off * 2;
11422 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11423 : )
11424 : {
11425 0 : {
11426 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11427 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11428 0 : if (cmp == LT_EXPR
11429 : )
11430 : {
11431 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1799;
11432 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1799;
11433 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1799;
11434 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1799;
11435 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1799;
11436 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1799;
11437 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1799;
11438 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1799;
11439 : {
11440 : tree res_op0;
11441 : {
11442 : tree _o1[1], _r1;
11443 : {
11444 : tree _o2[2], _r2;
11445 : _o2[0] = swap_p ? captures[6] : captures[1];
11446 : _o2[1] = swap_p ? captures[2] : captures[4];
11447 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11448 : _o1[0] = _r2;
11449 : }
11450 : if (TREE_TYPE (_o1[0]) != sizetype)
11451 : {
11452 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11453 : }
11454 : else
11455 : _r1 = _o1[0];
11456 : res_op0 = _r1;
11457 : }
11458 : tree res_op1;
11459 : res_op1 = rhs_tree;
11460 : tree _r;
11461 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11462 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11463 0 : return _r;
11464 : }
11465 : next_after_fail1799:;
11466 : }
11467 : else
11468 : {
11469 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1800;
11470 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1800;
11471 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1800;
11472 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1800;
11473 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1800;
11474 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1800;
11475 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1800;
11476 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1800;
11477 0 : {
11478 0 : tree res_op0;
11479 0 : {
11480 0 : tree _o1[1], _r1;
11481 0 : {
11482 0 : tree _o2[2], _r2;
11483 0 : {
11484 0 : tree _o3[2], _r3;
11485 0 : _o3[0] = swap_p ? captures[4] : captures[2];
11486 0 : _o3[1] = wide_int_to_tree (sizetype, off);
11487 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11488 0 : _o2[0] = _r3;
11489 : }
11490 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11491 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11492 0 : _o1[0] = _r2;
11493 : }
11494 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11495 : {
11496 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11497 : }
11498 : else
11499 : _r1 = _o1[0];
11500 0 : res_op0 = _r1;
11501 : }
11502 0 : tree res_op1;
11503 0 : res_op1 = rhs_tree;
11504 0 : tree _r;
11505 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11506 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11507 0 : return _r;
11508 : }
11509 0 : next_after_fail1800:;
11510 : }
11511 : }
11512 : }
11513 : }
11514 : }
11515 : }
11516 : }
11517 : }
11518 : break;
11519 : }
11520 : default:;
11521 : }
11522 : }
11523 : break;
11524 : }
11525 : default:;
11526 : }
11527 : break;
11528 : }
11529 : default:;
11530 : }
11531 : break;
11532 : }
11533 : default:;
11534 : }
11535 : break;
11536 : }
11537 64435 : case GT_EXPR:
11538 64435 : {
11539 64435 : tree _q20 = TREE_OPERAND (_p0, 0);
11540 64435 : tree _q21 = TREE_OPERAND (_p0, 1);
11541 64435 : switch (TREE_CODE (_q21))
11542 : {
11543 0 : case POINTER_PLUS_EXPR:
11544 0 : {
11545 0 : tree _q40 = TREE_OPERAND (_q21, 0);
11546 0 : tree _q41 = TREE_OPERAND (_q21, 1);
11547 0 : switch (TREE_CODE (_q41))
11548 : {
11549 0 : case INTEGER_CST:
11550 0 : {
11551 0 : switch (TREE_CODE (_p1))
11552 : {
11553 0 : case LT_EXPR:
11554 0 : {
11555 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11556 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11557 0 : switch (TREE_CODE (_q70))
11558 : {
11559 0 : case POINTER_PLUS_EXPR:
11560 0 : {
11561 0 : tree _q80 = TREE_OPERAND (_q70, 0);
11562 0 : tree _q81 = TREE_OPERAND (_q70, 1);
11563 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
11564 : {
11565 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
11566 : {
11567 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
11568 : {
11569 0 : {
11570 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
11571 0 : const enum tree_code cmp = LT_EXPR;
11572 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11573 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11574 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11575 : )
11576 : {
11577 0 : {
11578 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11579 0 : offset_int rhs = off * 2;
11580 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11581 : )
11582 : {
11583 0 : {
11584 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11585 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11586 0 : if (cmp == LT_EXPR
11587 : )
11588 : {
11589 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1801;
11590 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1801;
11591 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1801;
11592 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1801;
11593 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1801;
11594 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1801;
11595 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1801;
11596 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1801;
11597 0 : {
11598 0 : tree res_op0;
11599 0 : {
11600 0 : tree _o1[1], _r1;
11601 0 : {
11602 0 : tree _o2[2], _r2;
11603 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11604 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11605 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11606 0 : _o1[0] = _r2;
11607 : }
11608 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11609 : {
11610 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11611 : }
11612 : else
11613 : _r1 = _o1[0];
11614 0 : res_op0 = _r1;
11615 : }
11616 0 : tree res_op1;
11617 0 : res_op1 = rhs_tree;
11618 0 : tree _r;
11619 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11620 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11621 0 : return _r;
11622 : }
11623 0 : next_after_fail1801:;
11624 : }
11625 : else
11626 : {
11627 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1802;
11628 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1802;
11629 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1802;
11630 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1802;
11631 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1802;
11632 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1802;
11633 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1802;
11634 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1802;
11635 : {
11636 : tree res_op0;
11637 : {
11638 : tree _o1[1], _r1;
11639 : {
11640 : tree _o2[2], _r2;
11641 : {
11642 : tree _o3[2], _r3;
11643 : _o3[0] = swap_p ? captures[4] : captures[2];
11644 : _o3[1] = wide_int_to_tree (sizetype, off);
11645 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11646 : _o2[0] = _r3;
11647 : }
11648 : _o2[1] = swap_p ? captures[2] : captures[4];
11649 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11650 : _o1[0] = _r2;
11651 : }
11652 : if (TREE_TYPE (_o1[0]) != sizetype)
11653 : {
11654 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11655 : }
11656 : else
11657 : _r1 = _o1[0];
11658 : res_op0 = _r1;
11659 : }
11660 : tree res_op1;
11661 : res_op1 = rhs_tree;
11662 : tree _r;
11663 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11664 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11665 : return _r;
11666 : }
11667 : next_after_fail1802:;
11668 : }
11669 : }
11670 : }
11671 : }
11672 : }
11673 : }
11674 : }
11675 : }
11676 : }
11677 : break;
11678 : }
11679 : default:;
11680 : }
11681 : break;
11682 : }
11683 0 : case GT_EXPR:
11684 0 : {
11685 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11686 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11687 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
11688 : {
11689 0 : switch (TREE_CODE (_q71))
11690 : {
11691 0 : case POINTER_PLUS_EXPR:
11692 0 : {
11693 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11694 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11695 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
11696 : {
11697 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
11698 : {
11699 0 : {
11700 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
11701 0 : const enum tree_code cmp = LT_EXPR;
11702 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11703 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11704 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11705 : )
11706 : {
11707 0 : {
11708 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11709 0 : offset_int rhs = off * 2;
11710 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11711 : )
11712 : {
11713 0 : {
11714 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11715 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11716 0 : if (cmp == LT_EXPR
11717 : )
11718 : {
11719 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1803;
11720 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1803;
11721 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1803;
11722 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1803;
11723 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1803;
11724 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1803;
11725 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1803;
11726 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1803;
11727 0 : {
11728 0 : tree res_op0;
11729 0 : {
11730 0 : tree _o1[1], _r1;
11731 0 : {
11732 0 : tree _o2[2], _r2;
11733 0 : _o2[0] = swap_p ? captures[6] : captures[1];
11734 0 : _o2[1] = swap_p ? captures[2] : captures[4];
11735 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11736 0 : _o1[0] = _r2;
11737 : }
11738 0 : if (TREE_TYPE (_o1[0]) != sizetype)
11739 : {
11740 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11741 : }
11742 : else
11743 : _r1 = _o1[0];
11744 0 : res_op0 = _r1;
11745 : }
11746 0 : tree res_op1;
11747 0 : res_op1 = rhs_tree;
11748 0 : tree _r;
11749 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11750 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 947, __FILE__, __LINE__, true);
11751 0 : return _r;
11752 : }
11753 0 : next_after_fail1803:;
11754 : }
11755 : else
11756 : {
11757 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1804;
11758 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1804;
11759 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1804;
11760 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1804;
11761 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1804;
11762 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1804;
11763 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1804;
11764 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1804;
11765 : {
11766 : tree res_op0;
11767 : {
11768 : tree _o1[1], _r1;
11769 : {
11770 : tree _o2[2], _r2;
11771 : {
11772 : tree _o3[2], _r3;
11773 : _o3[0] = swap_p ? captures[4] : captures[2];
11774 : _o3[1] = wide_int_to_tree (sizetype, off);
11775 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11776 : _o2[0] = _r3;
11777 : }
11778 : _o2[1] = swap_p ? captures[2] : captures[4];
11779 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11780 : _o1[0] = _r2;
11781 : }
11782 : if (TREE_TYPE (_o1[0]) != sizetype)
11783 : {
11784 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11785 : }
11786 : else
11787 : _r1 = _o1[0];
11788 : res_op0 = _r1;
11789 : }
11790 : tree res_op1;
11791 : res_op1 = rhs_tree;
11792 : tree _r;
11793 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11794 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 948, __FILE__, __LINE__, true);
11795 : return _r;
11796 : }
11797 : next_after_fail1804:;
11798 : }
11799 : }
11800 : }
11801 : }
11802 : }
11803 : }
11804 : }
11805 : }
11806 : break;
11807 : }
11808 : default:;
11809 : }
11810 : }
11811 : break;
11812 : }
11813 : default:;
11814 : }
11815 : break;
11816 : }
11817 : default:;
11818 : }
11819 : break;
11820 : }
11821 : default:;
11822 : }
11823 : break;
11824 : }
11825 : default:;
11826 : }
11827 : return NULL_TREE;
11828 : }
11829 : #pragma GCC diagnostic pop
|