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 117519889 : tree_bit_not_with_nop (tree t, tree *res_ops)
11 : {
12 117519889 : const tree type = TREE_TYPE (t);
13 117519889 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 117519889 : if (TREE_SIDE_EFFECTS (t)) return false;
15 117519889 : switch (TREE_CODE (t))
16 : {
17 158467 : case BIT_NOT_EXPR:
18 158467 : {
19 158467 : tree _p0 = TREE_OPERAND (t, 0);
20 158467 : {
21 158467 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 158467 : {
23 158467 : res_ops[0] = captures[0];
24 158467 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 2, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 25474582 : break;
29 : }
30 25474582 : CASE_CONVERT:
31 25474582 : {
32 25474582 : tree _p0 = TREE_OPERAND (t, 0);
33 25474582 : switch (TREE_CODE (_p0))
34 : {
35 1126 : case BIT_NOT_EXPR:
36 1126 : {
37 1126 : tree _q20 = TREE_OPERAND (_p0, 0);
38 1126 : {
39 1126 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
40 1126 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
41 : )
42 : {
43 617 : {
44 617 : res_ops[0] = captures[0];
45 617 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 3, __FILE__, __LINE__, false);
46 617 : return true;
47 : }
48 : }
49 : }
50 : break;
51 : }
52 : default:;
53 : }
54 : break;
55 : }
56 : default:;
57 : }
58 : return false;
59 : }
60 :
61 : bool
62 86222481 : tree_with_known_nonzero_bits_1 (tree t)
63 : {
64 86222481 : const tree type = TREE_TYPE (t);
65 86222481 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
66 86222481 : if (TREE_SIDE_EFFECTS (t)) return false;
67 86222481 : switch (TREE_CODE (t))
68 : {
69 20658122 : case INTEGER_CST:
70 20658122 : {
71 20658122 : {
72 20658122 : tree captures[1] ATTRIBUTE_UNUSED = { t };
73 20658122 : {
74 20658122 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 37, __FILE__, __LINE__, false);
75 20658122 : return true;
76 : }
77 : }
78 27761126 : break;
79 : }
80 27761126 : case SSA_NAME:
81 27761126 : {
82 27761126 : {
83 27761126 : tree captures[1] ATTRIBUTE_UNUSED = { t };
84 27761126 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
85 : )
86 : {
87 19640934 : {
88 19640934 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 38, __FILE__, __LINE__, false);
89 19640934 : return true;
90 : }
91 : }
92 : }
93 : break;
94 : }
95 : default:;
96 : }
97 : return false;
98 : }
99 :
100 : bool
101 0 : tree_compositional_complex (tree t)
102 : {
103 0 : const tree type = TREE_TYPE (t);
104 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
105 0 : if (TREE_SIDE_EFFECTS (t)) return false;
106 0 : switch (TREE_CODE (t))
107 : {
108 0 : CASE_CONVERT:
109 0 : {
110 0 : tree _p0 = TREE_OPERAND (t, 0);
111 0 : switch (TREE_CODE (_p0))
112 : {
113 0 : case COMPLEX_EXPR:
114 0 : {
115 0 : tree _q20 = TREE_OPERAND (_p0, 0);
116 0 : tree _q21 = TREE_OPERAND (_p0, 1);
117 0 : {
118 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
119 0 : {
120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 43, __FILE__, __LINE__, false);
121 0 : return true;
122 : }
123 : }
124 : break;
125 : }
126 : default:;
127 : }
128 : break;
129 : }
130 0 : case COMPLEX_EXPR:
131 0 : {
132 0 : tree _p0 = TREE_OPERAND (t, 0);
133 0 : tree _p1 = TREE_OPERAND (t, 1);
134 0 : {
135 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
136 0 : {
137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 43, __FILE__, __LINE__, false);
138 0 : return true;
139 : }
140 : }
141 : break;
142 : }
143 : default:;
144 : }
145 : return false;
146 : }
147 :
148 : tree
149 0 : generic_simplify_10 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
151 : const enum tree_code ARG_UNUSED (bit_op))
152 : {
153 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
154 0 : if (bit_op == BIT_AND_EXPR
155 : )
156 : {
157 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail83;
158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail83;
159 0 : {
160 0 : tree _r;
161 0 : _r = build_zero_cst (type);
162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 58, __FILE__, __LINE__, true);
163 0 : return _r;
164 : }
165 : next_after_fail83:;
166 : }
167 : else
168 : {
169 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail84;
170 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail84;
171 0 : {
172 0 : tree _r;
173 0 : _r = build_minus_one_cst (type);
174 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 59, __FILE__, __LINE__, true);
175 0 : return _r;
176 : }
177 : next_after_fail84:;
178 : }
179 : return NULL_TREE;
180 : }
181 :
182 : tree
183 0 : generic_simplify_19 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
184 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
185 : const enum tree_code ARG_UNUSED (lop),
186 : const enum tree_code ARG_UNUSED (res))
187 : {
188 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
189 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail93;
190 0 : {
191 0 : tree res_op0;
192 0 : res_op0 = captures[0];
193 0 : tree res_op1;
194 0 : res_op1 = captures[1];
195 0 : tree _r;
196 0 : _r = fold_build2_loc (loc, res, type, res_op0, res_op1);
197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 68, __FILE__, __LINE__, true);
198 : return _r;
199 : }
200 0 : next_after_fail93:;
201 0 : return NULL_TREE;
202 : }
203 :
204 : tree
205 113 : generic_simplify_27 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
206 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
207 : const enum tree_code ARG_UNUSED (opo),
208 : const enum tree_code ARG_UNUSED (opi))
209 : {
210 113 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
211 113 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail101;
212 113 : {
213 113 : tree res_op0;
214 113 : {
215 113 : tree _o1[1], _r1;
216 113 : _o1[0] = captures[1];
217 113 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
218 113 : res_op0 = _r1;
219 : }
220 113 : tree res_op1;
221 113 : res_op1 = captures[2];
222 113 : tree _r;
223 113 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
224 113 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
225 : return _r;
226 : }
227 0 : next_after_fail101:;
228 0 : return NULL_TREE;
229 : }
230 :
231 : tree
232 599 : generic_simplify_33 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
233 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
234 : const enum tree_code ARG_UNUSED (bitop))
235 : {
236 599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
237 599 : if (!CONSTANT_CLASS_P (captures[0])
238 : )
239 : {
240 599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail107;
241 599 : {
242 599 : tree res_op0;
243 599 : res_op0 = captures[0];
244 599 : tree res_op1;
245 599 : {
246 599 : tree _o1[2], _r1;
247 599 : _o1[0] = captures[1];
248 599 : _o1[1] = captures[2];
249 599 : _r1 = fold_build2_loc (loc, bitop, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
250 599 : if (EXPR_P (_r1))
251 0 : goto next_after_fail107;
252 599 : res_op1 = _r1;
253 : }
254 599 : tree _r;
255 599 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
256 599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 81, __FILE__, __LINE__, true);
257 599 : return _r;
258 : }
259 : next_after_fail107:;
260 : }
261 : else
262 : {
263 0 : {
264 0 : tree cst1 = const_binop (bitop, type, captures[0], captures[2]);
265 0 : if (cst1
266 : )
267 : {
268 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail108;
269 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail108;
270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail108;
271 0 : {
272 0 : tree res_op0;
273 0 : res_op0 = captures[1];
274 0 : tree res_op1;
275 0 : res_op1 = cst1;
276 0 : tree _r;
277 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 82, __FILE__, __LINE__, true);
279 0 : return _r;
280 : }
281 : next_after_fail108:;
282 : }
283 : else
284 : {
285 0 : {
286 0 : tree cst2 = const_binop (bitop, type, captures[1], captures[2]);
287 0 : if (cst2
288 : )
289 : {
290 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail109;
291 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail109;
292 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail109;
293 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail109;
294 0 : {
295 0 : tree res_op0;
296 0 : res_op0 = captures[0];
297 0 : tree res_op1;
298 0 : res_op1 = cst2;
299 0 : tree _r;
300 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 83, __FILE__, __LINE__, true);
302 0 : return _r;
303 : }
304 : next_after_fail109:;
305 : }
306 : }
307 : }
308 : }
309 : }
310 : return NULL_TREE;
311 : }
312 :
313 : tree
314 64 : generic_simplify_47 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
315 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
316 : const enum tree_code ARG_UNUSED (cmp),
317 : const enum tree_code ARG_UNUSED (icmp),
318 : const enum tree_code ARG_UNUSED (ncmp))
319 : {
320 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
321 64 : {
322 64 : enum tree_code ic = invert_tree_comparison
323 64 : (cmp, HONOR_NANS (captures[0]));
324 64 : if (ic == icmp
325 : )
326 : {
327 64 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail124;
328 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail124;
329 64 : {
330 64 : tree res_op0;
331 64 : res_op0 = captures[0];
332 64 : tree res_op1;
333 64 : res_op1 = captures[1];
334 64 : tree _r;
335 64 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
336 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 94, __FILE__, __LINE__, true);
337 64 : return _r;
338 : }
339 : next_after_fail124:;
340 : }
341 : else
342 : {
343 0 : if (ic == ncmp
344 : )
345 : {
346 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail125;
347 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail125;
348 0 : {
349 0 : tree res_op0;
350 0 : res_op0 = captures[0];
351 0 : tree res_op1;
352 0 : res_op1 = captures[1];
353 0 : tree _r;
354 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
355 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 95, __FILE__, __LINE__, true);
356 0 : return _r;
357 : }
358 : next_after_fail125:;
359 : }
360 : }
361 : }
362 : return NULL_TREE;
363 : }
364 :
365 : tree
366 3009696 : generic_simplify_62 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
367 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
368 : const enum tree_code ARG_UNUSED (inner_op),
369 : const enum tree_code ARG_UNUSED (neg_inner_op),
370 : const enum tree_code ARG_UNUSED (outer_op))
371 : {
372 3009696 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
373 3009696 : if (!TYPE_SATURATING (type)
374 : )
375 : {
376 3009696 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
377 6019147 : && !FIXED_POINT_TYPE_P (type)
378 : )
379 : {
380 3009451 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
381 : )
382 : {
383 2033972 : if (!CONSTANT_CLASS_P (captures[0])
384 : )
385 : {
386 2033965 : if (outer_op == PLUS_EXPR
387 : )
388 : {
389 2033965 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail142;
390 2033965 : {
391 2033965 : tree res_op0;
392 2033965 : {
393 2033965 : tree _o1[1], _r1;
394 2033965 : _o1[0] = captures[0];
395 2033965 : if (TREE_TYPE (_o1[0]) != type)
396 : {
397 865227 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
398 : }
399 : else
400 : _r1 = _o1[0];
401 2033965 : res_op0 = _r1;
402 : }
403 2033965 : tree res_op1;
404 2033965 : {
405 2033965 : tree _o1[2], _r1;
406 2033965 : _o1[0] = captures[2];
407 2033965 : {
408 2033965 : tree _o2[1], _r2;
409 2033965 : _o2[0] = captures[1];
410 2033965 : if (TREE_TYPE (_o2[0]) != type)
411 : {
412 856506 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
413 : }
414 : else
415 : _r2 = _o2[0];
416 2033965 : _o1[1] = _r2;
417 : }
418 2033965 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
419 2033965 : if (EXPR_P (_r1))
420 0 : goto next_after_fail142;
421 2033965 : res_op1 = _r1;
422 : }
423 2033965 : tree _r;
424 2033965 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
425 2033965 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 111, __FILE__, __LINE__, true);
426 2033965 : return _r;
427 : }
428 : next_after_fail142:;
429 : }
430 : else
431 : {
432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail143;
433 0 : {
434 0 : tree res_op0;
435 0 : {
436 0 : tree _o1[1], _r1;
437 0 : _o1[0] = captures[0];
438 0 : if (TREE_TYPE (_o1[0]) != type)
439 : {
440 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
441 : }
442 : else
443 : _r1 = _o1[0];
444 0 : res_op0 = _r1;
445 : }
446 0 : tree res_op1;
447 0 : {
448 0 : tree _o1[2], _r1;
449 0 : _o1[0] = captures[2];
450 0 : {
451 0 : tree _o2[1], _r2;
452 0 : _o2[0] = captures[1];
453 0 : if (TREE_TYPE (_o2[0]) != type)
454 : {
455 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
456 : }
457 : else
458 : _r2 = _o2[0];
459 0 : _o1[1] = _r2;
460 : }
461 0 : _r1 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
462 0 : if (EXPR_P (_r1))
463 0 : goto next_after_fail143;
464 0 : res_op1 = _r1;
465 : }
466 0 : tree _r;
467 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
468 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 112, __FILE__, __LINE__, true);
469 0 : return _r;
470 : }
471 : next_after_fail143:;
472 : }
473 : }
474 : }
475 : else
476 : {
477 1950958 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
478 1950958 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
479 : )
480 : {
481 177287 : if (outer_op == PLUS_EXPR
482 : )
483 : {
484 177260 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail144;
485 177260 : {
486 177260 : tree res_op0;
487 177260 : {
488 177260 : tree _o1[2], _r1;
489 177260 : _o1[0] = captures[0];
490 177260 : {
491 177260 : tree _o2[2], _r2;
492 177260 : {
493 177260 : tree _o3[1], _r3;
494 177260 : _o3[0] = captures[2];
495 177260 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
496 : {
497 177260 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
498 : }
499 : else
500 : _r3 = _o3[0];
501 177260 : _o2[0] = _r3;
502 : }
503 177260 : _o2[1] = captures[1];
504 177260 : _r2 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
505 177260 : if (EXPR_P (_r2))
506 0 : goto next_after_fail144;
507 177260 : _o1[1] = _r2;
508 : }
509 177260 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
510 177260 : res_op0 = _r1;
511 : }
512 177260 : tree _r;
513 177260 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
514 177260 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 113, __FILE__, __LINE__, true);
515 177260 : return _r;
516 : }
517 : next_after_fail144:;
518 : }
519 : else
520 : {
521 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail145;
522 27 : {
523 27 : tree res_op0;
524 27 : {
525 27 : tree _o1[2], _r1;
526 27 : _o1[0] = captures[0];
527 27 : {
528 27 : tree _o2[2], _r2;
529 27 : {
530 27 : tree _o3[1], _r3;
531 27 : _o3[0] = captures[2];
532 27 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
533 : {
534 27 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
535 : }
536 : else
537 : _r3 = _o3[0];
538 27 : _o2[0] = _r3;
539 : }
540 27 : _o2[1] = captures[1];
541 27 : _r2 = fold_build2_loc (loc, neg_inner_op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
542 27 : if (EXPR_P (_r2))
543 0 : goto next_after_fail145;
544 27 : _o1[1] = _r2;
545 : }
546 27 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
547 27 : res_op0 = _r1;
548 : }
549 27 : tree _r;
550 27 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
551 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 114, __FILE__, __LINE__, true);
552 27 : return _r;
553 : }
554 : next_after_fail145:;
555 : }
556 : }
557 : else
558 : {
559 798192 : if (types_match (type, captures[0]) && !TYPE_OVERFLOW_SANITIZED (type)
560 : )
561 : {
562 796949 : {
563 796949 : tree cst = const_binop (outer_op == inner_op
564 : ? PLUS_EXPR : MINUS_EXPR,
565 : type, captures[1], captures[2]);
566 796949 : if (cst
567 : )
568 : {
569 796949 : if (INTEGRAL_TYPE_P (type) && !TREE_OVERFLOW (cst)
570 : )
571 : {
572 796935 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail146;
573 796935 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail146;
574 796935 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail146;
575 796935 : {
576 796935 : tree res_op0;
577 796935 : res_op0 = captures[0];
578 796935 : tree res_op1;
579 796935 : res_op1 = cst;
580 796935 : tree _r;
581 796935 : _r = fold_build2_loc (loc, inner_op, type, res_op0, res_op1);
582 796935 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 115, __FILE__, __LINE__, true);
583 796935 : return _r;
584 : }
585 : next_after_fail146:;
586 : }
587 : else
588 : {
589 28 : if (INTEGRAL_TYPE_P (type)
590 28 : && wi::to_wide (cst) == wi::min_value (type)
591 : )
592 : {
593 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail147;
594 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail147;
595 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail147;
596 7 : {
597 7 : tree res_op0;
598 7 : res_op0 = captures[0];
599 7 : tree res_op1;
600 7 : res_op1 = wide_int_to_tree (type, wi::to_wide (cst));
601 7 : tree _r;
602 7 : _r = fold_build2_loc (loc, neg_inner_op, type, res_op0, res_op1);
603 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 116, __FILE__, __LINE__, true);
604 7 : return _r;
605 : }
606 : next_after_fail147:;
607 : }
608 : else
609 : {
610 7 : {
611 7 : tree utype = unsigned_type_for (type);
612 7 : if (utype
613 : )
614 : {
615 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail148;
616 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail148;
617 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail148;
618 7 : {
619 7 : tree res_op0;
620 7 : {
621 7 : tree _o1[2], _r1;
622 7 : {
623 7 : tree _o2[1], _r2;
624 7 : _o2[0] = captures[0];
625 7 : if (TREE_TYPE (_o2[0]) != utype)
626 : {
627 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
628 : }
629 : else
630 : _r2 = _o2[0];
631 7 : _o1[0] = _r2;
632 : }
633 7 : {
634 7 : tree _o2[1], _r2;
635 7 : _o2[0] = TREE_OVERFLOW (cst)
636 7 : ? drop_tree_overflow (cst) : cst;
637 7 : if (TREE_TYPE (_o2[0]) != utype)
638 : {
639 7 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o2[0]);
640 : }
641 : else
642 : _r2 = _o2[0];
643 7 : _o1[1] = _r2;
644 : }
645 7 : _r1 = fold_build2_loc (loc, inner_op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
646 7 : res_op0 = _r1;
647 : }
648 7 : tree _r;
649 7 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
650 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 117, __FILE__, __LINE__, true);
651 7 : return _r;
652 : }
653 : next_after_fail148:;
654 : }
655 : }
656 : }
657 : }
658 : }
659 : }
660 : }
661 : }
662 : }
663 : }
664 : }
665 : return NULL_TREE;
666 : }
667 :
668 : tree
669 20275 : generic_simplify_119 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
670 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
671 : {
672 20275 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
673 20275 : {
674 20275 : bool wascmp;
675 20275 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
676 20275 : && (!wascmp || element_precision (type) == 1)
677 : )
678 : {
679 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail217;
680 1 : {
681 1 : tree res_op0;
682 1 : res_op0 = captures[0];
683 1 : tree res_op1;
684 1 : {
685 1 : tree _o1[1], _r1;
686 1 : _o1[0] = captures[3];
687 1 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
688 1 : res_op1 = _r1;
689 : }
690 1 : tree _r;
691 1 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
692 1 : if (TREE_SIDE_EFFECTS (captures[2]))
693 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
694 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 183, __FILE__, __LINE__, true);
695 1 : return _r;
696 : }
697 0 : next_after_fail217:;
698 : }
699 : }
700 20274 : return NULL_TREE;
701 : }
702 :
703 : tree
704 8 : generic_simplify_127 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
705 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
706 : {
707 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
708 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
709 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
710 : )
711 : {
712 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail225;
713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail225;
714 0 : {
715 0 : tree _r;
716 0 : _r = captures[2];
717 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 189, __FILE__, __LINE__, true);
718 0 : return _r;
719 : }
720 : next_after_fail225:;
721 : }
722 : return NULL_TREE;
723 : }
724 :
725 : tree
726 0 : generic_simplify_137 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
727 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
728 : {
729 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
730 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail235;
731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail235;
732 0 : {
733 0 : tree _r;
734 0 : _r = captures[0];
735 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 193, __FILE__, __LINE__, true);
736 : return _r;
737 : }
738 : next_after_fail235:;
739 : return NULL_TREE;
740 : }
741 :
742 : tree
743 2 : generic_simplify_146 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
744 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
745 : const enum tree_code ARG_UNUSED (bitop),
746 : const enum tree_code ARG_UNUSED (rbitop))
747 : {
748 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
749 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail248;
750 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail248;
751 2 : {
752 2 : tree res_op0;
753 2 : res_op0 = captures[0];
754 2 : tree res_op1;
755 2 : res_op1 = captures[2];
756 2 : tree _r;
757 2 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
758 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 201, __FILE__, __LINE__, true);
759 : return _r;
760 : }
761 : next_after_fail248:;
762 : return NULL_TREE;
763 : }
764 :
765 : tree
766 0 : generic_simplify_152 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
767 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
768 : const enum tree_code ARG_UNUSED (op))
769 : {
770 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
771 0 : if (bitwise_equal_p (captures[4], captures[7])
772 : )
773 : {
774 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail255;
775 0 : {
776 0 : tree res_op0;
777 0 : {
778 0 : tree _o1[2], _r1;
779 0 : {
780 0 : tree _o2[2], _r2;
781 0 : _o2[0] = captures[5];
782 0 : {
783 0 : tree _o3[1], _r3;
784 0 : _o3[0] = captures[6];
785 0 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
786 : {
787 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
788 : }
789 : else
790 : _r3 = _o3[0];
791 0 : _o2[1] = _r3;
792 : }
793 0 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
794 0 : _o1[0] = _r2;
795 : }
796 0 : {
797 0 : tree _o2[1], _r2;
798 0 : _o2[0] = captures[4];
799 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
800 : {
801 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
802 : }
803 : else
804 : _r2 = _o2[0];
805 0 : _o1[1] = _r2;
806 : }
807 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
808 0 : res_op0 = _r1;
809 : }
810 0 : tree _r;
811 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
812 0 : if (TREE_SIDE_EFFECTS (captures[7]))
813 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
814 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 204, __FILE__, __LINE__, true);
815 0 : return _r;
816 : }
817 0 : next_after_fail255:;
818 : }
819 : return NULL_TREE;
820 : }
821 :
822 : tree
823 0 : generic_simplify_164 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
824 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
825 : const enum tree_code ARG_UNUSED (cmp),
826 : const enum tree_code ARG_UNUSED (bitop),
827 : const enum tree_code ARG_UNUSED (neeq))
828 : {
829 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
830 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail289;
831 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail289;
832 0 : {
833 0 : tree res_op0;
834 0 : {
835 0 : tree _o1[2], _r1;
836 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
837 0 : _o1[1] = captures[3];
838 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
839 0 : res_op0 = _r1;
840 : }
841 0 : tree res_op1;
842 0 : res_op1 = captures[4];
843 0 : tree _r;
844 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
845 0 : if (TREE_SIDE_EFFECTS (captures[2]))
846 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
847 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 230, __FILE__, __LINE__, true);
848 : return _r;
849 : }
850 : next_after_fail289:;
851 : return NULL_TREE;
852 : }
853 :
854 : tree
855 0 : generic_simplify_172 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
856 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
857 : const enum tree_code ARG_UNUSED (cmp),
858 : const enum tree_code ARG_UNUSED (bitop),
859 : const enum tree_code ARG_UNUSED (neeq))
860 : {
861 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
862 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail310;
863 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail310;
864 0 : {
865 0 : tree res_op0;
866 0 : {
867 0 : tree _o1[2], _r1;
868 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
869 0 : _o1[1] = captures[3];
870 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
871 0 : res_op0 = _r1;
872 : }
873 0 : tree res_op1;
874 0 : res_op1 = captures[4];
875 0 : tree _r;
876 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
877 0 : if (TREE_SIDE_EFFECTS (captures[2]))
878 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
879 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 230, __FILE__, __LINE__, true);
880 : return _r;
881 : }
882 : next_after_fail310:;
883 : return NULL_TREE;
884 : }
885 :
886 : tree
887 0 : generic_simplify_178 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
888 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
889 : {
890 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
891 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail317;
892 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail317;
893 0 : {
894 0 : tree _r;
895 0 : _r = captures[1];
896 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 236, __FILE__, __LINE__, true);
897 : return _r;
898 : }
899 : next_after_fail317:;
900 : return NULL_TREE;
901 : }
902 :
903 : tree
904 0 : generic_simplify_181 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
905 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
906 : {
907 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
908 0 : if (type_has_mode_precision_p (type)
909 0 : && tree_fits_uhwi_p (captures[1])
910 0 : && tree_fits_uhwi_p (captures[3])
911 0 : && tree_fits_uhwi_p (captures[4])
912 0 : && ((~((HOST_WIDE_INT_1U << tree_to_uhwi (captures[1])) - 1)) & tree_to_uhwi (captures[4])) == 0
913 0 : && (tree_to_uhwi (captures[1]) + tree_to_uhwi (captures[3])) == TYPE_PRECISION (type)
914 0 : && TYPE_UNSIGNED (type)
915 0 : && captures[0] == captures[2]
916 : )
917 : {
918 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail320;
919 0 : {
920 0 : tree res_op0;
921 0 : {
922 0 : tree _o1[2], _r1;
923 0 : _o1[0] = captures[0];
924 0 : _o1[1] = captures[3];
925 0 : _r1 = fold_build2_loc (loc, RROTATE_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
926 0 : res_op0 = _r1;
927 : }
928 0 : tree res_op1;
929 0 : res_op1 = captures[4];
930 0 : tree _r;
931 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
932 0 : if (TREE_SIDE_EFFECTS (captures[1]))
933 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
934 0 : if (TREE_SIDE_EFFECTS (captures[2]))
935 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
936 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
937 0 : return _r;
938 : }
939 0 : next_after_fail320:;
940 : }
941 : return NULL_TREE;
942 : }
943 :
944 : tree
945 0 : generic_simplify_188 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
946 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
947 : const combined_fn ARG_UNUSED (copysigns))
948 : {
949 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
950 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail327;
951 0 : {
952 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail327;
953 0 : tree res_op0;
954 0 : res_op0 = unshare_expr (captures[1]);
955 0 : tree res_op1;
956 0 : res_op1 = captures[1];
957 0 : tree _r;
958 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
959 0 : if (TREE_SIDE_EFFECTS (captures[2]))
960 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
961 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 243, __FILE__, __LINE__, true);
962 : return _r;
963 : }
964 : next_after_fail327:;
965 : return NULL_TREE;
966 : }
967 :
968 : tree
969 1206 : generic_simplify_194 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
970 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
971 : const enum tree_code ARG_UNUSED (cmp))
972 : {
973 1206 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
974 1206 : if (fold_before_rtl_expansion_p ()
975 : )
976 : {
977 0 : if (INTEGRAL_TYPE_P (type)
978 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
979 : )
980 : {
981 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail335;
982 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail335;
983 0 : {
984 0 : tree res_op0;
985 0 : res_op0 = captures[0];
986 0 : tree res_op1;
987 0 : res_op1 = captures[3];
988 0 : tree res_op2;
989 0 : res_op2 = build_zero_cst (type);
990 0 : tree _r;
991 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
992 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 249, __FILE__, __LINE__, true);
993 0 : return _r;
994 : }
995 : next_after_fail335:;
996 : }
997 : }
998 : return NULL_TREE;
999 : }
1000 :
1001 : tree
1002 5590 : generic_simplify_200 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1003 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1004 : const enum tree_code ARG_UNUSED (op))
1005 : {
1006 5590 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1007 5590 : {
1008 5590 : poly_widest_int factor;
1009 5590 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
1010 5559 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1011 11149 : && multiple_p (wi::to_poly_widest (captures[3]), wi::to_widest (captures[1]), &factor)
1012 : )
1013 : {
1014 5489 : {
1015 5489 : wi::overflow_type overflow;
1016 5489 : wide_int mul;
1017 5489 : if (types_match (type, TREE_TYPE (captures[2]))
1018 5443 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1019 0 : && TREE_CODE (captures[2]) == INTEGER_CST
1020 0 : && TREE_CODE (captures[3]) == INTEGER_CST
1021 5489 : && (mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
1022 0 : TYPE_SIGN (type), &overflow),
1023 0 : !overflow)
1024 5489 : && (TYPE_UNSIGNED (type)
1025 5489 : || known_eq (factor, 1)
1026 0 : || (get_range_pos_neg (captures[0])
1027 0 : | (((op == PLUS_EXPR) ^ (tree_int_cst_sgn (captures[2]) < 0))
1028 0 : ? 1 : 2)) != 3)
1029 : )
1030 : {
1031 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail341;
1032 0 : {
1033 0 : tree res_op0;
1034 0 : {
1035 0 : tree _o1[2], _r1;
1036 0 : _o1[0] = captures[0];
1037 0 : _o1[1] = wide_int_to_tree (type, factor);
1038 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1039 0 : res_op0 = _r1;
1040 : }
1041 0 : tree res_op1;
1042 0 : res_op1 = wide_int_to_tree (type, mul);
1043 0 : tree _r;
1044 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1045 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1046 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1047 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1048 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1049 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1050 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1051 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 254, __FILE__, __LINE__, true);
1052 0 : return _r;
1053 : }
1054 0 : next_after_fail341:;
1055 : }
1056 : else
1057 : {
1058 5489 : {
1059 5489 : tree utype = unsigned_type_for (type);
1060 5489 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail342;
1061 5489 : {
1062 5489 : tree res_op0;
1063 5489 : {
1064 5489 : tree _o1[2], _r1;
1065 5489 : {
1066 5489 : tree _o2[2], _r2;
1067 5489 : {
1068 5489 : tree _o3[1], _r3;
1069 5489 : _o3[0] = captures[0];
1070 5489 : if (TREE_TYPE (_o3[0]) != utype)
1071 : {
1072 5489 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1073 : }
1074 : else
1075 : _r3 = _o3[0];
1076 5489 : _o2[0] = _r3;
1077 : }
1078 5489 : _o2[1] = wide_int_to_tree (utype, factor);
1079 5489 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1080 5489 : _o1[0] = _r2;
1081 : }
1082 5489 : {
1083 5489 : tree _o2[2], _r2;
1084 5489 : {
1085 5489 : tree _o3[1], _r3;
1086 5489 : _o3[0] = captures[3];
1087 5489 : if (TREE_TYPE (_o3[0]) != utype)
1088 : {
1089 14 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1090 : }
1091 : else
1092 : _r3 = _o3[0];
1093 5489 : _o2[0] = _r3;
1094 : }
1095 5489 : {
1096 5489 : tree _o3[1], _r3;
1097 5489 : _o3[0] = captures[2];
1098 5489 : if (TREE_TYPE (_o3[0]) != utype)
1099 : {
1100 46 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1101 : }
1102 : else
1103 : _r3 = _o3[0];
1104 5489 : _o2[1] = _r3;
1105 : }
1106 5489 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1107 5489 : _o1[1] = _r2;
1108 : }
1109 5489 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1110 5489 : res_op0 = _r1;
1111 : }
1112 5489 : tree _r;
1113 5489 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1114 5489 : if (TREE_SIDE_EFFECTS (captures[1]))
1115 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1116 5489 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 255, __FILE__, __LINE__, true);
1117 5489 : return _r;
1118 : }
1119 0 : next_after_fail342:;
1120 : }
1121 : }
1122 0 : }
1123 : }
1124 5590 : }
1125 101 : return NULL_TREE;
1126 : }
1127 :
1128 : tree
1129 6 : generic_simplify_230 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1131 : const enum tree_code ARG_UNUSED (neeq))
1132 : {
1133 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1134 6 : {
1135 6 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1136 6 : if (ptr_difference_const (captures[0], captures[2], &diff)
1137 : )
1138 : {
1139 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail389;
1140 0 : {
1141 0 : tree res_op0;
1142 0 : {
1143 0 : tree _o1[2], _r1;
1144 0 : _o1[0] = build_int_cst_type (inner_type, diff);
1145 0 : _o1[1] = captures[1];
1146 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1147 0 : res_op0 = _r1;
1148 : }
1149 0 : tree res_op1;
1150 0 : res_op1 = captures[3];
1151 0 : tree _r;
1152 0 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1153 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1154 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1155 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1156 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1157 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 300, __FILE__, __LINE__, true);
1158 0 : return _r;
1159 : }
1160 0 : next_after_fail389:;
1161 : }
1162 : }
1163 6 : return NULL_TREE;
1164 : }
1165 :
1166 : tree
1167 13 : generic_simplify_240 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1168 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1169 : const enum tree_code ARG_UNUSED (cmp))
1170 : {
1171 13 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1172 13 : if (tree_fits_shwi_p (captures[3])
1173 13 : && tree_to_shwi (captures[3]) > 0
1174 26 : && tree_to_shwi (captures[3]) < TYPE_PRECISION (TREE_TYPE (captures[2]))
1175 : )
1176 : {
1177 13 : if (tree_to_shwi (captures[3]) > wi::ctz (wi::to_wide (captures[5]))
1178 : )
1179 : {
1180 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail402;
1181 0 : {
1182 0 : tree _r;
1183 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1184 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1185 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1186 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1187 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1188 0 : if (TREE_SIDE_EFFECTS (captures[4]))
1189 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
1190 0 : if (TREE_SIDE_EFFECTS (captures[5]))
1191 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
1192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 313, __FILE__, __LINE__, true);
1193 0 : return _r;
1194 : }
1195 0 : next_after_fail402:;
1196 : }
1197 : else
1198 : {
1199 13 : {
1200 13 : wide_int c1 = wi::to_wide (captures[3]);
1201 13 : wide_int c2 = wi::lrshift (wi::to_wide (captures[4]), c1);
1202 13 : wide_int c3 = wi::lrshift (wi::to_wide (captures[5]), c1);
1203 13 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail403;
1204 13 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail403;
1205 13 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail403;
1206 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail403;
1207 13 : {
1208 13 : tree res_op0;
1209 13 : {
1210 13 : tree _o1[2], _r1;
1211 13 : _o1[0] = captures[2];
1212 13 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[2]), c2);
1213 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1214 13 : res_op0 = _r1;
1215 : }
1216 13 : tree res_op1;
1217 13 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[2]), c3);
1218 13 : tree _r;
1219 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1220 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 314, __FILE__, __LINE__, true);
1221 13 : return _r;
1222 : }
1223 0 : next_after_fail403:;
1224 13 : }
1225 : }
1226 : }
1227 : return NULL_TREE;
1228 : }
1229 :
1230 : tree
1231 30015 : generic_simplify_255 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1232 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1233 : const enum tree_code ARG_UNUSED (cmp),
1234 : const enum tree_code ARG_UNUSED (scmp))
1235 : {
1236 30015 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1237 30015 : if (integer_zerop (captures[2])
1238 : )
1239 : {
1240 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail427;
1241 7 : {
1242 7 : tree res_op0;
1243 7 : res_op0 = captures[2];
1244 7 : tree res_op1;
1245 7 : res_op1 = captures[3];
1246 7 : tree _r;
1247 7 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1248 7 : if (TREE_SIDE_EFFECTS (captures[1]))
1249 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1250 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 337, __FILE__, __LINE__, true);
1251 7 : return _r;
1252 : }
1253 0 : next_after_fail427:;
1254 : }
1255 : else
1256 : {
1257 60016 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1258 60016 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1259 60016 : && single_use (captures[0])
1260 : )
1261 : {
1262 5957 : if (tree_int_cst_sgn (captures[2]) < 0
1263 : )
1264 : {
1265 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail428;
1266 15 : {
1267 15 : tree res_op0;
1268 15 : res_op0 = captures[1];
1269 15 : tree res_op1;
1270 15 : res_op1 = captures[3];
1271 15 : tree _r;
1272 15 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1273 15 : if (TREE_SIDE_EFFECTS (captures[2]))
1274 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1275 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 338, __FILE__, __LINE__, true);
1276 15 : return _r;
1277 : }
1278 0 : next_after_fail428:;
1279 : }
1280 : else
1281 : {
1282 5942 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail429;
1283 5942 : {
1284 5942 : tree res_op0;
1285 5942 : res_op0 = captures[1];
1286 5942 : tree res_op1;
1287 5942 : res_op1 = captures[3];
1288 5942 : tree _r;
1289 5942 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1290 5942 : if (TREE_SIDE_EFFECTS (captures[2]))
1291 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1292 5942 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 339, __FILE__, __LINE__, true);
1293 5942 : return _r;
1294 : }
1295 0 : next_after_fail429:;
1296 : }
1297 : }
1298 : }
1299 : return NULL_TREE;
1300 : }
1301 :
1302 : tree
1303 81580 : generic_simplify_268 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1304 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1305 : const enum tree_code ARG_UNUSED (cmp),
1306 : const enum tree_code ARG_UNUSED (icmp))
1307 : {
1308 81580 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1309 81580 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[2]))
1310 81580 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[2]))
1311 : )
1312 : {
1313 81089 : {
1314 81089 : tree itype = TREE_TYPE (captures[1]);
1315 81089 : signop isign = TYPE_SIGN (itype);
1316 81089 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[2]))));
1317 81089 : bool itype_ok = fmt.can_represent_integral_type_p (itype);
1318 81089 : bool value_ok = itype_ok;
1319 81089 : const REAL_VALUE_TYPE *cst = TREE_REAL_CST_PTR (captures[2]);
1320 81089 : bool exception_p = real_isnan (cst)
1321 150 : && flag_trapping_math
1322 81239 : && ((cmp != EQ_EXPR && cmp != NE_EXPR)
1323 30 : || (cst->signalling
1324 30 : && HONOR_SNANS (TREE_TYPE (captures[2]))));
1325 81089 : if (flag_trapping_math && !value_ok)
1326 : exception_p = true;
1327 39775 : if (! exception_p
1328 : )
1329 : {
1330 39625 : {
1331 39625 : signop isign = TYPE_SIGN (itype);
1332 39625 : wide_int imin_val = wi::min_value (itype);
1333 39625 : wide_int imax_val = wi::max_value (itype);
1334 39625 : REAL_VALUE_TYPE imin, imax;
1335 39625 : real_from_integer (&imin, fmt, imin_val, isign);
1336 39625 : real_from_integer (&imax, fmt, imax_val, isign);
1337 39625 : REAL_VALUE_TYPE icst;
1338 39625 : if (cmp == GT_EXPR || cmp == GE_EXPR)
1339 38883 : real_ceil (&icst, fmt, cst);
1340 742 : else if (cmp == LT_EXPR || cmp == LE_EXPR)
1341 232 : real_floor (&icst, fmt, cst);
1342 : else
1343 510 : real_trunc (&icst, fmt, cst);
1344 39625 : bool cst_int_p = real_isfinite (cst) && real_identical (&icst, cst);
1345 39625 : bool overflow_p = false;
1346 39625 : wide_int icst_val
1347 39625 : = real_to_integer (&icst, &overflow_p, TYPE_PRECISION (itype));
1348 39625 : if (real_compare (LT_EXPR, cst, &imin)
1349 : )
1350 : {
1351 19477 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail480;
1352 19477 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail480;
1353 19477 : {
1354 19477 : tree _r;
1355 19477 : _r = constant_boolean_node (cmp == GT_EXPR || cmp == GE_EXPR || cmp == NE_EXPR,
1356 : type);
1357 19477 : if (TREE_SIDE_EFFECTS (captures[1]))
1358 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1359 19477 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 389, __FILE__, __LINE__, true);
1360 19477 : return _r;
1361 : }
1362 208 : next_after_fail480:;
1363 : }
1364 : else
1365 : {
1366 20148 : if (real_compare (GT_EXPR, cst, &imax)
1367 : )
1368 : {
1369 120 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail481;
1370 120 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail481;
1371 120 : {
1372 120 : tree _r;
1373 120 : _r = constant_boolean_node (cmp == LT_EXPR || cmp == LE_EXPR || cmp == NE_EXPR,
1374 : type);
1375 120 : if (TREE_SIDE_EFFECTS (captures[1]))
1376 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1377 120 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 390, __FILE__, __LINE__, true);
1378 120 : return _r;
1379 : }
1380 208 : next_after_fail481:;
1381 : }
1382 : else
1383 : {
1384 20028 : if (!cst_int_p
1385 136 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1386 : )
1387 : {
1388 28 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail482;
1389 28 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1390 28 : {
1391 28 : tree _r;
1392 28 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1393 28 : if (TREE_SIDE_EFFECTS (captures[1]))
1394 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1395 28 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 391, __FILE__, __LINE__, true);
1396 28 : return _r;
1397 : }
1398 208 : next_after_fail482:;
1399 : }
1400 : else
1401 : {
1402 20000 : if (cst_int_p
1403 79676 : && fold_cmp_float_cst_p (imin_val, imax_val, cmp, &icst, fmt,
1404 : icst_val, isign)
1405 : )
1406 : {
1407 19684 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail483;
1408 19684 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail483;
1409 19684 : {
1410 19684 : tree res_op0;
1411 19684 : res_op0 = captures[1];
1412 19684 : tree res_op1;
1413 19684 : res_op1 = wide_int_to_tree (itype, icst_val);
1414 19684 : tree _r;
1415 19684 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1416 19684 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
1417 19684 : return _r;
1418 : }
1419 208 : next_after_fail483:;
1420 : }
1421 : else
1422 : {
1423 632 : if (!cst_int_p
1424 748 : && fold_cmp_float_cst_p (imin_val, imax_val, icmp, &icst, fmt,
1425 : icst_val, isign)
1426 : )
1427 : {
1428 108 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail484;
1429 108 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1430 108 : {
1431 108 : tree res_op0;
1432 108 : res_op0 = captures[1];
1433 108 : tree res_op1;
1434 108 : res_op1 = wide_int_to_tree (itype, icst_val);
1435 108 : tree _r;
1436 108 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1437 108 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1438 108 : return _r;
1439 : }
1440 208 : next_after_fail484:;
1441 : }
1442 : }
1443 : }
1444 : }
1445 : }
1446 39625 : }
1447 : }
1448 : }
1449 : }
1450 : return NULL_TREE;
1451 : }
1452 :
1453 : tree
1454 111884 : generic_simplify_284 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1455 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1456 : const enum tree_code ARG_UNUSED (cmp),
1457 : const enum tree_code ARG_UNUSED (icmp))
1458 : {
1459 111884 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1460 111884 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail519;
1461 111860 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail519;
1462 111860 : {
1463 111860 : tree res_op0;
1464 111860 : res_op0 = captures[0];
1465 111860 : tree res_op1;
1466 111860 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1467 111860 : tree _r;
1468 111860 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1469 111860 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 420, __FILE__, __LINE__, true);
1470 : return _r;
1471 : }
1472 : next_after_fail519:;
1473 : return NULL_TREE;
1474 : }
1475 :
1476 : tree
1477 18 : generic_simplify_289 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1478 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1479 : const enum tree_code ARG_UNUSED (cmp),
1480 : const enum tree_code ARG_UNUSED (ncmp))
1481 : {
1482 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1483 36 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1484 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1485 36 : && types_match (captures[0], captures[2])
1486 : )
1487 : {
1488 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail524;
1489 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail524;
1490 2 : {
1491 2 : tree res_op0;
1492 2 : {
1493 2 : tree _o1[2], _r1;
1494 2 : _o1[0] = captures[0];
1495 2 : _o1[1] = captures[2];
1496 2 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1497 2 : res_op0 = _r1;
1498 : }
1499 2 : tree res_op1;
1500 2 : res_op1 = captures[1];
1501 2 : tree _r;
1502 2 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1503 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
1504 2 : return _r;
1505 : }
1506 : next_after_fail524:;
1507 : }
1508 : return NULL_TREE;
1509 : }
1510 :
1511 : tree
1512 0 : generic_simplify_295 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1513 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1514 : const enum tree_code ARG_UNUSED (inner),
1515 : const enum tree_code ARG_UNUSED (outer))
1516 : {
1517 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1518 0 : {
1519 0 : bool cst1 = integer_onep (captures[1]);
1520 0 : bool cst0 = integer_zerop (captures[1]);
1521 0 : bool innereq = inner == EQ_EXPR;
1522 0 : bool outereq = outer == EQ_EXPR;
1523 0 : if (innereq ? cst0 : cst1
1524 : )
1525 : {
1526 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail544;
1527 0 : {
1528 0 : tree _r;
1529 0 : _r = constant_boolean_node (!outereq, type);
1530 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1531 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1532 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1533 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1534 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 435, __FILE__, __LINE__, true);
1535 0 : return _r;
1536 : }
1537 0 : next_after_fail544:;
1538 : }
1539 : else
1540 : {
1541 0 : if (innereq ? cst1 : cst0
1542 : )
1543 : {
1544 0 : {
1545 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1546 0 : tree ucst1 = build_one_cst (utype);
1547 0 : if (!outereq
1548 : )
1549 : {
1550 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail545;
1551 0 : {
1552 0 : tree res_op0;
1553 0 : {
1554 0 : tree _o1[1], _r1;
1555 0 : _o1[0] = captures[0];
1556 0 : if (TREE_TYPE (_o1[0]) != utype)
1557 : {
1558 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1559 : }
1560 : else
1561 : _r1 = _o1[0];
1562 0 : res_op0 = _r1;
1563 : }
1564 0 : tree res_op1;
1565 0 : res_op1 = ucst1;
1566 0 : tree _r;
1567 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
1568 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1569 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1570 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 436, __FILE__, __LINE__, true);
1571 0 : return _r;
1572 : }
1573 0 : next_after_fail545:;
1574 : }
1575 : else
1576 : {
1577 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail546;
1578 0 : {
1579 0 : tree res_op0;
1580 0 : {
1581 0 : tree _o1[1], _r1;
1582 0 : _o1[0] = captures[0];
1583 0 : if (TREE_TYPE (_o1[0]) != utype)
1584 : {
1585 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1586 : }
1587 : else
1588 : _r1 = _o1[0];
1589 0 : res_op0 = _r1;
1590 : }
1591 0 : tree res_op1;
1592 0 : res_op1 = ucst1;
1593 0 : tree _r;
1594 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
1595 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1596 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1597 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 437, __FILE__, __LINE__, true);
1598 0 : return _r;
1599 : }
1600 0 : next_after_fail546:;
1601 : }
1602 : }
1603 : }
1604 : else
1605 : {
1606 0 : {
1607 0 : tree value = build_int_cst (TREE_TYPE (captures[0]), !innereq);
1608 0 : if (outereq
1609 : )
1610 : {
1611 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail547;
1612 0 : {
1613 0 : tree res_op0;
1614 0 : res_op0 = captures[0];
1615 0 : tree res_op1;
1616 0 : res_op1 = value;
1617 0 : tree _r;
1618 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1619 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1620 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1621 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 438, __FILE__, __LINE__, true);
1622 0 : return _r;
1623 : }
1624 0 : next_after_fail547:;
1625 : }
1626 : else
1627 : {
1628 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail548;
1629 0 : {
1630 0 : tree res_op0;
1631 0 : res_op0 = captures[0];
1632 0 : tree res_op1;
1633 0 : res_op1 = value;
1634 0 : tree _r;
1635 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
1636 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1637 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1638 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 439, __FILE__, __LINE__, true);
1639 0 : return _r;
1640 : }
1641 0 : next_after_fail548:;
1642 : }
1643 : }
1644 : }
1645 : }
1646 : }
1647 : return NULL_TREE;
1648 : }
1649 :
1650 : tree
1651 374 : generic_simplify_301 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1652 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1653 : const enum tree_code ARG_UNUSED (op),
1654 : const combined_fn ARG_UNUSED (ctz))
1655 : {
1656 374 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1657 374 : {
1658 374 : tree type0 = TREE_TYPE (captures[1]);
1659 374 : int prec = TYPE_PRECISION (type0);
1660 374 : bool ok = true;
1661 374 : if (sanitize_flags_p (SANITIZE_BUILTIN)
1662 374 : && (!cfun
1663 64 : || (cfun->curr_properties & PROP_ssa) == 0))
1664 : ok = false;
1665 620 : if (ok && prec <= MAX_FIXED_MODE_SIZE
1666 : )
1667 : {
1668 310 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) >= prec
1669 : )
1670 : {
1671 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail565;
1672 36 : {
1673 36 : tree _r;
1674 36 : _r = constant_boolean_node (op != EQ_EXPR, type);
1675 36 : if (TREE_SIDE_EFFECTS (captures[1]))
1676 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1677 36 : if (TREE_SIDE_EFFECTS (captures[2]))
1678 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1679 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 456, __FILE__, __LINE__, true);
1680 310 : return _r;
1681 : }
1682 0 : next_after_fail565:;
1683 : }
1684 : else
1685 : {
1686 274 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail566;
1687 274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail566;
1688 274 : {
1689 274 : tree res_op0;
1690 274 : {
1691 274 : tree _o1[2], _r1;
1692 274 : _o1[0] = captures[1];
1693 274 : _o1[1] = wide_int_to_tree (type0,
1694 274 : wi::mask (tree_to_uhwi (captures[2]) + 1,
1695 : false, prec));
1696 274 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1697 274 : res_op0 = _r1;
1698 : }
1699 274 : tree res_op1;
1700 274 : res_op1 = wide_int_to_tree (type0,
1701 274 : wi::shifted_mask (tree_to_uhwi (captures[2]), 1,
1702 : false, prec));
1703 274 : tree _r;
1704 274 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1705 274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 457, __FILE__, __LINE__, true);
1706 274 : return _r;
1707 : }
1708 64 : next_after_fail566:;
1709 : }
1710 : }
1711 : }
1712 64 : return NULL_TREE;
1713 : }
1714 :
1715 : tree
1716 0 : generic_simplify_313 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1717 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1718 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
1719 : {
1720 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1721 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail582;
1722 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail582;
1723 0 : {
1724 0 : tree _r;
1725 0 : _r = captures[1];
1726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 473, __FILE__, __LINE__, true);
1727 : return _r;
1728 : }
1729 : next_after_fail582:;
1730 : return NULL_TREE;
1731 : }
1732 :
1733 : tree
1734 768 : generic_simplify_320 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1735 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1736 : const enum tree_code ARG_UNUSED (div))
1737 : {
1738 768 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1739 1536 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
1740 768 : && !integer_zerop (captures[0])
1741 1035 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1742 : )
1743 : {
1744 111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail591;
1745 111 : {
1746 111 : tree _r;
1747 111 : _r = build_one_cst (type);
1748 111 : if (TREE_SIDE_EFFECTS (captures[0]))
1749 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1750 111 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 480, __FILE__, __LINE__, true);
1751 111 : return _r;
1752 : }
1753 0 : next_after_fail591:;
1754 : }
1755 : return NULL_TREE;
1756 : }
1757 :
1758 : tree
1759 192 : generic_simplify_326 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1760 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1761 : const enum tree_code ARG_UNUSED (div))
1762 : {
1763 192 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1764 192 : if (ANY_INTEGRAL_TYPE_P (type)
1765 : )
1766 : {
1767 192 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1768 : )
1769 : {
1770 164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail598;
1771 164 : {
1772 164 : tree _r;
1773 164 : _r = captures[1];
1774 164 : if (TREE_SIDE_EFFECTS (captures[2]))
1775 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1776 164 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 487, __FILE__, __LINE__, true);
1777 164 : return _r;
1778 : }
1779 0 : next_after_fail598:;
1780 : }
1781 : }
1782 : return NULL_TREE;
1783 : }
1784 :
1785 : tree
1786 216658 : generic_simplify_330 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1787 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1788 : const enum tree_code ARG_UNUSED (mod))
1789 : {
1790 216658 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1791 216658 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail602;
1792 216658 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail602;
1793 216658 : {
1794 216658 : tree _r;
1795 216658 : _r = build_zero_cst (type);
1796 216658 : if (TREE_SIDE_EFFECTS (captures[0]))
1797 47 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1798 216658 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 491, __FILE__, __LINE__, true);
1799 : return _r;
1800 : }
1801 : next_after_fail602:;
1802 : return NULL_TREE;
1803 : }
1804 :
1805 : tree
1806 6 : generic_simplify_340 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1807 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1808 : const combined_fn ARG_UNUSED (SIN),
1809 : const combined_fn ARG_UNUSED (TAN),
1810 : const combined_fn ARG_UNUSED (COS))
1811 : {
1812 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1813 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1814 : )
1815 : {
1816 6 : if (! HONOR_NANS (captures[1])
1817 6 : && ! HONOR_INFINITIES (captures[1])
1818 : )
1819 : {
1820 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail614;
1821 6 : {
1822 6 : tree res_op0;
1823 6 : res_op0 = captures[1];
1824 6 : tree _r;
1825 6 : _r = maybe_build_call_expr_loc (loc, COS, type, 1, res_op0);
1826 6 : if (!_r)
1827 0 : goto next_after_fail614;
1828 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 503, __FILE__, __LINE__, true);
1829 6 : return _r;
1830 : }
1831 : next_after_fail614:;
1832 : }
1833 : }
1834 : return NULL_TREE;
1835 : }
1836 :
1837 : tree
1838 167061 : generic_simplify_348 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1839 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1840 : const enum tree_code ARG_UNUSED (cmp))
1841 : {
1842 167061 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1843 167061 : {
1844 167061 : tree from_type = TREE_TYPE (captures[0]);
1845 167061 : tree c1_type = TREE_TYPE (captures[1]), c2_type = TREE_TYPE (captures[2]);
1846 167061 : enum tree_code code = ERROR_MARK;
1847 167061 : if (integer_zerop (captures[1])
1848 69476 : && INTEGRAL_TYPE_P (from_type)
1849 66661 : && (cmp == GE_EXPR || cmp == LT_EXPR)
1850 17757 : && TYPE_UNSIGNED (from_type)
1851 1809 : && !TYPE_UNSIGNED (c1_type)
1852 1809 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (c1_type)
1853 603 : && int_fits_type_p (captures[2], from_type)
1854 167664 : && (types_match (c2_type, from_type)
1855 16 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1856 16 : && (TYPE_UNSIGNED (from_type)
1857 0 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1858 : {
1859 603 : tree_code ncmp = cmp == GE_EXPR ? LE_EXPR : GT_EXPR;
1860 603 : widest_int c1 = wi::mask<widest_int>(TYPE_PRECISION (c1_type) - 1, 0);
1861 603 : code = minmax_from_comparison (ncmp, captures[0], c1, wi::to_widest (captures[2]));
1862 603 : }
1863 603 : if (code == ERROR_MARK
1864 167056 : && INTEGRAL_TYPE_P (from_type)
1865 164241 : && int_fits_type_p (captures[2], from_type)
1866 164240 : && (types_match (c1_type, from_type)
1867 7215 : || (TYPE_PRECISION (c1_type) > TYPE_PRECISION (from_type)
1868 0 : && (TYPE_UNSIGNED (from_type)
1869 0 : || TYPE_SIGN (c1_type) == TYPE_SIGN (from_type))))
1870 157628 : && (types_match (c2_type, from_type)
1871 62546 : || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type)
1872 19379 : && (TYPE_UNSIGNED (from_type)
1873 670 : || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type)))))
1874 : {
1875 113269 : if (cmp != EQ_EXPR)
1876 113257 : code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[2]);
1877 12 : else if (int_fits_type_p (captures[1], from_type))
1878 : code = EQ_EXPR;
1879 : }
1880 167049 : if (code == MAX_EXPR
1881 : )
1882 : {
1883 19751 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail622;
1884 19751 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail622;
1885 19751 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail622;
1886 19751 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail622;
1887 19751 : {
1888 19751 : tree res_op0;
1889 19751 : {
1890 19751 : tree _o1[2], _r1;
1891 19751 : _o1[0] = captures[0];
1892 19751 : {
1893 19751 : tree _o2[1], _r2;
1894 19751 : _o2[0] = captures[2];
1895 19751 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1896 : {
1897 315 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1898 : }
1899 : else
1900 : _r2 = _o2[0];
1901 19751 : _o1[1] = _r2;
1902 : }
1903 19751 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1904 19751 : res_op0 = _r1;
1905 : }
1906 19751 : tree _r;
1907 19751 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1908 19751 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 511, __FILE__, __LINE__, true);
1909 19751 : return _r;
1910 : }
1911 : next_after_fail622:;
1912 : }
1913 : else
1914 : {
1915 147310 : if (code == MIN_EXPR
1916 : )
1917 : {
1918 258 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail623;
1919 258 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail623;
1920 258 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail623;
1921 258 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail623;
1922 258 : {
1923 258 : tree res_op0;
1924 258 : {
1925 258 : tree _o1[2], _r1;
1926 258 : _o1[0] = captures[0];
1927 258 : {
1928 258 : tree _o2[1], _r2;
1929 258 : _o2[0] = captures[2];
1930 258 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
1931 : {
1932 100 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
1933 : }
1934 : else
1935 : _r2 = _o2[0];
1936 258 : _o1[1] = _r2;
1937 : }
1938 258 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1939 258 : res_op0 = _r1;
1940 : }
1941 258 : tree _r;
1942 258 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1943 258 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 512, __FILE__, __LINE__, true);
1944 258 : return _r;
1945 : }
1946 : next_after_fail623:;
1947 : }
1948 : else
1949 : {
1950 147052 : if (code == EQ_EXPR
1951 : )
1952 : {
1953 12 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail624;
1954 12 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail624;
1955 12 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail624;
1956 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail624;
1957 12 : {
1958 12 : if (! tree_invariant_p (captures[1])) goto next_after_fail624;
1959 12 : tree res_op0;
1960 12 : {
1961 12 : tree _o1[3], _r1;
1962 12 : {
1963 12 : tree _o2[2], _r2;
1964 12 : _o2[0] = captures[0];
1965 12 : {
1966 12 : tree _o3[1], _r3;
1967 12 : _o3[0] = unshare_expr (captures[1]);
1968 12 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
1969 : {
1970 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
1971 : }
1972 : else
1973 : _r3 = _o3[0];
1974 12 : _o2[1] = _r3;
1975 : }
1976 12 : _r2 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o2[0], _o2[1]);
1977 12 : _o1[0] = _r2;
1978 : }
1979 12 : {
1980 12 : tree _o2[1], _r2;
1981 12 : _o2[0] = captures[1];
1982 12 : if (TREE_TYPE (_o2[0]) != from_type)
1983 : {
1984 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
1985 : }
1986 : else
1987 : _r2 = _o2[0];
1988 12 : _o1[1] = _r2;
1989 : }
1990 12 : {
1991 12 : tree _o2[1], _r2;
1992 12 : _o2[0] = captures[2];
1993 12 : if (TREE_TYPE (_o2[0]) != from_type)
1994 : {
1995 7 : _r2 = fold_build1_loc (loc, NOP_EXPR, from_type, _o2[0]);
1996 : }
1997 : else
1998 : _r2 = _o2[0];
1999 12 : _o1[2] = _r2;
2000 : }
2001 12 : _r1 = fold_build3_loc (loc, COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
2002 12 : res_op0 = _r1;
2003 : }
2004 12 : tree _r;
2005 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2006 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 513, __FILE__, __LINE__, true);
2007 12 : return _r;
2008 : }
2009 : next_after_fail624:;
2010 : }
2011 : }
2012 : }
2013 : }
2014 : return NULL_TREE;
2015 : }
2016 :
2017 : tree
2018 0 : generic_simplify_389 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2019 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2020 : const enum tree_code ARG_UNUSED (legt))
2021 : {
2022 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2023 0 : if (!HONOR_NANS (captures[0])
2024 : )
2025 : {
2026 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail675;
2027 0 : {
2028 0 : tree _r;
2029 0 : _r = constant_boolean_node (legt == LE_EXPR, type);
2030 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2031 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2032 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2033 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2034 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 562, __FILE__, __LINE__, true);
2035 0 : return _r;
2036 : }
2037 0 : next_after_fail675:;
2038 : }
2039 : return NULL_TREE;
2040 : }
2041 :
2042 : tree
2043 599 : generic_simplify_397 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2044 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2045 : const enum tree_code ARG_UNUSED (cmp))
2046 : {
2047 599 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2048 599 : if (wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2049 : )
2050 : {
2051 599 : {
2052 599 : wi::overflow_type ovf;
2053 599 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
2054 1198 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
2055 599 : if (ovf
2056 : )
2057 : {
2058 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail683;
2059 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail683;
2060 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail683;
2061 0 : {
2062 0 : tree _r;
2063 0 : _r = constant_boolean_node (wi::lt_p (wi::to_wide (captures[2]), 0,
2064 0 : TYPE_SIGN (TREE_TYPE (captures[2])))
2065 0 : != (cmp == LT_EXPR || cmp == LE_EXPR), type);
2066 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2067 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2068 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 570, __FILE__, __LINE__, true);
2069 0 : return _r;
2070 : }
2071 0 : next_after_fail683:;
2072 : }
2073 : else
2074 : {
2075 599 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail684;
2076 599 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail684;
2077 599 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail684;
2078 599 : {
2079 599 : tree res_op0;
2080 599 : res_op0 = captures[0];
2081 599 : tree res_op1;
2082 599 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
2083 599 : tree _r;
2084 599 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2085 599 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 571, __FILE__, __LINE__, true);
2086 599 : return _r;
2087 : }
2088 0 : next_after_fail684:;
2089 : }
2090 599 : }
2091 : }
2092 : return NULL_TREE;
2093 : }
2094 :
2095 : tree
2096 755991 : generic_simplify_411 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2097 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2098 : const enum tree_code ARG_UNUSED (cmp),
2099 : const enum tree_code ARG_UNUSED (icmp))
2100 : {
2101 755991 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2102 1509680 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2103 755991 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2104 335763 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
2105 1847745 : && (wi::to_wide (captures[2])
2106 1763280 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
2107 : )
2108 : {
2109 4543 : {
2110 4543 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
2111 4543 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail736;
2112 4543 : {
2113 4543 : tree res_op0;
2114 4543 : {
2115 4543 : tree _o1[1], _r1;
2116 4543 : _o1[0] = captures[0];
2117 4543 : if (TREE_TYPE (_o1[0]) != stype)
2118 : {
2119 4543 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2120 : }
2121 : else
2122 : _r1 = _o1[0];
2123 4543 : res_op0 = _r1;
2124 : }
2125 4543 : tree res_op1;
2126 4543 : res_op1 = build_int_cst (stype, 0);
2127 4543 : tree _r;
2128 4543 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2129 4543 : if (TREE_SIDE_EFFECTS (captures[1]))
2130 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2131 4543 : if (TREE_SIDE_EFFECTS (captures[2]))
2132 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2133 4543 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 606, __FILE__, __LINE__, true);
2134 4543 : return _r;
2135 : }
2136 0 : next_after_fail736:;
2137 : }
2138 : }
2139 : return NULL_TREE;
2140 : }
2141 :
2142 : tree
2143 0 : generic_simplify_417 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2144 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2145 : const enum tree_code ARG_UNUSED (cmp),
2146 : const enum tree_code ARG_UNUSED (out))
2147 : {
2148 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2149 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2150 : )
2151 : {
2152 0 : {
2153 0 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2154 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail742;
2155 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail742;
2156 0 : {
2157 0 : tree res_op0;
2158 0 : {
2159 0 : tree _o1[1], _r1;
2160 0 : {
2161 0 : tree _o2[2], _r2;
2162 0 : _o2[0] = captures[2];
2163 0 : _o2[1] = captures[1];
2164 0 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2165 0 : if (!_r2)
2166 0 : goto next_after_fail742;
2167 0 : _o1[0] = _r2;
2168 : }
2169 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2170 0 : res_op0 = _r1;
2171 : }
2172 0 : tree res_op1;
2173 0 : res_op1 = build_zero_cst (t);
2174 0 : tree _r;
2175 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2176 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 594, __FILE__, __LINE__, true);
2177 0 : return _r;
2178 : }
2179 : next_after_fail742:;
2180 : }
2181 : }
2182 : return NULL_TREE;
2183 : }
2184 :
2185 : tree
2186 390 : generic_simplify_423 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2187 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2188 : const enum tree_code ARG_UNUSED (shift),
2189 : const enum tree_code ARG_UNUSED (mod))
2190 : {
2191 390 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2192 390 : if (integer_pow2p (captures[3]) && tree_int_cst_sgn (captures[3]) > 0
2193 : )
2194 : {
2195 312 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail752;
2196 312 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail752;
2197 312 : {
2198 312 : tree res_op0;
2199 312 : res_op0 = captures[0];
2200 312 : tree res_op1;
2201 312 : {
2202 312 : tree _o1[2], _r1;
2203 312 : _o1[0] = captures[1];
2204 312 : {
2205 312 : tree _o2[2], _r2;
2206 312 : _o2[0] = captures[2];
2207 312 : _o2[1] = build_int_cst (TREE_TYPE (captures[2]),
2208 : 1);
2209 312 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2210 312 : _o1[1] = _r2;
2211 : }
2212 312 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2213 312 : res_op1 = _r1;
2214 : }
2215 312 : tree _r;
2216 312 : _r = fold_build2_loc (loc, shift, type, res_op0, res_op1);
2217 312 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 618, __FILE__, __LINE__, true);
2218 312 : return _r;
2219 : }
2220 : next_after_fail752:;
2221 : }
2222 : return NULL_TREE;
2223 : }
2224 :
2225 : tree
2226 67 : generic_simplify_433 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2227 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2228 : {
2229 67 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2230 67 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2231 : )
2232 : {
2233 67 : if (TYPE_UNSIGNED (type)
2234 : )
2235 : {
2236 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail765;
2237 2 : {
2238 2 : tree res_op0;
2239 2 : {
2240 2 : tree _o1[1], _r1;
2241 2 : _o1[0] = captures[0];
2242 2 : if (TREE_TYPE (_o1[0]) != type)
2243 : {
2244 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2245 : }
2246 : else
2247 : _r1 = _o1[0];
2248 2 : res_op0 = _r1;
2249 : }
2250 2 : tree res_op1;
2251 2 : {
2252 2 : tree _o1[2], _r1;
2253 2 : _o1[0] = build_minus_one_cst (type);
2254 2 : _o1[1] = captures[1];
2255 2 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2256 2 : res_op1 = _r1;
2257 : }
2258 2 : tree _r;
2259 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2260 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 629, __FILE__, __LINE__, true);
2261 2 : return _r;
2262 : }
2263 0 : next_after_fail765:;
2264 : }
2265 : else
2266 : {
2267 65 : if (INTEGRAL_TYPE_P (type)
2268 : )
2269 : {
2270 65 : {
2271 65 : int width = element_precision (type) - tree_to_uhwi (captures[1]);
2272 65 : tree stype = NULL_TREE;
2273 130 : if (width <= MAX_FIXED_MODE_SIZE)
2274 65 : stype = build_nonstandard_integer_type (width, 0);
2275 65 : if (stype && (width == 1 || type_has_mode_precision_p (stype))
2276 : )
2277 : {
2278 25 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail766;
2279 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail766;
2280 25 : {
2281 25 : tree res_op0;
2282 25 : {
2283 25 : tree _o1[1], _r1;
2284 25 : _o1[0] = captures[0];
2285 25 : if (TREE_TYPE (_o1[0]) != stype)
2286 : {
2287 25 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2288 : }
2289 : else
2290 : _r1 = _o1[0];
2291 25 : res_op0 = _r1;
2292 : }
2293 25 : tree _r;
2294 25 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2295 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 630, __FILE__, __LINE__, true);
2296 25 : return _r;
2297 : }
2298 : next_after_fail766:;
2299 : }
2300 : }
2301 : }
2302 : }
2303 : }
2304 : return NULL_TREE;
2305 : }
2306 :
2307 : tree
2308 988734 : generic_simplify_440 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2309 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2310 : const enum tree_code ARG_UNUSED (op))
2311 : {
2312 988734 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2313 988734 : if (INTEGRAL_TYPE_P (type)
2314 880614 : && op != MULT_EXPR
2315 880614 : && op != RDIV_EXPR
2316 529593 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2317 468690 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2318 468690 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2319 420096 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2320 419813 : && type_has_mode_precision_p (type)
2321 419791 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2322 24275 : && types_match (captures[2], type)
2323 991435 : && (types_match (captures[2], captures[4])
2324 2632 : || poly_int_tree_p (captures[3]))
2325 : )
2326 : {
2327 69 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2328 : )
2329 : {
2330 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail778;
2331 15 : {
2332 15 : tree res_op0;
2333 15 : res_op0 = captures[2];
2334 15 : tree res_op1;
2335 15 : {
2336 15 : tree _o1[1], _r1;
2337 15 : _o1[0] = captures[4];
2338 15 : if (TREE_TYPE (_o1[0]) != type)
2339 : {
2340 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2341 : }
2342 : else
2343 : _r1 = _o1[0];
2344 15 : res_op1 = _r1;
2345 : }
2346 15 : tree _r;
2347 15 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2348 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 642, __FILE__, __LINE__, true);
2349 15 : return _r;
2350 : }
2351 0 : next_after_fail778:;
2352 : }
2353 : else
2354 : {
2355 54 : {
2356 54 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2357 54 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail779;
2358 54 : {
2359 54 : tree res_op0;
2360 54 : {
2361 54 : tree _o1[2], _r1;
2362 54 : {
2363 54 : tree _o2[1], _r2;
2364 54 : _o2[0] = captures[2];
2365 54 : if (TREE_TYPE (_o2[0]) != utype)
2366 : {
2367 54 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2368 : }
2369 : else
2370 : _r2 = _o2[0];
2371 54 : _o1[0] = _r2;
2372 : }
2373 54 : {
2374 54 : tree _o2[1], _r2;
2375 54 : _o2[0] = captures[4];
2376 54 : if (TREE_TYPE (_o2[0]) != utype)
2377 : {
2378 54 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2379 : }
2380 : else
2381 : _r2 = _o2[0];
2382 54 : _o1[1] = _r2;
2383 : }
2384 54 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2385 54 : res_op0 = _r1;
2386 : }
2387 54 : tree _r;
2388 54 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2389 54 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 643, __FILE__, __LINE__, true);
2390 54 : return _r;
2391 : }
2392 0 : next_after_fail779:;
2393 : }
2394 : }
2395 : }
2396 : else
2397 : {
2398 976096 : if (FLOAT_TYPE_P (type)
2399 1001234 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2400 12569 : == DECIMAL_FLOAT_TYPE_P (type)
2401 : )
2402 : {
2403 12546 : {
2404 12546 : tree arg0 = strip_float_extensions (captures[2]);
2405 12546 : tree arg1 = strip_float_extensions (captures[4]);
2406 12546 : tree itype = TREE_TYPE (captures[0]);
2407 12546 : tree ty1 = TREE_TYPE (arg0);
2408 12546 : tree ty2 = TREE_TYPE (arg1);
2409 12546 : enum tree_code code = TREE_CODE (itype);
2410 0 : if (FLOAT_TYPE_P (ty1)
2411 12546 : && FLOAT_TYPE_P (ty2)
2412 : )
2413 : {
2414 12546 : {
2415 12546 : tree newtype = type;
2416 12546 : if (TYPE_MODE (ty1) == SDmode
2417 12537 : || TYPE_MODE (ty2) == SDmode
2418 25083 : || TYPE_MODE (type) == SDmode)
2419 9 : newtype = dfloat32_type_node;
2420 12546 : if (TYPE_MODE (ty1) == DDmode
2421 12540 : || TYPE_MODE (ty2) == DDmode
2422 25086 : || TYPE_MODE (type) == DDmode)
2423 6 : newtype = dfloat64_type_node;
2424 12546 : if (TYPE_MODE (ty1) == TDmode
2425 12546 : || TYPE_MODE (ty2) == TDmode
2426 25092 : || TYPE_MODE (type) == TDmode)
2427 15 : newtype = dfloat128_type_node;
2428 12546 : if ((newtype == dfloat32_type_node
2429 12546 : || newtype == dfloat64_type_node
2430 12546 : || newtype == dfloat128_type_node)
2431 15 : && newtype == type
2432 12552 : && types_match (newtype, type)
2433 : )
2434 : {
2435 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail780;
2436 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail780;
2437 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail780;
2438 0 : {
2439 0 : tree res_op0;
2440 0 : {
2441 0 : tree _o1[1], _r1;
2442 0 : _o1[0] = captures[2];
2443 0 : if (TREE_TYPE (_o1[0]) != newtype)
2444 : {
2445 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2446 : }
2447 : else
2448 : _r1 = _o1[0];
2449 0 : res_op0 = _r1;
2450 : }
2451 0 : tree res_op1;
2452 0 : {
2453 0 : tree _o1[1], _r1;
2454 0 : _o1[0] = captures[4];
2455 0 : if (TREE_TYPE (_o1[0]) != newtype)
2456 : {
2457 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2458 : }
2459 : else
2460 : _r1 = _o1[0];
2461 0 : res_op1 = _r1;
2462 : }
2463 0 : tree _r;
2464 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2465 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 644, __FILE__, __LINE__, true);
2466 0 : return _r;
2467 : }
2468 : next_after_fail780:;
2469 : }
2470 : else
2471 : {
2472 12540 : {
2473 12540 : if (element_precision (ty1) > element_precision (newtype))
2474 4 : newtype = ty1;
2475 12540 : if (element_precision (ty2) > element_precision (newtype))
2476 10 : newtype = ty2;
2477 12540 : if (element_precision (newtype) < element_precision (itype)
2478 12268 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2479 0 : || target_supports_op_p (newtype, op, optab_default))
2480 12268 : && (flag_unsafe_math_optimizations
2481 12251 : || (element_precision (newtype) == element_precision (type)
2482 12247 : && real_can_shorten_arithmetic (element_mode (itype),
2483 : element_mode (type))
2484 4448 : && !excess_precision_type (newtype)))
2485 12565 : && !types_match (itype, newtype)
2486 : )
2487 : {
2488 25 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail781;
2489 25 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail781;
2490 17 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail781;
2491 17 : {
2492 17 : tree res_op0;
2493 17 : {
2494 17 : tree _o1[2], _r1;
2495 17 : {
2496 17 : tree _o2[1], _r2;
2497 17 : _o2[0] = captures[2];
2498 17 : if (TREE_TYPE (_o2[0]) != newtype)
2499 : {
2500 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2501 : }
2502 : else
2503 : _r2 = _o2[0];
2504 17 : _o1[0] = _r2;
2505 : }
2506 17 : {
2507 17 : tree _o2[1], _r2;
2508 17 : _o2[0] = captures[4];
2509 17 : if (TREE_TYPE (_o2[0]) != newtype)
2510 : {
2511 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2512 : }
2513 : else
2514 : _r2 = _o2[0];
2515 17 : _o1[1] = _r2;
2516 : }
2517 17 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2518 17 : res_op0 = _r1;
2519 : }
2520 17 : tree _r;
2521 17 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2522 17 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 645, __FILE__, __LINE__, true);
2523 17 : return _r;
2524 : }
2525 : next_after_fail781:;
2526 : }
2527 : }
2528 : }
2529 : }
2530 : }
2531 : }
2532 : }
2533 : }
2534 : return NULL_TREE;
2535 : }
2536 :
2537 : tree
2538 104 : generic_simplify_471 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2539 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2540 : {
2541 104 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2542 104 : {
2543 104 : bool wascmp;
2544 104 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
2545 104 : && (!wascmp || element_precision (type) == 1)
2546 : )
2547 : {
2548 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail821;
2549 0 : {
2550 0 : tree res_op0;
2551 0 : res_op0 = captures[0];
2552 0 : tree res_op1;
2553 0 : res_op1 = captures[1];
2554 0 : tree _r;
2555 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2556 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2557 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2558 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 672, __FILE__, __LINE__, true);
2559 0 : return _r;
2560 : }
2561 0 : next_after_fail821:;
2562 : }
2563 : }
2564 104 : return NULL_TREE;
2565 : }
2566 :
2567 : tree
2568 5711304 : generic_simplify_477 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2569 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2570 : {
2571 5711304 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2572 11234424 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
2573 5711324 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2574 : )
2575 : {
2576 188204 : {
2577 188204 : unsigned int align;
2578 188204 : unsigned HOST_WIDE_INT bitpos;
2579 188204 : get_pointer_alignment_1 (captures[0], &align, &bitpos);
2580 188204 : if (wi::ltu_p (wi::to_wide (captures[1]), align / BITS_PER_UNIT)
2581 : )
2582 : {
2583 6886 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail827;
2584 6886 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail827;
2585 6886 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail827;
2586 6886 : {
2587 6886 : tree _r;
2588 13772 : _r = wide_int_to_tree (type, (wi::to_wide (captures[1])
2589 13772 : & (bitpos / BITS_PER_UNIT)));
2590 6886 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2591 6886 : return _r;
2592 : }
2593 181318 : next_after_fail827:;
2594 : }
2595 : }
2596 : }
2597 : return NULL_TREE;
2598 : }
2599 :
2600 : tree
2601 0 : generic_simplify_487 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2602 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2603 : const enum tree_code ARG_UNUSED (code2),
2604 : const enum tree_code ARG_UNUSED (code1))
2605 : {
2606 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2607 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2608 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2609 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2610 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))
2611 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[2])))
2612 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2613 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2614 0 : && bitwise_equal_p (captures[2], captures[5]))
2615 : )
2616 : {
2617 0 : {
2618 0 : bool one_before = false;
2619 0 : bool one_after = false;
2620 0 : int cmp = 0;
2621 0 : bool allbits = true;
2622 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
2623 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2624 : {
2625 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2626 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2627 0 : auto t2 = wi::to_wide (captures[5]);
2628 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2629 0 : if (cmp < 0
2630 0 : && t1 == t2 - 1)
2631 : one_before = true;
2632 0 : if (cmp > 0
2633 0 : && t1 == t2 + 1)
2634 : one_after = true;
2635 : }
2636 0 : bool val;
2637 0 : switch (code2)
2638 : {
2639 0 : case EQ_EXPR: val = (cmp == 0); break;
2640 0 : case NE_EXPR: val = (cmp != 0); break;
2641 0 : case LT_EXPR: val = (cmp < 0); break;
2642 0 : case GT_EXPR: val = (cmp > 0); break;
2643 0 : case LE_EXPR: val = (cmp <= 0); break;
2644 0 : case GE_EXPR: val = (cmp >= 0); break;
2645 0 : default: gcc_unreachable ();
2646 : }
2647 0 : if (code1 == EQ_EXPR && val
2648 : )
2649 : {
2650 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail859;
2651 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail859;
2652 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail859;
2653 0 : {
2654 0 : tree _r;
2655 0 : _r = captures[0];
2656 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2657 0 : return _r;
2658 : }
2659 : next_after_fail859:;
2660 : }
2661 : else
2662 : {
2663 0 : if (code1 == EQ_EXPR && !val
2664 : )
2665 : {
2666 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail860;
2667 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail860;
2668 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail860;
2669 0 : {
2670 0 : tree _r;
2671 0 : _r = constant_boolean_node (false, type);
2672 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2673 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2674 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2675 0 : return _r;
2676 : }
2677 : next_after_fail860:;
2678 : }
2679 : else
2680 : {
2681 0 : if (code1 == NE_EXPR && !val && allbits
2682 : )
2683 : {
2684 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail861;
2685 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail861;
2686 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail861;
2687 0 : {
2688 0 : tree _r;
2689 0 : _r = captures[3];
2690 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 684, __FILE__, __LINE__, true);
2691 0 : return _r;
2692 : }
2693 : next_after_fail861:;
2694 : }
2695 : else
2696 : {
2697 0 : if ((code1 == NE_EXPR
2698 0 : && code2 == GE_EXPR
2699 0 : && cmp == 0
2700 0 : && allbits)
2701 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2702 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2703 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2704 : )
2705 : {
2706 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail862;
2707 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail862;
2708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail862;
2709 0 : {
2710 0 : tree res_op0;
2711 0 : res_op0 = captures[4];
2712 0 : tree res_op1;
2713 0 : {
2714 0 : tree _o1[1], _r1;
2715 0 : _o1[0] = captures[2];
2716 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2717 : {
2718 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2719 : }
2720 : else
2721 : _r1 = _o1[0];
2722 0 : res_op1 = _r1;
2723 : }
2724 0 : tree _r;
2725 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 685, __FILE__, __LINE__, true);
2727 0 : return _r;
2728 : }
2729 : next_after_fail862:;
2730 : }
2731 : else
2732 : {
2733 0 : if ((code1 == NE_EXPR
2734 0 : && code2 == LE_EXPR
2735 0 : && cmp == 0
2736 0 : && allbits)
2737 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2738 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2739 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2740 : )
2741 : {
2742 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail863;
2743 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail863;
2744 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail863;
2745 0 : {
2746 0 : tree res_op0;
2747 0 : res_op0 = captures[4];
2748 0 : tree res_op1;
2749 0 : {
2750 0 : tree _o1[1], _r1;
2751 0 : _o1[0] = captures[2];
2752 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2753 : {
2754 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2755 : }
2756 : else
2757 : _r1 = _o1[0];
2758 0 : res_op1 = _r1;
2759 : }
2760 0 : tree _r;
2761 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2762 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
2763 0 : return _r;
2764 : }
2765 : next_after_fail863:;
2766 : }
2767 : else
2768 : {
2769 0 : if ((code1 == NE_EXPR
2770 0 : && code2 == GT_EXPR
2771 : && one_after
2772 0 : && allbits)
2773 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2774 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2775 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2776 : )
2777 : {
2778 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail864;
2779 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail864;
2780 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail864;
2781 0 : {
2782 0 : tree res_op0;
2783 0 : res_op0 = captures[4];
2784 0 : tree res_op1;
2785 0 : {
2786 0 : tree _o1[1], _r1;
2787 0 : _o1[0] = captures[2];
2788 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2789 : {
2790 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2791 : }
2792 : else
2793 : _r1 = _o1[0];
2794 0 : res_op1 = _r1;
2795 : }
2796 0 : tree _r;
2797 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2798 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 687, __FILE__, __LINE__, true);
2799 0 : return _r;
2800 : }
2801 : next_after_fail864:;
2802 : }
2803 : else
2804 : {
2805 0 : if ((code1 == NE_EXPR
2806 0 : && code2 == LT_EXPR
2807 : && one_before
2808 0 : && allbits)
2809 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2810 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2811 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2812 : )
2813 : {
2814 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail865;
2815 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail865;
2816 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail865;
2817 0 : {
2818 0 : tree res_op0;
2819 0 : res_op0 = captures[4];
2820 0 : tree res_op1;
2821 0 : {
2822 0 : tree _o1[1], _r1;
2823 0 : _o1[0] = captures[2];
2824 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2825 : {
2826 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2827 : }
2828 : else
2829 : _r1 = _o1[0];
2830 0 : res_op1 = _r1;
2831 : }
2832 0 : tree _r;
2833 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2834 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 688, __FILE__, __LINE__, true);
2835 0 : return _r;
2836 : }
2837 : next_after_fail865:;
2838 : }
2839 : }
2840 : }
2841 : }
2842 : }
2843 : }
2844 : }
2845 : }
2846 : }
2847 : return NULL_TREE;
2848 : }
2849 :
2850 : tree
2851 2 : generic_simplify_517 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2852 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2853 : const enum tree_code ARG_UNUSED (rotate))
2854 : {
2855 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2856 2 : if ((element_precision (TREE_TYPE (captures[2]))
2857 2 : <= element_precision (TREE_TYPE (captures[3]))
2858 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2859 2 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
2860 0 : || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))
2861 : )
2862 : {
2863 2 : {
2864 2 : tree rotate_type = TREE_TYPE (captures[2]);
2865 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail911;
2866 2 : {
2867 2 : tree res_op0;
2868 2 : {
2869 2 : tree _o1[2], _r1;
2870 2 : {
2871 2 : tree _o2[1], _r2;
2872 2 : _o2[0] = captures[3];
2873 2 : if (TREE_TYPE (_o2[0]) != rotate_type)
2874 : {
2875 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, rotate_type, _o2[0]);
2876 : }
2877 : else
2878 : _r2 = _o2[0];
2879 2 : _o1[0] = _r2;
2880 : }
2881 2 : _o1[1] = captures[4];
2882 2 : _r1 = fold_build2_loc (loc, rotate, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2883 2 : res_op0 = _r1;
2884 : }
2885 2 : tree _r;
2886 2 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2887 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 720, __FILE__, __LINE__, true);
2888 2 : return _r;
2889 : }
2890 0 : next_after_fail911:;
2891 : }
2892 : }
2893 : return NULL_TREE;
2894 : }
2895 :
2896 : tree
2897 4 : generic_simplify_530 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2898 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2899 : {
2900 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2901 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail926;
2902 4 : {
2903 4 : tree _r;
2904 4 : _r = captures[1];
2905 4 : if (TREE_SIDE_EFFECTS (captures[0]))
2906 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2907 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 735, __FILE__, __LINE__, true);
2908 : return _r;
2909 : }
2910 0 : next_after_fail926:;
2911 0 : return NULL_TREE;
2912 : }
2913 :
2914 : tree
2915 20 : generic_simplify_539 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2916 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2917 : const enum tree_code ARG_UNUSED (minmax),
2918 : const enum tree_code ARG_UNUSED (cmp))
2919 : {
2920 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2921 20 : {
2922 20 : poly_int64 off0, off1;
2923 20 : tree base0, base1;
2924 20 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2925 : off0, off1,
2926 : 1
2927 : );
2928 20 : if (equal == 1
2929 : )
2930 : {
2931 0 : if (minmax == MIN_EXPR
2932 : )
2933 : {
2934 0 : if (known_le (off0, off1)
2935 : )
2936 : {
2937 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail946;
2938 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail946;
2939 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail946;
2940 0 : {
2941 0 : tree _r;
2942 0 : _r = captures[0];
2943 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 743, __FILE__, __LINE__, true);
2944 0 : return _r;
2945 : }
2946 20 : next_after_fail946:;
2947 : }
2948 : else
2949 : {
2950 0 : if (known_gt (off0, off1)
2951 : )
2952 : {
2953 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail947;
2954 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail947;
2955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail947;
2956 0 : {
2957 0 : tree _r;
2958 0 : _r = captures[2];
2959 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 744, __FILE__, __LINE__, true);
2960 0 : return _r;
2961 : }
2962 20 : next_after_fail947:;
2963 : }
2964 : }
2965 : }
2966 : else
2967 : {
2968 0 : if (known_ge (off0, off1)
2969 : )
2970 : {
2971 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail948;
2972 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail948;
2973 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail948;
2974 0 : {
2975 0 : tree _r;
2976 0 : _r = captures[0];
2977 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 745, __FILE__, __LINE__, true);
2978 0 : return _r;
2979 : }
2980 20 : next_after_fail948:;
2981 : }
2982 : else
2983 : {
2984 0 : if (known_lt (off0, off1)
2985 : )
2986 : {
2987 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail949;
2988 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail949;
2989 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail949;
2990 0 : {
2991 0 : tree _r;
2992 0 : _r = captures[2];
2993 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 746, __FILE__, __LINE__, true);
2994 0 : return _r;
2995 : }
2996 20 : next_after_fail949:;
2997 : }
2998 : }
2999 : }
3000 : }
3001 : }
3002 20 : return NULL_TREE;
3003 : }
3004 :
3005 : tree
3006 0 : generic_simplify_559 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3007 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3008 : const combined_fn ARG_UNUSED (cond_len_op))
3009 : {
3010 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3011 0 : {
3012 0 : tree op_type = TREE_TYPE (captures[3]);
3013 0 : if (element_precision (type) == element_precision (op_type)
3014 : )
3015 : {
3016 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail969;
3017 0 : {
3018 0 : tree res_op0;
3019 0 : {
3020 0 : tree _o1[6], _r1;
3021 0 : _o1[0] = captures[0];
3022 0 : _o1[1] = captures[1];
3023 0 : _o1[2] = captures[2];
3024 0 : {
3025 0 : tree _o2[1], _r2;
3026 0 : _o2[0] = captures[6];
3027 0 : if (TREE_TYPE (_o2[0]) != op_type)
3028 : {
3029 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3030 : }
3031 : else
3032 : _r2 = _o2[0];
3033 0 : _o1[3] = _r2;
3034 : }
3035 0 : _o1[4] = captures[4];
3036 0 : _o1[5] = captures[5];
3037 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]);
3038 0 : if (!_r1)
3039 0 : goto next_after_fail969;
3040 0 : res_op0 = _r1;
3041 : }
3042 0 : tree _r;
3043 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3044 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3045 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3046 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 761, __FILE__, __LINE__, true);
3047 0 : return _r;
3048 : }
3049 : next_after_fail969:;
3050 : }
3051 : }
3052 : return NULL_TREE;
3053 : }
3054 :
3055 : tree
3056 1 : generic_simplify_568 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3057 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
3058 : {
3059 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3060 1 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), type)
3061 : )
3062 : {
3063 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail981;
3064 1 : {
3065 1 : tree res_op0;
3066 1 : {
3067 1 : tree _o1[1], _r1;
3068 1 : _o1[0] = captures[0];
3069 1 : if (TREE_TYPE (_o1[0]) != type)
3070 : {
3071 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3072 : }
3073 : else
3074 : _r1 = _o1[0];
3075 1 : res_op0 = _r1;
3076 : }
3077 1 : tree _r;
3078 1 : _r = non_lvalue_loc (loc, res_op0);
3079 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 773, __FILE__, __LINE__, true);
3080 1 : return _r;
3081 : }
3082 0 : next_after_fail981:;
3083 : }
3084 : return NULL_TREE;
3085 : }
3086 :
3087 : tree
3088 0 : generic_simplify_578 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3089 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3090 : const combined_fn ARG_UNUSED (logs))
3091 : {
3092 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3093 0 : if (flag_unsafe_math_optimizations
3094 : )
3095 : {
3096 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
3097 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
3098 0 : && ! flag_trapping_math
3099 0 : && ! flag_errno_math
3100 : )
3101 : {
3102 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail991;
3103 0 : {
3104 0 : tree res_op0;
3105 0 : {
3106 0 : tree _o1[1], _r1;
3107 0 : _o1[0] = captures[1];
3108 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3109 0 : if (!_r1)
3110 0 : goto next_after_fail991;
3111 0 : if (EXPR_P (_r1))
3112 0 : goto next_after_fail991;
3113 0 : res_op0 = _r1;
3114 : }
3115 0 : tree res_op1;
3116 0 : {
3117 0 : tree _o1[1], _r1;
3118 0 : _o1[0] = captures[2];
3119 0 : _r1 = maybe_build_call_expr_loc (loc, logs, TREE_TYPE (_o1[0]), 1, _o1[0]);
3120 0 : if (!_r1)
3121 0 : goto next_after_fail991;
3122 0 : res_op1 = _r1;
3123 : }
3124 0 : tree _r;
3125 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
3126 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 783, __FILE__, __LINE__, true);
3127 0 : return _r;
3128 : }
3129 : next_after_fail991:;
3130 : }
3131 : }
3132 : return NULL_TREE;
3133 : }
3134 :
3135 : tree
3136 0 : generic_simplify_591 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3137 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3138 : const combined_fn ARG_UNUSED (froms),
3139 : const combined_fn ARG_UNUSED (tos))
3140 : {
3141 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3142 0 : if (optimize && canonicalize_math_p ()
3143 : )
3144 : {
3145 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1004;
3146 0 : {
3147 0 : tree res_op0;
3148 0 : res_op0 = captures[0];
3149 0 : tree _r;
3150 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3151 0 : if (!_r)
3152 0 : goto next_after_fail1004;
3153 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 796, __FILE__, __LINE__, true);
3154 0 : return _r;
3155 : }
3156 : next_after_fail1004:;
3157 : }
3158 : return NULL_TREE;
3159 : }
3160 :
3161 : tree
3162 0 : generic_simplify_599 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3163 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3164 : const combined_fn ARG_UNUSED (fmas))
3165 : {
3166 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3167 0 : if (canonicalize_math_after_vectorization_p ()
3168 : )
3169 : {
3170 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1012;
3171 : {
3172 : tree res_op0;
3173 : res_op0 = captures[0];
3174 : tree res_op1;
3175 : res_op1 = captures[1];
3176 : tree res_op2;
3177 : res_op2 = captures[2];
3178 : tree _r;
3179 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3180 : if (!_r)
3181 : goto next_after_fail1012;
3182 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 804, __FILE__, __LINE__, true);
3183 : return _r;
3184 : }
3185 0 : next_after_fail1012:;
3186 : }
3187 0 : return NULL_TREE;
3188 : }
3189 :
3190 : tree
3191 0 : generic_simplify_609 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3193 : const combined_fn ARG_UNUSED (fmas))
3194 : {
3195 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3196 0 : if (canonicalize_math_after_vectorization_p ()
3197 : )
3198 : {
3199 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1022;
3200 : {
3201 : tree res_op0;
3202 : res_op0 = captures[0];
3203 : tree res_op1;
3204 : res_op1 = captures[1];
3205 : tree res_op2;
3206 : res_op2 = captures[2];
3207 : tree res_op3;
3208 : res_op3 = captures[3];
3209 : tree res_op4;
3210 : res_op4 = captures[4];
3211 : tree _r;
3212 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3213 : if (!_r)
3214 : goto next_after_fail1022;
3215 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
3216 : return _r;
3217 : }
3218 0 : next_after_fail1022:;
3219 : }
3220 0 : return NULL_TREE;
3221 : }
3222 :
3223 : tree
3224 0 : generic_simplify_618 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3225 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3226 : const combined_fn ARG_UNUSED (ctz))
3227 : {
3228 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3229 0 : {
3230 0 : tree t = TREE_TYPE (captures[0]);
3231 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1031;
3232 0 : {
3233 0 : tree res_op0;
3234 0 : {
3235 0 : tree _o1[1], _r1;
3236 0 : _o1[0] = captures[1];
3237 0 : if (TREE_TYPE (_o1[0]) != t)
3238 : {
3239 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3240 : }
3241 : else
3242 : _r1 = _o1[0];
3243 0 : res_op0 = _r1;
3244 : }
3245 0 : tree _r;
3246 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3247 0 : if (!_r)
3248 0 : goto next_after_fail1031;
3249 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 822, __FILE__, __LINE__, true);
3250 : return _r;
3251 : }
3252 : next_after_fail1031:;
3253 : }
3254 : return NULL_TREE;
3255 : }
3256 :
3257 : tree
3258 0 : generic_simplify_628 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3259 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3260 : const combined_fn ARG_UNUSED (bswap),
3261 : const combined_fn ARG_UNUSED (parity))
3262 : {
3263 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3264 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3265 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3266 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3267 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3268 : )
3269 : {
3270 0 : {
3271 0 : tree type0 = TREE_TYPE (captures[0]);
3272 0 : tree type1 = TREE_TYPE (captures[1]);
3273 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1043;
3274 0 : {
3275 0 : tree res_op0;
3276 0 : {
3277 0 : tree _o1[1], _r1;
3278 0 : {
3279 0 : tree _o2[1], _r2;
3280 0 : _o2[0] = captures[2];
3281 0 : if (TREE_TYPE (_o2[0]) != type1)
3282 : {
3283 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3284 : }
3285 : else
3286 : _r2 = _o2[0];
3287 0 : _o1[0] = _r2;
3288 : }
3289 0 : if (TREE_TYPE (_o1[0]) != type0)
3290 : {
3291 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3292 : }
3293 : else
3294 : _r1 = _o1[0];
3295 0 : res_op0 = _r1;
3296 : }
3297 0 : tree _r;
3298 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3299 0 : if (!_r)
3300 0 : goto next_after_fail1043;
3301 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
3302 0 : return _r;
3303 : }
3304 : next_after_fail1043:;
3305 : }
3306 : }
3307 : return NULL_TREE;
3308 : }
3309 :
3310 : tree
3311 872068504 : generic_simplify_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3312 : {
3313 872068504 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3314 872068504 : switch (TREE_CODE (_p0))
3315 : {
3316 772456 : case NEGATE_EXPR:
3317 772456 : {
3318 772456 : tree _q20 = TREE_OPERAND (_p0, 0);
3319 772456 : switch (TREE_CODE (_q20))
3320 : {
3321 447652 : CASE_CONVERT:
3322 447652 : {
3323 447652 : tree _q30 = TREE_OPERAND (_q20, 0);
3324 447652 : {
3325 447652 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3326 447652 : if (INTEGRAL_TYPE_P (type)
3327 447351 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
3328 443372 : && (TYPE_PRECISION (type) > TYPE_PRECISION (TREE_TYPE (captures[2]))
3329 442110 : || TYPE_UNSIGNED (type))
3330 465298 : && TREE_CODE (type) != BOOLEAN_TYPE
3331 : )
3332 : {
3333 17646 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1057;
3334 17646 : {
3335 17646 : tree res_op0;
3336 17646 : {
3337 17646 : tree _o1[1], _r1;
3338 17646 : _o1[0] = captures[2];
3339 17646 : if (TREE_TYPE (_o1[0]) != type)
3340 : {
3341 17604 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3342 : }
3343 : else
3344 : _r1 = _o1[0];
3345 17646 : res_op0 = _r1;
3346 : }
3347 17646 : tree _r;
3348 17646 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3349 17646 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3350 17646 : return _r;
3351 : }
3352 0 : next_after_fail1057:;
3353 : }
3354 : }
3355 430006 : break;
3356 : }
3357 : default:;
3358 : }
3359 : break;
3360 : }
3361 1342679 : case BIT_AND_EXPR:
3362 1342679 : {
3363 1342679 : tree _q20 = TREE_OPERAND (_p0, 0);
3364 1342679 : tree _q21 = TREE_OPERAND (_p0, 1);
3365 1342679 : {
3366 1342679 : tree _q20_pops[1];
3367 1342679 : if (tree_nop_convert (_q20, _q20_pops))
3368 : {
3369 709590 : tree _q30 = _q20_pops[0];
3370 709590 : {
3371 709590 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3372 709590 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_AND_EXPR);
3373 709590 : if (res) return res;
3374 : }
3375 : }
3376 : }
3377 1342679 : {
3378 1342679 : tree _q21_pops[1];
3379 1342679 : if (tree_nop_convert (_q21, _q21_pops))
3380 : {
3381 579515 : tree _q40 = _q21_pops[0];
3382 579515 : {
3383 579515 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3384 579515 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_AND_EXPR);
3385 579515 : if (res) return res;
3386 : }
3387 : }
3388 : }
3389 1342679 : switch (TREE_CODE (_q20))
3390 : {
3391 785123 : CASE_CONVERT:
3392 785123 : {
3393 785123 : tree _q30 = TREE_OPERAND (_q20, 0);
3394 785123 : {
3395 785123 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3396 785123 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_AND_EXPR);
3397 785123 : if (res) return res;
3398 : }
3399 785123 : break;
3400 : }
3401 1342679 : default:;
3402 : }
3403 1342679 : switch (TREE_CODE (_q21))
3404 : {
3405 580296 : CASE_CONVERT:
3406 580296 : {
3407 580296 : tree _q40 = TREE_OPERAND (_q21, 0);
3408 580296 : {
3409 580296 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3410 580296 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_AND_EXPR);
3411 580296 : if (res) return res;
3412 : }
3413 580296 : break;
3414 : }
3415 : default:;
3416 : }
3417 : break;
3418 : }
3419 1193243 : case BIT_IOR_EXPR:
3420 1193243 : {
3421 1193243 : tree _q20 = TREE_OPERAND (_p0, 0);
3422 1193243 : tree _q21 = TREE_OPERAND (_p0, 1);
3423 1193243 : {
3424 1193243 : tree _q20_pops[1];
3425 1193243 : if (tree_nop_convert (_q20, _q20_pops))
3426 : {
3427 462739 : tree _q30 = _q20_pops[0];
3428 462739 : {
3429 462739 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3430 462739 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_IOR_EXPR);
3431 462739 : if (res) return res;
3432 : }
3433 : }
3434 : }
3435 1193243 : {
3436 1193243 : tree _q21_pops[1];
3437 1193243 : if (tree_nop_convert (_q21, _q21_pops))
3438 : {
3439 1114359 : tree _q40 = _q21_pops[0];
3440 1114359 : {
3441 1114359 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3442 1114359 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_IOR_EXPR);
3443 1114359 : if (res) return res;
3444 : }
3445 : }
3446 : }
3447 1193243 : switch (TREE_CODE (_q20))
3448 : {
3449 481007 : CASE_CONVERT:
3450 481007 : {
3451 481007 : tree _q30 = TREE_OPERAND (_q20, 0);
3452 481007 : {
3453 481007 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3454 481007 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_IOR_EXPR);
3455 481007 : if (res) return res;
3456 : }
3457 481007 : break;
3458 : }
3459 1193243 : default:;
3460 : }
3461 1193243 : switch (TREE_CODE (_q21))
3462 : {
3463 1122695 : CASE_CONVERT:
3464 1122695 : {
3465 1122695 : tree _q40 = TREE_OPERAND (_q21, 0);
3466 1122695 : {
3467 1122695 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3468 1122695 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_IOR_EXPR);
3469 1122695 : if (res) return res;
3470 : }
3471 1122695 : break;
3472 : }
3473 : default:;
3474 : }
3475 : break;
3476 : }
3477 636573 : case BIT_XOR_EXPR:
3478 636573 : {
3479 636573 : tree _q20 = TREE_OPERAND (_p0, 0);
3480 636573 : tree _q21 = TREE_OPERAND (_p0, 1);
3481 636573 : {
3482 636573 : tree _q20_pops[1];
3483 636573 : if (tree_nop_convert (_q20, _q20_pops))
3484 : {
3485 374246 : tree _q30 = _q20_pops[0];
3486 374246 : {
3487 374246 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3488 374246 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_XOR_EXPR);
3489 374246 : if (res) return res;
3490 : }
3491 : }
3492 : }
3493 636573 : {
3494 636573 : tree _q21_pops[1];
3495 636573 : if (tree_nop_convert (_q21, _q21_pops))
3496 : {
3497 516493 : tree _q40 = _q21_pops[0];
3498 516493 : {
3499 516493 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3500 516493 : tree res = generic_simplify_435 (loc, type, _p0, captures, BIT_XOR_EXPR);
3501 516493 : if (res) return res;
3502 : }
3503 : }
3504 : }
3505 636573 : switch (TREE_CODE (_q20))
3506 : {
3507 416842 : CASE_CONVERT:
3508 416842 : {
3509 416842 : tree _q30 = TREE_OPERAND (_q20, 0);
3510 416842 : {
3511 416842 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21 };
3512 416842 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_XOR_EXPR);
3513 416842 : if (res) return res;
3514 : }
3515 416842 : break;
3516 : }
3517 636573 : default:;
3518 : }
3519 636573 : switch (TREE_CODE (_q21))
3520 : {
3521 558082 : CASE_CONVERT:
3522 558082 : {
3523 558082 : tree _q40 = TREE_OPERAND (_q21, 0);
3524 558082 : {
3525 558082 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q20 };
3526 558082 : tree res = generic_simplify_436 (loc, type, _p0, captures, BIT_XOR_EXPR);
3527 558082 : if (res) return res;
3528 : }
3529 558082 : break;
3530 : }
3531 : default:;
3532 : }
3533 : break;
3534 : }
3535 9418826 : case MULT_EXPR:
3536 9418826 : {
3537 9418826 : tree _q20 = TREE_OPERAND (_p0, 0);
3538 9418826 : tree _q21 = TREE_OPERAND (_p0, 1);
3539 9418826 : if (tree_zero_one_valued_p (_q20))
3540 : {
3541 57103 : switch (TREE_CODE (_q21))
3542 : {
3543 51626 : case INTEGER_CST:
3544 51626 : {
3545 51626 : {
3546 51626 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3547 51626 : if (INTEGRAL_TYPE_P (type)
3548 51626 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3549 51626 : && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (captures[0]))
3550 51632 : && (TYPE_UNSIGNED (type) || TYPE_PRECISION (type) > 1)
3551 : )
3552 : {
3553 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1058;
3554 6 : {
3555 6 : tree res_op0;
3556 6 : {
3557 6 : tree _o1[1], _r1;
3558 6 : _o1[0] = captures[1];
3559 6 : if (TREE_TYPE (_o1[0]) != type)
3560 : {
3561 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3562 : }
3563 : else
3564 : _r1 = _o1[0];
3565 6 : res_op0 = _r1;
3566 : }
3567 6 : tree res_op1;
3568 6 : {
3569 6 : tree _o1[1], _r1;
3570 6 : _o1[0] = captures[2];
3571 6 : if (TREE_TYPE (_o1[0]) != type)
3572 : {
3573 6 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3574 : }
3575 : else
3576 : _r1 = _o1[0];
3577 6 : res_op1 = _r1;
3578 : }
3579 6 : tree _r;
3580 6 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
3581 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3582 6 : return _r;
3583 : }
3584 0 : next_after_fail1058:;
3585 : }
3586 : }
3587 51620 : break;
3588 : }
3589 : default:;
3590 : }
3591 : }
3592 : break;
3593 : }
3594 1193246 : case POINTER_DIFF_EXPR:
3595 1193246 : {
3596 1193246 : tree _q20 = TREE_OPERAND (_p0, 0);
3597 1193246 : tree _q21 = TREE_OPERAND (_p0, 1);
3598 1193246 : switch (TREE_CODE (_q21))
3599 : {
3600 200 : case INTEGER_CST:
3601 200 : {
3602 200 : {
3603 200 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3604 200 : if (POINTER_TYPE_P (type)
3605 : )
3606 : {
3607 18 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1059;
3608 18 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1059;
3609 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1059;
3610 18 : {
3611 18 : tree _r;
3612 18 : _r = build_fold_addr_expr_with_type
3613 : (build2 (MEM_REF, char_type_node, captures[0],
3614 : wide_int_to_tree (ptr_type_node, wi::neg (wi::to_wide (captures[1])))),
3615 : type);
3616 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3617 18 : return _r;
3618 : }
3619 182 : next_after_fail1059:;
3620 : }
3621 : }
3622 182 : break;
3623 : }
3624 : default:;
3625 : }
3626 : break;
3627 : }
3628 214372 : case EQ_EXPR:
3629 214372 : {
3630 214372 : tree _q20 = TREE_OPERAND (_p0, 0);
3631 214372 : tree _q21 = TREE_OPERAND (_p0, 1);
3632 214372 : if (tree_zero_one_valued_p (_q20))
3633 : {
3634 1583 : switch (TREE_CODE (_q21))
3635 : {
3636 654 : case INTEGER_CST:
3637 654 : {
3638 654 : {
3639 654 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3640 654 : tree res = generic_simplify_437 (loc, type, _p0, captures, EQ_EXPR);
3641 654 : if (res) return res;
3642 : }
3643 606 : break;
3644 : }
3645 : default:;
3646 : }
3647 : }
3648 : break;
3649 : }
3650 267828 : case NE_EXPR:
3651 267828 : {
3652 267828 : tree _q20 = TREE_OPERAND (_p0, 0);
3653 267828 : tree _q21 = TREE_OPERAND (_p0, 1);
3654 267828 : if (tree_zero_one_valued_p (_q20))
3655 : {
3656 1907 : switch (TREE_CODE (_q21))
3657 : {
3658 1573 : case INTEGER_CST:
3659 1573 : {
3660 1573 : {
3661 1573 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3662 1573 : tree res = generic_simplify_437 (loc, type, _p0, captures, NE_EXPR);
3663 1573 : if (res) return res;
3664 : }
3665 9 : break;
3666 : }
3667 : default:;
3668 : }
3669 : }
3670 : break;
3671 : }
3672 1999 : case MIN_EXPR:
3673 1999 : {
3674 1999 : tree _q20 = TREE_OPERAND (_p0, 0);
3675 1999 : tree _q21 = TREE_OPERAND (_p0, 1);
3676 1999 : switch (TREE_CODE (_q20))
3677 : {
3678 733 : CASE_CONVERT:
3679 733 : {
3680 733 : tree _q30 = TREE_OPERAND (_q20, 0);
3681 733 : switch (TREE_CODE (_q21))
3682 : {
3683 47 : CASE_CONVERT:
3684 47 : {
3685 47 : tree _q50 = TREE_OPERAND (_q21, 0);
3686 47 : {
3687 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3688 47 : tree res = generic_simplify_438 (loc, type, _p0, captures, MIN_EXPR);
3689 47 : if (res) return res;
3690 : }
3691 47 : {
3692 47 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3693 47 : tree res = generic_simplify_438 (loc, type, _p0, captures, MIN_EXPR);
3694 47 : if (res) return res;
3695 : }
3696 47 : break;
3697 : }
3698 659 : case INTEGER_CST:
3699 659 : {
3700 659 : {
3701 659 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3702 659 : tree res = generic_simplify_439 (loc, type, _p0, captures, MIN_EXPR);
3703 659 : if (res) return res;
3704 : }
3705 659 : break;
3706 : }
3707 : default:;
3708 : }
3709 : break;
3710 : }
3711 : default:;
3712 : }
3713 : break;
3714 : }
3715 274742 : case MAX_EXPR:
3716 274742 : {
3717 274742 : tree _q20 = TREE_OPERAND (_p0, 0);
3718 274742 : tree _q21 = TREE_OPERAND (_p0, 1);
3719 274742 : switch (TREE_CODE (_q20))
3720 : {
3721 6721 : CASE_CONVERT:
3722 6721 : {
3723 6721 : tree _q30 = TREE_OPERAND (_q20, 0);
3724 6721 : switch (TREE_CODE (_q21))
3725 : {
3726 0 : CASE_CONVERT:
3727 0 : {
3728 0 : tree _q50 = TREE_OPERAND (_q21, 0);
3729 0 : {
3730 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q21, _q50 };
3731 0 : tree res = generic_simplify_438 (loc, type, _p0, captures, MAX_EXPR);
3732 0 : if (res) return res;
3733 : }
3734 0 : {
3735 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q50, _q20, _q30 };
3736 0 : tree res = generic_simplify_438 (loc, type, _p0, captures, MAX_EXPR);
3737 0 : if (res) return res;
3738 : }
3739 0 : break;
3740 : }
3741 6681 : case INTEGER_CST:
3742 6681 : {
3743 6681 : {
3744 6681 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q21 };
3745 6681 : tree res = generic_simplify_439 (loc, type, _p0, captures, MAX_EXPR);
3746 6681 : if (res) return res;
3747 : }
3748 6681 : break;
3749 : }
3750 : default:;
3751 : }
3752 : break;
3753 : }
3754 : default:;
3755 : }
3756 : break;
3757 : }
3758 468151 : case LSHIFT_EXPR:
3759 468151 : {
3760 468151 : tree _q20 = TREE_OPERAND (_p0, 0);
3761 468151 : tree _q21 = TREE_OPERAND (_p0, 1);
3762 468151 : switch (TREE_CODE (_q21))
3763 : {
3764 141573 : case INTEGER_CST:
3765 141573 : {
3766 141573 : {
3767 141573 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3768 141573 : if (INTEGRAL_TYPE_P (type)
3769 141546 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3770 141546 : && !integer_zerop (captures[2])
3771 282346 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
3772 : )
3773 : {
3774 139490 : if (TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3775 139490 : || wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (type))
3776 : )
3777 : {
3778 139162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1060;
3779 139162 : {
3780 139162 : tree res_op0;
3781 139162 : {
3782 139162 : tree _o1[1], _r1;
3783 139162 : _o1[0] = captures[1];
3784 139162 : if (TREE_TYPE (_o1[0]) != type)
3785 : {
3786 130088 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3787 : }
3788 : else
3789 : _r1 = _o1[0];
3790 139162 : res_op0 = _r1;
3791 : }
3792 139162 : tree res_op1;
3793 139162 : res_op1 = captures[2];
3794 139162 : tree _r;
3795 139162 : _r = fold_build2_loc (loc, LSHIFT_EXPR, type, res_op0, res_op1);
3796 139162 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
3797 139162 : return _r;
3798 : }
3799 0 : next_after_fail1060:;
3800 : }
3801 : else
3802 : {
3803 328 : if (wi::ltu_p (wi::to_wide (captures[2]), TYPE_PRECISION (TREE_TYPE (captures[0])))
3804 : )
3805 : {
3806 279 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1061;
3807 279 : {
3808 279 : tree _r;
3809 279 : _r = build_zero_cst (type);
3810 279 : if (TREE_SIDE_EFFECTS (captures[1]))
3811 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3812 279 : if (TREE_SIDE_EFFECTS (captures[2]))
3813 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3814 279 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
3815 279 : return _r;
3816 : }
3817 0 : next_after_fail1061:;
3818 : }
3819 : }
3820 : }
3821 : }
3822 2132 : break;
3823 : }
3824 : default:;
3825 : }
3826 : break;
3827 : }
3828 871909781 : default:;
3829 : }
3830 871909781 : {
3831 871909781 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3832 1743819562 : if ((
3833 :
3834 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3835 : || (
3836 : 1
3837 871909781 : && type == TREE_TYPE (captures[0]))
3838 : )
3839 : {
3840 50718785 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1062;
3841 50718785 : {
3842 50718785 : tree _r;
3843 50718785 : _r = captures[0];
3844 50718785 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
3845 50718785 : return _r;
3846 : }
3847 0 : next_after_fail1062:;
3848 : }
3849 : }
3850 821190996 : switch (TREE_CODE (_p0))
3851 : {
3852 135688210 : CASE_CONVERT:
3853 135688210 : {
3854 135688210 : tree _q20 = TREE_OPERAND (_p0, 0);
3855 135688210 : {
3856 135688210 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3857 135688210 : {
3858 135688210 : tree inside_type = TREE_TYPE (captures[1]);
3859 135688210 : tree inter_type = TREE_TYPE (captures[0]);
3860 135688210 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3861 135688210 : int inside_ptr = POINTER_TYPE_P (inside_type);
3862 135688210 : int inside_float = FLOAT_TYPE_P (inside_type);
3863 135688210 : int inside_vec = VECTOR_TYPE_P (inside_type);
3864 135688210 : unsigned int inside_prec = element_precision (inside_type);
3865 135688210 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3866 135688210 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3867 135688210 : int inter_ptr = POINTER_TYPE_P (inter_type);
3868 135688210 : int inter_float = FLOAT_TYPE_P (inter_type);
3869 135688210 : int inter_vec = VECTOR_TYPE_P (inter_type);
3870 135688210 : unsigned int inter_prec = element_precision (inter_type);
3871 135688210 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3872 135688210 : int final_int = INTEGRAL_TYPE_P (type);
3873 135688210 : int final_ptr = POINTER_TYPE_P (type);
3874 135688210 : int final_float = FLOAT_TYPE_P (type);
3875 135688210 : int final_vec = VECTOR_TYPE_P (type);
3876 135688210 : unsigned int final_prec = element_precision (type);
3877 135688210 : int final_unsignedp = TYPE_UNSIGNED (type);
3878 135688210 : if (((
3879 :
3880 : && useless_type_conversion_p (type, inside_type))
3881 : || (
3882 : 1
3883 135688210 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3884 23253731 : && (((inter_int || inter_ptr) && final_int)
3885 17516083 : || (inter_float && final_float))
3886 141511071 : && inter_prec >= final_prec
3887 : )
3888 : {
3889 5292224 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1063;
3890 5292224 : {
3891 5292224 : tree res_op0;
3892 5292224 : res_op0 = captures[1];
3893 5292224 : tree _r;
3894 5292224 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3895 5292224 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
3896 5292224 : return _r;
3897 : }
3898 0 : next_after_fail1063:;
3899 : }
3900 : else
3901 : {
3902 130395986 : if (((inter_int && inside_int) || (inter_float && inside_float))
3903 12879438 : && (final_int || final_float)
3904 12748190 : && inter_prec >= inside_prec
3905 11471682 : && (inter_float || inter_unsignedp == inside_unsignedp)
3906 : )
3907 : {
3908 7964622 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1064;
3909 7964622 : {
3910 7964622 : tree res_op0;
3911 7964622 : res_op0 = captures[1];
3912 7964622 : tree _r;
3913 7964622 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3914 7964622 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
3915 7964622 : return _r;
3916 : }
3917 0 : next_after_fail1064:;
3918 0 : }
3919 : else
3920 : {
3921 122431364 : if (inside_int && inter_int && final_int
3922 4777258 : && ((inside_prec < inter_prec && inter_prec < final_prec
3923 180526 : && inside_unsignedp && !inter_unsignedp)
3924 4623536 : || final_prec == inter_prec
3925 2309018 : || (inside_prec < inter_prec && inter_prec > final_prec
3926 151475 : && !inside_unsignedp && inter_unsignedp))
3927 : )
3928 : {
3929 2532713 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1065;
3930 2532713 : {
3931 2532713 : tree res_op0;
3932 2532713 : res_op0 = captures[1];
3933 2532713 : tree _r;
3934 2532713 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3935 2532713 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
3936 2532713 : return _r;
3937 : }
3938 0 : next_after_fail1065:;
3939 0 : }
3940 : else
3941 : {
3942 119898651 : if (! inside_float && ! inter_float && ! final_float
3943 : && ! inside_vec && ! inter_vec && ! final_vec
3944 119892337 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3945 119146325 : && ! (inside_int && inter_int
3946 1629777 : && inter_unsignedp != inside_unsignedp
3947 1629777 : && inter_prec < final_prec)
3948 117819788 : && ((inter_unsignedp && inter_prec > inside_prec)
3949 117819788 : == (final_unsignedp && final_prec > inter_prec))
3950 117796383 : && ! (inside_ptr && inter_prec != final_prec)
3951 117293975 : && ! (final_ptr && inside_prec != inter_prec)
3952 : )
3953 : {
3954 117273179 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1066;
3955 117273179 : {
3956 117273179 : tree res_op0;
3957 117273179 : res_op0 = captures[1];
3958 117273179 : tree _r;
3959 117273179 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3960 117273179 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3961 117273179 : return _r;
3962 : }
3963 0 : next_after_fail1066:;
3964 0 : }
3965 : else
3966 : {
3967 2625472 : if (inside_int && inter_int && final_int
3968 2102214 : && final_prec <= inside_prec
3969 686022 : && inter_prec >= inside_prec
3970 : )
3971 : {
3972 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1067;
3973 0 : {
3974 0 : tree res_op0;
3975 0 : res_op0 = captures[1];
3976 0 : tree _r;
3977 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3978 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
3979 0 : return _r;
3980 : }
3981 0 : next_after_fail1067:;
3982 0 : }
3983 : else
3984 : {
3985 : if (0
3986 : && final_int && inter_int && inside_int
3987 : && final_prec >= inside_prec
3988 : && inside_prec > inter_prec
3989 : && inter_unsignedp
3990 : )
3991 : {
3992 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1068;
3993 : {
3994 : tree res_op0;
3995 : {
3996 : tree _o1[2], _r1;
3997 : _o1[0] = captures[1];
3998 : _o1[1] = wide_int_to_tree
3999 : (inside_type,
4000 : wi::mask (inter_prec, false,
4001 : TYPE_PRECISION (inside_type)));
4002 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4003 : res_op0 = _r1;
4004 : }
4005 : tree _r;
4006 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4007 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
4008 : return _r;
4009 : }
4010 : next_after_fail1068:;
4011 : }
4012 : else
4013 : {
4014 : if (0
4015 : && inside_int && inter_float && final_int &&
4016 : (unsigned) significand_size (TYPE_MODE (inter_type))
4017 : >= inside_prec - !inside_unsignedp
4018 : )
4019 : {
4020 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1069;
4021 : {
4022 : tree res_op0;
4023 : res_op0 = captures[1];
4024 : tree _r;
4025 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4026 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
4027 : return _r;
4028 : }
4029 : next_after_fail1069:;
4030 : }
4031 : }
4032 : }
4033 : }
4034 : }
4035 : }
4036 : }
4037 : }
4038 : }
4039 2625472 : break;
4040 : }
4041 3067 : case FLOAT_EXPR:
4042 3067 : {
4043 3067 : tree _q20 = TREE_OPERAND (_p0, 0);
4044 3067 : {
4045 3067 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4046 3067 : {
4047 3067 : tree inside_type = TREE_TYPE (captures[1]);
4048 3067 : tree inter_type = TREE_TYPE (captures[0]);
4049 3067 : int inside_int = INTEGRAL_TYPE_P (inside_type);
4050 3067 : int inside_ptr = POINTER_TYPE_P (inside_type);
4051 3067 : int inside_float = FLOAT_TYPE_P (inside_type);
4052 3067 : int inside_vec = VECTOR_TYPE_P (inside_type);
4053 3067 : unsigned int inside_prec = element_precision (inside_type);
4054 3067 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
4055 3067 : int inter_int = INTEGRAL_TYPE_P (inter_type);
4056 3067 : int inter_ptr = POINTER_TYPE_P (inter_type);
4057 3067 : int inter_float = FLOAT_TYPE_P (inter_type);
4058 3067 : int inter_vec = VECTOR_TYPE_P (inter_type);
4059 3067 : unsigned int inter_prec = element_precision (inter_type);
4060 3067 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
4061 3067 : int final_int = INTEGRAL_TYPE_P (type);
4062 3067 : int final_ptr = POINTER_TYPE_P (type);
4063 3067 : int final_float = FLOAT_TYPE_P (type);
4064 3067 : int final_vec = VECTOR_TYPE_P (type);
4065 3067 : unsigned int final_prec = element_precision (type);
4066 3067 : int final_unsignedp = TYPE_UNSIGNED (type);
4067 3067 : if (((
4068 :
4069 : && useless_type_conversion_p (type, inside_type))
4070 : || (
4071 : 1
4072 3067 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
4073 0 : && (((inter_int || inter_ptr) && final_int)
4074 0 : || (inter_float && final_float))
4075 3067 : && inter_prec >= final_prec
4076 : )
4077 : {
4078 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1070;
4079 0 : {
4080 0 : tree res_op0;
4081 0 : res_op0 = captures[1];
4082 0 : tree _r;
4083 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4084 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 848, __FILE__, __LINE__, true);
4085 0 : return _r;
4086 : }
4087 0 : next_after_fail1070:;
4088 : }
4089 : else
4090 : {
4091 3067 : if (((inter_int && inside_int) || (inter_float && inside_float))
4092 0 : && (final_int || final_float)
4093 0 : && inter_prec >= inside_prec
4094 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
4095 : )
4096 : {
4097 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1071;
4098 0 : {
4099 0 : tree res_op0;
4100 0 : res_op0 = captures[1];
4101 0 : tree _r;
4102 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4103 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
4104 0 : return _r;
4105 : }
4106 0 : next_after_fail1071:;
4107 0 : }
4108 : else
4109 : {
4110 3067 : if (inside_int && inter_int && final_int
4111 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
4112 0 : && inside_unsignedp && !inter_unsignedp)
4113 0 : || final_prec == inter_prec
4114 0 : || (inside_prec < inter_prec && inter_prec > final_prec
4115 0 : && !inside_unsignedp && inter_unsignedp))
4116 : )
4117 : {
4118 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1072;
4119 0 : {
4120 0 : tree res_op0;
4121 0 : res_op0 = captures[1];
4122 0 : tree _r;
4123 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4124 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
4125 0 : return _r;
4126 : }
4127 0 : next_after_fail1072:;
4128 0 : }
4129 : else
4130 : {
4131 3067 : if (! inside_float && ! inter_float && ! final_float
4132 : && ! inside_vec && ! inter_vec && ! final_vec
4133 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
4134 0 : && ! (inside_int && inter_int
4135 0 : && inter_unsignedp != inside_unsignedp
4136 0 : && inter_prec < final_prec)
4137 0 : && ((inter_unsignedp && inter_prec > inside_prec)
4138 0 : == (final_unsignedp && final_prec > inter_prec))
4139 0 : && ! (inside_ptr && inter_prec != final_prec)
4140 0 : && ! (final_ptr && inside_prec != inter_prec)
4141 : )
4142 : {
4143 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1073;
4144 0 : {
4145 0 : tree res_op0;
4146 0 : res_op0 = captures[1];
4147 0 : tree _r;
4148 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4149 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
4150 0 : return _r;
4151 : }
4152 0 : next_after_fail1073:;
4153 0 : }
4154 : else
4155 : {
4156 3067 : if (inside_int && inter_int && final_int
4157 0 : && final_prec <= inside_prec
4158 0 : && inter_prec >= inside_prec
4159 : )
4160 : {
4161 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1074;
4162 0 : {
4163 0 : tree res_op0;
4164 0 : res_op0 = captures[1];
4165 0 : tree _r;
4166 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4167 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
4168 0 : return _r;
4169 : }
4170 0 : next_after_fail1074:;
4171 0 : }
4172 : else
4173 : {
4174 : if (0
4175 : && final_int && inter_int && inside_int
4176 : && final_prec >= inside_prec
4177 : && inside_prec > inter_prec
4178 : && inter_unsignedp
4179 : )
4180 : {
4181 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1075;
4182 : {
4183 : tree res_op0;
4184 : {
4185 : tree _o1[2], _r1;
4186 : _o1[0] = captures[1];
4187 : _o1[1] = wide_int_to_tree
4188 : (inside_type,
4189 : wi::mask (inter_prec, false,
4190 : TYPE_PRECISION (inside_type)));
4191 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
4192 : res_op0 = _r1;
4193 : }
4194 : tree _r;
4195 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4196 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
4197 : return _r;
4198 : }
4199 : next_after_fail1075:;
4200 : }
4201 : else
4202 : {
4203 : if (0
4204 : && inside_int && inter_float && final_int &&
4205 : (unsigned) significand_size (TYPE_MODE (inter_type))
4206 : >= inside_prec - !inside_unsignedp
4207 : )
4208 : {
4209 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1076;
4210 : {
4211 : tree res_op0;
4212 : res_op0 = captures[1];
4213 : tree _r;
4214 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4215 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
4216 : return _r;
4217 : }
4218 : next_after_fail1076:;
4219 : }
4220 : }
4221 : }
4222 : }
4223 : }
4224 : }
4225 : }
4226 : }
4227 : }
4228 3067 : break;
4229 : }
4230 984177 : case BIT_AND_EXPR:
4231 984177 : {
4232 984177 : tree _q20 = TREE_OPERAND (_p0, 0);
4233 984177 : tree _q21 = TREE_OPERAND (_p0, 1);
4234 984177 : switch (TREE_CODE (_q21))
4235 : {
4236 291081 : case INTEGER_CST:
4237 291081 : {
4238 291081 : {
4239 291081 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4240 291081 : if (INTEGRAL_TYPE_P (type)
4241 290573 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4242 290573 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
4243 501112 : && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]),
4244 210031 : TYPE_PRECISION (type)), 0)
4245 : )
4246 : {
4247 13060 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1077;
4248 13060 : {
4249 13060 : tree res_op0;
4250 13060 : res_op0 = captures[0];
4251 13060 : tree _r;
4252 13060 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4253 13060 : if (TREE_SIDE_EFFECTS (captures[1]))
4254 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4255 13060 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 855, __FILE__, __LINE__, true);
4256 13060 : return _r;
4257 : }
4258 0 : next_after_fail1077:;
4259 : }
4260 : }
4261 278021 : break;
4262 : }
4263 : default:;
4264 : }
4265 : break;
4266 : }
4267 5 : case VEC_COND_EXPR:
4268 5 : {
4269 5 : tree _q20 = TREE_OPERAND (_p0, 0);
4270 5 : tree _q21 = TREE_OPERAND (_p0, 1);
4271 5 : tree _q22 = TREE_OPERAND (_p0, 2);
4272 5 : {
4273 5 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4274 5 : if (VECTOR_TYPE_P (type)
4275 0 : && types_match (TREE_TYPE (captures[1]), truth_type_for (type))
4276 5 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4277 0 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
4278 : )
4279 : {
4280 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1078;
4281 0 : {
4282 0 : tree res_op0;
4283 0 : res_op0 = captures[1];
4284 0 : tree res_op1;
4285 0 : {
4286 0 : tree _o1[1], _r1;
4287 0 : _o1[0] = captures[2];
4288 0 : if (TREE_TYPE (_o1[0]) != type)
4289 : {
4290 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4291 0 : if (EXPR_P (_r1))
4292 0 : goto next_after_fail1078;
4293 : }
4294 : else
4295 : _r1 = _o1[0];
4296 0 : res_op1 = _r1;
4297 : }
4298 0 : tree res_op2;
4299 0 : {
4300 0 : tree _o1[1], _r1;
4301 0 : _o1[0] = captures[3];
4302 0 : if (TREE_TYPE (_o1[0]) != type)
4303 : {
4304 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4305 0 : if (EXPR_P (_r1))
4306 0 : goto next_after_fail1078;
4307 : }
4308 : else
4309 : _r1 = _o1[0];
4310 0 : res_op2 = _r1;
4311 : }
4312 0 : tree _r;
4313 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4314 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 856, __FILE__, __LINE__, true);
4315 0 : return _r;
4316 : }
4317 5 : next_after_fail1078:;
4318 : }
4319 : }
4320 5 : break;
4321 : }
4322 654482 : case COND_EXPR:
4323 654482 : {
4324 654482 : tree _q20 = TREE_OPERAND (_p0, 0);
4325 654482 : tree _q21 = TREE_OPERAND (_p0, 1);
4326 654482 : tree _q22 = TREE_OPERAND (_p0, 2);
4327 654482 : switch (TREE_CODE (_q21))
4328 : {
4329 184234 : case INTEGER_CST:
4330 184234 : {
4331 184234 : switch (TREE_CODE (_q22))
4332 : {
4333 117469 : case INTEGER_CST:
4334 117469 : {
4335 117469 : {
4336 117469 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
4337 117469 : if (INTEGRAL_TYPE_P (type)
4338 117469 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4339 : )
4340 : {
4341 117469 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1079;
4342 117469 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1079;
4343 117469 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1079;
4344 117469 : {
4345 117469 : tree res_op0;
4346 117469 : res_op0 = captures[1];
4347 117469 : tree res_op1;
4348 117469 : {
4349 117469 : tree _o1[1], _r1;
4350 117469 : _o1[0] = captures[2];
4351 117469 : if (TREE_TYPE (_o1[0]) != type)
4352 : {
4353 117469 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4354 : }
4355 : else
4356 : _r1 = _o1[0];
4357 117469 : res_op1 = _r1;
4358 : }
4359 117469 : tree res_op2;
4360 117469 : {
4361 117469 : tree _o1[1], _r1;
4362 117469 : _o1[0] = captures[3];
4363 117469 : if (TREE_TYPE (_o1[0]) != type)
4364 : {
4365 117469 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
4366 : }
4367 : else
4368 : _r1 = _o1[0];
4369 117469 : res_op2 = _r1;
4370 : }
4371 117469 : tree _r;
4372 117469 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
4373 117469 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 857, __FILE__, __LINE__, true);
4374 117469 : return _r;
4375 : }
4376 0 : next_after_fail1079:;
4377 : }
4378 : }
4379 0 : break;
4380 : }
4381 : default:;
4382 : }
4383 : break;
4384 : }
4385 : default:;
4386 : }
4387 : break;
4388 : }
4389 11953733 : case PLUS_EXPR:
4390 11953733 : {
4391 11953733 : tree _q20 = TREE_OPERAND (_p0, 0);
4392 11953733 : tree _q21 = TREE_OPERAND (_p0, 1);
4393 11953733 : switch (TREE_CODE (_q20))
4394 : {
4395 4613662 : CASE_CONVERT:
4396 4613662 : {
4397 4613662 : tree _q30 = TREE_OPERAND (_q20, 0);
4398 4613662 : switch (TREE_CODE (_q21))
4399 : {
4400 357778 : CASE_CONVERT:
4401 357778 : {
4402 357778 : tree _q50 = TREE_OPERAND (_q21, 0);
4403 357778 : {
4404 357778 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4405 357778 : tree res = generic_simplify_440 (loc, type, _p0, captures, PLUS_EXPR);
4406 357778 : if (res) return res;
4407 : }
4408 357722 : break;
4409 : }
4410 4613606 : default:;
4411 : }
4412 4613606 : {
4413 4613606 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4414 4613606 : tree res = generic_simplify_441 (loc, type, _p0, captures, PLUS_EXPR);
4415 4613606 : if (res) return res;
4416 : }
4417 4601109 : break;
4418 : }
4419 11941180 : default:;
4420 : }
4421 11941180 : switch (TREE_CODE (_q21))
4422 : {
4423 1622864 : CASE_CONVERT:
4424 1622864 : {
4425 1622864 : tree _q40 = TREE_OPERAND (_q21, 0);
4426 1622864 : {
4427 1622864 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4428 1622864 : tree res = generic_simplify_442 (loc, type, _p0, captures, PLUS_EXPR);
4429 1622864 : if (res) return res;
4430 : }
4431 1622864 : break;
4432 : }
4433 11941180 : default:;
4434 : }
4435 11941180 : {
4436 11941180 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4437 11941180 : tree res = generic_simplify_443 (loc, type, _p0, captures, PLUS_EXPR);
4438 11941180 : if (res) return res;
4439 : }
4440 11941146 : break;
4441 : }
4442 1008532 : case MINUS_EXPR:
4443 1008532 : {
4444 1008532 : tree _q20 = TREE_OPERAND (_p0, 0);
4445 1008532 : tree _q21 = TREE_OPERAND (_p0, 1);
4446 1008532 : switch (TREE_CODE (_q20))
4447 : {
4448 427732 : CASE_CONVERT:
4449 427732 : {
4450 427732 : tree _q30 = TREE_OPERAND (_q20, 0);
4451 427732 : switch (TREE_CODE (_q21))
4452 : {
4453 272987 : CASE_CONVERT:
4454 272987 : {
4455 272987 : tree _q50 = TREE_OPERAND (_q21, 0);
4456 272987 : {
4457 272987 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4458 272987 : tree res = generic_simplify_440 (loc, type, _p0, captures, MINUS_EXPR);
4459 272987 : if (res) return res;
4460 : }
4461 272958 : break;
4462 : }
4463 427703 : default:;
4464 : }
4465 427703 : {
4466 427703 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4467 427703 : tree res = generic_simplify_441 (loc, type, _p0, captures, MINUS_EXPR);
4468 427703 : if (res) return res;
4469 : }
4470 426583 : break;
4471 : }
4472 1007383 : default:;
4473 : }
4474 1007383 : switch (TREE_CODE (_q21))
4475 : {
4476 332790 : CASE_CONVERT:
4477 332790 : {
4478 332790 : tree _q40 = TREE_OPERAND (_q21, 0);
4479 332790 : {
4480 332790 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4481 332790 : tree res = generic_simplify_442 (loc, type, _p0, captures, MINUS_EXPR);
4482 332790 : if (res) return res;
4483 : }
4484 332780 : break;
4485 : }
4486 1007373 : default:;
4487 : }
4488 1007373 : {
4489 1007373 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4490 1007373 : tree res = generic_simplify_443 (loc, type, _p0, captures, MINUS_EXPR);
4491 1007373 : if (res) return res;
4492 : }
4493 1007341 : break;
4494 : }
4495 9194380 : case MULT_EXPR:
4496 9194380 : {
4497 9194380 : tree _q20 = TREE_OPERAND (_p0, 0);
4498 9194380 : tree _q21 = TREE_OPERAND (_p0, 1);
4499 9194380 : switch (TREE_CODE (_q20))
4500 : {
4501 4127352 : CASE_CONVERT:
4502 4127352 : {
4503 4127352 : tree _q30 = TREE_OPERAND (_q20, 0);
4504 4127352 : switch (TREE_CODE (_q21))
4505 : {
4506 357278 : CASE_CONVERT:
4507 357278 : {
4508 357278 : tree _q50 = TREE_OPERAND (_q21, 0);
4509 357278 : {
4510 357278 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4511 357278 : tree res = generic_simplify_440 (loc, type, _p0, captures, MULT_EXPR);
4512 357278 : if (res) return res;
4513 : }
4514 357278 : break;
4515 : }
4516 4127352 : default:;
4517 : }
4518 4127352 : {
4519 4127352 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4520 4127352 : tree res = generic_simplify_441 (loc, type, _p0, captures, MULT_EXPR);
4521 4127352 : if (res) return res;
4522 : }
4523 4127225 : break;
4524 : }
4525 9194253 : default:;
4526 : }
4527 9194253 : switch (TREE_CODE (_q21))
4528 : {
4529 797257 : CASE_CONVERT:
4530 797257 : {
4531 797257 : tree _q40 = TREE_OPERAND (_q21, 0);
4532 797257 : {
4533 797257 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4534 797257 : tree res = generic_simplify_442 (loc, type, _p0, captures, MULT_EXPR);
4535 797257 : if (res) return res;
4536 : }
4537 797257 : break;
4538 : }
4539 9194253 : default:;
4540 : }
4541 9194253 : {
4542 9194253 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4543 9194253 : tree res = generic_simplify_443 (loc, type, _p0, captures, MULT_EXPR);
4544 9194253 : if (res) return res;
4545 : }
4546 9194220 : break;
4547 : }
4548 3113 : case RDIV_EXPR:
4549 3113 : {
4550 3113 : tree _q20 = TREE_OPERAND (_p0, 0);
4551 3113 : tree _q21 = TREE_OPERAND (_p0, 1);
4552 3113 : switch (TREE_CODE (_q20))
4553 : {
4554 1005 : CASE_CONVERT:
4555 1005 : {
4556 1005 : tree _q30 = TREE_OPERAND (_q20, 0);
4557 1005 : switch (TREE_CODE (_q21))
4558 : {
4559 691 : CASE_CONVERT:
4560 691 : {
4561 691 : tree _q50 = TREE_OPERAND (_q21, 0);
4562 691 : {
4563 691 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q50 };
4564 691 : tree res = generic_simplify_440 (loc, type, _p0, captures, RDIV_EXPR);
4565 691 : if (res) return res;
4566 : }
4567 690 : break;
4568 : }
4569 1004 : default:;
4570 : }
4571 1004 : {
4572 1004 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q21, _q21 };
4573 1004 : tree res = generic_simplify_441 (loc, type, _p0, captures, RDIV_EXPR);
4574 1004 : if (res) return res;
4575 : }
4576 1002 : break;
4577 : }
4578 3110 : default:;
4579 : }
4580 3110 : switch (TREE_CODE (_q21))
4581 : {
4582 1690 : CASE_CONVERT:
4583 1690 : {
4584 1690 : tree _q40 = TREE_OPERAND (_q21, 0);
4585 1690 : {
4586 1690 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q40 };
4587 1690 : tree res = generic_simplify_442 (loc, type, _p0, captures, RDIV_EXPR);
4588 1690 : if (res) return res;
4589 : }
4590 1045 : break;
4591 : }
4592 2465 : default:;
4593 : }
4594 2465 : {
4595 2465 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q20, _q21, _q21 };
4596 2465 : tree res = generic_simplify_443 (loc, type, _p0, captures, RDIV_EXPR);
4597 2465 : if (res) return res;
4598 : }
4599 2423 : break;
4600 : }
4601 739613 : case NEGATE_EXPR:
4602 739613 : {
4603 739613 : tree _q20 = TREE_OPERAND (_p0, 0);
4604 739613 : {
4605 739613 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4606 739613 : tree res = generic_simplify_444 (loc, type, _p0, captures);
4607 739613 : if (res) return res;
4608 : }
4609 739591 : break;
4610 : }
4611 : default:;
4612 : }
4613 : return NULL_TREE;
4614 : }
4615 :
4616 : tree
4617 7006 : generic_simplify_CEIL_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4618 : {
4619 7006 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4620 7006 : if (integer_onep (_p1))
4621 : {
4622 1755 : {
4623 1755 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4624 1755 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4625 1755 : if (res) return res;
4626 : }
4627 : }
4628 5251 : if (integer_zerop (_p0))
4629 : {
4630 0 : {
4631 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4632 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4633 0 : if (res) return res;
4634 : }
4635 : }
4636 5251 : switch (TREE_CODE (_p1))
4637 : {
4638 34 : case SSA_NAME:
4639 34 : {
4640 34 : {
4641 34 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4642 34 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4643 34 : if (res) return res;
4644 : }
4645 34 : break;
4646 : }
4647 5251 : default:;
4648 : }
4649 5251 : if (integer_minus_onep (_p1))
4650 : {
4651 0 : {
4652 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
4653 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4654 0 : if (res) return res;
4655 : }
4656 : }
4657 5251 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
4658 : {
4659 0 : {
4660 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4661 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4662 0 : if (res) return res;
4663 : }
4664 : }
4665 5251 : switch (TREE_CODE (_p1))
4666 : {
4667 0 : case ABS_EXPR:
4668 0 : {
4669 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4670 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4671 : {
4672 0 : {
4673 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4674 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4675 0 : if (res) return res;
4676 : }
4677 : }
4678 : break;
4679 : }
4680 5251 : default:;
4681 : }
4682 5251 : switch (TREE_CODE (_p0))
4683 : {
4684 0 : case ABS_EXPR:
4685 0 : {
4686 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4687 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4688 : {
4689 0 : {
4690 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4691 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4692 0 : if (res) return res;
4693 : }
4694 : }
4695 : break;
4696 : }
4697 5251 : default:;
4698 : }
4699 5251 : switch (TREE_CODE (_p1))
4700 : {
4701 0 : case NEGATE_EXPR:
4702 0 : {
4703 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4704 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4705 : {
4706 0 : {
4707 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4708 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4709 0 : if (res) return res;
4710 : }
4711 : }
4712 : break;
4713 : }
4714 5251 : default:;
4715 : }
4716 5251 : switch (TREE_CODE (_p0))
4717 : {
4718 0 : case NEGATE_EXPR:
4719 0 : {
4720 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4721 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4722 : {
4723 0 : {
4724 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4725 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4726 0 : if (res) return res;
4727 : }
4728 : }
4729 : break;
4730 : }
4731 536 : CASE_CONVERT:
4732 536 : {
4733 536 : tree _q20 = TREE_OPERAND (_p0, 0);
4734 536 : switch (TREE_CODE (_q20))
4735 : {
4736 0 : case BIT_AND_EXPR:
4737 0 : {
4738 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4739 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4740 0 : switch (TREE_CODE (_q31))
4741 : {
4742 0 : case INTEGER_CST:
4743 0 : {
4744 0 : switch (TREE_CODE (_p1))
4745 : {
4746 0 : case INTEGER_CST:
4747 0 : {
4748 0 : {
4749 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
4750 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4751 0 : if (res) return res;
4752 : }
4753 0 : break;
4754 : }
4755 : default:;
4756 : }
4757 : break;
4758 : }
4759 : default:;
4760 : }
4761 : break;
4762 : }
4763 : default:;
4764 : }
4765 : break;
4766 : }
4767 0 : case BIT_AND_EXPR:
4768 0 : {
4769 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4770 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4771 0 : switch (TREE_CODE (_q21))
4772 : {
4773 0 : case INTEGER_CST:
4774 0 : {
4775 0 : switch (TREE_CODE (_p1))
4776 : {
4777 0 : case INTEGER_CST:
4778 0 : {
4779 0 : {
4780 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4781 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4782 0 : if (res) return res;
4783 : }
4784 0 : break;
4785 : }
4786 : default:;
4787 : }
4788 : break;
4789 : }
4790 : default:;
4791 : }
4792 : break;
4793 : }
4794 0 : case MULT_EXPR:
4795 0 : {
4796 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4797 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4798 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4799 : {
4800 0 : {
4801 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4802 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4803 0 : if (res) return res;
4804 : }
4805 : }
4806 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4807 : {
4808 0 : {
4809 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
4810 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4811 0 : if (res) return res;
4812 : }
4813 : }
4814 0 : switch (TREE_CODE (_q21))
4815 : {
4816 0 : case INTEGER_CST:
4817 0 : {
4818 0 : switch (TREE_CODE (_p1))
4819 : {
4820 0 : case MULT_EXPR:
4821 0 : {
4822 0 : tree _q50 = TREE_OPERAND (_p1, 0);
4823 0 : tree _q51 = TREE_OPERAND (_p1, 1);
4824 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4825 : {
4826 0 : switch (TREE_CODE (_q51))
4827 : {
4828 0 : case INTEGER_CST:
4829 0 : {
4830 0 : {
4831 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
4832 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, CEIL_DIV_EXPR);
4833 0 : if (res) return res;
4834 : }
4835 0 : break;
4836 : }
4837 : default:;
4838 : }
4839 : }
4840 : break;
4841 : }
4842 : default:;
4843 : }
4844 : break;
4845 : }
4846 : default:;
4847 : }
4848 : break;
4849 : }
4850 0 : case VEC_COND_EXPR:
4851 0 : {
4852 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4853 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4854 0 : tree _q22 = TREE_OPERAND (_p0, 2);
4855 0 : switch (TREE_CODE (_p1))
4856 : {
4857 0 : case VEC_COND_EXPR:
4858 0 : {
4859 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4860 0 : tree _q61 = TREE_OPERAND (_p1, 1);
4861 0 : tree _q62 = TREE_OPERAND (_p1, 2);
4862 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4863 : {
4864 0 : {
4865 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
4866 0 : if (VECTOR_TYPE_P (type)
4867 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4868 : || types_match (type, TREE_TYPE (captures[2]))
4869 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4870 : || (optimize_vectors_before_lowering_p ()
4871 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4872 : )
4873 : {
4874 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1608;
4875 0 : {
4876 0 : tree res_op0;
4877 0 : res_op0 = captures[1];
4878 0 : tree res_op1;
4879 0 : {
4880 0 : tree _o1[2], _r1;
4881 0 : _o1[0] = captures[2];
4882 0 : _o1[1] = captures[5];
4883 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4884 0 : if (EXPR_P (_r1))
4885 0 : goto next_after_fail1608;
4886 0 : res_op1 = _r1;
4887 : }
4888 0 : tree res_op2;
4889 0 : {
4890 0 : tree _o1[2], _r1;
4891 0 : _o1[0] = captures[3];
4892 0 : _o1[1] = captures[6];
4893 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4894 0 : if (EXPR_P (_r1))
4895 0 : goto next_after_fail1608;
4896 0 : res_op2 = _r1;
4897 : }
4898 0 : tree _r;
4899 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4900 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
4901 0 : return _r;
4902 : }
4903 0 : next_after_fail1608:;
4904 : }
4905 : }
4906 : }
4907 : break;
4908 : }
4909 0 : default:;
4910 : }
4911 0 : {
4912 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
4913 0 : if (VECTOR_TYPE_P (type)
4914 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4915 : || types_match (type, TREE_TYPE (captures[2]))
4916 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
4917 : || (optimize_vectors_before_lowering_p ()
4918 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
4919 : )
4920 : {
4921 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1609;
4922 0 : {
4923 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1609;
4924 0 : tree res_op0;
4925 0 : res_op0 = captures[1];
4926 0 : tree res_op1;
4927 0 : {
4928 0 : tree _o1[2], _r1;
4929 0 : _o1[0] = captures[2];
4930 0 : _o1[1] = unshare_expr (captures[4]);
4931 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4932 0 : if (EXPR_P (_r1))
4933 0 : goto next_after_fail1609;
4934 0 : res_op1 = _r1;
4935 : }
4936 0 : tree res_op2;
4937 0 : {
4938 0 : tree _o1[2], _r1;
4939 0 : _o1[0] = captures[3];
4940 0 : _o1[1] = captures[4];
4941 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4942 0 : if (EXPR_P (_r1))
4943 0 : goto next_after_fail1609;
4944 0 : res_op2 = _r1;
4945 : }
4946 0 : tree _r;
4947 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
4948 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
4949 0 : return _r;
4950 : }
4951 0 : next_after_fail1609:;
4952 : }
4953 : }
4954 0 : break;
4955 : }
4956 5251 : default:;
4957 : }
4958 5251 : switch (TREE_CODE (_p1))
4959 : {
4960 0 : case VEC_COND_EXPR:
4961 0 : {
4962 0 : tree _q30 = TREE_OPERAND (_p1, 0);
4963 0 : tree _q31 = TREE_OPERAND (_p1, 1);
4964 0 : tree _q32 = TREE_OPERAND (_p1, 2);
4965 0 : {
4966 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
4967 0 : if (VECTOR_TYPE_P (type)
4968 0 : && (TREE_CODE_CLASS (CEIL_DIV_EXPR) != tcc_comparison
4969 : || types_match (type, TREE_TYPE (captures[3]))
4970 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
4971 : || (optimize_vectors_before_lowering_p ()
4972 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
4973 : )
4974 : {
4975 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1610;
4976 0 : {
4977 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1610;
4978 0 : tree res_op0;
4979 0 : res_op0 = captures[2];
4980 0 : tree res_op1;
4981 0 : {
4982 0 : tree _o1[2], _r1;
4983 0 : _o1[0] = unshare_expr (captures[0]);
4984 0 : _o1[1] = captures[3];
4985 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4986 0 : if (EXPR_P (_r1))
4987 0 : goto next_after_fail1610;
4988 0 : res_op1 = _r1;
4989 : }
4990 0 : tree res_op2;
4991 0 : {
4992 0 : tree _o1[2], _r1;
4993 0 : _o1[0] = captures[0];
4994 0 : _o1[1] = captures[4];
4995 0 : _r1 = fold_build2_loc (loc, CEIL_DIV_EXPR, type, _o1[0], _o1[1]);
4996 0 : if (EXPR_P (_r1))
4997 0 : goto next_after_fail1610;
4998 0 : res_op2 = _r1;
4999 : }
5000 0 : tree _r;
5001 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5002 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
5003 0 : return _r;
5004 : }
5005 0 : next_after_fail1610:;
5006 : }
5007 : }
5008 0 : break;
5009 : }
5010 : default:;
5011 : }
5012 : return NULL_TREE;
5013 : }
5014 :
5015 : tree
5016 3544629 : generic_simplify_EXACT_DIV_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5017 : {
5018 3544629 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5019 3544629 : if (integer_onep (_p1))
5020 : {
5021 2137578 : {
5022 2137578 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5023 2137578 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5024 2137578 : if (res) return res;
5025 : }
5026 : }
5027 1407051 : switch (TREE_CODE (_p0))
5028 : {
5029 9076 : CASE_CONVERT:
5030 9076 : {
5031 9076 : tree _q20 = TREE_OPERAND (_p0, 0);
5032 9076 : switch (TREE_CODE (_p1))
5033 : {
5034 0 : CASE_CONVERT:
5035 0 : {
5036 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5037 0 : switch (TREE_CODE (_q40))
5038 : {
5039 0 : case LSHIFT_EXPR:
5040 0 : {
5041 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5042 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5043 0 : if (integer_onep (_q50))
5044 : {
5045 0 : {
5046 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q50, _q51 };
5047 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5048 0 : if (res) return res;
5049 : }
5050 : }
5051 : break;
5052 : }
5053 : default:;
5054 : }
5055 : break;
5056 : }
5057 0 : case LSHIFT_EXPR:
5058 0 : {
5059 0 : tree _q40 = TREE_OPERAND (_p1, 0);
5060 0 : tree _q41 = TREE_OPERAND (_p1, 1);
5061 0 : if (integer_onep (_q40))
5062 : {
5063 0 : {
5064 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q41 };
5065 0 : tree res = generic_simplify_315 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5066 0 : if (res) return res;
5067 : }
5068 : }
5069 : break;
5070 : }
5071 : default:;
5072 : }
5073 : break;
5074 : }
5075 1407051 : default:;
5076 : }
5077 1407051 : switch (TREE_CODE (_p1))
5078 : {
5079 2 : CASE_CONVERT:
5080 2 : {
5081 2 : tree _q30 = TREE_OPERAND (_p1, 0);
5082 2 : switch (TREE_CODE (_q30))
5083 : {
5084 0 : case LSHIFT_EXPR:
5085 0 : {
5086 0 : tree _q40 = TREE_OPERAND (_q30, 0);
5087 0 : tree _q41 = TREE_OPERAND (_q30, 1);
5088 0 : if (integer_onep (_q40))
5089 : {
5090 0 : {
5091 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q40, _q41 };
5092 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5093 0 : if (res) return res;
5094 : }
5095 : }
5096 : break;
5097 : }
5098 : default:;
5099 : }
5100 : break;
5101 : }
5102 0 : case LSHIFT_EXPR:
5103 0 : {
5104 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5105 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5106 0 : if (integer_onep (_q30))
5107 : {
5108 0 : {
5109 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q31 };
5110 0 : tree res = generic_simplify_316 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5111 0 : if (res) return res;
5112 : }
5113 : }
5114 : break;
5115 : }
5116 1407051 : default:;
5117 : }
5118 1407051 : if (integer_zerop (_p0))
5119 : {
5120 0 : {
5121 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5122 0 : tree res = generic_simplify_317 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5123 0 : if (res) return res;
5124 : }
5125 : }
5126 1407051 : switch (TREE_CODE (_p1))
5127 : {
5128 0 : case SSA_NAME:
5129 0 : {
5130 0 : {
5131 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5132 0 : tree res = generic_simplify_319 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5133 0 : if (res) return res;
5134 : }
5135 0 : break;
5136 : }
5137 1407051 : default:;
5138 : }
5139 1407051 : if (integer_minus_onep (_p1))
5140 : {
5141 0 : {
5142 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
5143 0 : tree res = generic_simplify_318 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5144 0 : if (res) return res;
5145 : }
5146 : }
5147 1407051 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5148 : {
5149 0 : {
5150 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5151 0 : tree res = generic_simplify_320 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5152 0 : if (res) return res;
5153 : }
5154 : }
5155 1407051 : switch (TREE_CODE (_p1))
5156 : {
5157 0 : case ABS_EXPR:
5158 0 : {
5159 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5160 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5161 : {
5162 0 : {
5163 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5164 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5165 0 : if (res) return res;
5166 : }
5167 : }
5168 : break;
5169 : }
5170 1407051 : default:;
5171 : }
5172 1407051 : switch (TREE_CODE (_p0))
5173 : {
5174 0 : case ABS_EXPR:
5175 0 : {
5176 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5177 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5178 : {
5179 0 : {
5180 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5181 0 : tree res = generic_simplify_321 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5182 0 : if (res) return res;
5183 : }
5184 : }
5185 : break;
5186 : }
5187 1407051 : default:;
5188 : }
5189 1407051 : switch (TREE_CODE (_p1))
5190 : {
5191 0 : case NEGATE_EXPR:
5192 0 : {
5193 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5194 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5195 : {
5196 0 : {
5197 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5198 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5199 0 : if (res) return res;
5200 : }
5201 : }
5202 : break;
5203 : }
5204 1407051 : default:;
5205 : }
5206 1407051 : switch (TREE_CODE (_p0))
5207 : {
5208 1241 : case NEGATE_EXPR:
5209 1241 : {
5210 1241 : tree _q20 = TREE_OPERAND (_p0, 0);
5211 1241 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5212 : {
5213 0 : {
5214 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5215 0 : tree res = generic_simplify_322 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5216 0 : if (res) return res;
5217 : }
5218 : }
5219 : break;
5220 : }
5221 0 : case EXACT_DIV_EXPR:
5222 0 : {
5223 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5224 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5225 0 : switch (TREE_CODE (_q21))
5226 : {
5227 0 : case INTEGER_CST:
5228 0 : {
5229 0 : switch (TREE_CODE (_p1))
5230 : {
5231 0 : case INTEGER_CST:
5232 0 : {
5233 0 : {
5234 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5235 0 : tree res = generic_simplify_323 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5236 0 : if (res) return res;
5237 : }
5238 0 : break;
5239 : }
5240 : default:;
5241 : }
5242 : break;
5243 : }
5244 : default:;
5245 : }
5246 : break;
5247 : }
5248 9076 : CASE_CONVERT:
5249 9076 : {
5250 9076 : tree _q20 = TREE_OPERAND (_p0, 0);
5251 9076 : switch (TREE_CODE (_q20))
5252 : {
5253 0 : case BIT_AND_EXPR:
5254 0 : {
5255 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5256 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5257 0 : switch (TREE_CODE (_q31))
5258 : {
5259 0 : case INTEGER_CST:
5260 0 : {
5261 0 : switch (TREE_CODE (_p1))
5262 : {
5263 0 : case INTEGER_CST:
5264 0 : {
5265 0 : {
5266 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
5267 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5268 0 : if (res) return res;
5269 : }
5270 0 : break;
5271 : }
5272 : default:;
5273 : }
5274 : break;
5275 : }
5276 : default:;
5277 : }
5278 : break;
5279 : }
5280 : default:;
5281 : }
5282 : break;
5283 : }
5284 0 : case BIT_AND_EXPR:
5285 0 : {
5286 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5287 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5288 0 : switch (TREE_CODE (_q21))
5289 : {
5290 0 : case INTEGER_CST:
5291 0 : {
5292 0 : switch (TREE_CODE (_p1))
5293 : {
5294 0 : case INTEGER_CST:
5295 0 : {
5296 0 : {
5297 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5298 0 : tree res = generic_simplify_324 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5299 0 : if (res) return res;
5300 : }
5301 0 : break;
5302 : }
5303 : default:;
5304 : }
5305 : break;
5306 : }
5307 : default:;
5308 : }
5309 : break;
5310 : }
5311 19454 : case MULT_EXPR:
5312 19454 : {
5313 19454 : tree _q20 = TREE_OPERAND (_p0, 0);
5314 19454 : tree _q21 = TREE_OPERAND (_p0, 1);
5315 19454 : if (integer_pow2p (_q21))
5316 : {
5317 18228 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5318 : {
5319 18200 : {
5320 18200 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5321 18200 : tree res = generic_simplify_325 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5322 18200 : if (res) return res;
5323 : }
5324 : }
5325 : }
5326 1261 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5327 : {
5328 7 : {
5329 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5330 7 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5331 7 : if (res) return res;
5332 : }
5333 : }
5334 1254 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5335 : {
5336 0 : {
5337 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5338 0 : tree res = generic_simplify_326 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5339 0 : if (res) return res;
5340 : }
5341 : }
5342 1254 : switch (TREE_CODE (_q21))
5343 : {
5344 1254 : case INTEGER_CST:
5345 1254 : {
5346 1254 : switch (TREE_CODE (_p1))
5347 : {
5348 0 : case MULT_EXPR:
5349 0 : {
5350 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5351 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5352 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5353 : {
5354 0 : switch (TREE_CODE (_q51))
5355 : {
5356 0 : case INTEGER_CST:
5357 0 : {
5358 0 : {
5359 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5360 0 : tree res = generic_simplify_327 (loc, type, _p0, _p1, captures, EXACT_DIV_EXPR);
5361 0 : if (res) return res;
5362 : }
5363 0 : break;
5364 : }
5365 : default:;
5366 : }
5367 : }
5368 : break;
5369 : }
5370 : default:;
5371 : }
5372 : break;
5373 : }
5374 : default:;
5375 : }
5376 : break;
5377 : }
5378 0 : case VEC_COND_EXPR:
5379 0 : {
5380 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5381 0 : tree _q21 = TREE_OPERAND (_p0, 1);
5382 0 : tree _q22 = TREE_OPERAND (_p0, 2);
5383 0 : switch (TREE_CODE (_p1))
5384 : {
5385 0 : case VEC_COND_EXPR:
5386 0 : {
5387 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5388 0 : tree _q61 = TREE_OPERAND (_p1, 1);
5389 0 : tree _q62 = TREE_OPERAND (_p1, 2);
5390 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5391 : {
5392 0 : {
5393 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
5394 0 : if (VECTOR_TYPE_P (type)
5395 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5396 : || types_match (type, TREE_TYPE (captures[2]))
5397 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5398 : || (optimize_vectors_before_lowering_p ()
5399 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5400 : )
5401 : {
5402 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1617;
5403 0 : {
5404 0 : tree res_op0;
5405 0 : res_op0 = captures[1];
5406 0 : tree res_op1;
5407 0 : {
5408 0 : tree _o1[2], _r1;
5409 0 : _o1[0] = captures[2];
5410 0 : _o1[1] = captures[5];
5411 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5412 0 : if (EXPR_P (_r1))
5413 0 : goto next_after_fail1617;
5414 0 : res_op1 = _r1;
5415 : }
5416 0 : tree res_op2;
5417 0 : {
5418 0 : tree _o1[2], _r1;
5419 0 : _o1[0] = captures[3];
5420 0 : _o1[1] = captures[6];
5421 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5422 0 : if (EXPR_P (_r1))
5423 0 : goto next_after_fail1617;
5424 0 : res_op2 = _r1;
5425 : }
5426 0 : tree _r;
5427 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5428 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
5429 0 : return _r;
5430 : }
5431 0 : next_after_fail1617:;
5432 : }
5433 : }
5434 : }
5435 : break;
5436 : }
5437 0 : default:;
5438 : }
5439 0 : {
5440 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
5441 0 : if (VECTOR_TYPE_P (type)
5442 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5443 : || types_match (type, TREE_TYPE (captures[2]))
5444 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
5445 : || (optimize_vectors_before_lowering_p ()
5446 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
5447 : )
5448 : {
5449 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1618;
5450 0 : {
5451 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1618;
5452 0 : tree res_op0;
5453 0 : res_op0 = captures[1];
5454 0 : tree res_op1;
5455 0 : {
5456 0 : tree _o1[2], _r1;
5457 0 : _o1[0] = captures[2];
5458 0 : _o1[1] = unshare_expr (captures[4]);
5459 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5460 0 : if (EXPR_P (_r1))
5461 0 : goto next_after_fail1618;
5462 0 : res_op1 = _r1;
5463 : }
5464 0 : tree res_op2;
5465 0 : {
5466 0 : tree _o1[2], _r1;
5467 0 : _o1[0] = captures[3];
5468 0 : _o1[1] = captures[4];
5469 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5470 0 : if (EXPR_P (_r1))
5471 0 : goto next_after_fail1618;
5472 0 : res_op2 = _r1;
5473 : }
5474 0 : tree _r;
5475 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5476 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
5477 0 : return _r;
5478 : }
5479 0 : next_after_fail1618:;
5480 : }
5481 : }
5482 0 : break;
5483 : }
5484 1388851 : default:;
5485 : }
5486 1388851 : switch (TREE_CODE (_p1))
5487 : {
5488 0 : case VEC_COND_EXPR:
5489 0 : {
5490 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5491 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5492 0 : tree _q32 = TREE_OPERAND (_p1, 2);
5493 0 : {
5494 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
5495 0 : if (VECTOR_TYPE_P (type)
5496 0 : && (TREE_CODE_CLASS (EXACT_DIV_EXPR) != tcc_comparison
5497 : || types_match (type, TREE_TYPE (captures[3]))
5498 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
5499 : || (optimize_vectors_before_lowering_p ()
5500 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
5501 : )
5502 : {
5503 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1619;
5504 0 : {
5505 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1619;
5506 0 : tree res_op0;
5507 0 : res_op0 = captures[2];
5508 0 : tree res_op1;
5509 0 : {
5510 0 : tree _o1[2], _r1;
5511 0 : _o1[0] = unshare_expr (captures[0]);
5512 0 : _o1[1] = captures[3];
5513 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5514 0 : if (EXPR_P (_r1))
5515 0 : goto next_after_fail1619;
5516 0 : res_op1 = _r1;
5517 : }
5518 0 : tree res_op2;
5519 0 : {
5520 0 : tree _o1[2], _r1;
5521 0 : _o1[0] = captures[0];
5522 0 : _o1[1] = captures[4];
5523 0 : _r1 = fold_build2_loc (loc, EXACT_DIV_EXPR, type, _o1[0], _o1[1]);
5524 0 : if (EXPR_P (_r1))
5525 0 : goto next_after_fail1619;
5526 0 : res_op2 = _r1;
5527 : }
5528 0 : tree _r;
5529 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
5530 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
5531 0 : return _r;
5532 : }
5533 0 : next_after_fail1619:;
5534 : }
5535 : }
5536 0 : break;
5537 : }
5538 : default:;
5539 : }
5540 : return NULL_TREE;
5541 : }
5542 :
5543 : tree
5544 9354494 : generic_simplify_LE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
5545 : {
5546 9354494 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
5547 9354494 : switch (TREE_CODE (_p0))
5548 : {
5549 2314 : case RDIV_EXPR:
5550 2314 : {
5551 2314 : tree _q20 = TREE_OPERAND (_p0, 0);
5552 2314 : tree _q21 = TREE_OPERAND (_p0, 1);
5553 2314 : switch (TREE_CODE (_q20))
5554 : {
5555 544 : case REAL_CST:
5556 544 : {
5557 544 : if (real_zerop (_p1))
5558 : {
5559 2 : {
5560 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5561 2 : tree res = generic_simplify_380 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
5562 2 : if (res) return res;
5563 : }
5564 : }
5565 : break;
5566 : }
5567 : default:;
5568 : }
5569 : break;
5570 : }
5571 9354492 : default:;
5572 : }
5573 9354492 : switch (TREE_CODE (_p1))
5574 : {
5575 7 : case TRUNC_MOD_EXPR:
5576 7 : {
5577 7 : tree _q30 = TREE_OPERAND (_p1, 0);
5578 7 : tree _q31 = TREE_OPERAND (_p1, 1);
5579 7 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5580 : {
5581 0 : {
5582 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
5583 0 : tree res = generic_simplify_381 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR);
5584 0 : if (res) return res;
5585 : }
5586 : }
5587 : break;
5588 : }
5589 9354492 : default:;
5590 : }
5591 9354492 : switch (TREE_CODE (_p0))
5592 : {
5593 62697 : case MULT_EXPR:
5594 62697 : {
5595 62697 : tree _q20 = TREE_OPERAND (_p0, 0);
5596 62697 : tree _q21 = TREE_OPERAND (_p0, 1);
5597 62697 : switch (TREE_CODE (_p1))
5598 : {
5599 2714 : case MULT_EXPR:
5600 2714 : {
5601 2714 : tree _q50 = TREE_OPERAND (_p1, 0);
5602 2714 : tree _q51 = TREE_OPERAND (_p1, 1);
5603 2714 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5604 : {
5605 1901 : {
5606 1901 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5607 1901 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5608 1901 : if (res) return res;
5609 : }
5610 : }
5611 1719 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5612 : {
5613 1 : {
5614 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5615 1 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5616 1 : if (res) return res;
5617 : }
5618 : }
5619 1719 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5620 : {
5621 4 : {
5622 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5623 4 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5624 4 : if (res) return res;
5625 : }
5626 : }
5627 1719 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5628 : {
5629 307 : {
5630 307 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5631 307 : tree res = generic_simplify_382 (loc, type, _p0, _p1, captures, LE_EXPR);
5632 307 : if (res) return res;
5633 : }
5634 : }
5635 : break;
5636 : }
5637 : default:;
5638 : }
5639 : break;
5640 : }
5641 1630195 : case PLUS_EXPR:
5642 1630195 : {
5643 1630195 : tree _q20 = TREE_OPERAND (_p0, 0);
5644 1630195 : tree _q21 = TREE_OPERAND (_p0, 1);
5645 1630195 : if (integer_minus_onep (_q21))
5646 : {
5647 530950 : switch (TREE_CODE (_p1))
5648 : {
5649 331717 : case INTEGER_CST:
5650 331717 : {
5651 331717 : {
5652 331717 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5653 331717 : tree res = generic_simplify_411 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
5654 331717 : if (res) return res;
5655 : }
5656 331715 : break;
5657 : }
5658 : default:;
5659 : }
5660 : }
5661 1630193 : switch (TREE_CODE (_p1))
5662 : {
5663 91127 : case PLUS_EXPR:
5664 91127 : {
5665 91127 : tree _q50 = TREE_OPERAND (_p1, 0);
5666 91127 : tree _q51 = TREE_OPERAND (_p1, 1);
5667 91127 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5668 : {
5669 7199 : {
5670 7199 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5671 7199 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5672 7199 : if (res) return res;
5673 : }
5674 : }
5675 86923 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5676 : {
5677 13 : {
5678 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5679 13 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5680 13 : if (res) return res;
5681 : }
5682 : }
5683 86923 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
5684 : {
5685 213 : {
5686 213 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
5687 213 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5688 213 : if (res) return res;
5689 : }
5690 : }
5691 86923 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5692 : {
5693 7737 : {
5694 7737 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5695 7737 : tree res = generic_simplify_383 (loc, type, _p0, _p1, captures, LE_EXPR);
5696 7737 : if (res) return res;
5697 : }
5698 : }
5699 : break;
5700 : }
5701 1625390 : default:;
5702 : }
5703 1625390 : switch (TREE_CODE (_q21))
5704 : {
5705 1498861 : case INTEGER_CST:
5706 1498861 : {
5707 1498861 : switch (TREE_CODE (_p1))
5708 : {
5709 84262 : case PLUS_EXPR:
5710 84262 : {
5711 84262 : tree _q50 = TREE_OPERAND (_p1, 0);
5712 84262 : tree _q51 = TREE_OPERAND (_p1, 1);
5713 84262 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5714 : {
5715 2937 : {
5716 2937 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5717 2937 : tree res = generic_simplify_384 (loc, type, _p0, _p1, captures, LE_EXPR);
5718 2937 : if (res) return res;
5719 : }
5720 : }
5721 : break;
5722 : }
5723 : default:;
5724 : }
5725 : break;
5726 : }
5727 1625390 : default:;
5728 : }
5729 1625390 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5730 : {
5731 69705 : {
5732 69705 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5733 69705 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR);
5734 69705 : if (res) return res;
5735 : }
5736 : }
5737 1586478 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5738 : {
5739 3130 : {
5740 3130 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
5741 3130 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, LE_EXPR);
5742 3130 : if (res) return res;
5743 : }
5744 : }
5745 : break;
5746 : }
5747 1669608 : CASE_CONVERT:
5748 1669608 : {
5749 1669608 : tree _q20 = TREE_OPERAND (_p0, 0);
5750 1669608 : switch (TREE_CODE (_q20))
5751 : {
5752 0 : case EXACT_DIV_EXPR:
5753 0 : {
5754 0 : tree _q30 = TREE_OPERAND (_q20, 0);
5755 0 : tree _q31 = TREE_OPERAND (_q20, 1);
5756 0 : switch (TREE_CODE (_q31))
5757 : {
5758 0 : case INTEGER_CST:
5759 0 : {
5760 0 : switch (TREE_CODE (_p1))
5761 : {
5762 0 : CASE_CONVERT:
5763 0 : {
5764 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5765 0 : switch (TREE_CODE (_q60))
5766 : {
5767 0 : case EXACT_DIV_EXPR:
5768 0 : {
5769 0 : tree _q70 = TREE_OPERAND (_q60, 0);
5770 0 : tree _q71 = TREE_OPERAND (_q60, 1);
5771 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
5772 : {
5773 0 : {
5774 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
5775 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, LE_EXPR);
5776 0 : if (res) return res;
5777 : }
5778 : }
5779 : break;
5780 : }
5781 : default:;
5782 : }
5783 : break;
5784 : }
5785 : default:;
5786 : }
5787 : break;
5788 : }
5789 : default:;
5790 : }
5791 : break;
5792 : }
5793 : default:;
5794 : }
5795 : break;
5796 : }
5797 476 : case EXACT_DIV_EXPR:
5798 476 : {
5799 476 : tree _q20 = TREE_OPERAND (_p0, 0);
5800 476 : tree _q21 = TREE_OPERAND (_p0, 1);
5801 476 : switch (TREE_CODE (_q21))
5802 : {
5803 476 : case INTEGER_CST:
5804 476 : {
5805 476 : switch (TREE_CODE (_p1))
5806 : {
5807 0 : case EXACT_DIV_EXPR:
5808 0 : {
5809 0 : tree _q50 = TREE_OPERAND (_p1, 0);
5810 0 : tree _q51 = TREE_OPERAND (_p1, 1);
5811 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5812 : {
5813 0 : {
5814 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5815 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, LE_EXPR);
5816 0 : if (res) return res;
5817 : }
5818 : }
5819 : break;
5820 : }
5821 : default:;
5822 : }
5823 : break;
5824 : }
5825 : default:;
5826 : }
5827 : break;
5828 : }
5829 10912 : case TRUNC_DIV_EXPR:
5830 10912 : {
5831 10912 : tree _q20 = TREE_OPERAND (_p0, 0);
5832 10912 : tree _q21 = TREE_OPERAND (_p0, 1);
5833 10912 : switch (TREE_CODE (_q21))
5834 : {
5835 2772 : case INTEGER_CST:
5836 2772 : {
5837 2772 : switch (TREE_CODE (_p1))
5838 : {
5839 1345 : case INTEGER_CST:
5840 1345 : {
5841 1345 : {
5842 1345 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
5843 1345 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, LE_EXPR);
5844 1345 : if (res) return res;
5845 : }
5846 679 : break;
5847 : }
5848 : default:;
5849 : }
5850 : break;
5851 : }
5852 : default:;
5853 : }
5854 : break;
5855 : }
5856 65955 : case MINUS_EXPR:
5857 65955 : {
5858 65955 : tree _q20 = TREE_OPERAND (_p0, 0);
5859 65955 : tree _q21 = TREE_OPERAND (_p0, 1);
5860 65955 : switch (TREE_CODE (_p1))
5861 : {
5862 490 : case MINUS_EXPR:
5863 490 : {
5864 490 : tree _q50 = TREE_OPERAND (_p1, 0);
5865 490 : tree _q51 = TREE_OPERAND (_p1, 1);
5866 490 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5867 : {
5868 54 : {
5869 54 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5870 54 : tree res = generic_simplify_386 (loc, type, _p0, _p1, captures, LE_EXPR);
5871 54 : if (res) return res;
5872 : }
5873 : }
5874 490 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5875 : {
5876 26 : {
5877 26 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5878 26 : tree res = generic_simplify_387 (loc, type, _p0, _p1, captures, LE_EXPR);
5879 26 : if (res) return res;
5880 : }
5881 : }
5882 : break;
5883 : }
5884 : default:;
5885 : }
5886 : break;
5887 : }
5888 5471 : case POINTER_DIFF_EXPR:
5889 5471 : {
5890 5471 : tree _q20 = TREE_OPERAND (_p0, 0);
5891 5471 : tree _q21 = TREE_OPERAND (_p0, 1);
5892 5471 : switch (TREE_CODE (_p1))
5893 : {
5894 259 : case POINTER_DIFF_EXPR:
5895 259 : {
5896 259 : tree _q50 = TREE_OPERAND (_p1, 0);
5897 259 : tree _q51 = TREE_OPERAND (_p1, 1);
5898 259 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5899 : {
5900 0 : {
5901 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5902 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, LE_EXPR);
5903 0 : if (res) return res;
5904 : }
5905 : }
5906 259 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5907 : {
5908 0 : {
5909 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5910 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, LE_EXPR);
5911 0 : if (res) return res;
5912 : }
5913 : }
5914 : break;
5915 : }
5916 : default:;
5917 : }
5918 : break;
5919 : }
5920 9308803 : default:;
5921 : }
5922 9308803 : switch (TREE_CODE (_p1))
5923 : {
5924 123112 : case PLUS_EXPR:
5925 123112 : {
5926 123112 : tree _q30 = TREE_OPERAND (_p1, 0);
5927 123112 : tree _q31 = TREE_OPERAND (_p1, 1);
5928 123112 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5929 : {
5930 0 : {
5931 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
5932 0 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR);
5933 0 : if (res) return res;
5934 : }
5935 : }
5936 123112 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5937 : {
5938 57 : {
5939 57 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
5940 57 : tree res = generic_simplify_385 (loc, type, _p0, _p1, captures, GE_EXPR);
5941 57 : if (res) return res;
5942 : }
5943 : }
5944 : break;
5945 : }
5946 1196 : case MINUS_EXPR:
5947 1196 : {
5948 1196 : tree _q30 = TREE_OPERAND (_p1, 0);
5949 1196 : tree _q31 = TREE_OPERAND (_p1, 1);
5950 1196 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5951 : {
5952 0 : {
5953 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5954 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, LE_EXPR);
5955 0 : if (res) return res;
5956 : }
5957 : }
5958 : break;
5959 : }
5960 9308776 : default:;
5961 : }
5962 9308776 : switch (TREE_CODE (_p0))
5963 : {
5964 65955 : case MINUS_EXPR:
5965 65955 : {
5966 65955 : tree _q20 = TREE_OPERAND (_p0, 0);
5967 65955 : tree _q21 = TREE_OPERAND (_p0, 1);
5968 65955 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5969 : {
5970 2509 : {
5971 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5972 2509 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, GE_EXPR);
5973 2509 : if (res) return res;
5974 : }
5975 : }
5976 : break;
5977 : }
5978 5433 : case BIT_AND_EXPR:
5979 5433 : {
5980 5433 : tree _q20 = TREE_OPERAND (_p0, 0);
5981 5433 : tree _q21 = TREE_OPERAND (_p0, 1);
5982 5433 : if (tree_expr_nonnegative_p (_q20))
5983 : {
5984 4509 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5985 : {
5986 0 : {
5987 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5988 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
5989 0 : if (res) return res;
5990 : }
5991 : }
5992 : }
5993 5433 : if (tree_expr_nonnegative_p (_q21))
5994 : {
5995 5040 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5996 : {
5997 0 : {
5998 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
5999 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, LE_EXPR, BIT_AND_EXPR);
6000 0 : if (res) return res;
6001 : }
6002 : }
6003 : }
6004 : break;
6005 : }
6006 9308776 : default:;
6007 : }
6008 9308776 : switch (TREE_CODE (_p1))
6009 : {
6010 46 : case BIT_IOR_EXPR:
6011 46 : {
6012 46 : tree _q30 = TREE_OPERAND (_p1, 0);
6013 46 : tree _q31 = TREE_OPERAND (_p1, 1);
6014 46 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6015 : {
6016 0 : if (tree_expr_nonnegative_p (_q30))
6017 : {
6018 0 : {
6019 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6020 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
6021 0 : if (res) return res;
6022 : }
6023 : }
6024 : }
6025 46 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6026 : {
6027 0 : if (tree_expr_nonnegative_p (_q31))
6028 : {
6029 0 : {
6030 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6031 0 : tree res = generic_simplify_388 (loc, type, _p0, _p1, captures, GE_EXPR, BIT_IOR_EXPR);
6032 0 : if (res) return res;
6033 : }
6034 : }
6035 : }
6036 : break;
6037 : }
6038 9308776 : default:;
6039 : }
6040 9308776 : switch (TREE_CODE (_p0))
6041 : {
6042 10425 : case MIN_EXPR:
6043 10425 : {
6044 10425 : tree _q20 = TREE_OPERAND (_p0, 0);
6045 10425 : tree _q21 = TREE_OPERAND (_p0, 1);
6046 10425 : switch (TREE_CODE (_p1))
6047 : {
6048 32 : case MAX_EXPR:
6049 32 : {
6050 32 : tree _q50 = TREE_OPERAND (_p1, 0);
6051 32 : tree _q51 = TREE_OPERAND (_p1, 1);
6052 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6053 : {
6054 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6055 : {
6056 0 : {
6057 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6058 0 : tree res = generic_simplify_389 (loc, type, _p0, _p1, captures, LE_EXPR);
6059 0 : if (res) return res;
6060 : }
6061 : }
6062 : }
6063 : break;
6064 : }
6065 : default:;
6066 : }
6067 : break;
6068 : }
6069 4392 : case MAX_EXPR:
6070 4392 : {
6071 4392 : tree _q20 = TREE_OPERAND (_p0, 0);
6072 4392 : tree _q21 = TREE_OPERAND (_p0, 1);
6073 4392 : switch (TREE_CODE (_p1))
6074 : {
6075 4 : case MIN_EXPR:
6076 4 : {
6077 4 : tree _q50 = TREE_OPERAND (_p1, 0);
6078 4 : tree _q51 = TREE_OPERAND (_p1, 1);
6079 4 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6080 : {
6081 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6082 : {
6083 0 : {
6084 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6085 0 : tree res = generic_simplify_390 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
6086 0 : if (res) return res;
6087 : }
6088 : }
6089 : }
6090 : break;
6091 : }
6092 4392 : default:;
6093 : }
6094 4392 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6095 : {
6096 0 : {
6097 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6098 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6099 0 : if (res) return res;
6100 : }
6101 : }
6102 4392 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6103 : {
6104 1 : {
6105 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6106 1 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, GE_EXPR);
6107 1 : if (res) return res;
6108 : }
6109 : }
6110 : break;
6111 : }
6112 9308775 : default:;
6113 : }
6114 9308775 : switch (TREE_CODE (_p1))
6115 : {
6116 308 : case MIN_EXPR:
6117 308 : {
6118 308 : tree _q30 = TREE_OPERAND (_p1, 0);
6119 308 : tree _q31 = TREE_OPERAND (_p1, 1);
6120 308 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6121 : {
6122 0 : {
6123 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6124 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6125 0 : if (res) return res;
6126 : }
6127 : }
6128 308 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6129 : {
6130 0 : {
6131 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6132 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR, LE_EXPR);
6133 0 : if (res) return res;
6134 : }
6135 : }
6136 : break;
6137 : }
6138 42 : case MAX_EXPR:
6139 42 : {
6140 42 : tree _q30 = TREE_OPERAND (_p1, 0);
6141 42 : tree _q31 = TREE_OPERAND (_p1, 1);
6142 42 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6143 : {
6144 0 : {
6145 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6146 0 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6147 0 : if (res) return res;
6148 : }
6149 : }
6150 42 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6151 : {
6152 0 : {
6153 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6154 0 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR);
6155 0 : if (res) return res;
6156 : }
6157 : }
6158 : break;
6159 : }
6160 9308775 : default:;
6161 : }
6162 9308775 : switch (TREE_CODE (_p0))
6163 : {
6164 10425 : case MIN_EXPR:
6165 10425 : {
6166 10425 : tree _q20 = TREE_OPERAND (_p0, 0);
6167 10425 : tree _q21 = TREE_OPERAND (_p0, 1);
6168 10425 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6169 : {
6170 0 : {
6171 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6172 0 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6173 0 : if (res) return res;
6174 : }
6175 : }
6176 10425 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6177 : {
6178 0 : {
6179 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6180 0 : tree res = generic_simplify_391 (loc, type, _p0, _p1, captures, MIN_EXPR, GE_EXPR);
6181 0 : if (res) return res;
6182 : }
6183 : }
6184 10425 : switch (TREE_CODE (_q21))
6185 : {
6186 939 : case INTEGER_CST:
6187 939 : {
6188 939 : switch (TREE_CODE (_p1))
6189 : {
6190 0 : case INTEGER_CST:
6191 0 : {
6192 0 : {
6193 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6194 0 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, MIN_EXPR, LE_EXPR, BIT_IOR_EXPR);
6195 0 : if (res) return res;
6196 : }
6197 0 : break;
6198 : }
6199 : default:;
6200 : }
6201 : break;
6202 : }
6203 : default:;
6204 : }
6205 : break;
6206 : }
6207 4391 : case MAX_EXPR:
6208 4391 : {
6209 4391 : tree _q20 = TREE_OPERAND (_p0, 0);
6210 4391 : tree _q21 = TREE_OPERAND (_p0, 1);
6211 4391 : switch (TREE_CODE (_q21))
6212 : {
6213 4151 : case INTEGER_CST:
6214 4151 : {
6215 4151 : switch (TREE_CODE (_p1))
6216 : {
6217 0 : case INTEGER_CST:
6218 0 : {
6219 0 : {
6220 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6221 0 : tree res = generic_simplify_392 (loc, type, _p0, _p1, captures, MAX_EXPR, LE_EXPR, BIT_AND_EXPR);
6222 0 : if (res) return res;
6223 : }
6224 0 : break;
6225 : }
6226 : default:;
6227 : }
6228 : break;
6229 : }
6230 : default:;
6231 : }
6232 : break;
6233 : }
6234 9 : case VEC_COND_EXPR:
6235 9 : {
6236 9 : tree _q20 = TREE_OPERAND (_p0, 0);
6237 9 : tree _q21 = TREE_OPERAND (_p0, 1);
6238 9 : tree _q22 = TREE_OPERAND (_p0, 2);
6239 9 : switch (TREE_CODE (_p1))
6240 : {
6241 2 : case VEC_COND_EXPR:
6242 2 : {
6243 2 : tree _q60 = TREE_OPERAND (_p1, 0);
6244 2 : tree _q61 = TREE_OPERAND (_p1, 1);
6245 2 : tree _q62 = TREE_OPERAND (_p1, 2);
6246 2 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6247 : {
6248 0 : {
6249 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
6250 0 : if (VECTOR_TYPE_P (type)
6251 0 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6252 0 : || types_match (type, TREE_TYPE (captures[2]))
6253 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6254 : || (optimize_vectors_before_lowering_p ()
6255 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6256 : )
6257 : {
6258 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1665;
6259 0 : {
6260 0 : tree res_op0;
6261 0 : res_op0 = captures[1];
6262 0 : tree res_op1;
6263 0 : {
6264 0 : tree _o1[2], _r1;
6265 0 : _o1[0] = captures[2];
6266 0 : _o1[1] = captures[5];
6267 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6268 0 : if (EXPR_P (_r1))
6269 0 : goto next_after_fail1665;
6270 0 : res_op1 = _r1;
6271 : }
6272 0 : tree res_op2;
6273 0 : {
6274 0 : tree _o1[2], _r1;
6275 0 : _o1[0] = captures[3];
6276 0 : _o1[1] = captures[6];
6277 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6278 0 : if (EXPR_P (_r1))
6279 0 : goto next_after_fail1665;
6280 0 : res_op2 = _r1;
6281 : }
6282 0 : tree _r;
6283 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6284 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
6285 0 : return _r;
6286 : }
6287 0 : next_after_fail1665:;
6288 : }
6289 : }
6290 : }
6291 : break;
6292 : }
6293 9 : default:;
6294 : }
6295 9 : {
6296 9 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
6297 9 : if (VECTOR_TYPE_P (type)
6298 9 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6299 9 : || types_match (type, TREE_TYPE (captures[2]))
6300 9 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
6301 : || (optimize_vectors_before_lowering_p ()
6302 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
6303 : )
6304 : {
6305 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1666;
6306 9 : {
6307 9 : if (! tree_invariant_p (captures[4])) goto next_after_fail1666;
6308 7 : tree res_op0;
6309 7 : res_op0 = captures[1];
6310 7 : tree res_op1;
6311 7 : {
6312 7 : tree _o1[2], _r1;
6313 7 : _o1[0] = captures[2];
6314 7 : _o1[1] = unshare_expr (captures[4]);
6315 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6316 7 : if (EXPR_P (_r1))
6317 0 : goto next_after_fail1666;
6318 7 : res_op1 = _r1;
6319 : }
6320 7 : tree res_op2;
6321 7 : {
6322 7 : tree _o1[2], _r1;
6323 7 : _o1[0] = captures[3];
6324 7 : _o1[1] = captures[4];
6325 7 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6326 7 : if (EXPR_P (_r1))
6327 0 : goto next_after_fail1666;
6328 7 : res_op2 = _r1;
6329 : }
6330 7 : tree _r;
6331 7 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6332 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
6333 7 : return _r;
6334 : }
6335 2 : next_after_fail1666:;
6336 : }
6337 : }
6338 2 : break;
6339 : }
6340 9308768 : default:;
6341 : }
6342 9308768 : switch (TREE_CODE (_p1))
6343 : {
6344 2 : case VEC_COND_EXPR:
6345 2 : {
6346 2 : tree _q30 = TREE_OPERAND (_p1, 0);
6347 2 : tree _q31 = TREE_OPERAND (_p1, 1);
6348 2 : tree _q32 = TREE_OPERAND (_p1, 2);
6349 2 : {
6350 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
6351 2 : if (VECTOR_TYPE_P (type)
6352 2 : && (TREE_CODE_CLASS (LE_EXPR) != tcc_comparison
6353 2 : || types_match (type, TREE_TYPE (captures[3]))
6354 2 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
6355 : || (optimize_vectors_before_lowering_p ()
6356 1 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
6357 : )
6358 : {
6359 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1667;
6360 2 : {
6361 2 : if (! tree_invariant_p (captures[0])) goto next_after_fail1667;
6362 0 : tree res_op0;
6363 0 : res_op0 = captures[2];
6364 0 : tree res_op1;
6365 0 : {
6366 0 : tree _o1[2], _r1;
6367 0 : _o1[0] = unshare_expr (captures[0]);
6368 0 : _o1[1] = captures[3];
6369 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6370 0 : if (EXPR_P (_r1))
6371 0 : goto next_after_fail1667;
6372 0 : res_op1 = _r1;
6373 : }
6374 0 : tree res_op2;
6375 0 : {
6376 0 : tree _o1[2], _r1;
6377 0 : _o1[0] = captures[0];
6378 0 : _o1[1] = captures[4];
6379 0 : _r1 = fold_build2_loc (loc, LE_EXPR, type, _o1[0], _o1[1]);
6380 0 : if (EXPR_P (_r1))
6381 0 : goto next_after_fail1667;
6382 0 : res_op2 = _r1;
6383 : }
6384 0 : tree _r;
6385 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
6386 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
6387 0 : return _r;
6388 : }
6389 2 : next_after_fail1667:;
6390 : }
6391 : }
6392 2 : break;
6393 : }
6394 9308768 : default:;
6395 : }
6396 9308768 : if (uniform_integer_cst_p (_p1))
6397 : {
6398 6794473 : {
6399 6794473 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6400 6794473 : tree res = generic_simplify_412 (loc, type, _p0, _p1, captures, LE_EXPR, LT_EXPR);
6401 6794473 : if (res) return res;
6402 : }
6403 : }
6404 9211221 : switch (TREE_CODE (_p0))
6405 : {
6406 61281 : case MULT_EXPR:
6407 61281 : {
6408 61281 : tree _q20 = TREE_OPERAND (_p0, 0);
6409 61281 : tree _q21 = TREE_OPERAND (_p0, 1);
6410 61281 : switch (TREE_CODE (_q21))
6411 : {
6412 53412 : case INTEGER_CST:
6413 53412 : {
6414 53412 : if (integer_zerop (_p1))
6415 : {
6416 808 : {
6417 808 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6418 808 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6419 808 : if (res) return res;
6420 : }
6421 : }
6422 : break;
6423 : }
6424 : default:;
6425 : }
6426 : break;
6427 : }
6428 9210580 : default:;
6429 : }
6430 9210580 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6431 : {
6432 4591 : {
6433 4591 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6434 4591 : tree res = generic_simplify_257 (loc, type, _p0, _p1, captures, LE_EXPR);
6435 4591 : if (res) return res;
6436 : }
6437 : }
6438 9206026 : switch (TREE_CODE (_p0))
6439 : {
6440 2592 : case BIT_NOT_EXPR:
6441 2592 : {
6442 2592 : tree _q20 = TREE_OPERAND (_p0, 0);
6443 2592 : switch (TREE_CODE (_p1))
6444 : {
6445 0 : case BIT_NOT_EXPR:
6446 0 : {
6447 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6448 0 : {
6449 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
6450 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, LE_EXPR);
6451 0 : if (res) return res;
6452 : }
6453 0 : break;
6454 : }
6455 2592 : default:;
6456 : }
6457 2592 : {
6458 2592 : tree _p1_pops[1];
6459 2592 : if (tree_nop_convert (_p1, _p1_pops))
6460 : {
6461 0 : tree _q40 = _p1_pops[0];
6462 0 : switch (TREE_CODE (_q40))
6463 : {
6464 0 : case BIT_NOT_EXPR:
6465 0 : {
6466 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6467 0 : {
6468 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
6469 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, LE_EXPR);
6470 0 : if (res) return res;
6471 : }
6472 0 : break;
6473 : }
6474 : default:;
6475 : }
6476 : }
6477 : }
6478 2592 : if (CONSTANT_CLASS_P (_p1))
6479 : {
6480 2300 : {
6481 2300 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6482 2300 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6483 2300 : if (res) return res;
6484 : }
6485 : }
6486 : break;
6487 : }
6488 9203726 : default:;
6489 : }
6490 9203726 : {
6491 9203726 : tree _p0_pops[1];
6492 9203726 : if (tree_nop_convert (_p0, _p0_pops))
6493 : {
6494 844948 : tree _q20 = _p0_pops[0];
6495 844948 : switch (TREE_CODE (_q20))
6496 : {
6497 0 : case BIT_NOT_EXPR:
6498 0 : {
6499 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6500 0 : switch (TREE_CODE (_p1))
6501 : {
6502 0 : case BIT_NOT_EXPR:
6503 0 : {
6504 0 : tree _q50 = TREE_OPERAND (_p1, 0);
6505 0 : {
6506 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
6507 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR);
6508 0 : if (res) return res;
6509 : }
6510 0 : break;
6511 : }
6512 0 : default:;
6513 : }
6514 0 : {
6515 0 : tree _p1_pops[1];
6516 0 : if (tree_nop_convert (_p1, _p1_pops))
6517 : {
6518 0 : tree _q50 = _p1_pops[0];
6519 0 : switch (TREE_CODE (_q50))
6520 : {
6521 0 : case BIT_NOT_EXPR:
6522 0 : {
6523 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6524 0 : {
6525 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
6526 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, LE_EXPR);
6527 0 : if (res) return res;
6528 : }
6529 0 : break;
6530 : }
6531 : default:;
6532 : }
6533 : }
6534 : }
6535 0 : if (CONSTANT_CLASS_P (_p1))
6536 : {
6537 0 : {
6538 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
6539 0 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6540 0 : if (res) return res;
6541 : }
6542 : }
6543 : break;
6544 : }
6545 : default:;
6546 : }
6547 : }
6548 : }
6549 9203726 : switch (TREE_CODE (_p1))
6550 : {
6551 196053 : case REAL_CST:
6552 196053 : {
6553 196053 : {
6554 196053 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
6555 196053 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, LE_EXPR);
6556 196053 : if (res) return res;
6557 : }
6558 195976 : break;
6559 : }
6560 9203649 : default:;
6561 : }
6562 9203649 : switch (TREE_CODE (_p0))
6563 : {
6564 1584869 : case PLUS_EXPR:
6565 1584869 : {
6566 1584869 : tree _q20 = TREE_OPERAND (_p0, 0);
6567 1584869 : tree _q21 = TREE_OPERAND (_p0, 1);
6568 1584869 : switch (TREE_CODE (_q21))
6569 : {
6570 86 : case REAL_CST:
6571 86 : {
6572 86 : switch (TREE_CODE (_p1))
6573 : {
6574 81 : case REAL_CST:
6575 81 : {
6576 81 : {
6577 81 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6578 81 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, PLUS_EXPR, LE_EXPR);
6579 81 : if (res) return res;
6580 : }
6581 81 : break;
6582 : }
6583 : default:;
6584 : }
6585 : break;
6586 : }
6587 1479172 : case INTEGER_CST:
6588 1479172 : {
6589 1479172 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6590 : {
6591 1974 : {
6592 1974 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q20, _q21 };
6593 1974 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
6594 1974 : if (res) return res;
6595 : }
6596 : }
6597 : break;
6598 : }
6599 : default:;
6600 : }
6601 : break;
6602 : }
6603 60297 : case MINUS_EXPR:
6604 60297 : {
6605 60297 : tree _q20 = TREE_OPERAND (_p0, 0);
6606 60297 : tree _q21 = TREE_OPERAND (_p0, 1);
6607 60297 : switch (TREE_CODE (_q21))
6608 : {
6609 1225 : case REAL_CST:
6610 1225 : {
6611 1225 : switch (TREE_CODE (_p1))
6612 : {
6613 1202 : case REAL_CST:
6614 1202 : {
6615 1202 : {
6616 1202 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6617 1202 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, MINUS_EXPR, LE_EXPR);
6618 1202 : if (res) return res;
6619 : }
6620 1202 : break;
6621 : }
6622 : default:;
6623 : }
6624 : break;
6625 : }
6626 60297 : default:;
6627 : }
6628 60297 : switch (TREE_CODE (_q20))
6629 : {
6630 2 : case REAL_CST:
6631 2 : {
6632 2 : switch (TREE_CODE (_p1))
6633 : {
6634 0 : case REAL_CST:
6635 0 : {
6636 0 : {
6637 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6638 0 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, LE_EXPR);
6639 0 : if (res) return res;
6640 : }
6641 0 : break;
6642 : }
6643 : default:;
6644 : }
6645 : break;
6646 : }
6647 : default:;
6648 : }
6649 : break;
6650 : }
6651 12084 : case FLOAT_EXPR:
6652 12084 : {
6653 12084 : tree _q20 = TREE_OPERAND (_p0, 0);
6654 12084 : switch (TREE_CODE (_p1))
6655 : {
6656 1 : case FLOAT_EXPR:
6657 1 : {
6658 1 : tree _q40 = TREE_OPERAND (_p1, 0);
6659 1 : {
6660 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6661 1 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6662 1 : if (res) return res;
6663 : }
6664 1 : break;
6665 : }
6666 274 : case REAL_CST:
6667 274 : {
6668 274 : {
6669 274 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6670 274 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, LE_EXPR, LE_EXPR);
6671 274 : if (res) return res;
6672 : }
6673 174 : break;
6674 : }
6675 : default:;
6676 : }
6677 : break;
6678 : }
6679 476 : case EXACT_DIV_EXPR:
6680 476 : {
6681 476 : tree _q20 = TREE_OPERAND (_p0, 0);
6682 476 : tree _q21 = TREE_OPERAND (_p0, 1);
6683 476 : switch (TREE_CODE (_q21))
6684 : {
6685 476 : case INTEGER_CST:
6686 476 : {
6687 476 : switch (TREE_CODE (_p1))
6688 : {
6689 399 : case INTEGER_CST:
6690 399 : {
6691 399 : {
6692 399 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
6693 399 : tree res = generic_simplify_397 (loc, type, _p0, _p1, captures, LE_EXPR);
6694 399 : if (res) return res;
6695 : }
6696 0 : break;
6697 : }
6698 : default:;
6699 : }
6700 : break;
6701 : }
6702 : default:;
6703 : }
6704 : break;
6705 : }
6706 1666231 : CASE_CONVERT:
6707 1666231 : {
6708 1666231 : tree _q20 = TREE_OPERAND (_p0, 0);
6709 1666231 : switch (TREE_CODE (_q20))
6710 : {
6711 0 : case EXACT_DIV_EXPR:
6712 0 : {
6713 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6714 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6715 0 : switch (TREE_CODE (_q31))
6716 : {
6717 0 : case INTEGER_CST:
6718 0 : {
6719 0 : switch (TREE_CODE (_p1))
6720 : {
6721 0 : case INTEGER_CST:
6722 0 : {
6723 0 : {
6724 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
6725 0 : tree res = generic_simplify_398 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6726 0 : if (res) return res;
6727 : }
6728 0 : break;
6729 : }
6730 : default:;
6731 : }
6732 : break;
6733 : }
6734 : default:;
6735 : }
6736 : break;
6737 : }
6738 1666231 : default:;
6739 : }
6740 1666231 : switch (TREE_CODE (_p1))
6741 : {
6742 80443 : CASE_CONVERT:
6743 80443 : {
6744 80443 : tree _q40 = TREE_OPERAND (_p1, 0);
6745 80443 : {
6746 80443 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
6747 80443 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, LE_EXPR);
6748 80443 : if (res) return res;
6749 : }
6750 30030 : break;
6751 : }
6752 1615818 : default:;
6753 : }
6754 1615818 : {
6755 1615818 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
6756 1615818 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, LE_EXPR);
6757 1615818 : if (res) return res;
6758 : }
6759 953630 : switch (TREE_CODE (_q20))
6760 : {
6761 10313 : case ADDR_EXPR:
6762 10313 : {
6763 10313 : switch (TREE_CODE (_p1))
6764 : {
6765 6188 : CASE_CONVERT:
6766 6188 : {
6767 6188 : tree _q40 = TREE_OPERAND (_p1, 0);
6768 6188 : switch (TREE_CODE (_q40))
6769 : {
6770 6188 : case ADDR_EXPR:
6771 6188 : {
6772 6188 : {
6773 6188 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
6774 6188 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, LE_EXPR);
6775 6188 : if (res) return res;
6776 : }
6777 160 : break;
6778 : }
6779 : default:;
6780 : }
6781 : break;
6782 : }
6783 7 : case ADDR_EXPR:
6784 7 : {
6785 7 : {
6786 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6787 7 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, LE_EXPR);
6788 7 : if (res) return res;
6789 : }
6790 0 : break;
6791 : }
6792 : default:;
6793 : }
6794 : break;
6795 : }
6796 947595 : default:;
6797 : }
6798 947595 : if (uniform_integer_cst_p (_p1))
6799 : {
6800 499305 : {
6801 499305 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
6802 499305 : tree res = generic_simplify_399 (loc, type, _p0, _p1, captures, LE_EXPR);
6803 499305 : if (res) return res;
6804 : }
6805 : }
6806 : break;
6807 : }
6808 5433 : case BIT_AND_EXPR:
6809 5433 : {
6810 5433 : tree _q20 = TREE_OPERAND (_p0, 0);
6811 5433 : tree _q21 = TREE_OPERAND (_p0, 1);
6812 5433 : switch (TREE_CODE (_q21))
6813 : {
6814 4957 : case INTEGER_CST:
6815 4957 : {
6816 4957 : switch (TREE_CODE (_p1))
6817 : {
6818 2807 : case INTEGER_CST:
6819 2807 : {
6820 2807 : {
6821 2807 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6822 2807 : tree res = generic_simplify_413 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
6823 2807 : if (res) return res;
6824 : }
6825 2760 : break;
6826 : }
6827 : default:;
6828 : }
6829 : break;
6830 : }
6831 : default:;
6832 : }
6833 : break;
6834 : }
6835 5592 : case NEGATE_EXPR:
6836 5592 : {
6837 5592 : tree _q20 = TREE_OPERAND (_p0, 0);
6838 5592 : switch (TREE_CODE (_p1))
6839 : {
6840 32 : case NEGATE_EXPR:
6841 32 : {
6842 32 : tree _q40 = TREE_OPERAND (_p1, 0);
6843 32 : {
6844 32 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6845 32 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6846 32 : if (res) return res;
6847 : }
6848 32 : break;
6849 : }
6850 5592 : default:;
6851 : }
6852 5592 : if (CONSTANT_CLASS_P (_p1))
6853 : {
6854 457 : {
6855 457 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6856 457 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
6857 457 : if (res) return res;
6858 : }
6859 : }
6860 : break;
6861 : }
6862 1504 : case ADDR_EXPR:
6863 1504 : {
6864 1504 : switch (TREE_CODE (_p1))
6865 : {
6866 19 : CASE_CONVERT:
6867 19 : {
6868 19 : tree _q30 = TREE_OPERAND (_p1, 0);
6869 19 : switch (TREE_CODE (_q30))
6870 : {
6871 19 : case ADDR_EXPR:
6872 19 : {
6873 19 : {
6874 19 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
6875 19 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, LE_EXPR);
6876 19 : if (res) return res;
6877 : }
6878 0 : break;
6879 : }
6880 : default:;
6881 : }
6882 : break;
6883 : }
6884 676 : case ADDR_EXPR:
6885 676 : {
6886 676 : {
6887 676 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
6888 676 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, LE_EXPR);
6889 676 : if (res) return res;
6890 : }
6891 302 : break;
6892 : }
6893 : default:;
6894 : }
6895 : break;
6896 : }
6897 133891 : case CALL_EXPR:
6898 133891 : switch (get_call_combined_fn (_p0))
6899 : {
6900 2 : case CFN_BUILT_IN_SQRTF:
6901 2 : if (call_expr_nargs (_p0) == 1)
6902 : {
6903 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6904 2 : switch (TREE_CODE (_p1))
6905 : {
6906 2 : case REAL_CST:
6907 2 : {
6908 2 : {
6909 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6910 2 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6911 2 : if (res) return res;
6912 : }
6913 0 : break;
6914 : }
6915 0 : case CALL_EXPR:
6916 0 : switch (get_call_combined_fn (_p1))
6917 : {
6918 0 : case CFN_BUILT_IN_SQRTF:
6919 0 : if (call_expr_nargs (_p1) == 1)
6920 : {
6921 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6922 0 : {
6923 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6924 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, LE_EXPR);
6925 0 : if (res) return res;
6926 : }
6927 : }
6928 : break;
6929 : default:;
6930 : }
6931 : break;
6932 : default:;
6933 : }
6934 : }
6935 : break;
6936 0 : case CFN_BUILT_IN_SQRTL:
6937 0 : if (call_expr_nargs (_p0) == 1)
6938 : {
6939 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6940 0 : switch (TREE_CODE (_p1))
6941 : {
6942 0 : case REAL_CST:
6943 0 : {
6944 0 : {
6945 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6946 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6947 0 : if (res) return res;
6948 : }
6949 0 : break;
6950 : }
6951 0 : case CALL_EXPR:
6952 0 : switch (get_call_combined_fn (_p1))
6953 : {
6954 0 : case CFN_BUILT_IN_SQRTL:
6955 0 : if (call_expr_nargs (_p1) == 1)
6956 : {
6957 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6958 0 : {
6959 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6960 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, LE_EXPR);
6961 0 : if (res) return res;
6962 : }
6963 : }
6964 : break;
6965 : default:;
6966 : }
6967 : break;
6968 : default:;
6969 : }
6970 : }
6971 : break;
6972 2 : case CFN_BUILT_IN_SQRT:
6973 2 : if (call_expr_nargs (_p0) == 1)
6974 : {
6975 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6976 2 : switch (TREE_CODE (_p1))
6977 : {
6978 2 : case REAL_CST:
6979 2 : {
6980 2 : {
6981 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
6982 2 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6983 2 : if (res) return res;
6984 : }
6985 2 : break;
6986 : }
6987 0 : case CALL_EXPR:
6988 0 : switch (get_call_combined_fn (_p1))
6989 : {
6990 0 : case CFN_BUILT_IN_SQRT:
6991 0 : if (call_expr_nargs (_p1) == 1)
6992 : {
6993 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
6994 0 : {
6995 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6996 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, LE_EXPR);
6997 0 : if (res) return res;
6998 : }
6999 : }
7000 : break;
7001 : default:;
7002 : }
7003 : break;
7004 : default:;
7005 : }
7006 : }
7007 : break;
7008 0 : case CFN_SQRT:
7009 0 : if (call_expr_nargs (_p0) == 1)
7010 : {
7011 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7012 0 : switch (TREE_CODE (_p1))
7013 : {
7014 0 : case REAL_CST:
7015 0 : {
7016 0 : {
7017 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7018 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
7019 0 : if (res) return res;
7020 : }
7021 0 : break;
7022 : }
7023 0 : case CALL_EXPR:
7024 0 : switch (get_call_combined_fn (_p1))
7025 : {
7026 0 : case CFN_SQRT:
7027 0 : if (call_expr_nargs (_p1) == 1)
7028 : {
7029 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7030 0 : {
7031 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7032 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_SQRT, LE_EXPR);
7033 0 : if (res) return res;
7034 : }
7035 : }
7036 : break;
7037 : default:;
7038 : }
7039 : break;
7040 : default:;
7041 : }
7042 : }
7043 : break;
7044 : default:;
7045 : }
7046 : break;
7047 8460982 : default:;
7048 : }
7049 8460982 : if (uniform_integer_cst_p (_p1))
7050 : {
7051 6010341 : {
7052 6010341 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
7053 6010341 : tree res = generic_simplify_400 (loc, type, _p0, _p1, captures, LE_EXPR);
7054 6010341 : if (res) return res;
7055 : }
7056 : }
7057 8056541 : switch (TREE_CODE (_p0))
7058 : {
7059 911485 : CASE_CONVERT:
7060 911485 : {
7061 911485 : tree _q20 = TREE_OPERAND (_p0, 0);
7062 911485 : switch (TREE_CODE (_q20))
7063 : {
7064 94186 : case PLUS_EXPR:
7065 94186 : {
7066 94186 : tree _q30 = TREE_OPERAND (_q20, 0);
7067 94186 : tree _q31 = TREE_OPERAND (_q20, 1);
7068 94186 : switch (TREE_CODE (_q30))
7069 : {
7070 79487 : CASE_CONVERT:
7071 79487 : {
7072 79487 : tree _q40 = TREE_OPERAND (_q30, 0);
7073 79487 : switch (TREE_CODE (_q31))
7074 : {
7075 78914 : case INTEGER_CST:
7076 78914 : {
7077 78914 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7078 : {
7079 4 : {
7080 4 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q40, _q31 };
7081 4 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR);
7082 4 : if (res) return res;
7083 : }
7084 : }
7085 : break;
7086 : }
7087 : default:;
7088 : }
7089 : break;
7090 : }
7091 : default:;
7092 : }
7093 : break;
7094 : }
7095 : default:;
7096 : }
7097 : break;
7098 : }
7099 8056537 : default:;
7100 : }
7101 8056537 : switch (TREE_CODE (_p1))
7102 : {
7103 197970 : CASE_CONVERT:
7104 197970 : {
7105 197970 : tree _q30 = TREE_OPERAND (_p1, 0);
7106 197970 : switch (TREE_CODE (_q30))
7107 : {
7108 2013 : case PLUS_EXPR:
7109 2013 : {
7110 2013 : tree _q40 = TREE_OPERAND (_q30, 0);
7111 2013 : tree _q41 = TREE_OPERAND (_q30, 1);
7112 2013 : switch (TREE_CODE (_q40))
7113 : {
7114 461 : CASE_CONVERT:
7115 461 : {
7116 461 : tree _q50 = TREE_OPERAND (_q40, 0);
7117 461 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7118 : {
7119 0 : switch (TREE_CODE (_q41))
7120 : {
7121 0 : case INTEGER_CST:
7122 0 : {
7123 0 : {
7124 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0, _q41 };
7125 0 : tree res = generic_simplify_401 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7126 0 : if (res) return res;
7127 : }
7128 0 : break;
7129 : }
7130 : default:;
7131 : }
7132 : }
7133 : break;
7134 : }
7135 : default:;
7136 : }
7137 : break;
7138 : }
7139 : default:;
7140 : }
7141 : break;
7142 : }
7143 122769 : case PLUS_EXPR:
7144 122769 : {
7145 122769 : tree _q30 = TREE_OPERAND (_p1, 0);
7146 122769 : tree _q31 = TREE_OPERAND (_p1, 1);
7147 122769 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7148 : {
7149 30 : switch (TREE_CODE (_q31))
7150 : {
7151 30 : case INTEGER_CST:
7152 30 : {
7153 30 : {
7154 30 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0, _q31 };
7155 30 : tree res = generic_simplify_396 (loc, type, _p0, _p1, captures, GE_EXPR, LE_EXPR);
7156 30 : if (res) return res;
7157 : }
7158 0 : break;
7159 : }
7160 : default:;
7161 : }
7162 : }
7163 : break;
7164 : }
7165 8056507 : default:;
7166 : }
7167 8056507 : switch (TREE_CODE (_p0))
7168 : {
7169 58144 : case MINUS_EXPR:
7170 58144 : {
7171 58144 : tree _q20 = TREE_OPERAND (_p0, 0);
7172 58144 : tree _q21 = TREE_OPERAND (_p0, 1);
7173 58144 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7174 : {
7175 2509 : {
7176 2509 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
7177 2509 : tree res = generic_simplify_402 (loc, type, _p0, _p1, captures, LE_EXPR);
7178 2509 : if (res) return res;
7179 : }
7180 : }
7181 : break;
7182 : }
7183 8056380 : default:;
7184 : }
7185 8056380 : switch (TREE_CODE (_p1))
7186 : {
7187 122739 : case PLUS_EXPR:
7188 122739 : {
7189 122739 : tree _q30 = TREE_OPERAND (_p1, 0);
7190 122739 : tree _q31 = TREE_OPERAND (_p1, 1);
7191 122739 : switch (TREE_CODE (_q30))
7192 : {
7193 4 : case MINUS_EXPR:
7194 4 : {
7195 4 : tree _q40 = TREE_OPERAND (_q30, 0);
7196 4 : tree _q41 = TREE_OPERAND (_q30, 1);
7197 4 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7198 : {
7199 0 : if (integer_minus_onep (_q31))
7200 : {
7201 0 : {
7202 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
7203 0 : tree res = generic_simplify_414 (loc, type, _p0, _p1, captures, GE_EXPR);
7204 0 : if (res) return res;
7205 : }
7206 : }
7207 : }
7208 : break;
7209 : }
7210 : default:;
7211 : }
7212 : break;
7213 : }
7214 8056380 : default:;
7215 : }
7216 8056380 : switch (TREE_CODE (_p0))
7217 : {
7218 12 : case REALPART_EXPR:
7219 12 : {
7220 12 : tree _q20 = TREE_OPERAND (_p0, 0);
7221 12 : switch (TREE_CODE (_q20))
7222 : {
7223 0 : case CALL_EXPR:
7224 0 : switch (get_call_combined_fn (_q20))
7225 : {
7226 0 : case CFN_SUB_OVERFLOW:
7227 0 : if (call_expr_nargs (_q20) == 2)
7228 : {
7229 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
7230 0 : tree _q31 = CALL_EXPR_ARG (_q20, 1);
7231 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
7232 : {
7233 0 : {
7234 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
7235 0 : tree res = generic_simplify_415 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7236 0 : if (res) return res;
7237 : }
7238 : }
7239 : }
7240 : break;
7241 : default:;
7242 : }
7243 : break;
7244 : default:;
7245 : }
7246 : break;
7247 : }
7248 8056380 : default:;
7249 : }
7250 8056380 : switch (TREE_CODE (_p1))
7251 : {
7252 0 : case REALPART_EXPR:
7253 0 : {
7254 0 : tree _q30 = TREE_OPERAND (_p1, 0);
7255 0 : switch (TREE_CODE (_q30))
7256 : {
7257 0 : case CALL_EXPR:
7258 0 : switch (get_call_combined_fn (_q30))
7259 : {
7260 0 : case CFN_ADD_OVERFLOW:
7261 0 : if (call_expr_nargs (_q30) == 2)
7262 : {
7263 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
7264 0 : tree _q41 = CALL_EXPR_ARG (_q30, 1);
7265 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
7266 : {
7267 0 : {
7268 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q41 };
7269 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7270 0 : if (res) return res;
7271 : }
7272 : }
7273 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
7274 : {
7275 0 : {
7276 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p0, _q40 };
7277 0 : tree res = generic_simplify_416 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7278 0 : if (res) return res;
7279 : }
7280 : }
7281 : }
7282 : break;
7283 : default:;
7284 : }
7285 : break;
7286 : default:;
7287 : }
7288 : break;
7289 : }
7290 337 : case TRUNC_DIV_EXPR:
7291 337 : {
7292 337 : tree _q30 = TREE_OPERAND (_p1, 0);
7293 337 : tree _q31 = TREE_OPERAND (_p1, 1);
7294 337 : if (integer_all_onesp (_q30))
7295 : {
7296 0 : {
7297 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q31, _p0 };
7298 0 : tree res = generic_simplify_417 (loc, type, _p0, _p1, captures, GE_EXPR, EQ_EXPR);
7299 0 : if (res) return res;
7300 : }
7301 : }
7302 : break;
7303 : }
7304 8056380 : default:;
7305 : }
7306 8056380 : switch (TREE_CODE (_p0))
7307 : {
7308 58319 : case MULT_EXPR:
7309 58319 : {
7310 58319 : tree _q20 = TREE_OPERAND (_p0, 0);
7311 58319 : tree _q21 = TREE_OPERAND (_p0, 1);
7312 58319 : switch (TREE_CODE (_q20))
7313 : {
7314 4576 : CASE_CONVERT:
7315 4576 : {
7316 4576 : tree _q30 = TREE_OPERAND (_q20, 0);
7317 4576 : switch (TREE_CODE (_q21))
7318 : {
7319 25 : CASE_CONVERT:
7320 25 : {
7321 25 : tree _q50 = TREE_OPERAND (_q21, 0);
7322 25 : switch (TREE_CODE (_p1))
7323 : {
7324 25 : case INTEGER_CST:
7325 25 : {
7326 25 : {
7327 25 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _p1 };
7328 25 : tree res = generic_simplify_418 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR);
7329 25 : if (res) return res;
7330 : }
7331 0 : break;
7332 : }
7333 : default:;
7334 : }
7335 : break;
7336 : }
7337 : default:;
7338 : }
7339 : break;
7340 : }
7341 58294 : default:;
7342 : }
7343 58294 : switch (TREE_CODE (_q21))
7344 : {
7345 821 : case REAL_CST:
7346 821 : {
7347 821 : switch (TREE_CODE (_p1))
7348 : {
7349 553 : case REAL_CST:
7350 553 : {
7351 553 : {
7352 553 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7353 553 : tree res = generic_simplify_407 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7354 553 : if (res) return res;
7355 : }
7356 551 : break;
7357 : }
7358 : default:;
7359 : }
7360 : break;
7361 : }
7362 : default:;
7363 : }
7364 : break;
7365 : }
7366 22 : case REAL_CST:
7367 22 : {
7368 22 : switch (TREE_CODE (_p1))
7369 : {
7370 0 : case CALL_EXPR:
7371 0 : switch (get_call_combined_fn (_p1))
7372 : {
7373 0 : case CFN_BUILT_IN_EXP:
7374 0 : if (call_expr_nargs (_p1) == 1)
7375 : {
7376 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7377 0 : {
7378 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7379 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7380 0 : if (res) return res;
7381 : }
7382 : }
7383 : break;
7384 0 : case CFN_BUILT_IN_LOG:
7385 0 : if (call_expr_nargs (_p1) == 1)
7386 : {
7387 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7388 0 : {
7389 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7390 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, GE_EXPR);
7391 0 : if (res) return res;
7392 : }
7393 : }
7394 : break;
7395 0 : case CFN_BUILT_IN_EXP10F:
7396 0 : if (call_expr_nargs (_p1) == 1)
7397 : {
7398 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7399 0 : {
7400 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7401 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7402 0 : if (res) return res;
7403 : }
7404 : }
7405 : break;
7406 0 : case CFN_BUILT_IN_EXP10L:
7407 0 : if (call_expr_nargs (_p1) == 1)
7408 : {
7409 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7410 0 : {
7411 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7412 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7413 0 : if (res) return res;
7414 : }
7415 : }
7416 : break;
7417 0 : case CFN_BUILT_IN_EXP2:
7418 0 : if (call_expr_nargs (_p1) == 1)
7419 : {
7420 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7421 0 : {
7422 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7423 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7424 0 : if (res) return res;
7425 : }
7426 : }
7427 : break;
7428 0 : case CFN_BUILT_IN_EXPF:
7429 0 : if (call_expr_nargs (_p1) == 1)
7430 : {
7431 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7432 0 : {
7433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7434 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7435 0 : if (res) return res;
7436 : }
7437 : }
7438 : break;
7439 0 : case CFN_BUILT_IN_EXPL:
7440 0 : if (call_expr_nargs (_p1) == 1)
7441 : {
7442 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7443 0 : {
7444 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7445 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7446 0 : if (res) return res;
7447 : }
7448 : }
7449 : break;
7450 0 : case CFN_BUILT_IN_LOG2:
7451 0 : if (call_expr_nargs (_p1) == 1)
7452 : {
7453 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7454 0 : {
7455 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7456 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, GE_EXPR);
7457 0 : if (res) return res;
7458 : }
7459 : }
7460 : break;
7461 0 : case CFN_BUILT_IN_LOGF:
7462 0 : if (call_expr_nargs (_p1) == 1)
7463 : {
7464 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7465 0 : {
7466 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7467 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, GE_EXPR);
7468 0 : if (res) return res;
7469 : }
7470 : }
7471 : break;
7472 0 : case CFN_BUILT_IN_LOGL:
7473 0 : if (call_expr_nargs (_p1) == 1)
7474 : {
7475 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7476 0 : {
7477 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7478 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, GE_EXPR);
7479 0 : if (res) return res;
7480 : }
7481 : }
7482 : break;
7483 0 : case CFN_BUILT_IN_LOG10F:
7484 0 : if (call_expr_nargs (_p1) == 1)
7485 : {
7486 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7487 0 : {
7488 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7489 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, GE_EXPR);
7490 0 : if (res) return res;
7491 : }
7492 : }
7493 : break;
7494 0 : case CFN_BUILT_IN_LOG10L:
7495 0 : if (call_expr_nargs (_p1) == 1)
7496 : {
7497 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7498 0 : {
7499 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7500 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, GE_EXPR);
7501 0 : if (res) return res;
7502 : }
7503 : }
7504 : break;
7505 0 : case CFN_EXP:
7506 0 : if (call_expr_nargs (_p1) == 1)
7507 : {
7508 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7509 0 : {
7510 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7511 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7512 0 : if (res) return res;
7513 : }
7514 : }
7515 : break;
7516 0 : case CFN_LOG:
7517 0 : if (call_expr_nargs (_p1) == 1)
7518 : {
7519 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7520 0 : {
7521 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7522 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, GE_EXPR);
7523 0 : if (res) return res;
7524 : }
7525 : }
7526 : break;
7527 0 : case CFN_EXP2:
7528 0 : if (call_expr_nargs (_p1) == 1)
7529 : {
7530 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7531 0 : {
7532 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7533 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7534 0 : if (res) return res;
7535 : }
7536 : }
7537 : break;
7538 0 : case CFN_LOG2:
7539 0 : if (call_expr_nargs (_p1) == 1)
7540 : {
7541 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7542 0 : {
7543 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7544 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, GE_EXPR);
7545 0 : if (res) return res;
7546 : }
7547 : }
7548 : break;
7549 0 : case CFN_EXP10:
7550 0 : if (call_expr_nargs (_p1) == 1)
7551 : {
7552 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7553 0 : {
7554 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7555 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7556 0 : if (res) return res;
7557 : }
7558 : }
7559 : break;
7560 0 : case CFN_LOG10:
7561 0 : if (call_expr_nargs (_p1) == 1)
7562 : {
7563 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7564 0 : {
7565 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7566 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, GE_EXPR);
7567 0 : if (res) return res;
7568 : }
7569 : }
7570 : break;
7571 0 : case CFN_BUILT_IN_EXP10:
7572 0 : if (call_expr_nargs (_p1) == 1)
7573 : {
7574 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7575 0 : {
7576 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7577 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7578 0 : if (res) return res;
7579 : }
7580 : }
7581 : break;
7582 0 : case CFN_BUILT_IN_EXP2F:
7583 0 : if (call_expr_nargs (_p1) == 1)
7584 : {
7585 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7586 0 : {
7587 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7588 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7589 0 : if (res) return res;
7590 : }
7591 : }
7592 : break;
7593 0 : case CFN_BUILT_IN_EXP2L:
7594 0 : if (call_expr_nargs (_p1) == 1)
7595 : {
7596 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7597 0 : {
7598 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7599 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7600 0 : if (res) return res;
7601 : }
7602 : }
7603 : break;
7604 0 : case CFN_BUILT_IN_LOG10:
7605 0 : if (call_expr_nargs (_p1) == 1)
7606 : {
7607 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7608 0 : {
7609 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7610 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, GE_EXPR);
7611 0 : if (res) return res;
7612 : }
7613 : }
7614 : break;
7615 0 : case CFN_BUILT_IN_LOG2F:
7616 0 : if (call_expr_nargs (_p1) == 1)
7617 : {
7618 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7619 0 : {
7620 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7621 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, GE_EXPR);
7622 0 : if (res) return res;
7623 : }
7624 : }
7625 : break;
7626 0 : case CFN_BUILT_IN_LOG2L:
7627 0 : if (call_expr_nargs (_p1) == 1)
7628 : {
7629 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
7630 0 : {
7631 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _p0 };
7632 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, GE_EXPR);
7633 0 : if (res) return res;
7634 : }
7635 : }
7636 : break;
7637 : default:;
7638 : }
7639 : break;
7640 : default:;
7641 : }
7642 : break;
7643 : }
7644 1498076 : case PLUS_EXPR:
7645 1498076 : {
7646 1498076 : tree _q20 = TREE_OPERAND (_p0, 0);
7647 1498076 : tree _q21 = TREE_OPERAND (_p0, 1);
7648 1498076 : switch (TREE_CODE (_q21))
7649 : {
7650 1394877 : case INTEGER_CST:
7651 1394877 : {
7652 1394877 : switch (TREE_CODE (_p1))
7653 : {
7654 870690 : case INTEGER_CST:
7655 870690 : {
7656 870690 : {
7657 870690 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7658 870690 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, LE_EXPR, GE_EXPR);
7659 870690 : if (res) return res;
7660 : }
7661 687152 : break;
7662 : }
7663 : default:;
7664 : }
7665 : break;
7666 : }
7667 : default:;
7668 : }
7669 : break;
7670 : }
7671 58017 : case MINUS_EXPR:
7672 58017 : {
7673 58017 : tree _q20 = TREE_OPERAND (_p0, 0);
7674 58017 : tree _q21 = TREE_OPERAND (_p0, 1);
7675 58017 : switch (TREE_CODE (_q21))
7676 : {
7677 2203 : case INTEGER_CST:
7678 2203 : {
7679 2203 : switch (TREE_CODE (_p1))
7680 : {
7681 2203 : case INTEGER_CST:
7682 2203 : {
7683 2203 : {
7684 2203 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
7685 2203 : tree res = generic_simplify_408 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, LE_EXPR, GE_EXPR);
7686 2203 : if (res) return res;
7687 : }
7688 2203 : break;
7689 : }
7690 : default:;
7691 : }
7692 : break;
7693 : }
7694 58017 : default:;
7695 : }
7696 58017 : switch (TREE_CODE (_q20))
7697 : {
7698 2058 : case INTEGER_CST:
7699 2058 : {
7700 2058 : switch (TREE_CODE (_p1))
7701 : {
7702 1100 : case INTEGER_CST:
7703 1100 : {
7704 1100 : {
7705 1100 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7706 1100 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, LE_EXPR, GE_EXPR);
7707 1100 : if (res) return res;
7708 : }
7709 0 : break;
7710 : }
7711 : default:;
7712 : }
7713 : break;
7714 : }
7715 : default:;
7716 : }
7717 : break;
7718 : }
7719 133083 : case CALL_EXPR:
7720 133083 : switch (get_call_combined_fn (_p0))
7721 : {
7722 18 : case CFN_BUILT_IN_CTZ:
7723 18 : if (call_expr_nargs (_p0) == 1)
7724 : {
7725 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7726 18 : switch (TREE_CODE (_p1))
7727 : {
7728 18 : case INTEGER_CST:
7729 18 : {
7730 18 : {
7731 18 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7732 18 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZ);
7733 18 : if (res) return res;
7734 : }
7735 16 : break;
7736 : }
7737 : default:;
7738 : }
7739 : }
7740 : break;
7741 0 : case CFN_BUILT_IN_EXP:
7742 0 : if (call_expr_nargs (_p0) == 1)
7743 : {
7744 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7745 0 : switch (TREE_CODE (_p1))
7746 : {
7747 0 : case REAL_CST:
7748 0 : {
7749 0 : {
7750 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7751 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7752 0 : if (res) return res;
7753 : }
7754 0 : break;
7755 : }
7756 : default:;
7757 : }
7758 : }
7759 : break;
7760 8 : case CFN_BUILT_IN_FFS:
7761 8 : if (call_expr_nargs (_p0) == 1)
7762 : {
7763 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7764 8 : switch (TREE_CODE (_p1))
7765 : {
7766 8 : case INTEGER_CST:
7767 8 : {
7768 8 : {
7769 8 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7770 8 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFS);
7771 8 : if (res) return res;
7772 : }
7773 2 : break;
7774 : }
7775 : default:;
7776 : }
7777 : }
7778 : break;
7779 0 : case CFN_BUILT_IN_LOG:
7780 0 : if (call_expr_nargs (_p0) == 1)
7781 : {
7782 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7783 0 : switch (TREE_CODE (_p1))
7784 : {
7785 0 : case REAL_CST:
7786 0 : {
7787 0 : {
7788 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7789 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP, LE_EXPR);
7790 0 : if (res) return res;
7791 : }
7792 0 : break;
7793 : }
7794 : default:;
7795 : }
7796 : }
7797 : break;
7798 0 : case CFN_BUILT_IN_FFSIMAX:
7799 0 : if (call_expr_nargs (_p0) == 1)
7800 : {
7801 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7802 0 : switch (TREE_CODE (_p1))
7803 : {
7804 0 : case INTEGER_CST:
7805 0 : {
7806 0 : {
7807 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7808 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSIMAX);
7809 0 : if (res) return res;
7810 : }
7811 0 : break;
7812 : }
7813 : default:;
7814 : }
7815 : }
7816 : break;
7817 0 : case CFN_BUILT_IN_EXP10F:
7818 0 : if (call_expr_nargs (_p0) == 1)
7819 : {
7820 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7821 0 : switch (TREE_CODE (_p1))
7822 : {
7823 0 : case REAL_CST:
7824 0 : {
7825 0 : {
7826 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7827 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
7828 0 : if (res) return res;
7829 : }
7830 0 : break;
7831 : }
7832 : default:;
7833 : }
7834 : }
7835 : break;
7836 0 : case CFN_BUILT_IN_EXP10L:
7837 0 : if (call_expr_nargs (_p0) == 1)
7838 : {
7839 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7840 0 : switch (TREE_CODE (_p1))
7841 : {
7842 0 : case REAL_CST:
7843 0 : {
7844 0 : {
7845 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7846 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
7847 0 : if (res) return res;
7848 : }
7849 0 : break;
7850 : }
7851 : default:;
7852 : }
7853 : }
7854 : break;
7855 37 : case CFN_BUILT_IN_POPCOUNT:
7856 37 : if (call_expr_nargs (_p0) == 1)
7857 : {
7858 37 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7859 37 : if (integer_zerop (_p1))
7860 : {
7861 1 : {
7862 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
7863 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT);
7864 1 : if (res) return res;
7865 : }
7866 : }
7867 : }
7868 : break;
7869 0 : case CFN_BUILT_IN_CTZL:
7870 0 : if (call_expr_nargs (_p0) == 1)
7871 : {
7872 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7873 0 : switch (TREE_CODE (_p1))
7874 : {
7875 0 : case INTEGER_CST:
7876 0 : {
7877 0 : {
7878 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7879 0 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZL);
7880 0 : if (res) return res;
7881 : }
7882 0 : break;
7883 : }
7884 : default:;
7885 : }
7886 : }
7887 : break;
7888 0 : case CFN_BUILT_IN_EXP2:
7889 0 : if (call_expr_nargs (_p0) == 1)
7890 : {
7891 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7892 0 : switch (TREE_CODE (_p1))
7893 : {
7894 0 : case REAL_CST:
7895 0 : {
7896 0 : {
7897 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7898 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7899 0 : if (res) return res;
7900 : }
7901 0 : break;
7902 : }
7903 : default:;
7904 : }
7905 : }
7906 : break;
7907 0 : case CFN_BUILT_IN_EXPF:
7908 0 : if (call_expr_nargs (_p0) == 1)
7909 : {
7910 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7911 0 : switch (TREE_CODE (_p1))
7912 : {
7913 0 : case REAL_CST:
7914 0 : {
7915 0 : {
7916 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7917 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7918 0 : if (res) return res;
7919 : }
7920 0 : break;
7921 : }
7922 : default:;
7923 : }
7924 : }
7925 : break;
7926 0 : case CFN_BUILT_IN_EXPL:
7927 0 : if (call_expr_nargs (_p0) == 1)
7928 : {
7929 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7930 0 : switch (TREE_CODE (_p1))
7931 : {
7932 0 : case REAL_CST:
7933 0 : {
7934 0 : {
7935 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7936 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
7937 0 : if (res) return res;
7938 : }
7939 0 : break;
7940 : }
7941 : default:;
7942 : }
7943 : }
7944 : break;
7945 3 : case CFN_BUILT_IN_FFSL:
7946 3 : if (call_expr_nargs (_p0) == 1)
7947 : {
7948 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7949 3 : switch (TREE_CODE (_p1))
7950 : {
7951 3 : case INTEGER_CST:
7952 3 : {
7953 3 : {
7954 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7955 3 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSL);
7956 3 : if (res) return res;
7957 : }
7958 0 : break;
7959 : }
7960 : default:;
7961 : }
7962 : }
7963 : break;
7964 0 : case CFN_BUILT_IN_LOG2:
7965 0 : if (call_expr_nargs (_p0) == 1)
7966 : {
7967 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7968 0 : switch (TREE_CODE (_p1))
7969 : {
7970 0 : case REAL_CST:
7971 0 : {
7972 0 : {
7973 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7974 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_EXP2, LE_EXPR);
7975 0 : if (res) return res;
7976 : }
7977 0 : break;
7978 : }
7979 : default:;
7980 : }
7981 : }
7982 : break;
7983 0 : case CFN_BUILT_IN_LOGF:
7984 0 : if (call_expr_nargs (_p0) == 1)
7985 : {
7986 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7987 0 : switch (TREE_CODE (_p1))
7988 : {
7989 0 : case REAL_CST:
7990 0 : {
7991 0 : {
7992 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
7993 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXPF, LE_EXPR);
7994 0 : if (res) return res;
7995 : }
7996 0 : break;
7997 : }
7998 : default:;
7999 : }
8000 : }
8001 : break;
8002 0 : case CFN_BUILT_IN_LOGL:
8003 0 : if (call_expr_nargs (_p0) == 1)
8004 : {
8005 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8006 0 : switch (TREE_CODE (_p1))
8007 : {
8008 0 : case REAL_CST:
8009 0 : {
8010 0 : {
8011 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8012 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXPL, LE_EXPR);
8013 0 : if (res) return res;
8014 : }
8015 0 : break;
8016 : }
8017 : default:;
8018 : }
8019 : }
8020 : break;
8021 1 : case CFN_BUILT_IN_POPCOUNTLL:
8022 1 : if (call_expr_nargs (_p0) == 1)
8023 : {
8024 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8025 1 : if (integer_zerop (_p1))
8026 : {
8027 1 : {
8028 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8029 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL);
8030 1 : if (res) return res;
8031 : }
8032 : }
8033 : }
8034 : break;
8035 0 : case CFN_BUILT_IN_LOG10F:
8036 0 : if (call_expr_nargs (_p0) == 1)
8037 : {
8038 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8039 0 : switch (TREE_CODE (_p1))
8040 : {
8041 0 : case REAL_CST:
8042 0 : {
8043 0 : {
8044 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8045 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_EXP10F, LE_EXPR);
8046 0 : if (res) return res;
8047 : }
8048 0 : break;
8049 : }
8050 : default:;
8051 : }
8052 : }
8053 : break;
8054 0 : case CFN_BUILT_IN_LOG10L:
8055 0 : if (call_expr_nargs (_p0) == 1)
8056 : {
8057 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8058 0 : switch (TREE_CODE (_p1))
8059 : {
8060 0 : case REAL_CST:
8061 0 : {
8062 0 : {
8063 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8064 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_EXP10L, LE_EXPR);
8065 0 : if (res) return res;
8066 : }
8067 0 : break;
8068 : }
8069 : default:;
8070 : }
8071 : }
8072 : break;
8073 0 : case CFN_BUILT_IN_CTZIMAX:
8074 0 : if (call_expr_nargs (_p0) == 1)
8075 : {
8076 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8077 0 : switch (TREE_CODE (_p1))
8078 : {
8079 0 : case INTEGER_CST:
8080 0 : {
8081 0 : {
8082 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8083 0 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
8084 0 : if (res) return res;
8085 : }
8086 0 : break;
8087 : }
8088 : default:;
8089 : }
8090 : }
8091 : break;
8092 0 : case CFN_POPCOUNT:
8093 0 : if (call_expr_nargs (_p0) == 1)
8094 : {
8095 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8096 0 : if (integer_zerop (_p1))
8097 : {
8098 0 : {
8099 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8100 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_POPCOUNT);
8101 0 : if (res) return res;
8102 : }
8103 : }
8104 : }
8105 : break;
8106 0 : case CFN_CTZ:
8107 0 : if (call_expr_nargs (_p0) == 2)
8108 : {
8109 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8110 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
8111 0 : switch (TREE_CODE (_p1))
8112 : {
8113 0 : case INTEGER_CST:
8114 0 : {
8115 0 : {
8116 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8117 0 : tree res = generic_simplify_410 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR);
8118 0 : if (res) return res;
8119 : }
8120 0 : break;
8121 : }
8122 : default:;
8123 : }
8124 : }
8125 0 : if (call_expr_nargs (_p0) == 1)
8126 : {
8127 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8128 0 : switch (TREE_CODE (_p1))
8129 : {
8130 0 : case INTEGER_CST:
8131 0 : {
8132 0 : {
8133 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8134 0 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_CTZ);
8135 0 : if (res) return res;
8136 : }
8137 0 : break;
8138 : }
8139 : default:;
8140 : }
8141 : }
8142 : break;
8143 0 : case CFN_EXP:
8144 0 : if (call_expr_nargs (_p0) == 1)
8145 : {
8146 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8147 0 : switch (TREE_CODE (_p1))
8148 : {
8149 0 : case REAL_CST:
8150 0 : {
8151 0 : {
8152 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8153 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8154 0 : if (res) return res;
8155 : }
8156 0 : break;
8157 : }
8158 : default:;
8159 : }
8160 : }
8161 : break;
8162 0 : case CFN_FFS:
8163 0 : if (call_expr_nargs (_p0) == 1)
8164 : {
8165 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8166 0 : switch (TREE_CODE (_p1))
8167 : {
8168 0 : case INTEGER_CST:
8169 0 : {
8170 0 : {
8171 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8172 0 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_FFS);
8173 0 : if (res) return res;
8174 : }
8175 0 : break;
8176 : }
8177 : default:;
8178 : }
8179 : }
8180 : break;
8181 0 : case CFN_LOG:
8182 0 : if (call_expr_nargs (_p0) == 1)
8183 : {
8184 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8185 0 : switch (TREE_CODE (_p1))
8186 : {
8187 0 : case REAL_CST:
8188 0 : {
8189 0 : {
8190 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8191 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG, CFN_EXP, LE_EXPR);
8192 0 : if (res) return res;
8193 : }
8194 0 : break;
8195 : }
8196 : default:;
8197 : }
8198 : }
8199 : break;
8200 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
8201 0 : if (call_expr_nargs (_p0) == 1)
8202 : {
8203 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8204 0 : if (integer_zerop (_p1))
8205 : {
8206 0 : {
8207 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8208 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
8209 0 : if (res) return res;
8210 : }
8211 : }
8212 : }
8213 : break;
8214 0 : case CFN_EXP2:
8215 0 : if (call_expr_nargs (_p0) == 1)
8216 : {
8217 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8218 0 : switch (TREE_CODE (_p1))
8219 : {
8220 0 : case REAL_CST:
8221 0 : {
8222 0 : {
8223 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8224 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8225 0 : if (res) return res;
8226 : }
8227 0 : break;
8228 : }
8229 : default:;
8230 : }
8231 : }
8232 : break;
8233 0 : case CFN_LOG2:
8234 0 : if (call_expr_nargs (_p0) == 1)
8235 : {
8236 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8237 0 : switch (TREE_CODE (_p1))
8238 : {
8239 0 : case REAL_CST:
8240 0 : {
8241 0 : {
8242 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8243 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG2, CFN_EXP2, LE_EXPR);
8244 0 : if (res) return res;
8245 : }
8246 0 : break;
8247 : }
8248 : default:;
8249 : }
8250 : }
8251 : break;
8252 0 : case CFN_EXP10:
8253 0 : if (call_expr_nargs (_p0) == 1)
8254 : {
8255 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8256 0 : switch (TREE_CODE (_p1))
8257 : {
8258 0 : case REAL_CST:
8259 0 : {
8260 0 : {
8261 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8262 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8263 0 : if (res) return res;
8264 : }
8265 0 : break;
8266 : }
8267 : default:;
8268 : }
8269 : }
8270 : break;
8271 1 : case CFN_BUILT_IN_POPCOUNTL:
8272 1 : if (call_expr_nargs (_p0) == 1)
8273 : {
8274 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8275 1 : if (integer_zerop (_p1))
8276 : {
8277 1 : {
8278 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
8279 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL);
8280 1 : if (res) return res;
8281 : }
8282 : }
8283 : }
8284 : break;
8285 0 : case CFN_BUILT_IN_CTZLL:
8286 0 : if (call_expr_nargs (_p0) == 1)
8287 : {
8288 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8289 0 : switch (TREE_CODE (_p1))
8290 : {
8291 0 : case INTEGER_CST:
8292 0 : {
8293 0 : {
8294 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8295 0 : tree res = generic_simplify_409 (loc, type, _p0, _p1, captures, LE_EXPR, NE_EXPR, CFN_BUILT_IN_CTZLL);
8296 0 : if (res) return res;
8297 : }
8298 0 : break;
8299 : }
8300 : default:;
8301 : }
8302 : }
8303 : break;
8304 0 : case CFN_LOG10:
8305 0 : if (call_expr_nargs (_p0) == 1)
8306 : {
8307 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8308 0 : switch (TREE_CODE (_p1))
8309 : {
8310 0 : case REAL_CST:
8311 0 : {
8312 0 : {
8313 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8314 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_LOG10, CFN_EXP10, LE_EXPR);
8315 0 : if (res) return res;
8316 : }
8317 0 : break;
8318 : }
8319 : default:;
8320 : }
8321 : }
8322 : break;
8323 0 : case CFN_BUILT_IN_EXP10:
8324 0 : if (call_expr_nargs (_p0) == 1)
8325 : {
8326 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8327 0 : switch (TREE_CODE (_p1))
8328 : {
8329 0 : case REAL_CST:
8330 0 : {
8331 0 : {
8332 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8333 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8334 0 : if (res) return res;
8335 : }
8336 0 : break;
8337 : }
8338 : default:;
8339 : }
8340 : }
8341 : break;
8342 0 : case CFN_BUILT_IN_EXP2F:
8343 0 : if (call_expr_nargs (_p0) == 1)
8344 : {
8345 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8346 0 : switch (TREE_CODE (_p1))
8347 : {
8348 0 : case REAL_CST:
8349 0 : {
8350 0 : {
8351 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8352 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8353 0 : if (res) return res;
8354 : }
8355 0 : break;
8356 : }
8357 : default:;
8358 : }
8359 : }
8360 : break;
8361 0 : case CFN_BUILT_IN_EXP2L:
8362 0 : if (call_expr_nargs (_p0) == 1)
8363 : {
8364 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8365 0 : switch (TREE_CODE (_p1))
8366 : {
8367 0 : case REAL_CST:
8368 0 : {
8369 0 : {
8370 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8371 0 : tree res = generic_simplify_420 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8372 0 : if (res) return res;
8373 : }
8374 0 : break;
8375 : }
8376 : default:;
8377 : }
8378 : }
8379 : break;
8380 3 : case CFN_BUILT_IN_FFSLL:
8381 3 : if (call_expr_nargs (_p0) == 1)
8382 : {
8383 3 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8384 3 : switch (TREE_CODE (_p1))
8385 : {
8386 3 : case INTEGER_CST:
8387 3 : {
8388 3 : {
8389 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8390 3 : tree res = generic_simplify_421 (loc, type, _p0, _p1, captures, LE_EXPR, EQ_EXPR, NE_EXPR, BIT_IOR_EXPR, CFN_BUILT_IN_FFSLL);
8391 3 : if (res) return res;
8392 : }
8393 0 : break;
8394 : }
8395 : default:;
8396 : }
8397 : }
8398 : break;
8399 0 : case CFN_BUILT_IN_LOG10:
8400 0 : if (call_expr_nargs (_p0) == 1)
8401 : {
8402 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8403 0 : switch (TREE_CODE (_p1))
8404 : {
8405 0 : case REAL_CST:
8406 0 : {
8407 0 : {
8408 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8409 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_EXP10, LE_EXPR);
8410 0 : if (res) return res;
8411 : }
8412 0 : break;
8413 : }
8414 : default:;
8415 : }
8416 : }
8417 : break;
8418 0 : case CFN_BUILT_IN_LOG2F:
8419 0 : if (call_expr_nargs (_p0) == 1)
8420 : {
8421 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8422 0 : switch (TREE_CODE (_p1))
8423 : {
8424 0 : case REAL_CST:
8425 0 : {
8426 0 : {
8427 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8428 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_EXP2F, LE_EXPR);
8429 0 : if (res) return res;
8430 : }
8431 0 : break;
8432 : }
8433 : default:;
8434 : }
8435 : }
8436 : break;
8437 0 : case CFN_BUILT_IN_LOG2L:
8438 0 : if (call_expr_nargs (_p0) == 1)
8439 : {
8440 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8441 0 : switch (TREE_CODE (_p1))
8442 : {
8443 0 : case REAL_CST:
8444 0 : {
8445 0 : {
8446 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
8447 0 : tree res = generic_simplify_419 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_EXP2L, LE_EXPR);
8448 0 : if (res) return res;
8449 : }
8450 0 : break;
8451 : }
8452 : default:;
8453 : }
8454 : }
8455 : break;
8456 : default:;
8457 : }
8458 : break;
8459 : default:;
8460 : }
8461 : return NULL_TREE;
8462 : }
8463 :
8464 : tree
8465 4140 : generic_simplify_CEIL_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8466 : {
8467 4140 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8468 4140 : if (integer_zerop (_p0))
8469 : {
8470 0 : {
8471 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8472 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8473 0 : if (res) return res;
8474 : }
8475 : }
8476 4140 : if (integer_onep (_p1))
8477 : {
8478 0 : {
8479 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8480 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8481 0 : if (res) return res;
8482 : }
8483 : }
8484 4140 : if (integer_minus_onep (_p1))
8485 : {
8486 0 : {
8487 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8488 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8489 0 : if (res) return res;
8490 : }
8491 : }
8492 4140 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8493 : {
8494 0 : {
8495 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8496 0 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8497 0 : if (res) return res;
8498 : }
8499 : }
8500 4140 : switch (TREE_CODE (_p0))
8501 : {
8502 0 : case CEIL_MOD_EXPR:
8503 0 : {
8504 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8505 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8506 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8507 : {
8508 0 : {
8509 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8510 0 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8511 0 : if (res) return res;
8512 : }
8513 : }
8514 : break;
8515 : }
8516 0 : case MULT_EXPR:
8517 0 : {
8518 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8519 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8520 0 : switch (TREE_CODE (_q21))
8521 : {
8522 0 : case INTEGER_CST:
8523 0 : {
8524 0 : switch (TREE_CODE (_p1))
8525 : {
8526 0 : case INTEGER_CST:
8527 0 : {
8528 0 : {
8529 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8530 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, CEIL_MOD_EXPR);
8531 0 : if (res) return res;
8532 : }
8533 0 : break;
8534 : }
8535 : default:;
8536 : }
8537 : break;
8538 : }
8539 : default:;
8540 : }
8541 : break;
8542 : }
8543 0 : case VEC_COND_EXPR:
8544 0 : {
8545 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8546 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8547 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8548 0 : switch (TREE_CODE (_p1))
8549 : {
8550 0 : case VEC_COND_EXPR:
8551 0 : {
8552 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8553 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8554 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8555 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8556 : {
8557 0 : {
8558 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8559 0 : if (VECTOR_TYPE_P (type)
8560 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8561 : || types_match (type, TREE_TYPE (captures[2]))
8562 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8563 : || (optimize_vectors_before_lowering_p ()
8564 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8565 : )
8566 : {
8567 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1675;
8568 0 : {
8569 0 : tree res_op0;
8570 0 : res_op0 = captures[1];
8571 0 : tree res_op1;
8572 0 : {
8573 0 : tree _o1[2], _r1;
8574 0 : _o1[0] = captures[2];
8575 0 : _o1[1] = captures[5];
8576 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8577 0 : if (EXPR_P (_r1))
8578 0 : goto next_after_fail1675;
8579 0 : res_op1 = _r1;
8580 : }
8581 0 : tree res_op2;
8582 0 : {
8583 0 : tree _o1[2], _r1;
8584 0 : _o1[0] = captures[3];
8585 0 : _o1[1] = captures[6];
8586 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8587 0 : if (EXPR_P (_r1))
8588 0 : goto next_after_fail1675;
8589 0 : res_op2 = _r1;
8590 : }
8591 0 : tree _r;
8592 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8593 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
8594 0 : return _r;
8595 : }
8596 0 : next_after_fail1675:;
8597 : }
8598 : }
8599 : }
8600 : break;
8601 : }
8602 0 : default:;
8603 : }
8604 0 : {
8605 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8606 0 : if (VECTOR_TYPE_P (type)
8607 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8608 : || types_match (type, TREE_TYPE (captures[2]))
8609 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8610 : || (optimize_vectors_before_lowering_p ()
8611 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8612 : )
8613 : {
8614 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1676;
8615 0 : {
8616 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1676;
8617 0 : tree res_op0;
8618 0 : res_op0 = captures[1];
8619 0 : tree res_op1;
8620 0 : {
8621 0 : tree _o1[2], _r1;
8622 0 : _o1[0] = captures[2];
8623 0 : _o1[1] = unshare_expr (captures[4]);
8624 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8625 0 : if (EXPR_P (_r1))
8626 0 : goto next_after_fail1676;
8627 0 : res_op1 = _r1;
8628 : }
8629 0 : tree res_op2;
8630 0 : {
8631 0 : tree _o1[2], _r1;
8632 0 : _o1[0] = captures[3];
8633 0 : _o1[1] = captures[4];
8634 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8635 0 : if (EXPR_P (_r1))
8636 0 : goto next_after_fail1676;
8637 0 : res_op2 = _r1;
8638 : }
8639 0 : tree _r;
8640 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8641 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
8642 0 : return _r;
8643 : }
8644 0 : next_after_fail1676:;
8645 : }
8646 : }
8647 0 : break;
8648 : }
8649 4140 : default:;
8650 : }
8651 4140 : switch (TREE_CODE (_p1))
8652 : {
8653 0 : case VEC_COND_EXPR:
8654 0 : {
8655 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8656 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8657 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8658 0 : {
8659 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8660 0 : if (VECTOR_TYPE_P (type)
8661 0 : && (TREE_CODE_CLASS (CEIL_MOD_EXPR) != tcc_comparison
8662 : || types_match (type, TREE_TYPE (captures[3]))
8663 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8664 : || (optimize_vectors_before_lowering_p ()
8665 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8666 : )
8667 : {
8668 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1677;
8669 0 : {
8670 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1677;
8671 0 : tree res_op0;
8672 0 : res_op0 = captures[2];
8673 0 : tree res_op1;
8674 0 : {
8675 0 : tree _o1[2], _r1;
8676 0 : _o1[0] = unshare_expr (captures[0]);
8677 0 : _o1[1] = captures[3];
8678 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8679 0 : if (EXPR_P (_r1))
8680 0 : goto next_after_fail1677;
8681 0 : res_op1 = _r1;
8682 : }
8683 0 : tree res_op2;
8684 0 : {
8685 0 : tree _o1[2], _r1;
8686 0 : _o1[0] = captures[0];
8687 0 : _o1[1] = captures[4];
8688 0 : _r1 = fold_build2_loc (loc, CEIL_MOD_EXPR, type, _o1[0], _o1[1]);
8689 0 : if (EXPR_P (_r1))
8690 0 : goto next_after_fail1677;
8691 0 : res_op2 = _r1;
8692 : }
8693 0 : tree _r;
8694 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8695 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8696 0 : return _r;
8697 : }
8698 0 : next_after_fail1677:;
8699 : }
8700 : }
8701 0 : break;
8702 : }
8703 : default:;
8704 : }
8705 : return NULL_TREE;
8706 : }
8707 :
8708 : tree
8709 0 : generic_simplify_ROUND_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8710 : {
8711 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8712 0 : if (integer_zerop (_p0))
8713 : {
8714 0 : {
8715 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8716 0 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8717 0 : if (res) return res;
8718 : }
8719 : }
8720 0 : if (integer_onep (_p1))
8721 : {
8722 0 : {
8723 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8724 0 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8725 0 : if (res) return res;
8726 : }
8727 : }
8728 0 : if (integer_minus_onep (_p1))
8729 : {
8730 0 : {
8731 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8732 0 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8733 0 : if (res) return res;
8734 : }
8735 : }
8736 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8737 : {
8738 0 : {
8739 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8740 0 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8741 0 : if (res) return res;
8742 : }
8743 : }
8744 0 : switch (TREE_CODE (_p0))
8745 : {
8746 0 : case ROUND_MOD_EXPR:
8747 0 : {
8748 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8749 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8750 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8751 : {
8752 0 : {
8753 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8754 0 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8755 0 : if (res) return res;
8756 : }
8757 : }
8758 : break;
8759 : }
8760 0 : case MULT_EXPR:
8761 0 : {
8762 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8763 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8764 0 : switch (TREE_CODE (_q21))
8765 : {
8766 0 : case INTEGER_CST:
8767 0 : {
8768 0 : switch (TREE_CODE (_p1))
8769 : {
8770 0 : case INTEGER_CST:
8771 0 : {
8772 0 : {
8773 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8774 0 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, ROUND_MOD_EXPR);
8775 0 : if (res) return res;
8776 : }
8777 0 : break;
8778 : }
8779 : default:;
8780 : }
8781 : break;
8782 : }
8783 : default:;
8784 : }
8785 : break;
8786 : }
8787 0 : case VEC_COND_EXPR:
8788 0 : {
8789 0 : tree _q20 = TREE_OPERAND (_p0, 0);
8790 0 : tree _q21 = TREE_OPERAND (_p0, 1);
8791 0 : tree _q22 = TREE_OPERAND (_p0, 2);
8792 0 : switch (TREE_CODE (_p1))
8793 : {
8794 0 : case VEC_COND_EXPR:
8795 0 : {
8796 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8797 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8798 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8799 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8800 : {
8801 0 : {
8802 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8803 0 : if (VECTOR_TYPE_P (type)
8804 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8805 : || types_match (type, TREE_TYPE (captures[2]))
8806 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8807 : || (optimize_vectors_before_lowering_p ()
8808 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8809 : )
8810 : {
8811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1678;
8812 0 : {
8813 0 : tree res_op0;
8814 0 : res_op0 = captures[1];
8815 0 : tree res_op1;
8816 0 : {
8817 0 : tree _o1[2], _r1;
8818 0 : _o1[0] = captures[2];
8819 0 : _o1[1] = captures[5];
8820 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8821 0 : if (EXPR_P (_r1))
8822 0 : goto next_after_fail1678;
8823 0 : res_op1 = _r1;
8824 : }
8825 0 : tree res_op2;
8826 0 : {
8827 0 : tree _o1[2], _r1;
8828 0 : _o1[0] = captures[3];
8829 0 : _o1[1] = captures[6];
8830 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8831 0 : if (EXPR_P (_r1))
8832 0 : goto next_after_fail1678;
8833 0 : res_op2 = _r1;
8834 : }
8835 0 : tree _r;
8836 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8837 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
8838 0 : return _r;
8839 : }
8840 0 : next_after_fail1678:;
8841 : }
8842 : }
8843 : }
8844 : break;
8845 : }
8846 0 : default:;
8847 : }
8848 0 : {
8849 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8850 0 : if (VECTOR_TYPE_P (type)
8851 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8852 : || types_match (type, TREE_TYPE (captures[2]))
8853 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8854 : || (optimize_vectors_before_lowering_p ()
8855 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8856 : )
8857 : {
8858 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1679;
8859 0 : {
8860 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1679;
8861 0 : tree res_op0;
8862 0 : res_op0 = captures[1];
8863 0 : tree res_op1;
8864 0 : {
8865 0 : tree _o1[2], _r1;
8866 0 : _o1[0] = captures[2];
8867 0 : _o1[1] = unshare_expr (captures[4]);
8868 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8869 0 : if (EXPR_P (_r1))
8870 0 : goto next_after_fail1679;
8871 0 : res_op1 = _r1;
8872 : }
8873 0 : tree res_op2;
8874 0 : {
8875 0 : tree _o1[2], _r1;
8876 0 : _o1[0] = captures[3];
8877 0 : _o1[1] = captures[4];
8878 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8879 0 : if (EXPR_P (_r1))
8880 0 : goto next_after_fail1679;
8881 0 : res_op2 = _r1;
8882 : }
8883 0 : tree _r;
8884 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8885 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
8886 0 : return _r;
8887 : }
8888 0 : next_after_fail1679:;
8889 : }
8890 : }
8891 0 : break;
8892 : }
8893 0 : default:;
8894 : }
8895 0 : switch (TREE_CODE (_p1))
8896 : {
8897 0 : case VEC_COND_EXPR:
8898 0 : {
8899 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8900 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8901 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8902 0 : {
8903 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8904 0 : if (VECTOR_TYPE_P (type)
8905 0 : && (TREE_CODE_CLASS (ROUND_MOD_EXPR) != tcc_comparison
8906 : || types_match (type, TREE_TYPE (captures[3]))
8907 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8908 : || (optimize_vectors_before_lowering_p ()
8909 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8910 : )
8911 : {
8912 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1680;
8913 0 : {
8914 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1680;
8915 0 : tree res_op0;
8916 0 : res_op0 = captures[2];
8917 0 : tree res_op1;
8918 0 : {
8919 0 : tree _o1[2], _r1;
8920 0 : _o1[0] = unshare_expr (captures[0]);
8921 0 : _o1[1] = captures[3];
8922 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8923 0 : if (EXPR_P (_r1))
8924 0 : goto next_after_fail1680;
8925 0 : res_op1 = _r1;
8926 : }
8927 0 : tree res_op2;
8928 0 : {
8929 0 : tree _o1[2], _r1;
8930 0 : _o1[0] = captures[0];
8931 0 : _o1[1] = captures[4];
8932 0 : _r1 = fold_build2_loc (loc, ROUND_MOD_EXPR, type, _o1[0], _o1[1]);
8933 0 : if (EXPR_P (_r1))
8934 0 : goto next_after_fail1680;
8935 0 : res_op2 = _r1;
8936 : }
8937 0 : tree _r;
8938 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8939 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8940 0 : return _r;
8941 : }
8942 0 : next_after_fail1680:;
8943 : }
8944 : }
8945 0 : break;
8946 : }
8947 : default:;
8948 : }
8949 : return NULL_TREE;
8950 : }
8951 :
8952 : tree
8953 2102651 : generic_simplify_TRUNC_MOD_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
8954 : {
8955 2102651 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
8956 2102651 : if (integer_zerop (_p0))
8957 : {
8958 929 : {
8959 929 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8960 929 : tree res = generic_simplify_329 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8961 929 : if (res) return res;
8962 : }
8963 : }
8964 2101859 : if (integer_onep (_p1))
8965 : {
8966 216658 : {
8967 216658 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8968 216658 : tree res = generic_simplify_330 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8969 216658 : if (res) return res;
8970 : }
8971 : }
8972 1885201 : if (integer_minus_onep (_p1))
8973 : {
8974 529 : {
8975 529 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
8976 529 : tree res = generic_simplify_331 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8977 529 : if (res) return res;
8978 : }
8979 : }
8980 1885181 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8981 : {
8982 230 : {
8983 230 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8984 230 : tree res = generic_simplify_332 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8985 230 : if (res) return res;
8986 : }
8987 : }
8988 1885088 : switch (TREE_CODE (_p0))
8989 : {
8990 107 : case TRUNC_MOD_EXPR:
8991 107 : {
8992 107 : tree _q20 = TREE_OPERAND (_p0, 0);
8993 107 : tree _q21 = TREE_OPERAND (_p0, 1);
8994 107 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
8995 : {
8996 52 : {
8997 52 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8998 52 : tree res = generic_simplify_333 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
8999 52 : if (res) return res;
9000 : }
9001 : }
9002 : break;
9003 : }
9004 7343 : case MULT_EXPR:
9005 7343 : {
9006 7343 : tree _q20 = TREE_OPERAND (_p0, 0);
9007 7343 : tree _q21 = TREE_OPERAND (_p0, 1);
9008 7343 : switch (TREE_CODE (_q21))
9009 : {
9010 7250 : case INTEGER_CST:
9011 7250 : {
9012 7250 : switch (TREE_CODE (_p1))
9013 : {
9014 7228 : case INTEGER_CST:
9015 7228 : {
9016 7228 : {
9017 7228 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9018 7228 : tree res = generic_simplify_334 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9019 7228 : if (res) return res;
9020 : }
9021 7228 : break;
9022 : }
9023 : default:;
9024 : }
9025 : break;
9026 : }
9027 : default:;
9028 : }
9029 : break;
9030 : }
9031 1885036 : default:;
9032 : }
9033 1885036 : switch (TREE_CODE (_p1))
9034 : {
9035 1605307 : case INTEGER_CST:
9036 1605307 : {
9037 1605307 : {
9038 1605307 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9039 1605307 : if (TYPE_SIGN (type) == SIGNED
9040 286114 : && !TREE_OVERFLOW (captures[1])
9041 1605311 : && wi::neg_p (wi::to_wide (captures[1]))
9042 313 : && !TYPE_OVERFLOW_TRAPS (type)
9043 1605620 : && !sign_bit_p (captures[1], captures[1])
9044 : )
9045 : {
9046 309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1681;
9047 309 : {
9048 309 : tree res_op0;
9049 309 : res_op0 = captures[0];
9050 309 : tree res_op1;
9051 309 : {
9052 309 : tree _o1[1], _r1;
9053 309 : _o1[0] = captures[1];
9054 309 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
9055 309 : res_op1 = _r1;
9056 : }
9057 309 : tree _r;
9058 309 : _r = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, res_op0, res_op1);
9059 309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1014, __FILE__, __LINE__, true);
9060 309 : return _r;
9061 : }
9062 0 : next_after_fail1681:;
9063 : }
9064 : }
9065 1604998 : break;
9066 : }
9067 58295 : CASE_CONVERT:
9068 58295 : {
9069 58295 : tree _q30 = TREE_OPERAND (_p1, 0);
9070 58295 : switch (TREE_CODE (_q30))
9071 : {
9072 0 : case NEGATE_EXPR:
9073 0 : {
9074 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9075 0 : {
9076 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
9077 0 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures);
9078 0 : if (res) return res;
9079 : }
9080 0 : break;
9081 : }
9082 58295 : default:;
9083 : }
9084 58295 : {
9085 58295 : tree _q30_pops[1];
9086 58295 : if (tree_power_of_two_cand (_q30, _q30_pops))
9087 : {
9088 7 : tree _q40 = _q30_pops[0];
9089 7 : {
9090 7 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q40 };
9091 7 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9092 7 : if (res) return res;
9093 : }
9094 : }
9095 : }
9096 58288 : break;
9097 : }
9098 94 : case NEGATE_EXPR:
9099 94 : {
9100 94 : tree _q30 = TREE_OPERAND (_p1, 0);
9101 94 : {
9102 94 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9103 94 : tree res = generic_simplify_422 (loc, type, _p0, _p1, captures);
9104 94 : if (res) return res;
9105 : }
9106 94 : break;
9107 : }
9108 1884720 : default:;
9109 : }
9110 1884720 : {
9111 1884720 : tree _p1_pops[1];
9112 1884720 : if (tree_power_of_two_cand (_p1, _p1_pops))
9113 : {
9114 1605007 : tree _q30 = _p1_pops[0];
9115 1605007 : {
9116 1605007 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q30 };
9117 1605007 : tree res = generic_simplify_335 (loc, type, _p0, _p1, captures, TRUNC_MOD_EXPR);
9118 1605007 : if (res) return res;
9119 : }
9120 : }
9121 : }
9122 917922 : switch (TREE_CODE (_p0))
9123 : {
9124 0 : case VEC_COND_EXPR:
9125 0 : {
9126 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9127 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9128 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9129 0 : switch (TREE_CODE (_p1))
9130 : {
9131 0 : case VEC_COND_EXPR:
9132 0 : {
9133 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9134 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9135 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9136 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9137 : {
9138 0 : {
9139 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9140 0 : if (VECTOR_TYPE_P (type)
9141 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9142 : || types_match (type, TREE_TYPE (captures[2]))
9143 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9144 : || (optimize_vectors_before_lowering_p ()
9145 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9146 : )
9147 : {
9148 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1682;
9149 0 : {
9150 0 : tree res_op0;
9151 0 : res_op0 = captures[1];
9152 0 : tree res_op1;
9153 0 : {
9154 0 : tree _o1[2], _r1;
9155 0 : _o1[0] = captures[2];
9156 0 : _o1[1] = captures[5];
9157 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9158 0 : if (EXPR_P (_r1))
9159 0 : goto next_after_fail1682;
9160 0 : res_op1 = _r1;
9161 : }
9162 0 : tree res_op2;
9163 0 : {
9164 0 : tree _o1[2], _r1;
9165 0 : _o1[0] = captures[3];
9166 0 : _o1[1] = captures[6];
9167 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9168 0 : if (EXPR_P (_r1))
9169 0 : goto next_after_fail1682;
9170 0 : res_op2 = _r1;
9171 : }
9172 0 : tree _r;
9173 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9174 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
9175 0 : return _r;
9176 : }
9177 0 : next_after_fail1682:;
9178 : }
9179 : }
9180 : }
9181 : break;
9182 : }
9183 0 : default:;
9184 : }
9185 0 : {
9186 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
9187 0 : if (VECTOR_TYPE_P (type)
9188 0 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9189 : || types_match (type, TREE_TYPE (captures[2]))
9190 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9191 : || (optimize_vectors_before_lowering_p ()
9192 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9193 : )
9194 : {
9195 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1683;
9196 0 : {
9197 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1683;
9198 0 : tree res_op0;
9199 0 : res_op0 = captures[1];
9200 0 : tree res_op1;
9201 0 : {
9202 0 : tree _o1[2], _r1;
9203 0 : _o1[0] = captures[2];
9204 0 : _o1[1] = unshare_expr (captures[4]);
9205 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9206 0 : if (EXPR_P (_r1))
9207 0 : goto next_after_fail1683;
9208 0 : res_op1 = _r1;
9209 : }
9210 0 : tree res_op2;
9211 0 : {
9212 0 : tree _o1[2], _r1;
9213 0 : _o1[0] = captures[3];
9214 0 : _o1[1] = captures[4];
9215 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9216 0 : if (EXPR_P (_r1))
9217 0 : goto next_after_fail1683;
9218 0 : res_op2 = _r1;
9219 : }
9220 0 : tree _r;
9221 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9222 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
9223 0 : return _r;
9224 : }
9225 0 : next_after_fail1683:;
9226 : }
9227 : }
9228 0 : break;
9229 : }
9230 917922 : default:;
9231 : }
9232 917922 : switch (TREE_CODE (_p1))
9233 : {
9234 7 : case VEC_COND_EXPR:
9235 7 : {
9236 7 : tree _q30 = TREE_OPERAND (_p1, 0);
9237 7 : tree _q31 = TREE_OPERAND (_p1, 1);
9238 7 : tree _q32 = TREE_OPERAND (_p1, 2);
9239 7 : {
9240 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
9241 7 : if (VECTOR_TYPE_P (type)
9242 7 : && (TREE_CODE_CLASS (TRUNC_MOD_EXPR) != tcc_comparison
9243 : || types_match (type, TREE_TYPE (captures[3]))
9244 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
9245 : || (optimize_vectors_before_lowering_p ()
9246 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
9247 : )
9248 : {
9249 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1684;
9250 7 : {
9251 7 : if (! tree_invariant_p (captures[0])) goto next_after_fail1684;
9252 0 : tree res_op0;
9253 0 : res_op0 = captures[2];
9254 0 : tree res_op1;
9255 0 : {
9256 0 : tree _o1[2], _r1;
9257 0 : _o1[0] = unshare_expr (captures[0]);
9258 0 : _o1[1] = captures[3];
9259 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9260 0 : if (EXPR_P (_r1))
9261 0 : goto next_after_fail1684;
9262 0 : res_op1 = _r1;
9263 : }
9264 0 : tree res_op2;
9265 0 : {
9266 0 : tree _o1[2], _r1;
9267 0 : _o1[0] = captures[0];
9268 0 : _o1[1] = captures[4];
9269 0 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, type, _o1[0], _o1[1]);
9270 0 : if (EXPR_P (_r1))
9271 0 : goto next_after_fail1684;
9272 0 : res_op2 = _r1;
9273 : }
9274 0 : tree _r;
9275 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9276 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
9277 0 : return _r;
9278 : }
9279 7 : next_after_fail1684:;
9280 : }
9281 : }
9282 7 : break;
9283 : }
9284 : default:;
9285 : }
9286 : return NULL_TREE;
9287 : }
9288 :
9289 : tree
9290 1022620 : generic_simplify_RSHIFT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
9291 : {
9292 1022620 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
9293 1022620 : switch (TREE_CODE (_p1))
9294 : {
9295 135 : case TRUNC_MOD_EXPR:
9296 135 : {
9297 135 : tree _q30 = TREE_OPERAND (_p1, 0);
9298 135 : tree _q31 = TREE_OPERAND (_p1, 1);
9299 135 : {
9300 135 : tree _q31_pops[1];
9301 135 : if (tree_power_of_two_cand (_q31, _q31_pops))
9302 : {
9303 127 : tree _q50 = _q31_pops[0];
9304 127 : {
9305 127 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9306 127 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, TRUNC_MOD_EXPR);
9307 127 : if (res) return res;
9308 : }
9309 : }
9310 : }
9311 14 : break;
9312 : }
9313 0 : case FLOOR_MOD_EXPR:
9314 0 : {
9315 0 : tree _q30 = TREE_OPERAND (_p1, 0);
9316 0 : tree _q31 = TREE_OPERAND (_p1, 1);
9317 0 : {
9318 0 : tree _q31_pops[1];
9319 0 : if (tree_power_of_two_cand (_q31, _q31_pops))
9320 : {
9321 0 : tree _q50 = _q31_pops[0];
9322 0 : {
9323 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q50 };
9324 0 : tree res = generic_simplify_423 (loc, type, _p0, _p1, captures, RSHIFT_EXPR, FLOOR_MOD_EXPR);
9325 0 : if (res) return res;
9326 : }
9327 : }
9328 : }
9329 0 : break;
9330 : }
9331 1022499 : default:;
9332 : }
9333 1022499 : if (uniform_integer_cst_p (_p1))
9334 : {
9335 820061 : {
9336 820061 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9337 820061 : tree res = generic_simplify_424 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9338 820061 : if (res) return res;
9339 : }
9340 : }
9341 1021742 : switch (TREE_CODE (_p0))
9342 : {
9343 60 : case NEGATE_EXPR:
9344 60 : {
9345 60 : tree _q20 = TREE_OPERAND (_p0, 0);
9346 60 : switch (TREE_CODE (_p1))
9347 : {
9348 59 : case INTEGER_CST:
9349 59 : {
9350 59 : {
9351 59 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9352 59 : if (!TYPE_UNSIGNED (type)
9353 59 : && TYPE_OVERFLOW_UNDEFINED (type)
9354 : )
9355 : {
9356 32 : {
9357 32 : tree stype = TREE_TYPE (captures[2]);
9358 32 : tree bt = truth_type_for (type);
9359 32 : tree zeros = build_zero_cst (type);
9360 32 : tree INTEGER_CST = NULL_TREE;
9361 32 : if (INTEGRAL_TYPE_P (type)
9362 : && canonicalize_math_after_vectorization_p ()
9363 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9364 : )
9365 : {
9366 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1693;
9367 : {
9368 : tree res_op0;
9369 : {
9370 : tree _o1[1], _r1;
9371 : {
9372 : tree _o2[2], _r2;
9373 : _o2[0] = captures[1];
9374 : _o2[1] = zeros;
9375 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9376 : _o1[0] = _r2;
9377 : }
9378 : if (TREE_TYPE (_o1[0]) != type)
9379 : {
9380 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9381 : }
9382 : else
9383 : _r1 = _o1[0];
9384 : res_op0 = _r1;
9385 : }
9386 : tree _r;
9387 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9388 : if (TREE_SIDE_EFFECTS (captures[2]))
9389 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9390 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1019, __FILE__, __LINE__, true);
9391 : return _r;
9392 : }
9393 : next_after_fail1693:;
9394 : }
9395 : else
9396 : {
9397 0 : if (VECTOR_INTEGER_TYPE_P (type)
9398 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9399 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9400 0 : && (INTEGER_CST = uniform_integer_cst_p (captures[2])) != NULL
9401 32 : && wi::eq_p (wi::to_wide (INTEGER_CST), element_precision (type) - 1)
9402 : )
9403 : {
9404 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1694;
9405 0 : {
9406 0 : tree res_op0;
9407 0 : {
9408 0 : tree _o1[2], _r1;
9409 0 : _o1[0] = captures[1];
9410 0 : _o1[1] = zeros;
9411 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9412 0 : res_op0 = _r1;
9413 : }
9414 0 : tree _r;
9415 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9416 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9417 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9418 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9419 0 : return _r;
9420 : }
9421 0 : next_after_fail1694:;
9422 : }
9423 : }
9424 : }
9425 : }
9426 : }
9427 59 : break;
9428 : }
9429 0 : case VECTOR_CST:
9430 0 : {
9431 0 : {
9432 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9433 0 : if (!TYPE_UNSIGNED (type)
9434 0 : && TYPE_OVERFLOW_UNDEFINED (type)
9435 : )
9436 : {
9437 0 : {
9438 0 : tree stype = TREE_TYPE (captures[2]);
9439 0 : tree bt = truth_type_for (type);
9440 0 : tree zeros = build_zero_cst (type);
9441 0 : tree VECTOR_CST = NULL_TREE;
9442 0 : if (INTEGRAL_TYPE_P (type)
9443 : && canonicalize_math_after_vectorization_p ()
9444 : && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1)
9445 : )
9446 : {
9447 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1695;
9448 : {
9449 : tree res_op0;
9450 : {
9451 : tree _o1[1], _r1;
9452 : {
9453 : tree _o2[2], _r2;
9454 : _o2[0] = captures[1];
9455 : _o2[1] = zeros;
9456 : _r2 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o2[0], _o2[1]);
9457 : _o1[0] = _r2;
9458 : }
9459 : if (TREE_TYPE (_o1[0]) != type)
9460 : {
9461 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
9462 : }
9463 : else
9464 : _r1 = _o1[0];
9465 : res_op0 = _r1;
9466 : }
9467 : tree _r;
9468 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
9469 : if (TREE_SIDE_EFFECTS (captures[2]))
9470 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9471 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1019, __FILE__, __LINE__, true);
9472 : return _r;
9473 : }
9474 : next_after_fail1695:;
9475 : }
9476 : else
9477 : {
9478 0 : if (VECTOR_INTEGER_TYPE_P (type)
9479 0 : && TYPE_MODE (bt) == TYPE_MODE (type)
9480 0 : && expand_vec_cmp_expr_p (type, bt, GT_EXPR)
9481 0 : && (VECTOR_CST = uniform_integer_cst_p (captures[2])) != NULL
9482 0 : && wi::eq_p (wi::to_wide (VECTOR_CST), element_precision (type) - 1)
9483 : )
9484 : {
9485 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1696;
9486 0 : {
9487 0 : tree res_op0;
9488 0 : {
9489 0 : tree _o1[2], _r1;
9490 0 : _o1[0] = captures[1];
9491 0 : _o1[1] = zeros;
9492 0 : _r1 = fold_build2_loc (loc, GT_EXPR, bt, _o1[0], _o1[1]);
9493 0 : res_op0 = _r1;
9494 : }
9495 0 : tree _r;
9496 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
9497 0 : if (TREE_SIDE_EFFECTS (captures[2]))
9498 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
9499 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1020, __FILE__, __LINE__, true);
9500 0 : return _r;
9501 : }
9502 0 : next_after_fail1696:;
9503 : }
9504 : }
9505 : }
9506 : }
9507 : }
9508 0 : break;
9509 : }
9510 : default:;
9511 : }
9512 : break;
9513 : }
9514 441 : case LSHIFT_EXPR:
9515 441 : {
9516 441 : tree _q20 = TREE_OPERAND (_p0, 0);
9517 441 : tree _q21 = TREE_OPERAND (_p0, 1);
9518 441 : switch (TREE_CODE (_q21))
9519 : {
9520 362 : case INTEGER_CST:
9521 362 : {
9522 362 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
9523 : {
9524 67 : {
9525 67 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q21 };
9526 67 : tree res = generic_simplify_433 (loc, type, _p0, _p1, captures);
9527 67 : if (res) return res;
9528 : }
9529 : }
9530 : break;
9531 : }
9532 : default:;
9533 : }
9534 : break;
9535 : }
9536 1021715 : default:;
9537 : }
9538 1021715 : {
9539 1021715 : tree _p0_pops[1];
9540 1021715 : if (tree_nop_convert (_p0, _p0_pops))
9541 : {
9542 172031 : tree _q20 = _p0_pops[0];
9543 172031 : switch (TREE_CODE (_q20))
9544 : {
9545 20 : case LSHIFT_EXPR:
9546 20 : {
9547 20 : tree _q30 = TREE_OPERAND (_q20, 0);
9548 20 : tree _q31 = TREE_OPERAND (_q20, 1);
9549 20 : switch (TREE_CODE (_q31))
9550 : {
9551 0 : case INTEGER_CST:
9552 0 : {
9553 0 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
9554 : {
9555 0 : {
9556 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _p1, _q31 };
9557 0 : tree res = generic_simplify_433 (loc, type, _p0, _p1, captures);
9558 0 : if (res) return res;
9559 : }
9560 : }
9561 : break;
9562 : }
9563 : default:;
9564 : }
9565 : break;
9566 : }
9567 : default:;
9568 : }
9569 : }
9570 : }
9571 1021715 : if (integer_all_onesp (_p0))
9572 : {
9573 11623 : {
9574 11623 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9575 11623 : if (!TYPE_UNSIGNED (type)
9576 : )
9577 : {
9578 119 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1697;
9579 119 : {
9580 119 : tree _r;
9581 119 : _r = captures[0];
9582 119 : if (TREE_SIDE_EFFECTS (captures[1]))
9583 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9584 119 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1021, __FILE__, __LINE__, true);
9585 119 : return _r;
9586 : }
9587 0 : next_after_fail1697:;
9588 : }
9589 : }
9590 : }
9591 1021596 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
9592 : {
9593 25 : {
9594 25 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9595 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1698;
9596 25 : {
9597 25 : tree _r;
9598 25 : _r = build_zero_cst (type);
9599 25 : if (TREE_SIDE_EFFECTS (captures[0]))
9600 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
9601 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1022, __FILE__, __LINE__, true);
9602 25 : return _r;
9603 : }
9604 0 : next_after_fail1698:;
9605 : }
9606 : }
9607 1021571 : if (integer_zerop (_p1))
9608 : {
9609 1333 : {
9610 1333 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9611 1333 : tree res = generic_simplify_426 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9612 1333 : if (res) return res;
9613 : }
9614 : }
9615 1020238 : if (integer_zerop (_p0))
9616 : {
9617 152 : {
9618 152 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9619 152 : tree res = generic_simplify_427 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9620 152 : if (res) return res;
9621 : }
9622 : }
9623 1020086 : switch (TREE_CODE (_p1))
9624 : {
9625 0 : case VECTOR_CST:
9626 0 : {
9627 0 : {
9628 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9629 0 : tree res = generic_simplify_428 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9630 0 : if (res) return res;
9631 : }
9632 0 : break;
9633 : }
9634 0 : case CONSTRUCTOR:
9635 0 : {
9636 0 : {
9637 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9638 0 : tree res = generic_simplify_429 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9639 0 : if (res) return res;
9640 : }
9641 0 : break;
9642 : }
9643 1020086 : default:;
9644 : }
9645 1020086 : switch (TREE_CODE (_p0))
9646 : {
9647 122 : case RSHIFT_EXPR:
9648 122 : {
9649 122 : tree _q20 = TREE_OPERAND (_p0, 0);
9650 122 : tree _q21 = TREE_OPERAND (_p0, 1);
9651 122 : switch (TREE_CODE (_q21))
9652 : {
9653 77 : case INTEGER_CST:
9654 77 : {
9655 77 : switch (TREE_CODE (_p1))
9656 : {
9657 51 : case INTEGER_CST:
9658 51 : {
9659 51 : {
9660 51 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9661 51 : tree res = generic_simplify_430 (loc, type, _p0, _p1, captures, RSHIFT_EXPR);
9662 51 : if (res) return res;
9663 : }
9664 0 : break;
9665 : }
9666 : default:;
9667 : }
9668 : break;
9669 : }
9670 : default:;
9671 : }
9672 : break;
9673 : }
9674 196163 : CASE_CONVERT:
9675 196163 : {
9676 196163 : tree _q20 = TREE_OPERAND (_p0, 0);
9677 196163 : switch (TREE_CODE (_q20))
9678 : {
9679 6 : case BIT_AND_EXPR:
9680 6 : {
9681 6 : tree _q30 = TREE_OPERAND (_q20, 0);
9682 6 : tree _q31 = TREE_OPERAND (_q20, 1);
9683 6 : switch (TREE_CODE (_q31))
9684 : {
9685 0 : case INTEGER_CST:
9686 0 : {
9687 0 : switch (TREE_CODE (_p1))
9688 : {
9689 0 : case INTEGER_CST:
9690 0 : {
9691 0 : {
9692 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9693 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9694 0 : if (res) return res;
9695 : }
9696 0 : break;
9697 : }
9698 : default:;
9699 : }
9700 : break;
9701 : }
9702 : default:;
9703 : }
9704 : break;
9705 : }
9706 14 : case BIT_XOR_EXPR:
9707 14 : {
9708 14 : tree _q30 = TREE_OPERAND (_q20, 0);
9709 14 : tree _q31 = TREE_OPERAND (_q20, 1);
9710 14 : switch (TREE_CODE (_q31))
9711 : {
9712 0 : case INTEGER_CST:
9713 0 : {
9714 0 : switch (TREE_CODE (_p1))
9715 : {
9716 0 : case INTEGER_CST:
9717 0 : {
9718 0 : {
9719 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9720 0 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9721 0 : if (res) return res;
9722 : }
9723 0 : break;
9724 : }
9725 : default:;
9726 : }
9727 : break;
9728 : }
9729 : default:;
9730 : }
9731 : break;
9732 : }
9733 43 : case BIT_IOR_EXPR:
9734 43 : {
9735 43 : tree _q30 = TREE_OPERAND (_q20, 0);
9736 43 : tree _q31 = TREE_OPERAND (_q20, 1);
9737 43 : switch (TREE_CODE (_q31))
9738 : {
9739 24 : case INTEGER_CST:
9740 24 : {
9741 24 : switch (TREE_CODE (_p1))
9742 : {
9743 7 : case INTEGER_CST:
9744 7 : {
9745 7 : {
9746 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
9747 7 : tree res = generic_simplify_431 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9748 7 : if (res) return res;
9749 : }
9750 0 : break;
9751 : }
9752 : default:;
9753 : }
9754 : break;
9755 : }
9756 : default:;
9757 : }
9758 : break;
9759 : }
9760 203 : case CALL_EXPR:
9761 203 : switch (get_call_combined_fn (_q20))
9762 : {
9763 0 : case CFN_BSWAP:
9764 0 : if (call_expr_nargs (_q20) == 1)
9765 : {
9766 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9767 0 : switch (TREE_CODE (_p1))
9768 : {
9769 0 : case INTEGER_CST:
9770 0 : {
9771 0 : {
9772 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9773 0 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BSWAP);
9774 0 : if (res) return res;
9775 : }
9776 0 : break;
9777 : }
9778 : default:;
9779 : }
9780 : }
9781 : break;
9782 0 : case CFN_BUILT_IN_BSWAP128:
9783 0 : if (call_expr_nargs (_q20) == 1)
9784 : {
9785 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9786 0 : switch (TREE_CODE (_p1))
9787 : {
9788 0 : case INTEGER_CST:
9789 0 : {
9790 0 : {
9791 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9792 0 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
9793 0 : if (res) return res;
9794 : }
9795 0 : break;
9796 : }
9797 : default:;
9798 : }
9799 : }
9800 : break;
9801 8 : case CFN_BUILT_IN_BSWAP16:
9802 8 : if (call_expr_nargs (_q20) == 1)
9803 : {
9804 8 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9805 8 : switch (TREE_CODE (_p1))
9806 : {
9807 7 : case INTEGER_CST:
9808 7 : {
9809 7 : {
9810 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9811 7 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
9812 7 : if (res) return res;
9813 : }
9814 2 : break;
9815 : }
9816 : default:;
9817 : }
9818 : }
9819 : break;
9820 13 : case CFN_BUILT_IN_BSWAP32:
9821 13 : if (call_expr_nargs (_q20) == 1)
9822 : {
9823 13 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9824 13 : switch (TREE_CODE (_p1))
9825 : {
9826 13 : case INTEGER_CST:
9827 13 : {
9828 13 : {
9829 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9830 13 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
9831 13 : if (res) return res;
9832 : }
9833 9 : break;
9834 : }
9835 : default:;
9836 : }
9837 : }
9838 : break;
9839 18 : case CFN_BUILT_IN_BSWAP64:
9840 18 : if (call_expr_nargs (_q20) == 1)
9841 : {
9842 18 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
9843 18 : switch (TREE_CODE (_p1))
9844 : {
9845 18 : case INTEGER_CST:
9846 18 : {
9847 18 : {
9848 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9849 18 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
9850 18 : if (res) return res;
9851 : }
9852 12 : break;
9853 : }
9854 : default:;
9855 : }
9856 : }
9857 : break;
9858 : default:;
9859 : }
9860 : break;
9861 : default:;
9862 : }
9863 : break;
9864 : }
9865 13922 : case BIT_AND_EXPR:
9866 13922 : {
9867 13922 : tree _q20 = TREE_OPERAND (_p0, 0);
9868 13922 : tree _q21 = TREE_OPERAND (_p0, 1);
9869 13922 : switch (TREE_CODE (_q21))
9870 : {
9871 13872 : case INTEGER_CST:
9872 13872 : {
9873 13872 : switch (TREE_CODE (_p1))
9874 : {
9875 13849 : case INTEGER_CST:
9876 13849 : {
9877 13849 : {
9878 13849 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9879 13849 : tree res = generic_simplify_432 (loc, type, _p0, _p1, captures, BIT_AND_EXPR, RSHIFT_EXPR);
9880 13849 : if (res) return res;
9881 : }
9882 0 : break;
9883 : }
9884 : default:;
9885 : }
9886 : break;
9887 : }
9888 : default:;
9889 : }
9890 : break;
9891 : }
9892 240 : case BIT_XOR_EXPR:
9893 240 : {
9894 240 : tree _q20 = TREE_OPERAND (_p0, 0);
9895 240 : tree _q21 = TREE_OPERAND (_p0, 1);
9896 240 : switch (TREE_CODE (_q21))
9897 : {
9898 97 : case INTEGER_CST:
9899 97 : {
9900 97 : switch (TREE_CODE (_p1))
9901 : {
9902 97 : case INTEGER_CST:
9903 97 : {
9904 97 : {
9905 97 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9906 97 : tree res = generic_simplify_432 (loc, type, _p0, _p1, captures, BIT_XOR_EXPR, RSHIFT_EXPR);
9907 97 : if (res) return res;
9908 : }
9909 0 : break;
9910 : }
9911 : default:;
9912 : }
9913 : break;
9914 : }
9915 : default:;
9916 : }
9917 : break;
9918 : }
9919 47 : case BIT_IOR_EXPR:
9920 47 : {
9921 47 : tree _q20 = TREE_OPERAND (_p0, 0);
9922 47 : tree _q21 = TREE_OPERAND (_p0, 1);
9923 47 : switch (TREE_CODE (_q21))
9924 : {
9925 2 : case INTEGER_CST:
9926 2 : {
9927 2 : switch (TREE_CODE (_p1))
9928 : {
9929 0 : case INTEGER_CST:
9930 0 : {
9931 0 : {
9932 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21, _p1 };
9933 0 : tree res = generic_simplify_432 (loc, type, _p0, _p1, captures, BIT_IOR_EXPR, RSHIFT_EXPR);
9934 0 : if (res) return res;
9935 : }
9936 0 : break;
9937 : }
9938 : default:;
9939 : }
9940 : break;
9941 : }
9942 : default:;
9943 : }
9944 : break;
9945 : }
9946 0 : case VEC_COND_EXPR:
9947 0 : {
9948 0 : tree _q20 = TREE_OPERAND (_p0, 0);
9949 0 : tree _q21 = TREE_OPERAND (_p0, 1);
9950 0 : tree _q22 = TREE_OPERAND (_p0, 2);
9951 0 : switch (TREE_CODE (_p1))
9952 : {
9953 0 : case VEC_COND_EXPR:
9954 0 : {
9955 0 : tree _q60 = TREE_OPERAND (_p1, 0);
9956 0 : tree _q61 = TREE_OPERAND (_p1, 1);
9957 0 : tree _q62 = TREE_OPERAND (_p1, 2);
9958 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9959 : {
9960 0 : {
9961 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
9962 0 : if (VECTOR_TYPE_P (type)
9963 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
9964 : || types_match (type, TREE_TYPE (captures[2]))
9965 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
9966 : || (optimize_vectors_before_lowering_p ()
9967 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
9968 : )
9969 : {
9970 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1699;
9971 0 : {
9972 0 : tree res_op0;
9973 0 : res_op0 = captures[1];
9974 0 : tree res_op1;
9975 0 : {
9976 0 : tree _o1[2], _r1;
9977 0 : _o1[0] = captures[2];
9978 0 : _o1[1] = captures[5];
9979 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9980 0 : if (EXPR_P (_r1))
9981 0 : goto next_after_fail1699;
9982 0 : res_op1 = _r1;
9983 : }
9984 0 : tree res_op2;
9985 0 : {
9986 0 : tree _o1[2], _r1;
9987 0 : _o1[0] = captures[3];
9988 0 : _o1[1] = captures[6];
9989 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
9990 0 : if (EXPR_P (_r1))
9991 0 : goto next_after_fail1699;
9992 0 : res_op2 = _r1;
9993 : }
9994 0 : tree _r;
9995 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
9996 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
9997 0 : return _r;
9998 : }
9999 0 : next_after_fail1699:;
10000 : }
10001 : }
10002 : }
10003 : break;
10004 : }
10005 0 : default:;
10006 : }
10007 0 : {
10008 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
10009 0 : if (VECTOR_TYPE_P (type)
10010 0 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
10011 : || types_match (type, TREE_TYPE (captures[2]))
10012 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
10013 : || (optimize_vectors_before_lowering_p ()
10014 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
10015 : )
10016 : {
10017 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1700;
10018 0 : {
10019 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1700;
10020 0 : tree res_op0;
10021 0 : res_op0 = captures[1];
10022 0 : tree res_op1;
10023 0 : {
10024 0 : tree _o1[2], _r1;
10025 0 : _o1[0] = captures[2];
10026 0 : _o1[1] = unshare_expr (captures[4]);
10027 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10028 0 : if (EXPR_P (_r1))
10029 0 : goto next_after_fail1700;
10030 0 : res_op1 = _r1;
10031 : }
10032 0 : tree res_op2;
10033 0 : {
10034 0 : tree _o1[2], _r1;
10035 0 : _o1[0] = captures[3];
10036 0 : _o1[1] = captures[4];
10037 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10038 0 : if (EXPR_P (_r1))
10039 0 : goto next_after_fail1700;
10040 0 : res_op2 = _r1;
10041 : }
10042 0 : tree _r;
10043 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
10045 0 : return _r;
10046 : }
10047 0 : next_after_fail1700:;
10048 : }
10049 : }
10050 0 : break;
10051 : }
10052 704 : case CALL_EXPR:
10053 704 : switch (get_call_combined_fn (_p0))
10054 : {
10055 0 : case CFN_BSWAP:
10056 0 : if (call_expr_nargs (_p0) == 1)
10057 : {
10058 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10059 0 : switch (TREE_CODE (_p1))
10060 : {
10061 0 : case INTEGER_CST:
10062 0 : {
10063 0 : {
10064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10065 0 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BSWAP);
10066 0 : if (res) return res;
10067 : }
10068 0 : break;
10069 : }
10070 : default:;
10071 : }
10072 : }
10073 : break;
10074 0 : case CFN_BUILT_IN_BSWAP128:
10075 0 : if (call_expr_nargs (_p0) == 1)
10076 : {
10077 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10078 0 : switch (TREE_CODE (_p1))
10079 : {
10080 0 : case INTEGER_CST:
10081 0 : {
10082 0 : {
10083 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10084 0 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP128);
10085 0 : if (res) return res;
10086 : }
10087 0 : break;
10088 : }
10089 : default:;
10090 : }
10091 : }
10092 : break;
10093 32 : case CFN_BUILT_IN_BSWAP16:
10094 32 : if (call_expr_nargs (_p0) == 1)
10095 : {
10096 32 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10097 32 : switch (TREE_CODE (_p1))
10098 : {
10099 32 : case INTEGER_CST:
10100 32 : {
10101 32 : {
10102 32 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10103 32 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP16);
10104 32 : if (res) return res;
10105 : }
10106 9 : break;
10107 : }
10108 : default:;
10109 : }
10110 : }
10111 : break;
10112 101 : case CFN_BUILT_IN_BSWAP32:
10113 101 : if (call_expr_nargs (_p0) == 1)
10114 : {
10115 101 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10116 101 : switch (TREE_CODE (_p1))
10117 : {
10118 100 : case INTEGER_CST:
10119 100 : {
10120 100 : {
10121 100 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10122 100 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP32);
10123 100 : if (res) return res;
10124 : }
10125 61 : break;
10126 : }
10127 : default:;
10128 : }
10129 : }
10130 : break;
10131 102 : case CFN_BUILT_IN_BSWAP64:
10132 102 : if (call_expr_nargs (_p0) == 1)
10133 : {
10134 102 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10135 102 : switch (TREE_CODE (_p1))
10136 : {
10137 101 : case INTEGER_CST:
10138 101 : {
10139 101 : {
10140 101 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10141 101 : tree res = generic_simplify_434 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_BSWAP64);
10142 101 : if (res) return res;
10143 : }
10144 75 : break;
10145 : }
10146 : default:;
10147 : }
10148 : }
10149 : break;
10150 : default:;
10151 : }
10152 : break;
10153 1005979 : default:;
10154 : }
10155 1005979 : if (integer_onep (_p0))
10156 : {
10157 524 : {
10158 524 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
10159 524 : if (INTEGRAL_TYPE_P (type)
10160 : )
10161 : {
10162 524 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1701;
10163 524 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1701;
10164 524 : {
10165 524 : tree res_op0;
10166 524 : {
10167 524 : tree _o1[2], _r1;
10168 524 : _o1[0] = captures[0];
10169 524 : _o1[1] = build_zero_cst (TREE_TYPE (captures[0]));
10170 524 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
10171 524 : res_op0 = _r1;
10172 : }
10173 524 : tree _r;
10174 524 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
10175 524 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1023, __FILE__, __LINE__, true);
10176 524 : return _r;
10177 : }
10178 : next_after_fail1701:;
10179 : }
10180 : }
10181 : }
10182 1005455 : switch (TREE_CODE (_p1))
10183 : {
10184 11 : case VEC_COND_EXPR:
10185 11 : {
10186 11 : tree _q30 = TREE_OPERAND (_p1, 0);
10187 11 : tree _q31 = TREE_OPERAND (_p1, 1);
10188 11 : tree _q32 = TREE_OPERAND (_p1, 2);
10189 11 : {
10190 11 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
10191 11 : if (VECTOR_TYPE_P (type)
10192 11 : && (TREE_CODE_CLASS (RSHIFT_EXPR) != tcc_comparison
10193 : || types_match (type, TREE_TYPE (captures[3]))
10194 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
10195 : || (optimize_vectors_before_lowering_p ()
10196 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
10197 : )
10198 : {
10199 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1702;
10200 11 : {
10201 11 : if (! tree_invariant_p (captures[0])) goto next_after_fail1702;
10202 0 : tree res_op0;
10203 0 : res_op0 = captures[2];
10204 0 : tree res_op1;
10205 0 : {
10206 0 : tree _o1[2], _r1;
10207 0 : _o1[0] = unshare_expr (captures[0]);
10208 0 : _o1[1] = captures[3];
10209 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10210 0 : if (EXPR_P (_r1))
10211 0 : goto next_after_fail1702;
10212 0 : res_op1 = _r1;
10213 : }
10214 0 : tree res_op2;
10215 0 : {
10216 0 : tree _o1[2], _r1;
10217 0 : _o1[0] = captures[0];
10218 0 : _o1[1] = captures[4];
10219 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, type, _o1[0], _o1[1]);
10220 0 : if (EXPR_P (_r1))
10221 0 : goto next_after_fail1702;
10222 0 : res_op2 = _r1;
10223 : }
10224 0 : tree _r;
10225 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
10226 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
10227 0 : return _r;
10228 : }
10229 11 : next_after_fail1702:;
10230 : }
10231 : }
10232 11 : break;
10233 : }
10234 1005455 : default:;
10235 : }
10236 1005455 : switch (TREE_CODE (_p0))
10237 : {
10238 0 : case VEC_PERM_EXPR:
10239 0 : {
10240 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10241 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10242 0 : tree _q22 = TREE_OPERAND (_p0, 2);
10243 0 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
10244 : {
10245 0 : switch (TREE_CODE (_p1))
10246 : {
10247 0 : case VEC_PERM_EXPR:
10248 0 : {
10249 0 : tree _q60 = TREE_OPERAND (_p1, 0);
10250 0 : tree _q61 = TREE_OPERAND (_p1, 1);
10251 0 : tree _q62 = TREE_OPERAND (_p1, 2);
10252 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
10253 : {
10254 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
10255 : {
10256 0 : {
10257 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
10258 0 : if (VECTOR_INTEGER_TYPE_P (type)
10259 : )
10260 : {
10261 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1703;
10262 0 : {
10263 0 : tree res_op0;
10264 0 : {
10265 0 : tree _o1[2], _r1;
10266 0 : _o1[0] = captures[0];
10267 0 : _o1[1] = captures[2];
10268 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10269 0 : captures[3] = _r1;
10270 : }
10271 0 : res_op0 = unshare_expr (captures[3]);
10272 0 : tree res_op1;
10273 0 : res_op1 = captures[3];
10274 0 : tree res_op2;
10275 0 : res_op2 = captures[1];
10276 0 : tree _r;
10277 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
10278 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 912, __FILE__, __LINE__, true);
10279 0 : return _r;
10280 : }
10281 0 : next_after_fail1703:;
10282 : }
10283 : }
10284 : }
10285 : }
10286 : break;
10287 : }
10288 : default:;
10289 : }
10290 : }
10291 : break;
10292 : }
10293 : default:;
10294 : }
10295 : return NULL_TREE;
10296 : }
10297 :
10298 : tree
10299 82923 : generic_simplify_MIN_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
10300 : {
10301 82923 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
10302 82923 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10303 : {
10304 0 : {
10305 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10306 0 : tree res = generic_simplify_527 (loc, type, _p0, _p1, captures, MIN_EXPR);
10307 0 : if (res) return res;
10308 : }
10309 : }
10310 82923 : switch (TREE_CODE (_p0))
10311 : {
10312 47 : case MIN_EXPR:
10313 47 : {
10314 47 : tree _q20 = TREE_OPERAND (_p0, 0);
10315 47 : tree _q21 = TREE_OPERAND (_p0, 1);
10316 47 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10317 : {
10318 0 : {
10319 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10320 0 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures, MIN_EXPR);
10321 0 : if (res) return res;
10322 : }
10323 : }
10324 47 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10325 : {
10326 0 : {
10327 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10328 0 : tree res = generic_simplify_528 (loc, type, _p0, _p1, captures, MIN_EXPR);
10329 0 : if (res) return res;
10330 : }
10331 : }
10332 : break;
10333 : }
10334 82923 : default:;
10335 : }
10336 82923 : switch (TREE_CODE (_p1))
10337 : {
10338 0 : case MIN_EXPR:
10339 0 : {
10340 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10341 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10342 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10343 : {
10344 0 : {
10345 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q31 };
10346 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10347 0 : if (res) return res;
10348 : }
10349 : }
10350 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10351 : {
10352 0 : {
10353 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _p0, _q30 };
10354 0 : tree res = generic_simplify_529 (loc, type, _p0, _p1, captures, MIN_EXPR);
10355 0 : if (res) return res;
10356 : }
10357 : }
10358 : break;
10359 : }
10360 82923 : default:;
10361 : }
10362 82923 : switch (TREE_CODE (_p0))
10363 : {
10364 4 : case MAX_EXPR:
10365 4 : {
10366 4 : tree _q20 = TREE_OPERAND (_p0, 0);
10367 4 : tree _q21 = TREE_OPERAND (_p0, 1);
10368 4 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10369 : {
10370 3 : {
10371 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10372 3 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures);
10373 3 : if (res) return res;
10374 : }
10375 : }
10376 1 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10377 : {
10378 1 : {
10379 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10380 1 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures);
10381 1 : if (res) return res;
10382 : }
10383 : }
10384 : break;
10385 : }
10386 82919 : default:;
10387 : }
10388 82919 : switch (TREE_CODE (_p1))
10389 : {
10390 0 : case MAX_EXPR:
10391 0 : {
10392 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10393 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10394 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
10395 : {
10396 0 : {
10397 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
10398 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures);
10399 0 : if (res) return res;
10400 : }
10401 : }
10402 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10403 : {
10404 0 : {
10405 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
10406 0 : tree res = generic_simplify_530 (loc, type, _p0, _p1, captures);
10407 0 : if (res) return res;
10408 : }
10409 : }
10410 : break;
10411 : }
10412 0 : case NEGATE_EXPR:
10413 0 : {
10414 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10415 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10416 : {
10417 0 : {
10418 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10419 0 : tree res = generic_simplify_531 (loc, type, _p0, _p1, captures);
10420 0 : if (res) return res;
10421 : }
10422 : }
10423 : break;
10424 : }
10425 82919 : default:;
10426 : }
10427 82919 : switch (TREE_CODE (_p0))
10428 : {
10429 2 : case NEGATE_EXPR:
10430 2 : {
10431 2 : tree _q20 = TREE_OPERAND (_p0, 0);
10432 2 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10433 : {
10434 2 : {
10435 2 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10436 2 : tree res = generic_simplify_531 (loc, type, _p0, _p1, captures);
10437 2 : if (res) return res;
10438 : }
10439 : }
10440 : break;
10441 : }
10442 82917 : default:;
10443 : }
10444 82917 : {
10445 82917 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10446 82917 : if (INTEGRAL_TYPE_P (type)
10447 81070 : && TYPE_MIN_VALUE (type)
10448 163987 : && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)
10449 : )
10450 : {
10451 556 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1784;
10452 556 : {
10453 556 : tree _r;
10454 556 : _r = captures[1];
10455 556 : if (TREE_SIDE_EFFECTS (captures[0]))
10456 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
10457 556 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1033, __FILE__, __LINE__, true);
10458 556 : return _r;
10459 : }
10460 0 : next_after_fail1784:;
10461 : }
10462 : else
10463 : {
10464 82361 : if (INTEGRAL_TYPE_P (type)
10465 80514 : && TYPE_MAX_VALUE (type)
10466 162875 : && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)
10467 : )
10468 : {
10469 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1785;
10470 1 : {
10471 1 : tree _r;
10472 1 : _r = captures[0];
10473 1 : if (TREE_SIDE_EFFECTS (captures[1]))
10474 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
10475 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1034, __FILE__, __LINE__, true);
10476 1 : return _r;
10477 : }
10478 0 : next_after_fail1785:;
10479 : }
10480 : }
10481 : }
10482 82360 : switch (TREE_CODE (_p0))
10483 : {
10484 5604 : case PLUS_EXPR:
10485 5604 : {
10486 5604 : tree _q20 = TREE_OPERAND (_p0, 0);
10487 5604 : tree _q21 = TREE_OPERAND (_p0, 1);
10488 5604 : switch (TREE_CODE (_p1))
10489 : {
10490 15 : case PLUS_EXPR:
10491 15 : {
10492 15 : tree _q50 = TREE_OPERAND (_p1, 0);
10493 15 : tree _q51 = TREE_OPERAND (_p1, 1);
10494 15 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10495 : {
10496 0 : {
10497 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10498 0 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MIN_EXPR);
10499 0 : if (res) return res;
10500 : }
10501 0 : {
10502 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10503 0 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MIN_EXPR);
10504 0 : if (res) return res;
10505 : }
10506 : }
10507 15 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10508 : {
10509 0 : {
10510 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10511 0 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MIN_EXPR);
10512 0 : if (res) return res;
10513 : }
10514 : }
10515 15 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10516 : {
10517 1 : {
10518 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q51, _q21, _p0, _q20 };
10519 1 : tree res = generic_simplify_532 (loc, type, _p0, _p1, captures, MIN_EXPR);
10520 1 : if (res) return res;
10521 : }
10522 : }
10523 : break;
10524 : }
10525 5603 : default:;
10526 : }
10527 5603 : switch (TREE_CODE (_q21))
10528 : {
10529 5475 : case INTEGER_CST:
10530 5475 : {
10531 5475 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10532 : {
10533 0 : {
10534 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10535 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10536 : )
10537 : {
10538 0 : if (tree_int_cst_sgn (captures[2]) > 0
10539 : )
10540 : {
10541 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1786;
10542 0 : {
10543 0 : tree _r;
10544 0 : _r = captures[0];
10545 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10546 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10547 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
10548 0 : return _r;
10549 : }
10550 0 : next_after_fail1786:;
10551 : }
10552 : else
10553 : {
10554 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1787;
10555 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1787;
10556 0 : {
10557 0 : tree _r;
10558 0 : _r = captures[1];
10559 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
10560 0 : return _r;
10561 : }
10562 0 : next_after_fail1787:;
10563 : }
10564 : }
10565 : }
10566 : }
10567 : break;
10568 : }
10569 : default:;
10570 : }
10571 : break;
10572 : }
10573 1006 : case MINUS_EXPR:
10574 1006 : {
10575 1006 : tree _q20 = TREE_OPERAND (_p0, 0);
10576 1006 : tree _q21 = TREE_OPERAND (_p0, 1);
10577 1006 : switch (TREE_CODE (_p1))
10578 : {
10579 988 : case MINUS_EXPR:
10580 988 : {
10581 988 : tree _q50 = TREE_OPERAND (_p1, 0);
10582 988 : tree _q51 = TREE_OPERAND (_p1, 1);
10583 988 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10584 : {
10585 0 : {
10586 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10587 0 : tree res = generic_simplify_533 (loc, type, _p0, _p1, captures, MIN_EXPR);
10588 0 : if (res) return res;
10589 : }
10590 0 : {
10591 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q50, _q21, _p0, _q20 };
10592 0 : tree res = generic_simplify_533 (loc, type, _p0, _p1, captures, MIN_EXPR);
10593 0 : if (res) return res;
10594 : }
10595 : }
10596 : break;
10597 : }
10598 : default:;
10599 : }
10600 : break;
10601 : }
10602 82359 : default:;
10603 : }
10604 82359 : switch (TREE_CODE (_p1))
10605 : {
10606 21 : case PLUS_EXPR:
10607 21 : {
10608 21 : tree _q30 = TREE_OPERAND (_p1, 0);
10609 21 : tree _q31 = TREE_OPERAND (_p1, 1);
10610 21 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10611 : {
10612 0 : switch (TREE_CODE (_q31))
10613 : {
10614 0 : case INTEGER_CST:
10615 0 : {
10616 0 : {
10617 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10618 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
10619 : )
10620 : {
10621 0 : if (tree_int_cst_sgn (captures[2]) > 0
10622 : )
10623 : {
10624 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1788;
10625 0 : {
10626 0 : tree _r;
10627 0 : _r = captures[0];
10628 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10629 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10630 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1035, __FILE__, __LINE__, true);
10631 0 : return _r;
10632 : }
10633 0 : next_after_fail1788:;
10634 : }
10635 : else
10636 : {
10637 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1789;
10638 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1789;
10639 0 : {
10640 0 : tree _r;
10641 0 : _r = captures[1];
10642 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1036, __FILE__, __LINE__, true);
10643 0 : return _r;
10644 : }
10645 0 : next_after_fail1789:;
10646 : }
10647 : }
10648 : }
10649 0 : break;
10650 : }
10651 : default:;
10652 : }
10653 : }
10654 : break;
10655 : }
10656 82359 : default:;
10657 : }
10658 82359 : switch (TREE_CODE (_p0))
10659 : {
10660 47 : case MIN_EXPR:
10661 47 : {
10662 47 : tree _q20 = TREE_OPERAND (_p0, 0);
10663 47 : tree _q21 = TREE_OPERAND (_p0, 1);
10664 47 : switch (TREE_CODE (_p1))
10665 : {
10666 0 : case MAX_EXPR:
10667 0 : {
10668 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10669 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10670 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10671 : {
10672 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10673 : {
10674 0 : {
10675 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10676 0 : if (!HONOR_NANS (captures[0])
10677 : )
10678 : {
10679 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1790;
10680 0 : {
10681 0 : tree res_op0;
10682 0 : res_op0 = captures[0];
10683 0 : tree res_op1;
10684 0 : res_op1 = captures[1];
10685 0 : tree _r;
10686 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10687 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
10688 0 : return _r;
10689 : }
10690 0 : next_after_fail1790:;
10691 : }
10692 : }
10693 : }
10694 : }
10695 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10696 : {
10697 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10698 : {
10699 0 : {
10700 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
10701 0 : if (!HONOR_NANS (captures[0])
10702 : )
10703 : {
10704 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1791;
10705 0 : {
10706 0 : tree res_op0;
10707 0 : res_op0 = captures[0];
10708 0 : tree res_op1;
10709 0 : res_op1 = captures[1];
10710 0 : tree _r;
10711 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10712 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
10713 0 : return _r;
10714 : }
10715 0 : next_after_fail1791:;
10716 : }
10717 : }
10718 : }
10719 : }
10720 : break;
10721 : }
10722 : default:;
10723 : }
10724 : break;
10725 : }
10726 0 : case MAX_EXPR:
10727 0 : {
10728 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10729 0 : tree _q21 = TREE_OPERAND (_p0, 1);
10730 0 : switch (TREE_CODE (_p1))
10731 : {
10732 0 : case MIN_EXPR:
10733 0 : {
10734 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10735 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10736 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10737 : {
10738 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
10739 : {
10740 0 : {
10741 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10742 0 : if (!HONOR_NANS (captures[0])
10743 : )
10744 : {
10745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1792;
10746 0 : {
10747 0 : tree res_op0;
10748 0 : res_op0 = captures[0];
10749 0 : tree res_op1;
10750 0 : res_op1 = captures[1];
10751 0 : tree _r;
10752 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10753 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
10754 0 : return _r;
10755 : }
10756 0 : next_after_fail1792:;
10757 : }
10758 : }
10759 : }
10760 : }
10761 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
10762 : {
10763 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10764 : {
10765 0 : {
10766 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
10767 0 : if (!HONOR_NANS (captures[0])
10768 : )
10769 : {
10770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1793;
10771 0 : {
10772 0 : tree res_op0;
10773 0 : res_op0 = captures[0];
10774 0 : tree res_op1;
10775 0 : res_op1 = captures[1];
10776 0 : tree _r;
10777 0 : _r = fold_build2_loc (loc, MIN_EXPR, type, res_op0, res_op1);
10778 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
10779 0 : return _r;
10780 : }
10781 0 : next_after_fail1793:;
10782 : }
10783 : }
10784 : }
10785 : }
10786 : break;
10787 : }
10788 : default:;
10789 : }
10790 : break;
10791 : }
10792 1 : case BIT_AND_EXPR:
10793 1 : {
10794 1 : tree _q20 = TREE_OPERAND (_p0, 0);
10795 1 : tree _q21 = TREE_OPERAND (_p0, 1);
10796 1 : switch (TREE_CODE (_q21))
10797 : {
10798 1 : case INTEGER_CST:
10799 1 : {
10800 1 : switch (TREE_CODE (_p1))
10801 : {
10802 0 : case BIT_AND_EXPR:
10803 0 : {
10804 0 : tree _q50 = TREE_OPERAND (_p1, 0);
10805 0 : tree _q51 = TREE_OPERAND (_p1, 1);
10806 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10807 : {
10808 0 : switch (TREE_CODE (_q51))
10809 : {
10810 0 : case INTEGER_CST:
10811 0 : {
10812 0 : {
10813 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
10814 0 : tree res = generic_simplify_534 (loc, type, _p0, _p1, captures, MIN_EXPR);
10815 0 : if (res) return res;
10816 : }
10817 0 : break;
10818 : }
10819 : default:;
10820 : }
10821 : }
10822 : break;
10823 : }
10824 : default:;
10825 : }
10826 : break;
10827 : }
10828 : default:;
10829 : }
10830 : break;
10831 : }
10832 82359 : default:;
10833 : }
10834 82359 : switch (TREE_CODE (_p1))
10835 : {
10836 0 : case BIT_AND_EXPR:
10837 0 : {
10838 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10839 0 : tree _q31 = TREE_OPERAND (_p1, 1);
10840 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
10841 : {
10842 0 : switch (TREE_CODE (_q31))
10843 : {
10844 0 : case INTEGER_CST:
10845 0 : {
10846 0 : {
10847 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
10848 0 : tree res = generic_simplify_535 (loc, type, _p0, _p1, captures, MIN_EXPR);
10849 0 : if (res) return res;
10850 : }
10851 0 : break;
10852 : }
10853 : default:;
10854 : }
10855 : }
10856 : break;
10857 : }
10858 82359 : default:;
10859 : }
10860 82359 : switch (TREE_CODE (_p0))
10861 : {
10862 672 : CASE_CONVERT:
10863 672 : {
10864 672 : tree _q20 = TREE_OPERAND (_p0, 0);
10865 672 : switch (TREE_CODE (_q20))
10866 : {
10867 47 : case ADDR_EXPR:
10868 47 : {
10869 47 : switch (TREE_CODE (_p1))
10870 : {
10871 47 : CASE_CONVERT:
10872 47 : {
10873 47 : tree _q40 = TREE_OPERAND (_p1, 0);
10874 47 : switch (TREE_CODE (_q40))
10875 : {
10876 47 : case ADDR_EXPR:
10877 47 : {
10878 47 : {
10879 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10880 47 : tree res = generic_simplify_536 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10881 47 : if (res) return res;
10882 : }
10883 47 : break;
10884 : }
10885 : default:;
10886 : }
10887 : break;
10888 : }
10889 0 : case ADDR_EXPR:
10890 0 : {
10891 0 : {
10892 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
10893 0 : tree res = generic_simplify_537 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10894 0 : if (res) return res;
10895 : }
10896 0 : break;
10897 : }
10898 : default:;
10899 : }
10900 : break;
10901 : }
10902 : default:;
10903 : }
10904 : break;
10905 : }
10906 10 : case ADDR_EXPR:
10907 10 : {
10908 10 : switch (TREE_CODE (_p1))
10909 : {
10910 0 : CASE_CONVERT:
10911 0 : {
10912 0 : tree _q30 = TREE_OPERAND (_p1, 0);
10913 0 : switch (TREE_CODE (_q30))
10914 : {
10915 0 : case ADDR_EXPR:
10916 0 : {
10917 0 : {
10918 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _q30 };
10919 0 : tree res = generic_simplify_538 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10920 0 : if (res) return res;
10921 : }
10922 0 : break;
10923 : }
10924 : default:;
10925 : }
10926 : break;
10927 : }
10928 10 : case ADDR_EXPR:
10929 10 : {
10930 10 : {
10931 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _p1, _p1 };
10932 10 : tree res = generic_simplify_539 (loc, type, _p0, _p1, captures, MIN_EXPR, LT_EXPR);
10933 10 : if (res) return res;
10934 : }
10935 10 : break;
10936 : }
10937 : default:;
10938 : }
10939 : break;
10940 : }
10941 0 : case NEGATE_EXPR:
10942 0 : {
10943 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10944 0 : switch (TREE_CODE (_p1))
10945 : {
10946 0 : case NEGATE_EXPR:
10947 0 : {
10948 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10949 0 : {
10950 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10951 0 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
10952 0 : || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
10953 0 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
10954 : )
10955 : {
10956 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1794;
10957 0 : {
10958 0 : tree res_op0;
10959 0 : {
10960 0 : tree _o1[2], _r1;
10961 0 : _o1[0] = captures[1];
10962 0 : _o1[1] = captures[3];
10963 0 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10964 0 : res_op0 = _r1;
10965 : }
10966 0 : tree _r;
10967 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
10968 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1037, __FILE__, __LINE__, true);
10969 0 : return _r;
10970 : }
10971 0 : next_after_fail1794:;
10972 : }
10973 : }
10974 0 : break;
10975 : }
10976 : default:;
10977 : }
10978 : break;
10979 : }
10980 0 : case BIT_NOT_EXPR:
10981 0 : {
10982 0 : tree _q20 = TREE_OPERAND (_p0, 0);
10983 0 : switch (TREE_CODE (_p1))
10984 : {
10985 0 : case BIT_NOT_EXPR:
10986 0 : {
10987 0 : tree _q40 = TREE_OPERAND (_p1, 0);
10988 0 : {
10989 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10990 0 : tree res = generic_simplify_540 (loc, type, _p0, _p1, captures, MIN_EXPR, MAX_EXPR);
10991 0 : if (res) return res;
10992 : }
10993 0 : break;
10994 : }
10995 : default:;
10996 : }
10997 : break;
10998 : }
10999 0 : case VEC_COND_EXPR:
11000 0 : {
11001 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11002 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11003 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11004 0 : switch (TREE_CODE (_p1))
11005 : {
11006 0 : case VEC_COND_EXPR:
11007 0 : {
11008 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11009 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11010 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11011 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11012 : {
11013 0 : {
11014 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11015 0 : if (VECTOR_TYPE_P (type)
11016 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11017 : || types_match (type, TREE_TYPE (captures[2]))
11018 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11019 : || (optimize_vectors_before_lowering_p ()
11020 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11021 : )
11022 : {
11023 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1795;
11024 0 : {
11025 0 : tree res_op0;
11026 0 : res_op0 = captures[1];
11027 0 : tree res_op1;
11028 0 : {
11029 0 : tree _o1[2], _r1;
11030 0 : _o1[0] = captures[2];
11031 0 : _o1[1] = captures[5];
11032 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11033 0 : if (EXPR_P (_r1))
11034 0 : goto next_after_fail1795;
11035 0 : res_op1 = _r1;
11036 : }
11037 0 : tree res_op2;
11038 0 : {
11039 0 : tree _o1[2], _r1;
11040 0 : _o1[0] = captures[3];
11041 0 : _o1[1] = captures[6];
11042 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11043 0 : if (EXPR_P (_r1))
11044 0 : goto next_after_fail1795;
11045 0 : res_op2 = _r1;
11046 : }
11047 0 : tree _r;
11048 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11049 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11050 0 : return _r;
11051 : }
11052 0 : next_after_fail1795:;
11053 : }
11054 : }
11055 : }
11056 : break;
11057 : }
11058 0 : default:;
11059 : }
11060 0 : {
11061 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11062 0 : if (VECTOR_TYPE_P (type)
11063 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11064 : || types_match (type, TREE_TYPE (captures[2]))
11065 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11066 : || (optimize_vectors_before_lowering_p ()
11067 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11068 : )
11069 : {
11070 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1796;
11071 0 : {
11072 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1796;
11073 0 : tree res_op0;
11074 0 : res_op0 = captures[1];
11075 0 : tree res_op1;
11076 0 : {
11077 0 : tree _o1[2], _r1;
11078 0 : _o1[0] = captures[2];
11079 0 : _o1[1] = unshare_expr (captures[4]);
11080 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11081 0 : if (EXPR_P (_r1))
11082 0 : goto next_after_fail1796;
11083 0 : res_op1 = _r1;
11084 : }
11085 0 : tree res_op2;
11086 0 : {
11087 0 : tree _o1[2], _r1;
11088 0 : _o1[0] = captures[3];
11089 0 : _o1[1] = captures[4];
11090 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11091 0 : if (EXPR_P (_r1))
11092 0 : goto next_after_fail1796;
11093 0 : res_op2 = _r1;
11094 : }
11095 0 : tree _r;
11096 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11097 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11098 0 : return _r;
11099 : }
11100 0 : next_after_fail1796:;
11101 : }
11102 : }
11103 0 : break;
11104 : }
11105 82359 : default:;
11106 : }
11107 82359 : switch (TREE_CODE (_p1))
11108 : {
11109 0 : case VEC_COND_EXPR:
11110 0 : {
11111 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11112 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11113 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11114 0 : {
11115 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11116 0 : if (VECTOR_TYPE_P (type)
11117 0 : && (TREE_CODE_CLASS (MIN_EXPR) != tcc_comparison
11118 : || types_match (type, TREE_TYPE (captures[3]))
11119 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11120 : || (optimize_vectors_before_lowering_p ()
11121 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11122 : )
11123 : {
11124 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1797;
11125 0 : {
11126 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1797;
11127 0 : tree res_op0;
11128 0 : res_op0 = captures[2];
11129 0 : tree res_op1;
11130 0 : {
11131 0 : tree _o1[2], _r1;
11132 0 : _o1[0] = unshare_expr (captures[0]);
11133 0 : _o1[1] = captures[3];
11134 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11135 0 : if (EXPR_P (_r1))
11136 0 : goto next_after_fail1797;
11137 0 : res_op1 = _r1;
11138 : }
11139 0 : tree res_op2;
11140 0 : {
11141 0 : tree _o1[2], _r1;
11142 0 : _o1[0] = captures[0];
11143 0 : _o1[1] = captures[4];
11144 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, type, _o1[0], _o1[1]);
11145 0 : if (EXPR_P (_r1))
11146 0 : goto next_after_fail1797;
11147 0 : res_op2 = _r1;
11148 : }
11149 0 : tree _r;
11150 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11151 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11152 0 : return _r;
11153 : }
11154 0 : next_after_fail1797:;
11155 : }
11156 : }
11157 0 : break;
11158 : }
11159 82359 : default:;
11160 : }
11161 82359 : switch (TREE_CODE (_p0))
11162 : {
11163 4 : case CALL_EXPR:
11164 4 : switch (get_call_combined_fn (_p0))
11165 : {
11166 1 : case CFN_BUILT_IN_CLZ:
11167 1 : if (call_expr_nargs (_p0) == 1)
11168 : {
11169 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11170 1 : switch (TREE_CODE (_p1))
11171 : {
11172 1 : case CALL_EXPR:
11173 1 : switch (get_call_combined_fn (_p1))
11174 : {
11175 1 : case CFN_BUILT_IN_CLZ:
11176 1 : if (call_expr_nargs (_p1) == 1)
11177 : {
11178 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11179 1 : {
11180 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11181 1 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CLZ);
11182 1 : if (res) return res;
11183 : }
11184 : }
11185 : break;
11186 : default:;
11187 : }
11188 : break;
11189 : default:;
11190 : }
11191 : }
11192 : break;
11193 1 : case CFN_BUILT_IN_CTZ:
11194 1 : if (call_expr_nargs (_p0) == 1)
11195 : {
11196 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11197 1 : switch (TREE_CODE (_p1))
11198 : {
11199 1 : case CALL_EXPR:
11200 1 : switch (get_call_combined_fn (_p1))
11201 : {
11202 1 : case CFN_BUILT_IN_CTZ:
11203 1 : if (call_expr_nargs (_p1) == 1)
11204 : {
11205 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11206 1 : {
11207 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11208 1 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CTZ);
11209 1 : if (res) return res;
11210 : }
11211 : }
11212 : break;
11213 : default:;
11214 : }
11215 : break;
11216 : default:;
11217 : }
11218 : }
11219 : break;
11220 0 : case CFN_BUILT_IN_CLZL:
11221 0 : if (call_expr_nargs (_p0) == 1)
11222 : {
11223 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11224 0 : switch (TREE_CODE (_p1))
11225 : {
11226 0 : case CALL_EXPR:
11227 0 : switch (get_call_combined_fn (_p1))
11228 : {
11229 0 : case CFN_BUILT_IN_CLZL:
11230 0 : if (call_expr_nargs (_p1) == 1)
11231 : {
11232 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11233 0 : {
11234 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11235 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CLZL);
11236 0 : if (res) return res;
11237 : }
11238 : }
11239 : break;
11240 : default:;
11241 : }
11242 : break;
11243 : default:;
11244 : }
11245 : }
11246 : break;
11247 0 : case CFN_BUILT_IN_CTZL:
11248 0 : if (call_expr_nargs (_p0) == 1)
11249 : {
11250 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11251 0 : switch (TREE_CODE (_p1))
11252 : {
11253 0 : case CALL_EXPR:
11254 0 : switch (get_call_combined_fn (_p1))
11255 : {
11256 0 : case CFN_BUILT_IN_CTZL:
11257 0 : if (call_expr_nargs (_p1) == 1)
11258 : {
11259 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11260 0 : {
11261 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11262 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CTZL);
11263 0 : if (res) return res;
11264 : }
11265 : }
11266 : break;
11267 : default:;
11268 : }
11269 : break;
11270 : default:;
11271 : }
11272 : }
11273 : break;
11274 0 : case CFN_BUILT_IN_CTZIMAX:
11275 0 : if (call_expr_nargs (_p0) == 1)
11276 : {
11277 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11278 0 : switch (TREE_CODE (_p1))
11279 : {
11280 0 : case CALL_EXPR:
11281 0 : switch (get_call_combined_fn (_p1))
11282 : {
11283 0 : case CFN_BUILT_IN_CTZIMAX:
11284 0 : if (call_expr_nargs (_p1) == 1)
11285 : {
11286 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11287 0 : {
11288 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11289 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CTZIMAX);
11290 0 : if (res) return res;
11291 : }
11292 : }
11293 : break;
11294 : default:;
11295 : }
11296 : break;
11297 : default:;
11298 : }
11299 : }
11300 : break;
11301 1 : case CFN_CLZ:
11302 1 : if (call_expr_nargs (_p0) == 1)
11303 : {
11304 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11305 0 : switch (TREE_CODE (_p1))
11306 : {
11307 0 : case CALL_EXPR:
11308 0 : switch (get_call_combined_fn (_p1))
11309 : {
11310 0 : case CFN_CLZ:
11311 0 : if (call_expr_nargs (_p1) == 1)
11312 : {
11313 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11314 0 : {
11315 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11316 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_CLZ);
11317 0 : if (res) return res;
11318 : }
11319 : }
11320 : break;
11321 : default:;
11322 : }
11323 : break;
11324 : default:;
11325 : }
11326 : }
11327 1 : if (call_expr_nargs (_p0) == 2)
11328 : {
11329 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11330 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11331 1 : switch (TREE_CODE (_q21))
11332 : {
11333 1 : case INTEGER_CST:
11334 1 : {
11335 1 : switch (TREE_CODE (_p1))
11336 : {
11337 1 : case CALL_EXPR:
11338 1 : switch (get_call_combined_fn (_p1))
11339 : {
11340 1 : case CFN_CLZ:
11341 1 : if (call_expr_nargs (_p1) == 2)
11342 : {
11343 1 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
11344 1 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
11345 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11346 : {
11347 1 : {
11348 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
11349 1 : tree res = generic_simplify_543 (loc, type, _p0, _p1, captures, CFN_CLZ);
11350 1 : if (res) return res;
11351 : }
11352 : }
11353 : }
11354 : break;
11355 : default:;
11356 : }
11357 : break;
11358 : default:;
11359 : }
11360 : break;
11361 : }
11362 : default:;
11363 : }
11364 : }
11365 : break;
11366 1 : case CFN_CTZ:
11367 1 : if (call_expr_nargs (_p0) == 1)
11368 : {
11369 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11370 0 : switch (TREE_CODE (_p1))
11371 : {
11372 0 : case CALL_EXPR:
11373 0 : switch (get_call_combined_fn (_p1))
11374 : {
11375 0 : case CFN_CTZ:
11376 0 : if (call_expr_nargs (_p1) == 1)
11377 : {
11378 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11379 0 : {
11380 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11381 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_CTZ);
11382 0 : if (res) return res;
11383 : }
11384 : }
11385 : break;
11386 : default:;
11387 : }
11388 : break;
11389 : default:;
11390 : }
11391 : }
11392 1 : if (call_expr_nargs (_p0) == 2)
11393 : {
11394 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11395 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11396 1 : switch (TREE_CODE (_q21))
11397 : {
11398 1 : case INTEGER_CST:
11399 1 : {
11400 1 : switch (TREE_CODE (_p1))
11401 : {
11402 1 : case CALL_EXPR:
11403 1 : switch (get_call_combined_fn (_p1))
11404 : {
11405 1 : case CFN_CTZ:
11406 1 : if (call_expr_nargs (_p1) == 2)
11407 : {
11408 1 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
11409 1 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
11410 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
11411 : {
11412 1 : {
11413 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
11414 1 : tree res = generic_simplify_543 (loc, type, _p0, _p1, captures, CFN_CTZ);
11415 1 : if (res) return res;
11416 : }
11417 : }
11418 : }
11419 : break;
11420 : default:;
11421 : }
11422 : break;
11423 : default:;
11424 : }
11425 : break;
11426 : }
11427 : default:;
11428 : }
11429 : }
11430 : break;
11431 0 : case CFN_BUILT_IN_CLZIMAX:
11432 0 : if (call_expr_nargs (_p0) == 1)
11433 : {
11434 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11435 0 : switch (TREE_CODE (_p1))
11436 : {
11437 0 : case CALL_EXPR:
11438 0 : switch (get_call_combined_fn (_p1))
11439 : {
11440 0 : case CFN_BUILT_IN_CLZIMAX:
11441 0 : if (call_expr_nargs (_p1) == 1)
11442 : {
11443 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11444 0 : {
11445 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11446 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CLZIMAX);
11447 0 : if (res) return res;
11448 : }
11449 : }
11450 : break;
11451 : default:;
11452 : }
11453 : break;
11454 : default:;
11455 : }
11456 : }
11457 : break;
11458 0 : case CFN_BUILT_IN_CLZLL:
11459 0 : if (call_expr_nargs (_p0) == 1)
11460 : {
11461 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11462 0 : switch (TREE_CODE (_p1))
11463 : {
11464 0 : case CALL_EXPR:
11465 0 : switch (get_call_combined_fn (_p1))
11466 : {
11467 0 : case CFN_BUILT_IN_CLZLL:
11468 0 : if (call_expr_nargs (_p1) == 1)
11469 : {
11470 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11471 0 : {
11472 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11473 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CLZLL);
11474 0 : if (res) return res;
11475 : }
11476 : }
11477 : break;
11478 : default:;
11479 : }
11480 : break;
11481 : default:;
11482 : }
11483 : }
11484 : break;
11485 0 : case CFN_BUILT_IN_CTZLL:
11486 0 : if (call_expr_nargs (_p0) == 1)
11487 : {
11488 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11489 0 : switch (TREE_CODE (_p1))
11490 : {
11491 0 : case CALL_EXPR:
11492 0 : switch (get_call_combined_fn (_p1))
11493 : {
11494 0 : case CFN_BUILT_IN_CTZLL:
11495 0 : if (call_expr_nargs (_p1) == 1)
11496 : {
11497 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11498 0 : {
11499 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11500 0 : tree res = generic_simplify_542 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_CTZLL);
11501 0 : if (res) return res;
11502 : }
11503 : }
11504 : break;
11505 : default:;
11506 : }
11507 : break;
11508 : default:;
11509 : }
11510 : }
11511 : break;
11512 : default:;
11513 : }
11514 : break;
11515 82355 : default:;
11516 : }
11517 82355 : if (tree_zero_one_valued_p (_p0))
11518 : {
11519 3 : if (tree_zero_one_valued_p (_p1))
11520 : {
11521 2 : {
11522 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11523 2 : tree res = generic_simplify_541 (loc, type, _p0, _p1, captures, MIN_EXPR, BIT_AND_EXPR);
11524 2 : if (res) return res;
11525 : }
11526 : }
11527 : }
11528 : return NULL_TREE;
11529 : }
11530 :
11531 : tree
11532 1635495 : generic_simplify_UNLE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11533 : {
11534 1635495 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11535 1635495 : switch (TREE_CODE (_p0))
11536 : {
11537 0 : case VEC_COND_EXPR:
11538 0 : {
11539 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11540 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11541 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11542 0 : switch (TREE_CODE (_p1))
11543 : {
11544 0 : case VEC_COND_EXPR:
11545 0 : {
11546 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11547 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11548 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11549 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11550 : {
11551 0 : {
11552 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11553 0 : if (VECTOR_TYPE_P (type)
11554 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
11555 0 : || types_match (type, TREE_TYPE (captures[2]))
11556 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11557 : || (optimize_vectors_before_lowering_p ()
11558 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11559 : )
11560 : {
11561 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1827;
11562 0 : {
11563 0 : tree res_op0;
11564 0 : res_op0 = captures[1];
11565 0 : tree res_op1;
11566 0 : {
11567 0 : tree _o1[2], _r1;
11568 0 : _o1[0] = captures[2];
11569 0 : _o1[1] = captures[5];
11570 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11571 0 : if (EXPR_P (_r1))
11572 0 : goto next_after_fail1827;
11573 0 : res_op1 = _r1;
11574 : }
11575 0 : tree res_op2;
11576 0 : {
11577 0 : tree _o1[2], _r1;
11578 0 : _o1[0] = captures[3];
11579 0 : _o1[1] = captures[6];
11580 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11581 0 : if (EXPR_P (_r1))
11582 0 : goto next_after_fail1827;
11583 0 : res_op2 = _r1;
11584 : }
11585 0 : tree _r;
11586 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11587 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11588 0 : return _r;
11589 : }
11590 0 : next_after_fail1827:;
11591 : }
11592 : }
11593 : }
11594 : break;
11595 : }
11596 0 : default:;
11597 : }
11598 0 : {
11599 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11600 0 : if (VECTOR_TYPE_P (type)
11601 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
11602 0 : || types_match (type, TREE_TYPE (captures[2]))
11603 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11604 : || (optimize_vectors_before_lowering_p ()
11605 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11606 : )
11607 : {
11608 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1828;
11609 0 : {
11610 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1828;
11611 0 : tree res_op0;
11612 0 : res_op0 = captures[1];
11613 0 : tree res_op1;
11614 0 : {
11615 0 : tree _o1[2], _r1;
11616 0 : _o1[0] = captures[2];
11617 0 : _o1[1] = unshare_expr (captures[4]);
11618 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11619 0 : if (EXPR_P (_r1))
11620 0 : goto next_after_fail1828;
11621 0 : res_op1 = _r1;
11622 : }
11623 0 : tree res_op2;
11624 0 : {
11625 0 : tree _o1[2], _r1;
11626 0 : _o1[0] = captures[3];
11627 0 : _o1[1] = captures[4];
11628 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11629 0 : if (EXPR_P (_r1))
11630 0 : goto next_after_fail1828;
11631 0 : res_op2 = _r1;
11632 : }
11633 0 : tree _r;
11634 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11636 0 : return _r;
11637 : }
11638 0 : next_after_fail1828:;
11639 : }
11640 : }
11641 0 : break;
11642 : }
11643 1635495 : default:;
11644 : }
11645 1635495 : switch (TREE_CODE (_p1))
11646 : {
11647 0 : case VEC_COND_EXPR:
11648 0 : {
11649 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11650 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11651 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11652 0 : {
11653 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11654 0 : if (VECTOR_TYPE_P (type)
11655 0 : && (TREE_CODE_CLASS (UNLE_EXPR) != tcc_comparison
11656 0 : || types_match (type, TREE_TYPE (captures[3]))
11657 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11658 : || (optimize_vectors_before_lowering_p ()
11659 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11660 : )
11661 : {
11662 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1829;
11663 0 : {
11664 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1829;
11665 0 : tree res_op0;
11666 0 : res_op0 = captures[2];
11667 0 : tree res_op1;
11668 0 : {
11669 0 : tree _o1[2], _r1;
11670 0 : _o1[0] = unshare_expr (captures[0]);
11671 0 : _o1[1] = captures[3];
11672 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11673 0 : if (EXPR_P (_r1))
11674 0 : goto next_after_fail1829;
11675 0 : res_op1 = _r1;
11676 : }
11677 0 : tree res_op2;
11678 0 : {
11679 0 : tree _o1[2], _r1;
11680 0 : _o1[0] = captures[0];
11681 0 : _o1[1] = captures[4];
11682 0 : _r1 = fold_build2_loc (loc, UNLE_EXPR, type, _o1[0], _o1[1]);
11683 0 : if (EXPR_P (_r1))
11684 0 : goto next_after_fail1829;
11685 0 : res_op2 = _r1;
11686 : }
11687 0 : tree _r;
11688 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11689 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11690 0 : return _r;
11691 : }
11692 0 : next_after_fail1829:;
11693 : }
11694 : }
11695 0 : break;
11696 : }
11697 1635495 : default:;
11698 : }
11699 1635495 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11700 : {
11701 30 : {
11702 30 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11703 30 : tree res = generic_simplify_574 (loc, type, _p0, _p1, captures, UNLE_EXPR);
11704 30 : if (res) return res;
11705 : }
11706 : }
11707 1635465 : switch (TREE_CODE (_p0))
11708 : {
11709 96 : case FLOAT_EXPR:
11710 96 : {
11711 96 : tree _q20 = TREE_OPERAND (_p0, 0);
11712 96 : switch (TREE_CODE (_p1))
11713 : {
11714 0 : case FLOAT_EXPR:
11715 0 : {
11716 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11717 0 : {
11718 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11719 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNLE_EXPR, LE_EXPR);
11720 0 : if (res) return res;
11721 : }
11722 0 : break;
11723 : }
11724 : default:;
11725 : }
11726 : break;
11727 : }
11728 112 : case NEGATE_EXPR:
11729 112 : {
11730 112 : tree _q20 = TREE_OPERAND (_p0, 0);
11731 112 : switch (TREE_CODE (_p1))
11732 : {
11733 0 : case NEGATE_EXPR:
11734 0 : {
11735 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11736 0 : {
11737 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11738 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, UNLE_EXPR, UNGE_EXPR);
11739 0 : if (res) return res;
11740 : }
11741 0 : break;
11742 : }
11743 112 : default:;
11744 : }
11745 112 : if (CONSTANT_CLASS_P (_p1))
11746 : {
11747 112 : {
11748 112 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11749 112 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, UNLE_EXPR, UNGE_EXPR);
11750 112 : if (res) return res;
11751 : }
11752 : }
11753 : break;
11754 : }
11755 1635353 : default:;
11756 : }
11757 1635353 : switch (TREE_CODE (_p1))
11758 : {
11759 1258541 : case REAL_CST:
11760 1258541 : {
11761 1258541 : {
11762 1258541 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11763 1258541 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, UNLE_EXPR);
11764 1258541 : if (res) return res;
11765 : }
11766 1258539 : break;
11767 : }
11768 : default:;
11769 : }
11770 : return NULL_TREE;
11771 : }
11772 :
11773 : tree
11774 3479176 : 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)
11775 : {
11776 3479176 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11777 3479176 : switch (TREE_CODE (_p0))
11778 : {
11779 362875 : case LE_EXPR:
11780 362875 : {
11781 362875 : tree _q20 = TREE_OPERAND (_p0, 0);
11782 362875 : tree _q21 = TREE_OPERAND (_p0, 1);
11783 362875 : switch (TREE_CODE (_q20))
11784 : {
11785 90 : case POINTER_PLUS_EXPR:
11786 90 : {
11787 90 : tree _q30 = TREE_OPERAND (_q20, 0);
11788 90 : tree _q31 = TREE_OPERAND (_q20, 1);
11789 90 : switch (TREE_CODE (_q31))
11790 : {
11791 2 : case INTEGER_CST:
11792 2 : {
11793 2 : switch (TREE_CODE (_p1))
11794 : {
11795 2 : case LE_EXPR:
11796 2 : {
11797 2 : tree _q70 = TREE_OPERAND (_p1, 0);
11798 2 : tree _q71 = TREE_OPERAND (_p1, 1);
11799 2 : switch (TREE_CODE (_q70))
11800 : {
11801 2 : case POINTER_PLUS_EXPR:
11802 2 : {
11803 2 : tree _q80 = TREE_OPERAND (_q70, 0);
11804 2 : tree _q81 = TREE_OPERAND (_q70, 1);
11805 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
11806 : {
11807 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
11808 : {
11809 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
11810 : {
11811 2 : {
11812 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
11813 2 : const enum tree_code cmp = LE_EXPR;
11814 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11815 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
11816 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11817 : )
11818 : {
11819 1 : {
11820 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11821 1 : offset_int rhs = off * 2;
11822 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11823 : )
11824 : {
11825 1 : {
11826 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11827 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11828 1 : if (cmp == LT_EXPR
11829 : )
11830 : {
11831 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1843;
11832 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1843;
11833 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1843;
11834 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1843;
11835 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1843;
11836 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1843;
11837 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1843;
11838 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1843;
11839 : {
11840 : tree res_op0;
11841 : {
11842 : tree _o1[1], _r1;
11843 : {
11844 : tree _o2[2], _r2;
11845 : _o2[0] = swap_p ? captures[6] : captures[1];
11846 : _o2[1] = swap_p ? captures[2] : captures[4];
11847 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11848 : _o1[0] = _r2;
11849 : }
11850 : if (TREE_TYPE (_o1[0]) != sizetype)
11851 : {
11852 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11853 : }
11854 : else
11855 : _r1 = _o1[0];
11856 : res_op0 = _r1;
11857 : }
11858 : tree res_op1;
11859 : res_op1 = rhs_tree;
11860 : tree _r;
11861 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11862 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
11863 1 : return _r;
11864 : }
11865 : next_after_fail1843:;
11866 : }
11867 : else
11868 : {
11869 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1844;
11870 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1844;
11871 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1844;
11872 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1844;
11873 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1844;
11874 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1844;
11875 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1844;
11876 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1844;
11877 1 : {
11878 1 : tree res_op0;
11879 1 : {
11880 1 : tree _o1[1], _r1;
11881 1 : {
11882 1 : tree _o2[2], _r2;
11883 1 : {
11884 1 : tree _o3[2], _r3;
11885 1 : _o3[0] = swap_p ? captures[4] : captures[2];
11886 1 : _o3[1] = wide_int_to_tree (sizetype, off);
11887 1 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
11888 1 : _o2[0] = _r3;
11889 : }
11890 1 : _o2[1] = swap_p ? captures[2] : captures[4];
11891 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11892 1 : _o1[0] = _r2;
11893 : }
11894 1 : if (TREE_TYPE (_o1[0]) != sizetype)
11895 : {
11896 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11897 : }
11898 : else
11899 : _r1 = _o1[0];
11900 1 : res_op0 = _r1;
11901 : }
11902 1 : tree res_op1;
11903 1 : res_op1 = rhs_tree;
11904 1 : tree _r;
11905 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11906 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
11907 1 : return _r;
11908 : }
11909 0 : next_after_fail1844:;
11910 : }
11911 : }
11912 : }
11913 : }
11914 : }
11915 : }
11916 : }
11917 : }
11918 : }
11919 : break;
11920 : }
11921 : default:;
11922 : }
11923 : break;
11924 : }
11925 0 : case GE_EXPR:
11926 0 : {
11927 0 : tree _q70 = TREE_OPERAND (_p1, 0);
11928 0 : tree _q71 = TREE_OPERAND (_p1, 1);
11929 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
11930 : {
11931 0 : switch (TREE_CODE (_q71))
11932 : {
11933 0 : case POINTER_PLUS_EXPR:
11934 0 : {
11935 0 : tree _q90 = TREE_OPERAND (_q71, 0);
11936 0 : tree _q91 = TREE_OPERAND (_q71, 1);
11937 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
11938 : {
11939 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
11940 : {
11941 0 : {
11942 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
11943 0 : const enum tree_code cmp = LE_EXPR;
11944 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
11945 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
11946 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
11947 : )
11948 : {
11949 0 : {
11950 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
11951 0 : offset_int rhs = off * 2;
11952 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
11953 : )
11954 : {
11955 0 : {
11956 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
11957 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
11958 0 : if (cmp == LT_EXPR
11959 : )
11960 : {
11961 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1845;
11962 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1845;
11963 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1845;
11964 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1845;
11965 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1845;
11966 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1845;
11967 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1845;
11968 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1845;
11969 : {
11970 : tree res_op0;
11971 : {
11972 : tree _o1[1], _r1;
11973 : {
11974 : tree _o2[2], _r2;
11975 : _o2[0] = swap_p ? captures[6] : captures[1];
11976 : _o2[1] = swap_p ? captures[2] : captures[4];
11977 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
11978 : _o1[0] = _r2;
11979 : }
11980 : if (TREE_TYPE (_o1[0]) != sizetype)
11981 : {
11982 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
11983 : }
11984 : else
11985 : _r1 = _o1[0];
11986 : res_op0 = _r1;
11987 : }
11988 : tree res_op1;
11989 : res_op1 = rhs_tree;
11990 : tree _r;
11991 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
11992 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
11993 0 : return _r;
11994 : }
11995 : next_after_fail1845:;
11996 : }
11997 : else
11998 : {
11999 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1846;
12000 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1846;
12001 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1846;
12002 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1846;
12003 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1846;
12004 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1846;
12005 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1846;
12006 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1846;
12007 0 : {
12008 0 : tree res_op0;
12009 0 : {
12010 0 : tree _o1[1], _r1;
12011 0 : {
12012 0 : tree _o2[2], _r2;
12013 0 : {
12014 0 : tree _o3[2], _r3;
12015 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12016 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12017 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12018 0 : _o2[0] = _r3;
12019 : }
12020 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12021 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12022 0 : _o1[0] = _r2;
12023 : }
12024 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12025 : {
12026 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12027 : }
12028 : else
12029 : _r1 = _o1[0];
12030 0 : res_op0 = _r1;
12031 : }
12032 0 : tree res_op1;
12033 0 : res_op1 = rhs_tree;
12034 0 : tree _r;
12035 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12037 0 : return _r;
12038 : }
12039 0 : next_after_fail1846:;
12040 : }
12041 : }
12042 : }
12043 : }
12044 : }
12045 : }
12046 : }
12047 : }
12048 : break;
12049 : }
12050 : default:;
12051 : }
12052 : }
12053 : break;
12054 : }
12055 : default:;
12056 : }
12057 : break;
12058 : }
12059 : default:;
12060 : }
12061 : break;
12062 : }
12063 : default:;
12064 : }
12065 : break;
12066 : }
12067 781518 : case LT_EXPR:
12068 781518 : {
12069 781518 : tree _q20 = TREE_OPERAND (_p0, 0);
12070 781518 : tree _q21 = TREE_OPERAND (_p0, 1);
12071 781518 : switch (TREE_CODE (_q20))
12072 : {
12073 13 : case POINTER_PLUS_EXPR:
12074 13 : {
12075 13 : tree _q30 = TREE_OPERAND (_q20, 0);
12076 13 : tree _q31 = TREE_OPERAND (_q20, 1);
12077 13 : switch (TREE_CODE (_q31))
12078 : {
12079 7 : case INTEGER_CST:
12080 7 : {
12081 7 : switch (TREE_CODE (_p1))
12082 : {
12083 2 : case LT_EXPR:
12084 2 : {
12085 2 : tree _q70 = TREE_OPERAND (_p1, 0);
12086 2 : tree _q71 = TREE_OPERAND (_p1, 1);
12087 2 : switch (TREE_CODE (_q70))
12088 : {
12089 2 : case POINTER_PLUS_EXPR:
12090 2 : {
12091 2 : tree _q80 = TREE_OPERAND (_q70, 0);
12092 2 : tree _q81 = TREE_OPERAND (_q70, 1);
12093 2 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
12094 : {
12095 2 : if ((_q81 == _q31 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q31, 0) && types_match (_q81, _q31)))
12096 : {
12097 2 : if ((_q71 == _q30 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q30, 0) && types_match (_q71, _q30)))
12098 : {
12099 2 : {
12100 2 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q70 };
12101 2 : const enum tree_code cmp = LT_EXPR;
12102 2 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12103 1 : && TYPE_OVERFLOW_WRAPS (sizetype)
12104 3 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12105 : )
12106 : {
12107 1 : {
12108 1 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12109 1 : offset_int rhs = off * 2;
12110 1 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12111 : )
12112 : {
12113 1 : {
12114 1 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12115 1 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12116 1 : if (cmp == LT_EXPR
12117 : )
12118 : {
12119 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1847;
12120 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1847;
12121 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1847;
12122 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1847;
12123 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1847;
12124 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1847;
12125 1 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1847;
12126 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1847;
12127 1 : {
12128 1 : tree res_op0;
12129 1 : {
12130 1 : tree _o1[1], _r1;
12131 1 : {
12132 1 : tree _o2[2], _r2;
12133 1 : _o2[0] = swap_p ? captures[6] : captures[1];
12134 1 : _o2[1] = swap_p ? captures[2] : captures[4];
12135 1 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12136 1 : _o1[0] = _r2;
12137 : }
12138 1 : if (TREE_TYPE (_o1[0]) != sizetype)
12139 : {
12140 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12141 : }
12142 : else
12143 : _r1 = _o1[0];
12144 1 : res_op0 = _r1;
12145 : }
12146 1 : tree res_op1;
12147 1 : res_op1 = rhs_tree;
12148 1 : tree _r;
12149 1 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12150 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12151 1 : return _r;
12152 : }
12153 0 : next_after_fail1847:;
12154 : }
12155 : else
12156 : {
12157 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1848;
12158 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1848;
12159 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1848;
12160 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1848;
12161 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1848;
12162 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1848;
12163 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1848;
12164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1848;
12165 : {
12166 : tree res_op0;
12167 : {
12168 : tree _o1[1], _r1;
12169 : {
12170 : tree _o2[2], _r2;
12171 : {
12172 : tree _o3[2], _r3;
12173 : _o3[0] = swap_p ? captures[4] : captures[2];
12174 : _o3[1] = wide_int_to_tree (sizetype, off);
12175 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12176 : _o2[0] = _r3;
12177 : }
12178 : _o2[1] = swap_p ? captures[2] : captures[4];
12179 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12180 : _o1[0] = _r2;
12181 : }
12182 : if (TREE_TYPE (_o1[0]) != sizetype)
12183 : {
12184 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12185 : }
12186 : else
12187 : _r1 = _o1[0];
12188 : res_op0 = _r1;
12189 : }
12190 : tree res_op1;
12191 : res_op1 = rhs_tree;
12192 : tree _r;
12193 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12194 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12195 : return _r;
12196 : }
12197 : next_after_fail1848:;
12198 : }
12199 : }
12200 : }
12201 : }
12202 : }
12203 : }
12204 : }
12205 : }
12206 : }
12207 : break;
12208 : }
12209 : default:;
12210 : }
12211 : break;
12212 : }
12213 0 : case GT_EXPR:
12214 0 : {
12215 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12216 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12217 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
12218 : {
12219 0 : switch (TREE_CODE (_q71))
12220 : {
12221 0 : case POINTER_PLUS_EXPR:
12222 0 : {
12223 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12224 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12225 0 : if ((_q90 == _q21 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q21, 0) && types_match (_q90, _q21)))
12226 : {
12227 0 : if ((_q91 == _q31 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q31, 0) && types_match (_q91, _q31)))
12228 : {
12229 0 : {
12230 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1, _q71 };
12231 0 : const enum tree_code cmp = LT_EXPR;
12232 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12233 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12234 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12235 : )
12236 : {
12237 0 : {
12238 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12239 0 : offset_int rhs = off * 2;
12240 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12241 : )
12242 : {
12243 0 : {
12244 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12245 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12246 0 : if (cmp == LT_EXPR
12247 : )
12248 : {
12249 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1849;
12250 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1849;
12251 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1849;
12252 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1849;
12253 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1849;
12254 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1849;
12255 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1849;
12256 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1849;
12257 0 : {
12258 0 : tree res_op0;
12259 0 : {
12260 0 : tree _o1[1], _r1;
12261 0 : {
12262 0 : tree _o2[2], _r2;
12263 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12264 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12265 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12266 0 : _o1[0] = _r2;
12267 : }
12268 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12269 : {
12270 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12271 : }
12272 : else
12273 : _r1 = _o1[0];
12274 0 : res_op0 = _r1;
12275 : }
12276 0 : tree res_op1;
12277 0 : res_op1 = rhs_tree;
12278 0 : tree _r;
12279 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12280 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12281 0 : return _r;
12282 : }
12283 0 : next_after_fail1849:;
12284 : }
12285 : else
12286 : {
12287 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1850;
12288 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1850;
12289 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1850;
12290 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1850;
12291 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1850;
12292 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1850;
12293 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1850;
12294 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1850;
12295 : {
12296 : tree res_op0;
12297 : {
12298 : tree _o1[1], _r1;
12299 : {
12300 : tree _o2[2], _r2;
12301 : {
12302 : tree _o3[2], _r3;
12303 : _o3[0] = swap_p ? captures[4] : captures[2];
12304 : _o3[1] = wide_int_to_tree (sizetype, off);
12305 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12306 : _o2[0] = _r3;
12307 : }
12308 : _o2[1] = swap_p ? captures[2] : captures[4];
12309 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12310 : _o1[0] = _r2;
12311 : }
12312 : if (TREE_TYPE (_o1[0]) != sizetype)
12313 : {
12314 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12315 : }
12316 : else
12317 : _r1 = _o1[0];
12318 : res_op0 = _r1;
12319 : }
12320 : tree res_op1;
12321 : res_op1 = rhs_tree;
12322 : tree _r;
12323 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12324 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12325 : return _r;
12326 : }
12327 : next_after_fail1850:;
12328 : }
12329 : }
12330 : }
12331 : }
12332 : }
12333 : }
12334 : }
12335 : }
12336 : break;
12337 : }
12338 : default:;
12339 : }
12340 : }
12341 : break;
12342 : }
12343 : default:;
12344 : }
12345 : break;
12346 : }
12347 : default:;
12348 : }
12349 : break;
12350 : }
12351 : default:;
12352 : }
12353 : break;
12354 : }
12355 20896 : case GE_EXPR:
12356 20896 : {
12357 20896 : tree _q20 = TREE_OPERAND (_p0, 0);
12358 20896 : tree _q21 = TREE_OPERAND (_p0, 1);
12359 20896 : switch (TREE_CODE (_q21))
12360 : {
12361 0 : case POINTER_PLUS_EXPR:
12362 0 : {
12363 0 : tree _q40 = TREE_OPERAND (_q21, 0);
12364 0 : tree _q41 = TREE_OPERAND (_q21, 1);
12365 0 : switch (TREE_CODE (_q41))
12366 : {
12367 0 : case INTEGER_CST:
12368 0 : {
12369 0 : switch (TREE_CODE (_p1))
12370 : {
12371 0 : case LE_EXPR:
12372 0 : {
12373 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12374 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12375 0 : switch (TREE_CODE (_q70))
12376 : {
12377 0 : case POINTER_PLUS_EXPR:
12378 0 : {
12379 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12380 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12381 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12382 : {
12383 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12384 : {
12385 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12386 : {
12387 0 : {
12388 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12389 0 : const enum tree_code cmp = LE_EXPR;
12390 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12391 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12392 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12393 : )
12394 : {
12395 0 : {
12396 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12397 0 : offset_int rhs = off * 2;
12398 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12399 : )
12400 : {
12401 0 : {
12402 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12403 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12404 0 : if (cmp == LT_EXPR
12405 : )
12406 : {
12407 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1851;
12408 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1851;
12409 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1851;
12410 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1851;
12411 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1851;
12412 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1851;
12413 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1851;
12414 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1851;
12415 : {
12416 : tree res_op0;
12417 : {
12418 : tree _o1[1], _r1;
12419 : {
12420 : tree _o2[2], _r2;
12421 : _o2[0] = swap_p ? captures[6] : captures[1];
12422 : _o2[1] = swap_p ? captures[2] : captures[4];
12423 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12424 : _o1[0] = _r2;
12425 : }
12426 : if (TREE_TYPE (_o1[0]) != sizetype)
12427 : {
12428 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12429 : }
12430 : else
12431 : _r1 = _o1[0];
12432 : res_op0 = _r1;
12433 : }
12434 : tree res_op1;
12435 : res_op1 = rhs_tree;
12436 : tree _r;
12437 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12438 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12439 0 : return _r;
12440 : }
12441 : next_after_fail1851:;
12442 : }
12443 : else
12444 : {
12445 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1852;
12446 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1852;
12447 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1852;
12448 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1852;
12449 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1852;
12450 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1852;
12451 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1852;
12452 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1852;
12453 0 : {
12454 0 : tree res_op0;
12455 0 : {
12456 0 : tree _o1[1], _r1;
12457 0 : {
12458 0 : tree _o2[2], _r2;
12459 0 : {
12460 0 : tree _o3[2], _r3;
12461 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12462 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12463 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12464 0 : _o2[0] = _r3;
12465 : }
12466 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12467 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12468 0 : _o1[0] = _r2;
12469 : }
12470 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12471 : {
12472 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12473 : }
12474 : else
12475 : _r1 = _o1[0];
12476 0 : res_op0 = _r1;
12477 : }
12478 0 : tree res_op1;
12479 0 : res_op1 = rhs_tree;
12480 0 : tree _r;
12481 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12482 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12483 0 : return _r;
12484 : }
12485 0 : next_after_fail1852:;
12486 : }
12487 : }
12488 : }
12489 : }
12490 : }
12491 : }
12492 : }
12493 : }
12494 : }
12495 : break;
12496 : }
12497 : default:;
12498 : }
12499 : break;
12500 : }
12501 0 : case GE_EXPR:
12502 0 : {
12503 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12504 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12505 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12506 : {
12507 0 : switch (TREE_CODE (_q71))
12508 : {
12509 0 : case POINTER_PLUS_EXPR:
12510 0 : {
12511 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12512 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12513 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12514 : {
12515 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12516 : {
12517 0 : {
12518 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12519 0 : const enum tree_code cmp = LE_EXPR;
12520 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12521 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12522 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12523 : )
12524 : {
12525 0 : {
12526 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12527 0 : offset_int rhs = off * 2;
12528 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12529 : )
12530 : {
12531 0 : {
12532 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12533 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12534 0 : if (cmp == LT_EXPR
12535 : )
12536 : {
12537 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1853;
12538 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1853;
12539 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1853;
12540 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1853;
12541 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1853;
12542 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1853;
12543 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1853;
12544 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1853;
12545 : {
12546 : tree res_op0;
12547 : {
12548 : tree _o1[1], _r1;
12549 : {
12550 : tree _o2[2], _r2;
12551 : _o2[0] = swap_p ? captures[6] : captures[1];
12552 : _o2[1] = swap_p ? captures[2] : captures[4];
12553 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12554 : _o1[0] = _r2;
12555 : }
12556 : if (TREE_TYPE (_o1[0]) != sizetype)
12557 : {
12558 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12559 : }
12560 : else
12561 : _r1 = _o1[0];
12562 : res_op0 = _r1;
12563 : }
12564 : tree res_op1;
12565 : res_op1 = rhs_tree;
12566 : tree _r;
12567 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12568 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12569 0 : return _r;
12570 : }
12571 : next_after_fail1853:;
12572 : }
12573 : else
12574 : {
12575 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1854;
12576 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1854;
12577 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1854;
12578 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1854;
12579 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1854;
12580 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1854;
12581 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1854;
12582 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1854;
12583 0 : {
12584 0 : tree res_op0;
12585 0 : {
12586 0 : tree _o1[1], _r1;
12587 0 : {
12588 0 : tree _o2[2], _r2;
12589 0 : {
12590 0 : tree _o3[2], _r3;
12591 0 : _o3[0] = swap_p ? captures[4] : captures[2];
12592 0 : _o3[1] = wide_int_to_tree (sizetype, off);
12593 0 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12594 0 : _o2[0] = _r3;
12595 : }
12596 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12597 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12598 0 : _o1[0] = _r2;
12599 : }
12600 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12601 : {
12602 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12603 : }
12604 : else
12605 : _r1 = _o1[0];
12606 0 : res_op0 = _r1;
12607 : }
12608 0 : tree res_op1;
12609 0 : res_op1 = rhs_tree;
12610 0 : tree _r;
12611 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12612 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12613 0 : return _r;
12614 : }
12615 0 : next_after_fail1854:;
12616 : }
12617 : }
12618 : }
12619 : }
12620 : }
12621 : }
12622 : }
12623 : }
12624 : break;
12625 : }
12626 : default:;
12627 : }
12628 : }
12629 : break;
12630 : }
12631 : default:;
12632 : }
12633 : break;
12634 : }
12635 : default:;
12636 : }
12637 : break;
12638 : }
12639 : default:;
12640 : }
12641 : break;
12642 : }
12643 124138 : case GT_EXPR:
12644 124138 : {
12645 124138 : tree _q20 = TREE_OPERAND (_p0, 0);
12646 124138 : tree _q21 = TREE_OPERAND (_p0, 1);
12647 124138 : switch (TREE_CODE (_q21))
12648 : {
12649 0 : case POINTER_PLUS_EXPR:
12650 0 : {
12651 0 : tree _q40 = TREE_OPERAND (_q21, 0);
12652 0 : tree _q41 = TREE_OPERAND (_q21, 1);
12653 0 : switch (TREE_CODE (_q41))
12654 : {
12655 0 : case INTEGER_CST:
12656 0 : {
12657 0 : switch (TREE_CODE (_p1))
12658 : {
12659 0 : case LT_EXPR:
12660 0 : {
12661 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12662 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12663 0 : switch (TREE_CODE (_q70))
12664 : {
12665 0 : case POINTER_PLUS_EXPR:
12666 0 : {
12667 0 : tree _q80 = TREE_OPERAND (_q70, 0);
12668 0 : tree _q81 = TREE_OPERAND (_q70, 1);
12669 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
12670 : {
12671 0 : if ((_q81 == _q41 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q41, 0) && types_match (_q81, _q41)))
12672 : {
12673 0 : if ((_q71 == _q40 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q40, 0) && types_match (_q71, _q40)))
12674 : {
12675 0 : {
12676 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q70 };
12677 0 : const enum tree_code cmp = LT_EXPR;
12678 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12679 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12680 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12681 : )
12682 : {
12683 0 : {
12684 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12685 0 : offset_int rhs = off * 2;
12686 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12687 : )
12688 : {
12689 0 : {
12690 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12691 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12692 0 : if (cmp == LT_EXPR
12693 : )
12694 : {
12695 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1855;
12696 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1855;
12697 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1855;
12698 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1855;
12699 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1855;
12700 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1855;
12701 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1855;
12702 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1855;
12703 0 : {
12704 0 : tree res_op0;
12705 0 : {
12706 0 : tree _o1[1], _r1;
12707 0 : {
12708 0 : tree _o2[2], _r2;
12709 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12710 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12711 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12712 0 : _o1[0] = _r2;
12713 : }
12714 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12715 : {
12716 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12717 : }
12718 : else
12719 : _r1 = _o1[0];
12720 0 : res_op0 = _r1;
12721 : }
12722 0 : tree res_op1;
12723 0 : res_op1 = rhs_tree;
12724 0 : tree _r;
12725 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12727 0 : return _r;
12728 : }
12729 0 : next_after_fail1855:;
12730 : }
12731 : else
12732 : {
12733 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1856;
12734 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1856;
12735 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1856;
12736 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1856;
12737 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1856;
12738 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1856;
12739 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1856;
12740 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1856;
12741 : {
12742 : tree res_op0;
12743 : {
12744 : tree _o1[1], _r1;
12745 : {
12746 : tree _o2[2], _r2;
12747 : {
12748 : tree _o3[2], _r3;
12749 : _o3[0] = swap_p ? captures[4] : captures[2];
12750 : _o3[1] = wide_int_to_tree (sizetype, off);
12751 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12752 : _o2[0] = _r3;
12753 : }
12754 : _o2[1] = swap_p ? captures[2] : captures[4];
12755 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12756 : _o1[0] = _r2;
12757 : }
12758 : if (TREE_TYPE (_o1[0]) != sizetype)
12759 : {
12760 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12761 : }
12762 : else
12763 : _r1 = _o1[0];
12764 : res_op0 = _r1;
12765 : }
12766 : tree res_op1;
12767 : res_op1 = rhs_tree;
12768 : tree _r;
12769 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12770 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12771 : return _r;
12772 : }
12773 : next_after_fail1856:;
12774 : }
12775 : }
12776 : }
12777 : }
12778 : }
12779 : }
12780 : }
12781 : }
12782 : }
12783 : break;
12784 : }
12785 : default:;
12786 : }
12787 : break;
12788 : }
12789 0 : case GT_EXPR:
12790 0 : {
12791 0 : tree _q70 = TREE_OPERAND (_p1, 0);
12792 0 : tree _q71 = TREE_OPERAND (_p1, 1);
12793 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
12794 : {
12795 0 : switch (TREE_CODE (_q71))
12796 : {
12797 0 : case POINTER_PLUS_EXPR:
12798 0 : {
12799 0 : tree _q90 = TREE_OPERAND (_q71, 0);
12800 0 : tree _q91 = TREE_OPERAND (_q71, 1);
12801 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
12802 : {
12803 0 : if ((_q91 == _q41 && ! TREE_SIDE_EFFECTS (_q91)) || (operand_equal_p (_q91, _q41, 0) && types_match (_q91, _q41)))
12804 : {
12805 0 : {
12806 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q21, _q40, _q41, _q20, _p1, _q71 };
12807 0 : const enum tree_code cmp = LT_EXPR;
12808 0 : if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))
12809 0 : && TYPE_OVERFLOW_WRAPS (sizetype)
12810 0 : && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)
12811 : )
12812 : {
12813 0 : {
12814 0 : offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0);
12815 0 : offset_int rhs = off * 2;
12816 0 : if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)
12817 : )
12818 : {
12819 0 : {
12820 0 : bool swap_p = tree_swap_operands_p (captures[2], captures[4]);
12821 0 : tree rhs_tree = wide_int_to_tree (sizetype, rhs);
12822 0 : if (cmp == LT_EXPR
12823 : )
12824 : {
12825 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1857;
12826 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1857;
12827 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1857;
12828 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1857;
12829 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1857;
12830 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1857;
12831 0 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1857;
12832 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1857;
12833 0 : {
12834 0 : tree res_op0;
12835 0 : {
12836 0 : tree _o1[1], _r1;
12837 0 : {
12838 0 : tree _o2[2], _r2;
12839 0 : _o2[0] = swap_p ? captures[6] : captures[1];
12840 0 : _o2[1] = swap_p ? captures[2] : captures[4];
12841 0 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12842 0 : _o1[0] = _r2;
12843 : }
12844 0 : if (TREE_TYPE (_o1[0]) != sizetype)
12845 : {
12846 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12847 : }
12848 : else
12849 : _r1 = _o1[0];
12850 0 : res_op0 = _r1;
12851 : }
12852 0 : tree res_op1;
12853 0 : res_op1 = rhs_tree;
12854 0 : tree _r;
12855 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12856 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
12857 0 : return _r;
12858 : }
12859 0 : next_after_fail1857:;
12860 : }
12861 : else
12862 : {
12863 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1858;
12864 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1858;
12865 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1858;
12866 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1858;
12867 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1858;
12868 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1858;
12869 : if (TREE_SIDE_EFFECTS (captures[6])) goto next_after_fail1858;
12870 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1858;
12871 : {
12872 : tree res_op0;
12873 : {
12874 : tree _o1[1], _r1;
12875 : {
12876 : tree _o2[2], _r2;
12877 : {
12878 : tree _o3[2], _r3;
12879 : _o3[0] = swap_p ? captures[4] : captures[2];
12880 : _o3[1] = wide_int_to_tree (sizetype, off);
12881 : _r3 = fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
12882 : _o2[0] = _r3;
12883 : }
12884 : _o2[1] = swap_p ? captures[2] : captures[4];
12885 : _r2 = fold_build2_loc (loc, POINTER_DIFF_EXPR, ssizetype, _o2[0], _o2[1]);
12886 : _o1[0] = _r2;
12887 : }
12888 : if (TREE_TYPE (_o1[0]) != sizetype)
12889 : {
12890 : _r1 = fold_build1_loc (loc, NOP_EXPR, sizetype, _o1[0]);
12891 : }
12892 : else
12893 : _r1 = _o1[0];
12894 : res_op0 = _r1;
12895 : }
12896 : tree res_op1;
12897 : res_op1 = rhs_tree;
12898 : tree _r;
12899 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
12900 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
12901 : return _r;
12902 : }
12903 : next_after_fail1858:;
12904 : }
12905 : }
12906 : }
12907 : }
12908 : }
12909 : }
12910 : }
12911 : }
12912 : break;
12913 : }
12914 : default:;
12915 : }
12916 : }
12917 : break;
12918 : }
12919 : default:;
12920 : }
12921 : break;
12922 : }
12923 : default:;
12924 : }
12925 : break;
12926 : }
12927 : default:;
12928 : }
12929 : break;
12930 : }
12931 : default:;
12932 : }
12933 : return NULL_TREE;
12934 : }
12935 : #pragma GCC diagnostic pop
|